LLM Manager {{ currentUser && currentUser.first_name && currentUser.last_name ? `${currentUser.first_name} ${currentUser.last_name}` : username }} {{ currentUser ? currentUser.email : '' }} Tenant: {{ getTenantId() }} mdi-logout Logout Menu
mdi-shield-lock
Authentication Required
Please log in to access LLM Manager
mdi-login Login
Loading...
mdi-application App Generation Generate App Generate
mdi-brain LLM Models Add Model Add
mdi-tools LLM Tools Import Add Tool Add
mdi-function-variant Dynamic Functions Import Add Function Add
mdi-robot LLM Agents Import Agent Import Create Agent Create
mdi-text-box LLM Prompts Add Prompt Add
mdi-file-multiple LLM Resources Add Resource Add
mdi-connection MCP External Systems Add MCP System Add {{ system.description }} {{ system.active ? 'Active' : 'Inactive' }}

Identifier: {{ system.internal_identifier }}

Transport: {{ system.custom_data?.mcp_config?.transport || 'websocket' }}

URL: {{ system.custom_data?.mcp_config?.url || 'Not configured' }}

Tools Available: {{ system.tools_count || 0 }}

{{ system.connected ? 'Connected' : 'Disconnected' }}

Updated: {{ formatDate(system.updated_at) }}

Refresh Tools Load Tools

No MCP External Systems

Connect to external Model Context Protocol systems to extend your LLM capabilities with external tools and services.

Add MCP System
mdi-chat LLM Conversations
{{ memoryManagement.view === 'minds' ? 'mdi-brain' : 'mdi-graph-outline' }} LLM Minds {{ memoryManagement.selectedMind?.name || 'Memory Management' }} Create Mind Create Import Import Refresh Sync Create Memory Create Refresh Sync Cleanup Clean
mdi-brain {{ mind.name }} Default

{{ mind.description || 'No description' }}

{{ mind.memory_count || 0 }} memories
Export Edit Set Default Is Default Delete
mdi-brain-outline

No Minds Found

Create a mind to organize your memories

mdi-graph Memory Graph {{ memoryStats.totalMemories }} memories
mdi-magnify Search & Filter Memories {{ activeFiltersCount }} filters active
mdi-filter-remove Clear All Filters mdi-cog {{ showAdvancedSearch ? 'Hide Advanced' : 'Advanced Options' }}
Loading memory graph...
mdi-information-outline Memory Information {{ memorySearch.results.length }} found mdi-information-outline Details mdi-format-list-bulleted Search Results
mdi-cursor-pointer
Click on a memory node to view details
{{ currentMemoryTypeName }}

{{ selectedMemory.title }}

