Interface IPersonaDefinition

The primary interface defining a complete Persona for a Generalized Mind Instance (GMI).

Interface

IPersonaDefinition

interface IPersonaDefinition {
    id: string;
    name: string;
    label?: string;
    description: string;
    version: string;
    baseSystemPrompt: string | {
        template: string;
        variables?: string[];
    } | {
        content: string;
        priority?: number;
    }[];
    defaultModelId?: string;
    defaultProviderId?: string;
    defaultModelCompletionOptions?: Partial<ModelCompletionOptions>;
    modelTargetPreferences?: ModelTargetPreference[];
    costSavingStrategy?: "always_cheapest" | "balance_quality_cost" | "prioritize_quality" | "user_preference";
    promptEngineConfigOverrides?: Partial<PromptEngineConfig>;
    toolIds?: string[];
    allowedCapabilities?: string[];
    embeddedTools?: ITool<any, any>[];
    allowedInputModalities?: ("text" | "audio_transcription" | "vision_image_url" | "vision_image_base64")[];
    allowedOutputModalities?: ("text" | "audio_tts" | "image_generation_tool_result")[];
    voiceConfig?: PersonaVoiceConfig;
    avatarConfig?: PersonaAvatarConfig;
    personalityTraits?: Record<string, any>;
    moodAdaptation?: PersonaMoodAdaptationConfig;
    defaultLanguage?: string;
    uiInteractionStyle?: "suggestive" | "directive" | "collaborative" | "silent";
    memoryConfig?: PersonaMemoryConfig;
    cognitiveMemoryConfig?: CognitiveMemoryPersonaConfig;
    conversationContextConfig?: PersonaConversationContextConfig;
    metaPrompts?: MetaPromptDefinition[];
    sentimentTracking?: SentimentTrackingConfig;
    contextualPromptElements?: ContextualPromptElement[];
    isCreatorPersona?: boolean;
    isPublic?: boolean;
    activationKeywords?: string[];
    strengths?: string[];
    minSubscriptionTier?: string;
    initialMemoryImprints?: {
        key: string;
        value: any;
        description?: string;
    }[];
    customFields?: Record<string, any> & {
        defaultWorkingMemoryConfig?: any;
        initialUserContext?: Partial<PersonaUserContextDefaults>;
        initialTaskContext?: Partial<PersonaTaskContextDefaults>;
    };
    requiredSecrets?: string[];
}

Properties

id: string

Stable unique identifier for the persona (used for activation & persistence).

name: string

Human-readable name surfaced in UI selection lists.

label?: string

Optional short label (e.g., abbreviation) for compact UI contexts.

description: string

Rich description of goals, domain focus, and behavioral nuance.

version: string

Semantic version of persona definition; bump on behavioral / config changes (e.g., '1.2.0').

baseSystemPrompt: string | {
    template: string;
    variables?: string[];
} | {
    content: string;
    priority?: number;
}[]

Base system prompt (or structured template) establishing foundational directives. Supports:

  • Raw string
  • Templated object { template, variables[] }
  • Ordered array of prompt fragments with priority for deterministic merging.

Type declaration

  • template: string
  • Optional variables?: string[]
defaultModelId?: string

Default model id to target for this persona's typical tasks (can be routed or overridden).

defaultProviderId?: string

Preferred provider if same model family exists across vendors (helps routing heuristics).

defaultModelCompletionOptions?: Partial<ModelCompletionOptions>

Baseline completion option overrides (temperature, maxTokens, presence penalties, etc.).

modelTargetPreferences?: ModelTargetPreference[]

Ordered preferences describing desired model traits (cost/perf/latency) for dynamic selection.

costSavingStrategy?: "always_cheapest" | "balance_quality_cost" | "prioritize_quality" | "user_preference"

High-level cost strategy guiding router decisions.

promptEngineConfigOverrides?: Partial<PromptEngineConfig>

