Detailed reference for all features configurable in pika-config.ts under siteFeatures.
Overview
Section titled “Overview”Site features provide default configurations that apply across your entire Pika Platform instance. Individual chat apps can override most of these settings.
Feature Categories
Section titled “Feature Categories”Home Page
Section titled “Home Page”Configure the platform landing page.
homePage: { homePageTitle: string; welcomeMessage: string; linksToChatApps: { userChatAppRules: UserChatAppRule[]; };}Fields:
| Field | Type | Description |
|---|---|---|
homePageTitle | string | Browser page title |
welcomeMessage | string | Welcome message displayed to users |
userChatAppRules | UserChatAppRule[] | Controls which users see which chat apps |
UserChatAppRule:
interface UserChatAppRule { userTypes?: UserType[]; // User types who see links chatAppUserTypes?: UserType[]; // Types of apps to show them}Example:
homePage: { homePageTitle: 'AI Assistants', welcomeMessage: 'Choose an assistant to get started', linksToChatApps: { userChatAppRules: [ { // Internal users see all apps userTypes: ['internal-user'], chatAppUserTypes: ['internal-user', 'external-user'] }, { // External users only see external apps userTypes: ['external-user'], chatAppUserTypes: ['external-user'] } ] }}Entity
Section titled “Entity”Multi-tenancy configuration for accounts/organizations.
entity: { enabled: boolean; attributeName: string; tableColumnHeaderTitle: string; displayNameSingular: string; displayNamePlural: string; searchPlaceholderText: string;}When to use: Enable when users belong to accounts, organizations, or other entities that need separate data access.
Example:
entity: { enabled: true, attributeName: 'companyId', tableColumnHeaderTitle: 'Company ID', displayNameSingular: 'Company', displayNamePlural: 'Companies', searchPlaceholderText: 'Search companies...'}User Data Overrides
Section titled “User Data Overrides”Allow users to temporarily override their custom data for testing.
userDataOverrides: { enabled: boolean; promptUserIfAnyOfTheseCustomUserDataAttributesAreMissing: string[];}Use case: Internal users testing different account scenarios.
Example:
userDataOverrides: { enabled: true, promptUserIfAnyOfTheseCustomUserDataAttributesAreMissing: [ 'accountId', 'accountType', 'region' ]}Content Admin
Section titled “Content Admin”Enable content administrators to view all user sessions.
contentAdmin: { enabled: boolean;}Example:
contentAdmin: { enabled: true}Traces
Section titled “Traces”AI execution transparency feature.
traces: { enabled: boolean; userTypes: UserType[]; detailedTraces: { enabled: boolean; userTypes: UserType[]; };}Fields:
| Field | Description |
|---|---|
enabled | Show basic trace information |
userTypes | Who can see traces |
detailedTraces.enabled | Show technical implementation details |
detailedTraces.userTypes | Who can see detailed traces |
Example:
traces: { enabled: true, userTypes: ['internal-user', 'external-user'], detailedTraces: { enabled: true, userTypes: ['internal-user'] // Only internal users see details }}Chat Disclaimer Notice
Section titled “Chat Disclaimer Notice”Display legal/compliance disclaimers.
chatDisclaimerNotice: { enabled: boolean; notice: string;}Example:
chatDisclaimerNotice: { enabled: true, notice: 'This AI assistant provides general information only. For critical decisions, please consult a professional.'}Verify Response
Section titled “Verify Response”Self-correcting AI responses.
verifyResponse: { enabled: boolean; autoRepromptThreshold: 'A' | 'B' | 'C' | 'D'; userTypes: UserType[];}Thresholds:
| Grade | Meaning | Action |
|---|---|---|
| A | Accurate and comprehensive | Accept |
| B | Accurate but incomplete | Accept |
| C | Accurate with assumptions | Auto-retry if threshold ≤ C |
| D | Inaccurate | Auto-retry if threshold ≤ D |
Example:
verifyResponse: { enabled: true, autoRepromptThreshold: 'C', // Retry C and D responses userTypes: ['internal-user']}Logout
Section titled “Logout”Configure logout button.
logout: { enabled: boolean; userTypes: UserType[];}Example:
logout: { enabled: true, userTypes: ['internal-user', 'external-user']}Site Admin
Section titled “Site Admin”Admin website configuration.
siteAdmin: { websiteEnabled: boolean; supportUserEntityAccessControl: { enabled: boolean; }; supportSpecificUserAccessControl: { enabled: boolean; }; sessionInsights: { enabled: boolean; };}Example:
siteAdmin: { websiteEnabled: true, supportUserEntityAccessControl: { enabled: true }, supportSpecificUserAccessControl: { enabled: true }, sessionInsights: { enabled: true }}File Upload
Section titled “File Upload”File attachment configuration.
fileUpload: { enabled: boolean; mimeTypesAllowed: string[];}Common MIME types:
'text/*'- All text files'text/csv'- CSV files'application/pdf'- PDF documents'image/jpeg','image/png'- Images'application/json'- JSON files
Example:
fileUpload: { enabled: true, mimeTypesAllowed: [ 'text/*', 'application/pdf', 'image/jpeg', 'image/png', 'application/json' ]}Suggestions
Section titled “Suggestions”Quick action buttons in chat.
suggestions: { enabled: boolean; suggestions: string[]; maxToShow: number; randomize: boolean; randomizeAfter: number;}Fields:
| Field | Description |
|---|---|
suggestions | Array of suggestion texts (typically overridden by chat apps) |
maxToShow | Maximum suggestions to display at once |
randomize | Randomize suggestion order |
randomizeAfter | Start randomizing after N messages |
Example:
suggestions: { enabled: true, suggestions: [], // Overridden by chat apps maxToShow: 3, randomize: true, randomizeAfter: 0}Prompt Input Field Label
Section titled “Prompt Input Field Label”Customize chat input placeholder.
promptInputFieldLabel: { enabled: boolean; promptInputFieldLabel: string;}Example:
promptInputFieldLabel: { enabled: true, promptInputFieldLabel: 'Type your message...'}UI Customization
Section titled “UI Customization”Global UI behavior settings.
uiCustomization: { enabled: boolean; showUserRegionInLeftNav: boolean; showChatHistoryInStandaloneMode: boolean;}Example:
uiCustomization: { enabled: true, showUserRegionInLeftNav: true, showChatHistoryInStandaloneMode: true}Session Insights
Section titled “Session Insights”AI-generated analytics.
sessionInsights: { enabled: boolean;}What it provides:
- Goal achievement analysis
- User satisfaction scoring
- AI performance metrics
- Interaction quality assessment
Example:
sessionInsights: { enabled: true}Custom UI widgets system.
tags: { enabled: boolean;}Example:
tags: { enabled: true}Agent Instruction Assistance
Section titled “Agent Instruction Assistance”Help users write better prompts.
agentInstructionAssistance: { enabled: boolean;}Example:
agentInstructionAssistance: { enabled: true}Instruction Augmentation
Section titled “Instruction Augmentation”Automatically enhance prompts.
instructionAugmentation: { enabled: boolean; type: 'llm-semantic-directive-search';}Example:
instructionAugmentation: { enabled: true, type: 'llm-semantic-directive-search'}User Memory
Section titled “User Memory”Remember user context across sessions.
userMemory: { enabled: boolean; maxMemoryRecordsPerPrompt: number; maxKMatchesPerStrategy: number;}Fields:
| Field | Description |
|---|---|
maxMemoryRecordsPerPrompt | Maximum memories included in each prompt |
maxKMatchesPerStrategy | Maximum matches per retrieval strategy (short-term, long-term) |
Example:
userMemory: { enabled: true, maxMemoryRecordsPerPrompt: 25, maxKMatchesPerStrategy: 5}Feature Override Pattern
Section titled “Feature Override Pattern”Most features can be overridden per chat app:
Site-wide default:
siteFeatures: { traces: { enabled: true, userTypes: ['internal-user'] }}Chat app override:
// Chat app configurationfeatures: { traces: { featureId: 'traces', enabled: true, userTypes: ['internal-user', 'external-user'] // Override }}Complete Configuration Example
Section titled “Complete Configuration Example”export const pikaConfig: PikaConfig = { // ... project names ... siteFeatures: { homePage: { homePageTitle: 'AI Assistants', welcomeMessage: 'Welcome!', linksToChatApps: { userChatAppRules: [ { userTypes: ['internal-user'], chatAppUserTypes: ['internal-user', 'external-user'] } ] } }, entity: { enabled: true, attributeName: 'accountId', tableColumnHeaderTitle: 'Account ID', displayNameSingular: 'Account', displayNamePlural: 'Accounts', searchPlaceholderText: 'Search accounts...' }, userDataOverrides: { enabled: true, promptUserIfAnyOfTheseCustomUserDataAttributesAreMissing: ['accountId'] }, contentAdmin: { enabled: true }, traces: { enabled: true, userTypes: ['internal-user'], detailedTraces: { enabled: true, userTypes: ['internal-user'] } }, chatDisclaimerNotice: { enabled: true, notice: 'AI-generated content. Verify important information.' }, verifyResponse: { enabled: true, autoRepromptThreshold: 'C', userTypes: ['internal-user'] }, logout: { enabled: true, userTypes: ['internal-user', 'external-user'] }, siteAdmin: { websiteEnabled: true, supportUserEntityAccessControl: { enabled: true }, supportSpecificUserAccessControl: { enabled: true }, sessionInsights: { enabled: true } }, fileUpload: { enabled: true, mimeTypesAllowed: ['text/*', 'application/pdf'] }, suggestions: { enabled: true, suggestions: [], maxToShow: 3, randomize: true, randomizeAfter: 0 }, promptInputFieldLabel: { enabled: true, promptInputFieldLabel: 'Message...' }, uiCustomization: { enabled: true, showUserRegionInLeftNav: false, showChatHistoryInStandaloneMode: true }, sessionInsights: { enabled: true }, tags: { enabled: true }, agentInstructionAssistance: { enabled: true }, instructionAugmentation: { enabled: true, type: 'llm-semantic-directive-search' }, userMemory: { enabled: true, maxMemoryRecordsPerPrompt: 25, maxKMatchesPerStrategy: 5 } }};Feature Dependencies
Section titled “Feature Dependencies”Some features depend on others:
| Feature | Requires | Reason |
|---|---|---|
| User Data Overrides | Entity (optional) | Works better with entity system |
| Content Admin | - | Independent |
| Detailed Traces | Traces | Extension of basic traces |
| Session Insights | - | Independent |
| Entity Toggle (in chat apps) | Entity | Needs entity system enabled |
Performance Considerations
Section titled “Performance Considerations”Features that impact performance:
| Feature | Impact | Mitigation |
|---|---|---|
| User Memory | Adds to prompt size | Tune maxMemoryRecordsPerPrompt |
| Verify Response | Doubles LLM calls | Enable only for critical apps |
| Session Insights | Post-session processing | Async, no user-facing impact |
| Instruction Augmentation | Adds to prompt | Usually minimal impact |
Security Considerations
Section titled “Security Considerations”Migration from Old Versions
Section titled “Migration from Old Versions”If upgrading from an older Pika version, these features may be new:
instructionAugmentation- Added in v1.2sessionInsights- Added in v1.1tags- Added in v1.0
Check the Changelog for migration details.
Related Documentation
Section titled “Related Documentation”- Platform Settings - Complete pika-config.ts reference
- Chat App Configuration - Per-app overrides
- Environment Variables - Runtime configuration
- Feature Guides - How-to guides for each feature
Type Definitions
Section titled “Type Definitions”import type { SiteFeatures, UserType, UserChatAppRule} from 'pika-shared/types/chatbot/chatbot-types';See Types Reference for complete type definitions.