ID: {{ selectedMemory.id }}
mdi-pencil Edit mdi-graph-outline Related mdi-delete Delete
Importance Score
{{ (selectedMemory.importance_score * 100).toFixed(1) }}%
Content
Metadata
Access Count
{{ selectedMemory.access_count || 0 }}
Created
{{ formatDate(selectedMemory.created_at) }}
Last Accessed
{{ formatDate(selectedMemory.last_accessed_at) || 'Never' }}
Agent
{{ selectedMemory.agent_name || 'None' }}
Relationships
{{ rel.type }} ({{ parseFloat(rel.strength || 0.5).toFixed(2) }})
Tags
{{ tag }}
mdi-magnify
{{ memorySearch && memorySearch.query ? 'No memories found' : 'Enter search terms to find memories' }}
Found {{ memorySearch ? memorySearch.results.length : 0 }} memories
mdi-chart-box-outline Statistics
{{ memoryStats.totalMemories }}
Total Memories
{{ memoryStats.totalRelationships }}
Relationships
{{ memoryStats.averageImportance.toFixed(2) }}
Avg Importance
{{ memoryStats.memoryTypes.length }}
Memory Types
Memory Type Distribution
{{ type.name }} {{ type.count }}
mdi-brain Context Simulation mdi-test-tube Debug / Demo
Simulate which memories would be loaded for a given query. Useful for debugging and sales demonstrations.
mdi-brain Simulating with {{ memoryManagement.selectedMind.name }} mind ({{ memoryManagement.selectedMind.memory_count || 0 }} memories)
mdi-play Run Simulation
Found {{ memorySimulation.result.memories.length }} memories ({{ memorySimulation.result.total_tokens }} tokens) from {{ memorySimulation.result.scoring_details.total_memories_returned }} considered
Entities detected: {{ memorySimulation.result.scoring_details.entity_candidates_detected.join(', ') }}
#{{ index + 1 }} {{ memory.type }} {{ memory.title }} {{ parseFloat(memory.relevance_score).toFixed(2) }}
Content:
{{ memory.content_preview }}
Scoring Breakdown:
{{ formatScoreKey(key) }}: {{ formatScoreValue(value) }}
Source:
{{ memory.source }}
Tokens:
{{ memory.estimated_tokens }}
Importance:
{{ parseFloat(memory.importance_score).toFixed(2) }}
mdi-map-marker Show on Graph
mdi-chart-line Cost Analysis mdi-refresh Refresh Data
mdi-domain Tenant: {{ getTenantDisplayName(costAnalysis.availableTenants[0]) }}
ID: {{ costAnalysis.availableTenants[0].enterprise_identifier }}
mdi-information Viewing costs for: {{ getTenantDisplayName(getSelectedTenant()) }}
Tenant ID: {{ getSelectedTenant().enterprise_identifier }}
{{ formatTotalCost() }}
Total Cost
{{ costAnalysis.summary.total_message_count || 0 }}
Total Messages
{{ costAnalysis.summary.conversation_percentage || 0 }}%
Conversation Messages
{{ costAnalysis.summary.standalone_percentage || 0 }}%
Standalone Messages
{{ costAnalysis.summary.deleted_percentage || 0 }}%
Deleted Messages
mdi-chart-timeline-variant Cost Over Time ({{ costAnalysis.chartType }})
mdi-chart-pie Cost Breakdown ({{ capitalizeFirst(costAnalysis.breakdown) }})
mdi-format-list-numbered Top {{ capitalizeFirst(costAnalysis.breakdown) }}s by Cost {{ getItemDisplayName(item) }} {{ item.formatted_cost }}

No cost data available

Loading cost data...

This may take a moment for large datasets

No cost data available

Cost data will appear here once LLM messages have been generated

mdi-refresh Refresh Data
mdi-close {{ modelIsEditing ? 'Edit LLM Model' : 'Add LLM Model' }} mdi-check
mdi-loading

Loading available models...

{{ provider.name }} {{ provider.models.length }} models
{{ getSelectedModelDisplayName() }}
mdi-memory Context Window: {{ formatSelectedModelContextWindow() }} tokens

Ollama Server Configuration

Authentication & Prompting

Additional Configuration

Prompt Instructions

The prompt serves as initial instructions to the AI model, setting the context and guidelines for how it should respond.

Tip: Be specific about the model's role, knowledge boundaries, and response style.

Example prompt components:

  • Role definition (e.g., "You are an assistant")
  • Response guidelines (tone, format, length)
  • Permissions and restrictions
  • Domain-specific instructions
Cancel Save
{{ agentIsEditing ? 'Edit AI Agent' : 'Create AI Agent' }}
Next Step: After creating your agent, you'll be taken to the Agent Builder where you can configure the model, prompts, tools, schedule, and other settings.
Cancel {{ agentIsEditing ? 'Update' : 'Create & Configure' }}
mdi-close {{ toolIsEditing ? 'Edit LLM Tool' : 'Add LLM Tool' }} mdi-book-open-variant mdi-check

Tool Schema

{{ toolSchemaError }}
JSON schema describing the tool's input parameters

Tool Implementation

{{ toolImplementationError }}
JavaScript code that implements the tool functionality

Configuration Fields

mdi-plus Add Field
mdi-cog-outline

No configuration fields defined

Configuration fields allow users to customize tool behavior when used in agents

{{ field.label }} {{ field.type }} Required
Name: {{ field.name }}
Default: {{ field.default_value }}
Options: {{ field.options.map(o => o.display).join(', ') }}
Cancel Save
Tool Development Documentation mdi-close

Tools extend LLM capabilities with full access to the Model API data layer through execute_action methods.

Global Variables:
  • params - Parameters from your Tool Schema
  • configurations - Configuration fields for this tool
Data Access Functions:
  • listRecords(model, options) - List/search records
  • getRecord(model, id) - Get single record
  • createRecord(model, data) - Create new record
  • updateRecord(model, id, data) - Update record
  • deleteRecord(model, id) - Delete record
  • findOrCreateRecord(model, findData, createData) - Find existing or create new