Partial overrides merged onto global PromptEngine configuration for persona specialization.

toolIds?: string[]

Referenced tool identifiers persona is permitted to invoke.

allowedCapabilities?: string[]

Abstract capability flags enabling conditional UI / workflow features (e.g., 'web_search').

embeddedTools?: ITool<any, any>[]

Inline tool instances embedded directly (rare; typically tools live in registry).

allowedInputModalities?: ("text" | "audio_transcription" | "vision_image_url" | "vision_image_base64")[]

Whitelisted input modalities persona accepts (driver for validation in interaction layer).

allowedOutputModalities?: ("text" | "audio_tts" | "image_generation_tool_result")[]

Output modalities persona can produce (text, TTS synthesized, image generation results).

voiceConfig?: PersonaVoiceConfig

Voice synthesis configuration (preferred voice id, style, speed).

avatarConfig?: PersonaAvatarConfig

Visual avatar / representation metadata (image URL, animation style).

personalityTraits?: Record<string, any>

Arbitrary personality trait map (e.g., { humor_level: 0.7, pedagogical_style: 'socratic' }).

Rules controlling adaptive mood shifts & modulation of tone.

defaultLanguage?: string

Default output language (BCP‑47) used when user preference unspecified.

uiInteractionStyle?: "suggestive" | "directive" | "collaborative" | "silent"

High-level interaction posture for UI behaviors (suggestive hints vs directive instructions).

memoryConfig?: PersonaMemoryConfig

Memory subsystem tuning (retention horizons, summarization cadence, pinning rules).

cognitiveMemoryConfig?: CognitiveMemoryPersonaConfig

Cognitive memory system per-persona overrides (encoding, decay, working memory capacity, etc.).

conversationContextConfig?: PersonaConversationContextConfig

Conversation context override strategy (message importance heuristics, summarization triggers).

metaPrompts?: MetaPromptDefinition[]

System or self-reflective prompts guiding meta-cognition, self-correction, or planning loops.

sentimentTracking?: SentimentTrackingConfig

Sentiment tracking configuration. Controls whether the GMI analyzes user emotional state and triggers event-based metaprompts (frustration recovery, confusion clarification, etc.). Opt-in: disabled by default. Turn_interval metaprompts (like self-reflection) always work regardless.

contextualPromptElements?: ContextualPromptElement[]

Dynamic contextual prompt elements evaluated per turn for fine-grained adaptation.

isCreatorPersona?: boolean

Allows persona to perform privileged creation/update of other personas.

isPublic?: boolean

If true persona is globally discoverable subject to subscription tier gating.

activationKeywords?: string[]

Natural language keywords enabling auto-activation in multi-persona environments.

strengths?: string[]

Strength tag list aiding search & recommendation (e.g., ['typescript', 'design_reviews']).

minSubscriptionTier?: string

Minimum subscription tier required to access persona (e.g., 'pro', 'enterprise').

initialMemoryImprints?: {
    key: string;
    value: any;
    description?: string;
}[]

Seed working memory imprints establishing initial context (preferences, calibration data).

Type declaration

  • key: string
  • value: any
  • Optional description?: string
customFields?: Record<string, any> & {
    defaultWorkingMemoryConfig?: any;
    initialUserContext?: Partial<PersonaUserContextDefaults>;
    initialTaskContext?: Partial<PersonaTaskContextDefaults>;
}

Arbitrary extension fields and structured defaults for user/task contexts.

Type declaration

  • Optional defaultWorkingMemoryConfig?: any

    Working memory default config attached at GMI instantiation time.

  • Optional initialUserContext?: Partial<PersonaUserContextDefaults>

    Initial inferred or declared user context values.

  • Optional initialTaskContext?: Partial<PersonaTaskContextDefaults>

    Initial task framing values (e.g., domain, complexity baseline).

requiredSecrets?: string[]

Named secrets (API keys, credentials) this persona depends on.