HTTP & Utilities:
  • fetch(url, options) - HTTP requests
  • urlEncode(params) - URL parameter encoding

Code Examples

📋 Example: Member Verification
// Verify member using BizTxnEvent
var verification = listRecords('BizTxnEvent', {
  search_query: {
    where: {
      'custom_fields.verification_code': params.code,
      'custom_fields.member_id': params.member_id
    }
  },
  limit: 1
});

if (verification.success && verification.data.length > 0) {
  return {
    verified: true,
    member: verification.data[0].custom_fields
  };
} else {
  return {
    verified: false,
    error: 'Invalid verification code'
  };
}
🔗 Example: Create with Relationships
// Create project and assign to user
var project = createRecord('Project', {
  name: params.project_name,
  description: params.description,
  budget: params.budget
});

if (project.success) {
  // Link project to user
  linkRecords('Project', project.data.id,
             'Users', params.user_id);

  return 'Project created with ID: ' + project.data.id;
} else {
  return 'Error: ' + project.error;
}
🔍 Example: Advanced Search & Analytics
// Complex search with joins and aggregates
var results = listRecords('BizTxnEvent', {
  search_query: {
    joins: ['biz_txn_event_type'],
    where: {
      'biz_txn_event_types.internal_identifier': 'payment',
      'created_at': { 'gt': '2024-01-01' }
    },
    outputs: {
      functions: {
        total_amount: { sum: 'amount' },
        avg_amount: { avg: 'amount' },
        count: { count: '*' }
      }
    }
  }
});

return {
  analytics: results.data,
  summary: 'Found ' + results.data.length + ' payments'
};
🌐 Example: External API Integration
// Create contact and notify external system
var contact = createRecord('Party', {
  business_party_type: 'Individual',
  description: params.full_name,
  custom_fields: {
    email: params.email,
    source: 'tool_import'
  }
});

if (contact.success) {
  // Notify external webhook
  var response = fetch(configurations.webhook_url, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + configurations.api_token
    },
    body: JSON.stringify({
      event: 'contact_created',
      contact_id: contact.data.id
    })
  });

  return {
    contact_id: contact.data.id,
    webhook_status: response.status
  };
}
Available Models:
Party, User, Project, Task, BizTxnEvent, LlmConversation, Product, Configuration, SecurityRole, and more...
Security: All operations automatically use tenant scoping and security permissions. Data access is restricted based on your capabilities.

Schema Example:

{
  "type": "object",
  "properties": {
    "member_id": {
      "type": "string",
      "description": "Member ID to verify"
    },
    "verification_code": {
      "type": "string",
      "description": "6-digit verification code"
    }
  },
  "required": ["member_id", "verification_code"]
}
Close
mdi-memory Create Memory
Text JSON
Format JSON {{ isValidJson ? 'Valid JSON' : 'Invalid JSON' }}
Cancel Create
mdi-pencil Edit Memory
Text JSON
Format JSON {{ isValidJson ? 'Valid JSON' : 'Invalid JSON' }}
Cancel Update
mdi-broom Memory Cleanup This will remove memories with low importance scores and consolidate related memories.
Cancel Start Cleanup
mdi-play Execute Tool: {{ toolExecution.tool.name }}

Tool Description:

{{ toolExecution.tool.description }}

Input Parameters (JSON):

Enter the input parameters as JSON that match the tool's input schema.

Execution Result:

Success
{{ content.text || content }}
Error
{{ toolExecution.result.error }}
mdi-play Execute Close
mdi-close {{ dynamicFunctionIsEditing ? 'Edit Dynamic Function' : 'Add Dynamic Function' }} mdi-check
Basic Information
Schedule & Triggers Configured
Configure when this function should run automatically. Choose from simple options below or use a custom CRON expression.
mdi-information-outline
Current Schedule
{{ getDynamicFunctionScheduleDescription() }}
Days of the week
{{ day.short }}
Quick Templates
{{ template.label }}
mdi-help-circle-outline CRON Format Help

Format: minute hour day month weekday

  • minute: 0-59
  • hour: 0-23
  • day: 1-31
  • month: 1-12
  • weekday: 0-7 (0 and 7 = Sunday)

Special characters:

  • * = any value
  • , = value list (1,3,5)
  • - = range (1-5)
  • / = step (*/2 = every 2)
Schedule Preview: {{ getDynamicFunctionScheduleDescription() }}
CRON Expression: {{ getDynamicFunctionCronExpression() }}
mdi-webhook Callback Trigger (Optional)
mdi-account-key Run As User
Required: Scheduled and callback functions run in the background and need a user context for permissions.
JavaScript Code
Available in your code:
  • params - Parameters passed when executing
  • context.config - Your configuration object
  • context.functionId, context.functionName, context.tenantId - Metadata
  • context.oauth.accessToken, context.oauth.tokenType - OAuth tokens (if configured)
Configuration (JSON)

Optional configuration object accessible via context.config in your code.

Integration Prompt Copy

Share this integration guide with developers who need to call this function via API.

Cancel Save
mdi-play Execute Function: {{ dynamicFunctionExecution.function?.name }}

Description:

{{ dynamicFunctionExecution.function?.description || 'No description' }}

Input Parameters (JSON):

Enter JSON parameters that will be available as params in your function.

Execution Result:

Success {{ dynamicFunctionExecution.result.execution_time_ms }}ms
{{ JSON.stringify(dynamicFunctionExecution.result.result, null, 2) }}
Error
{{ dynamicFunctionExecution.result.error }}
mdi-play Execute Close
mdi-history Execution History: {{ dynamicFunctionExecution.function?.name }} mdi-file-document-outline Execution Details

Input Parameters:

{{ JSON.stringify(selectedExecutionDetails.input_params, null, 2) }}

{{ selectedExecutionDetails.successful ? 'Result' : 'Error' }}:

{{ selectedExecutionDetails.successful ? JSON.stringify(selectedExecutionDetails.result, null, 2) : selectedExecutionDetails.error_message }}
Close
mdi-upload Import Dynamic Function
Select a JSON file containing an exported dynamic function configuration to import it into the system.
Function parsed successfully!
Scheduled: {{ dynamicFunctionImportData.schedule }} Callback: {{ dynamicFunctionImportData.callback_model }} ({{ dynamicFunctionImportData.callback_event }}) Active Inactive

{{ dynamicFunctionImportData.description }}

Required: This function has a schedule or callback and needs a user context for background execution.
Tip: You can change the function name above to avoid conflicts with existing functions. This lets you import the same function multiple times with different names.
Cancel Import
mdi-upload Import LLM Tool
Select a JSON file containing an exported LLM tool configuration to import it into the system.
Tool parsed successfully!
Active Inactive Exported: {{ new Date(llmToolImportData.exported_at).toLocaleDateString() }}

{{ llmToolImportData.description }}

Tip: You can change the tool name above to avoid conflicts with existing tools. Or enable the overwrite option to update an existing tool.
Cancel Import
mdi-cog-outline {{ toolConfigurationFieldEditor.editingIndex >= 0 ? 'Edit' : 'Add' }} Configuration Field

Options

mdi-plus Add Option

No options defined

{{ option.display }}
Value: {{ option.value }}
Cancel {{ toolConfigurationFieldEditor.editingIndex >= 0 ? 'Update' : 'Add' }}
mdi-close {{ promptIsEditing ? 'Edit LLM Prompt' : 'Add LLM Prompt' }} mdi-check

Prompt Content

Prompt Instructions

Prompts are reusable text templates that provide instructions or context to LLMs.

Tip: Use clear, specific language and include examples when possible.

Best practices:

  • Be specific about desired format
  • Include examples of good responses
  • Set clear boundaries and constraints
  • Use consistent tone and style

Example prompt:

You are a helpful assistant that analyzes customer feedback.

Please categorize the following feedback into one of these categories:
- Positive
- Negative  
- Neutral
- Feature Request

Provide your response in this format:
Category: [category]
Confidence: [1-10]
Summary: [brief summary]
                                        
Cancel Save
mdi-close {{ resourceIsEditing ? 'Edit LLM Resource' : 'Add LLM Resource' }} mdi-check
{{ currentResource.is_content ? 'This resource provides content/data' : 'This resource provides functions/capabilities' }}

{{ currentResource.is_content ? 'Resource Content' : 'Resource Implementation' }}

Resource Instructions

Resources provide data or functionality that can be used by LLM agents and tools.

Tip: Use content resources for static data and function resources for dynamic capabilities.

Resource types:

  • Content: Documents, data, knowledge bases
  • Function: APIs, calculations, integrations

Content example:

Company Policy Manual

1. Work Hours: 9 AM - 5 PM
2. Dress Code: Business casual
3. Remote Work: Allowed 2 days/week
4. PTO: 15 days annually
                                        

Function example:

// Weather API integration
const response = await fetch(
  `https://api.weather.com/v1/current?location=${params.city}`
);
return response.json();
                                        
Cancel Save
{{ editingMcpSystem ? 'Edit MCP External System' : 'Add MCP External System' }}

Connection Configuration

Custom Headers
{{ header.key }}: {{ header.value }}
Capabilities & Features
Available Tools
{{ tool.name }}

Tools are automatically discovered after connecting to the MCP server

Test Connection Cancel {{ editingMcpSystem ? 'Update' : 'Create' }}
MCP System Tools {{ selectedMcpSystem.description }}

Loading available tools...

Found {{ mcpSystemTools.length }} tool{{ mcpSystemTools.length !== 1 ? 's' : '' }} available on this MCP system:

{{ tool.name }} {{ tool.type }}

{{ tool.description }}

Input Schema:

{{ JSON.stringify(tool.inputSchema, null, 2) }}

Properties:

{{ prop }} (required)

No Tools Available

This MCP system doesn't have any tools available, or the tools haven't been loaded yet. Try refreshing the tools from the main interface.

Refresh Tools Close
{{ confirmDialog.title }} {{ confirmDialog.message }} Cancel Yes {{ toast.message }} Generate New App Reference Files (Optional)
Selected Files ({{ newAppGeneration.attachments.length }}):
{{ file.name || `File ${index + 1}` }}
Cancel Generate
Update App
App: {{ currentAppUpdate.app_name }}
Reference Files (Optional)
Selected Files ({{ currentAppUpdate.attachments.length }}):
{{ file.name || `File ${index + 1}` }}
Cancel Update App
App Generation History {{ currentAppHistory.app_name }}

No History Found

No generation requests found for this app

Close
Import App Warning: This will replace the existing app. Are you sure you want to proceed?
App: {{ currentAppImport.app_name }}
Cancel Import
{{ agentIsEditing ? 'Edit AI Agent' : 'Create AI Agent' }}
Next Step: After creating your agent, you'll be taken to the Agent Builder where you can configure the model, prompts, tools, schedule, and other settings.
Cancel {{ agentIsEditing ? 'Update' : 'Create & Configure' }}
mdi-sitemap Visual Agent Builder - {{ currentAgent.name }} mdi-close Close {{ hasUnsavedChanges ? 'mdi-content-save-alert' : 'mdi-check' }} {{ hasUnsavedChanges ? 'Save Changes *' : 'No Changes' }} mdi-brain Select LLM Model for Agent
Agent: {{ currentAgent.name }}
Choose the Large Language Model that will power this agent's responses and reasoning.
mdi-brain
{{ model.llm_model_name || model.description }}
{{ model.provider_name || 'Unknown Provider' }}
{{ model.description }}
mdi-check-circle
mdi-brain-off
No models found
{{ modelSelectionSearch ? 'Try adjusting your search terms' : 'No LLM models are available' }}
mdi-close Remove Model Cancel mdi-check {{ currentAgent.llm_model_id ? 'Change Model' : 'Select Model' }}
mdi-clock-outline Edit Agent Schedule
Agent: {{ currentAgent.name }}
Configure when this agent should run automatically. Choose from simple options below or use a custom CRON expression.
mdi-information-outline
Current Schedule
{{ getScheduleDescription() }}
Days of the week
{{ day.short }}
Quick Templates
{{ template.label }}
mdi-help-circle-outline CRON Format Help

Format: minute hour day month weekday

  • minute: 0-59
  • hour: 0-23
  • day: 1-31
  • month: 1-12
  • weekday: 0-7 (0 and 7 = Sunday)

Special characters:

  • * = any value
  • , = value list (1,3,5)
  • - = range (1-5)
  • / = step (*/2 = every 2)
Schedule Preview: {{ getScheduleDescription() }}
CRON Expression: {{ getCurrentCronExpression() }}
mdi-close Clear Schedule Cancel mdi-check Save Schedule
mdi-text-box-outline Select Agent Prompts
Agent: {{ currentAgent.name }}
Configure system and user prompts for this agent. Both prompts are optional - system prompts provide context, while user prompts define the agent's primary instructions.
mdi-cog-outline
Current System Prompt
{{ getPromptName(currentAgent.llm_system_prompt_id) }}
mdi-close
mdi-account-outline
Current User Prompt
{{ getPromptName(currentAgent.llm_user_prompt_id) }}
mdi-close
mdi-eye-outline System Prompt Preview
{{ getPromptContent(selectedSystemPromptId) }}
mdi-eye-outline User Prompt Preview
{{ getPromptContent(selectedUserPromptId) }}
Note: Both prompts are optional. You can configure prompts now or add them later.
mdi-close Clear All Cancel mdi-check Save Selection
mdi-tools Select Tools for Agent
Agent: {{ currentAgent.name }}
System Tools Custom Tools mdi-information Tip: Tools with required configuration must be configured before use. Tools with optional configuration can be used without setup but may be configured for enhanced functionality.
mdi-tools {{ tool.name }} Active Inactive Requires Configuration Optional Configuration mdi-cog Click to Configure
{{ tool.description }}

No tools found

{{ toolSelectionSearch ? 'No tools match your search criteria' : 'No tools available to attach' }}

Selected Tools ({{ selectedToolsForAgent.length }}):
{{ getSelectedToolDisplayName(toolIdentifier) }}
Cancel mdi-alert Apply ({{ selectedToolsForAgent.length }})
mdi-cog Configure Tool
Tool: {{ currentToolConfiguration.tool.description }}

No tool selected for configuration

mdi-restore Use Defaults Cancel Save Configuration
mdi-book-open-variant Select Resources for Agent
Agent: {{ currentAgent.name }}
System Resources Custom Resources
mdi-book-open-variant {{ resource.name }} Active Inactive Content
{{ resource.description }}

No resources found

{{ resourceSelectionSearch ? 'No resources match your search criteria' : 'No resources available to attach' }}

Selected Resources ({{ selectedResourcesForAgent.length }}):
{{ getSelectedResourceDisplayName(resourceIdentifier) }}
Cancel Apply ({{ selectedResourcesForAgent.length }})
mdi-chat Manage Conversations - {{ currentAgent.name }}
mdi-plus Start New Conversation
Existing Conversations ({{ agentConversations.length }})
Page {{ conversationPagination.page }} of {{ conversationTotalPages }}
{{ conversation.title }} {{ conversation.description }}

No conversations yet

Start a new conversation to begin chatting with this AI agent.

Close
mdi-chat {{ currentConversation ? currentConversation.title : 'Chat' }} mdi-close
mdi-chat-outline
Start the conversation
Send a message to begin chatting with the AI agent.
mdi-history Agent Run History {{ runHistory.currentAgent.name }}
Loading run history...
mdi-history
No runs found
This agent hasn't been executed yet.
{{ page }}
mdi-refresh Refresh Close
mdi-account-group Agent Run Roles Run #{{ runRoles.currentRun.id }} - {{ formatDateTime(runRoles.currentRun.start_at) }}
Loading roles...
mdi-account-group-outline
No roles found
This run had no specific roles assigned.
Close
mdi-message-text-outline Conversation Details

Loading conversation details...

Name: {{ conversationDetails.conversation?.name || 'Untitled' }}
Description: {{ conversationDetails.conversation?.description || '-' }}
Created: {{ formatDate(conversationDetails.conversation?.created_at) }}
Model Used: {{ conversationDetails.model?.description || 'None' }}
Accessor: {{ conversationDetails.accessor.type }} {{ getAccessorDisplayName(conversationDetails.accessor) }} None
Messages: {{ conversationDetails.messages?.length || 0 }}
mdi-message-outline

No messages in this conversation

{{ message.role === 'user' ? 'mdi-account' : message.role === 'assistant' ? 'mdi-robot' : 'mdi-tools' }} {{ message.sender_name && !message.from_llm ? message.sender_name : (message.role === 'user' ? 'User' : message.role === 'assistant' ? 'Assistant' : 'Tool') }} {{ formatDateTime(message.created_at) }}
mdi-chevron-down Show More
mdi-chevron-up Show Less
{{ JSON.stringify(message.content, null, 2).substring(0, 500) }}...
mdi-chevron-down Show More
{{ JSON.stringify(message.content, null, 2) }}
mdi-chevron-up Show Less
{{ JSON.stringify(message.content, null, 2) }}
mdi-paperclip Attachments ({{ message.llm_files.length }})
{{ getDocumentIcon(doc) }} {{ doc.title || 'Untitled' }} mdi-open-in-new
mdi-chart-pie Cost Breakdown by Sender

Loading cost breakdown...

Total Conversation Cost

mdi-currency-usd {{ conversationDetails.costByUser.formatted_total_cost || '$0.00' }} mdi-message-outline {{ conversationDetails.costData?.message_count || 0 }} messages

Cost by Sender

{{ userCost.sender_name || 'Unknown' }}
{{ userCost.sender_type }}
{{ userCost.formatted_cost || '$0.00' }}
{{ userCost.message_count || 0 }} messages {{ userCost.formatted_cost }}
mdi-information-outline

No cost data available for this conversation

Close
mdi-account-group Manage Members - {{ membersDialog.conversation?.name || 'Conversation' }}

Add New Member

Search

Search Results

{{ individual.first_name }} {{ individual.last_name }} {{ individual.description }}

Current Members ({{ membersDialog.members.length }})

Loading members...

{{ getMemberName(member) }} Admin Joined: {{ formatDate(member.joined_at) }} (Invited: {{ formatDate(member.invited_at) }})

No members yet

Add individuals to this conversation to enable collaboration.

Close
mdi-play-circle Execute Agent Now
Agent: {{ executeAgentData.agent?.name }}
Manually trigger this agent to run immediately. You can optionally provide additional instructions that will be appended to the agent's primary prompt.
mdi-account-group Select Roles for Execution
Choose which roles this agent should use during execution. All roles are selected by default.
{{ role.description }} ID: {{ role.internal_identifier }} {{ role.persona }}
mdi-alert No roles selected - agent will run without specific role context
Cancel mdi-play Execute
mdi-account-group Select Roles for Agent
Agent: {{ currentAgent.name }}
Current Roles
{{ role.description }}
mdi-account-group-outline

No roles found{{ roleSelectionSearch ? ' matching your search' : '' }}

{{ role.description }} ID: {{ role.internal_identifier }} {{ role.persona }}
{{ selectedRolesForAgent.length }} role(s) selected
Cancel mdi-check Apply ({{ selectedRolesForAgent.length }})
mdi-shield-account Select Security Roles for Agent
Agent: {{ currentAgent.name }}
User Account: {{ currentAgent.user?.display_name || 'Unknown' }}
Current Security Roles
{{ role.description }}
mdi-shield-account-outline

No security roles found{{ securityRoleSelectionSearch ? ' matching your search' : '' }}

{{ role.description }} ID: {{ role.internal_identifier }} {{ role.description_long }}
{{ selectedSecurityRolesForAgent.length }} security role(s) selected
Cancel mdi-check Apply ({{ selectedSecurityRolesForAgent.length }})
mdi-upload Import Agent
Select a JSON file containing an exported agent configuration to import it into the system.
Note: Importing an agent will create a new agent with the configuration from the export file. Any existing agents with the same name will remain unchanged.
Cancel
Export Mind
Mind: {{ exportMindData.mind.name }}
Memories: {{ exportMindData.mind.memory_count || 0 }}
Cancel Export
Import Mind
Select a YAML file containing an exported mind to import it along with all its memories and relationships.
Note: Importing a mind will create or merge memories and their relationships. This operation cannot be easily undone.
Cancel Import
Create New Mind
Create a new mind to organize and manage your memories.
Cancel Create Mind
Edit Mind
Update the mind's name and description.
Cancel Update Mind
Delete Mind
Warning: This action cannot be undone!
You are about to delete the mind "{{ deleteMindData.mindName }}" and all of its:
All memories in this mind All relationships between memories
To confirm deletion, please type the mind name exactly:
Cancel Delete Mind
mdi-brain Models mdi-robot-outline Agents mdi-message-text-outline Chats mdi-tools Tools mdi-graph-outline Memory mdi-application-outline Apps