@nextsparkjs/theme-default 0.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/about/business.md +49 -0
- package/about/features.json +302 -0
- package/about/team.md +79 -0
- package/api/ai/chat/stream/route.ts +212 -0
- package/api/ai/orchestrator/route.ts +226 -0
- package/api/ai/single-agent/route.ts +291 -0
- package/api/ai/usage/route.ts +122 -0
- package/blocks/benefits/component.tsx +100 -0
- package/blocks/benefits/config.ts +11 -0
- package/blocks/benefits/examples.ts +85 -0
- package/blocks/benefits/fields.ts +156 -0
- package/blocks/benefits/schema.ts +33 -0
- package/blocks/cta-section/component.tsx +100 -0
- package/blocks/cta-section/config.ts +11 -0
- package/blocks/cta-section/examples.ts +41 -0
- package/blocks/cta-section/fields.ts +89 -0
- package/blocks/cta-section/index.ts +6 -0
- package/blocks/cta-section/schema.ts +32 -0
- package/blocks/cta-section/thumbnail.png +1 -0
- package/blocks/faq-accordion/component.tsx +156 -0
- package/blocks/faq-accordion/config.ts +11 -0
- package/blocks/faq-accordion/examples.ts +77 -0
- package/blocks/faq-accordion/fields.ts +119 -0
- package/blocks/faq-accordion/index.ts +6 -0
- package/blocks/faq-accordion/schema.ts +45 -0
- package/blocks/features-grid/component.tsx +112 -0
- package/blocks/features-grid/config.ts +11 -0
- package/blocks/features-grid/examples.ts +63 -0
- package/blocks/features-grid/fields.ts +97 -0
- package/blocks/features-grid/index.ts +6 -0
- package/blocks/features-grid/schema.ts +40 -0
- package/blocks/features-grid/thumbnail.png +1 -0
- package/blocks/hero/component.tsx +100 -0
- package/blocks/hero/config.ts +11 -0
- package/blocks/hero/examples.ts +35 -0
- package/blocks/hero/fields.ts +60 -0
- package/blocks/hero/index.ts +6 -0
- package/blocks/hero/schema.ts +32 -0
- package/blocks/hero/thumbnail.png +1 -0
- package/blocks/hero/thumbnail.png.txt +6 -0
- package/blocks/hero-with-form/component.tsx +232 -0
- package/blocks/hero-with-form/config.ts +11 -0
- package/blocks/hero-with-form/examples.ts +16 -0
- package/blocks/hero-with-form/fields.ts +207 -0
- package/blocks/hero-with-form/index.ts +6 -0
- package/blocks/hero-with-form/schema.ts +54 -0
- package/blocks/jumbotron/component.tsx +136 -0
- package/blocks/jumbotron/config.ts +11 -0
- package/blocks/jumbotron/examples.ts +36 -0
- package/blocks/jumbotron/fields.ts +202 -0
- package/blocks/jumbotron/index.ts +6 -0
- package/blocks/jumbotron/schema.ts +55 -0
- package/blocks/logo-cloud/component.tsx +154 -0
- package/blocks/logo-cloud/config.ts +11 -0
- package/blocks/logo-cloud/examples.ts +34 -0
- package/blocks/logo-cloud/fields.ts +133 -0
- package/blocks/logo-cloud/index.ts +6 -0
- package/blocks/logo-cloud/schema.ts +46 -0
- package/blocks/post-content/component.tsx +197 -0
- package/blocks/post-content/config.ts +11 -0
- package/blocks/post-content/examples.ts +33 -0
- package/blocks/post-content/fields.ts +165 -0
- package/blocks/post-content/index.ts +4 -0
- package/blocks/post-content/schema.ts +46 -0
- package/blocks/pricing-table/component.tsx +154 -0
- package/blocks/pricing-table/config.ts +11 -0
- package/blocks/pricing-table/examples.ts +96 -0
- package/blocks/pricing-table/fields.ts +161 -0
- package/blocks/pricing-table/index.ts +4 -0
- package/blocks/pricing-table/schema.ts +50 -0
- package/blocks/split-content/component.tsx +135 -0
- package/blocks/split-content/config.ts +11 -0
- package/blocks/split-content/examples.ts +38 -0
- package/blocks/split-content/fields.ts +198 -0
- package/blocks/split-content/index.ts +6 -0
- package/blocks/split-content/schema.ts +67 -0
- package/blocks/stats-counter/component.tsx +124 -0
- package/blocks/stats-counter/config.ts +11 -0
- package/blocks/stats-counter/examples.ts +61 -0
- package/blocks/stats-counter/fields.ts +134 -0
- package/blocks/stats-counter/index.ts +6 -0
- package/blocks/stats-counter/schema.ts +47 -0
- package/blocks/testimonials/component.tsx +114 -0
- package/blocks/testimonials/config.ts +11 -0
- package/blocks/testimonials/examples.ts +65 -0
- package/blocks/testimonials/fields.ts +105 -0
- package/blocks/testimonials/index.ts +6 -0
- package/blocks/testimonials/schema.ts +41 -0
- package/blocks/testimonials/thumbnail.png +1 -0
- package/blocks/text-content/component.tsx +97 -0
- package/blocks/text-content/config.ts +11 -0
- package/blocks/text-content/examples.ts +30 -0
- package/blocks/text-content/fields.ts +88 -0
- package/blocks/text-content/index.ts +6 -0
- package/blocks/text-content/schema.ts +30 -0
- package/blocks/text-content/thumbnail.png +1 -0
- package/blocks/timeline/component.tsx +267 -0
- package/blocks/timeline/config.ts +11 -0
- package/blocks/timeline/examples.ts +68 -0
- package/blocks/timeline/fields.ts +147 -0
- package/blocks/timeline/index.ts +6 -0
- package/blocks/timeline/schema.ts +49 -0
- package/blocks/video-hero/component.tsx +270 -0
- package/blocks/video-hero/config.ts +11 -0
- package/blocks/video-hero/examples.ts +24 -0
- package/blocks/video-hero/fields.ts +98 -0
- package/blocks/video-hero/index.ts +6 -0
- package/blocks/video-hero/schema.ts +39 -0
- package/components/ai-chat/ChatPanel.tsx +575 -0
- package/components/ai-chat/ConversationItem.tsx +266 -0
- package/components/ai-chat/ConversationSidebar.tsx +99 -0
- package/components/ai-chat/MarkdownRenderer.tsx +15 -0
- package/components/ai-chat/Message.tsx +42 -0
- package/components/ai-chat/MessageInput.tsx +49 -0
- package/components/ai-chat/MessageList.tsx +46 -0
- package/components/ai-chat/TypingIndicator.tsx +11 -0
- package/config/app.config.ts +367 -0
- package/config/billing.config.ts +349 -0
- package/config/dashboard.config.ts +506 -0
- package/config/dev.config.ts +104 -0
- package/config/features.config.ts +203 -0
- package/config/flows.config.ts +129 -0
- package/config/permissions.config.ts +245 -0
- package/config/theme.config.ts +74 -0
- package/docs/01-overview/01-introduction.md +335 -0
- package/docs/01-overview/02-customization.md +671 -0
- package/docs/02-features/01-components.md +155 -0
- package/docs/02-features/02-styling.md +139 -0
- package/docs/02-features/03-tasks-entity.md +407 -0
- package/docs/03-ai/01-overview.md +211 -0
- package/docs/03-ai/02-customization.md +436 -0
- package/entities/customers/customers.config.ts +75 -0
- package/entities/customers/customers.fields.ts +165 -0
- package/entities/customers/customers.service.ts +516 -0
- package/entities/customers/customers.types.ts +83 -0
- package/entities/customers/messages/en.json +66 -0
- package/entities/customers/messages/es.json +66 -0
- package/entities/customers/migrations/001_customers_table.sql +102 -0
- package/entities/customers/migrations/002_customers_metas.sql +92 -0
- package/entities/pages/messages/en.json +41 -0
- package/entities/pages/messages/es.json +41 -0
- package/entities/pages/migrations/001_pages_table.sql +112 -0
- package/entities/pages/migrations/002_pages_metas.sql +56 -0
- package/entities/pages/migrations/003_add_status.sql +50 -0
- package/entities/pages/pages-management.service.ts +610 -0
- package/entities/pages/pages.config.ts +94 -0
- package/entities/pages/pages.fields.ts +101 -0
- package/entities/pages/pages.service.ts +290 -0
- package/entities/pages/pages.types.ts +124 -0
- package/entities/posts/components/post-header.tsx +97 -0
- package/entities/posts/messages/en.json +55 -0
- package/entities/posts/messages/es.json +55 -0
- package/entities/posts/migrations/001_posts_table.sql +115 -0
- package/entities/posts/migrations/003_add_status.sql +44 -0
- package/entities/posts/migrations/004_entity_taxonomy_relations.sql +129 -0
- package/entities/posts/migrations/006_posts_metas.sql +56 -0
- package/entities/posts/posts.config.ts +101 -0
- package/entities/posts/posts.fields.ts +116 -0
- package/entities/posts/posts.service.ts +376 -0
- package/entities/posts/posts.types.ts +74 -0
- package/entities/tasks/messages/en.json +204 -0
- package/entities/tasks/messages/es.json +204 -0
- package/entities/tasks/migrations/001_tasks_table.sql +105 -0
- package/entities/tasks/migrations/002_task_metas.sql +85 -0
- package/entities/tasks/migrations/sample_data.json +77 -0
- package/entities/tasks/tasks.config.ts +79 -0
- package/entities/tasks/tasks.fields.ts +196 -0
- package/entities/tasks/tasks.service.ts +541 -0
- package/entities/tasks/tasks.types.ts +56 -0
- package/lib/hooks/useAiChat.ts +114 -0
- package/lib/hooks/useConversations.ts +376 -0
- package/lib/hooks/useOrchestratorChat.ts +122 -0
- package/lib/hooks/usePersistentChat.ts +315 -0
- package/lib/hooks/useStreamingChat.ts +127 -0
- package/lib/hooks/useTokenUsage.ts +63 -0
- package/lib/langchain/agents/customer-assistant.md +69 -0
- package/lib/langchain/agents/index.ts +61 -0
- package/lib/langchain/agents/orchestrator.md +59 -0
- package/lib/langchain/agents/page-assistant.md +85 -0
- package/lib/langchain/agents/single-agent.md +46 -0
- package/lib/langchain/agents/task-assistant.md +55 -0
- package/lib/langchain/config.ts +45 -0
- package/lib/langchain/handlers/customer-handler.ts +338 -0
- package/lib/langchain/handlers/page-handler.ts +232 -0
- package/lib/langchain/handlers/task-handler.ts +323 -0
- package/lib/langchain/langchain.config.ts +223 -0
- package/lib/langchain/observability.config.ts +30 -0
- package/lib/langchain/orchestrator.ts +562 -0
- package/lib/langchain/tools/customers.ts +176 -0
- package/lib/langchain/tools/index.ts +10 -0
- package/lib/langchain/tools/orchestrator.ts +92 -0
- package/lib/langchain/tools/pages.ts +289 -0
- package/lib/langchain/tools/tasks.ts +167 -0
- package/lib/scheduled-actions/billing.ts +149 -0
- package/lib/scheduled-actions/index.ts +170 -0
- package/lib/scheduled-actions/webhook.ts +231 -0
- package/lib/selectors.ts +197 -0
- package/messages/de/admin.json +219 -0
- package/messages/de/aiUsage.json +36 -0
- package/messages/de/buttons.json +19 -0
- package/messages/de/categories.json +35 -0
- package/messages/de/common.json +16 -0
- package/messages/de/dev.json +101 -0
- package/messages/de/docs.json +27 -0
- package/messages/de/entities.json +7 -0
- package/messages/de/features.json +119 -0
- package/messages/de/footer.json +22 -0
- package/messages/de/home.json +57 -0
- package/messages/de/index.ts +39 -0
- package/messages/de/mobileNav.json +13 -0
- package/messages/de/navigation.json +8 -0
- package/messages/de/observability.json +74 -0
- package/messages/de/posts.json +54 -0
- package/messages/de/pricing.json +102 -0
- package/messages/de/support.json +9 -0
- package/messages/de/teams.json +8 -0
- package/messages/en/admin.json +219 -0
- package/messages/en/aiUsage.json +36 -0
- package/messages/en/buttons.json +19 -0
- package/messages/en/categories.json +35 -0
- package/messages/en/common.json +16 -0
- package/messages/en/dev.json +106 -0
- package/messages/en/docs.json +27 -0
- package/messages/en/entities.json +7 -0
- package/messages/en/features.json +119 -0
- package/messages/en/footer.json +22 -0
- package/messages/en/home.json +57 -0
- package/messages/en/index.ts +39 -0
- package/messages/en/mobileNav.json +13 -0
- package/messages/en/navigation.json +8 -0
- package/messages/en/observability.json +74 -0
- package/messages/en/posts.json +54 -0
- package/messages/en/pricing.json +102 -0
- package/messages/en/support.json +9 -0
- package/messages/en/teams.json +8 -0
- package/messages/es/admin.json +219 -0
- package/messages/es/aiUsage.json +36 -0
- package/messages/es/buttons.json +19 -0
- package/messages/es/categories.json +35 -0
- package/messages/es/common.json +16 -0
- package/messages/es/dev.json +101 -0
- package/messages/es/docs.json +27 -0
- package/messages/es/entities.json +7 -0
- package/messages/es/features.json +119 -0
- package/messages/es/footer.json +22 -0
- package/messages/es/home.json +57 -0
- package/messages/es/index.ts +39 -0
- package/messages/es/mobileNav.json +13 -0
- package/messages/es/navigation.json +8 -0
- package/messages/es/observability.json +74 -0
- package/messages/es/posts.json +54 -0
- package/messages/es/pricing.json +102 -0
- package/messages/es/support.json +9 -0
- package/messages/es/teams.json +8 -0
- package/messages/fr/admin.json +219 -0
- package/messages/fr/aiUsage.json +36 -0
- package/messages/fr/buttons.json +19 -0
- package/messages/fr/categories.json +35 -0
- package/messages/fr/common.json +16 -0
- package/messages/fr/dev.json +101 -0
- package/messages/fr/docs.json +27 -0
- package/messages/fr/entities.json +7 -0
- package/messages/fr/features.json +119 -0
- package/messages/fr/footer.json +22 -0
- package/messages/fr/home.json +57 -0
- package/messages/fr/index.ts +39 -0
- package/messages/fr/mobileNav.json +13 -0
- package/messages/fr/navigation.json +8 -0
- package/messages/fr/observability.json +74 -0
- package/messages/fr/posts.json +54 -0
- package/messages/fr/pricing.json +102 -0
- package/messages/fr/support.json +9 -0
- package/messages/fr/teams.json +8 -0
- package/messages/it/admin.json +219 -0
- package/messages/it/aiUsage.json +36 -0
- package/messages/it/buttons.json +19 -0
- package/messages/it/categories.json +35 -0
- package/messages/it/common.json +16 -0
- package/messages/it/dev.json +101 -0
- package/messages/it/docs.json +27 -0
- package/messages/it/entities.json +7 -0
- package/messages/it/features.json +119 -0
- package/messages/it/footer.json +22 -0
- package/messages/it/home.json +57 -0
- package/messages/it/index.ts +39 -0
- package/messages/it/mobileNav.json +13 -0
- package/messages/it/navigation.json +8 -0
- package/messages/it/observability.json +74 -0
- package/messages/it/posts.json +54 -0
- package/messages/it/pricing.json +102 -0
- package/messages/it/support.json +9 -0
- package/messages/it/teams.json +8 -0
- package/messages/pt/admin.json +219 -0
- package/messages/pt/aiUsage.json +36 -0
- package/messages/pt/buttons.json +19 -0
- package/messages/pt/categories.json +35 -0
- package/messages/pt/common.json +16 -0
- package/messages/pt/dev.json +101 -0
- package/messages/pt/docs.json +27 -0
- package/messages/pt/entities.json +7 -0
- package/messages/pt/features.json +119 -0
- package/messages/pt/footer.json +22 -0
- package/messages/pt/home.json +57 -0
- package/messages/pt/index.ts +39 -0
- package/messages/pt/mobileNav.json +13 -0
- package/messages/pt/navigation.json +8 -0
- package/messages/pt/observability.json +74 -0
- package/messages/pt/posts.json +54 -0
- package/messages/pt/pricing.json +102 -0
- package/messages/pt/support.json +9 -0
- package/messages/pt/teams.json +8 -0
- package/migrations/089_add_editor_team_role.sql +39 -0
- package/migrations/090_demo_users_teams.sql +540 -0
- package/migrations/091_greek_teams_billing.sql +523 -0
- package/migrations/092_billing_sample_data.sql +774 -0
- package/migrations/093_pages_sample_data.sql +1158 -0
- package/migrations/094_posts_sample_data.sql +278 -0
- package/migrations/095_tasks_sample_data.sql +440 -0
- package/migrations/096_customers_sample_data.sql +358 -0
- package/migrations/097_scheduled_actions_sample_data.sql +111 -0
- package/package.json +22 -0
- package/public/docs/desktop-layout-example.png +0 -0
- package/styles/components.css +11 -0
- package/styles/globals.css +179 -0
- package/templates/(public)/blog/[slug]/page.tsx +65 -0
- package/templates/(public)/layout.tsx +25 -0
- package/templates/(public)/page.tsx +200 -0
- package/templates/(public)/support/page.tsx +321 -0
- package/templates/dashboard/(main)/agent-multi/page.tsx +63 -0
- package/templates/dashboard/(main)/agent-single/page.tsx +142 -0
- package/templates/dashboard/(main)/settings/ai-usage/page.tsx +157 -0
- package/templates/superadmin/ai-observability/[traceId]/page.tsx +27 -0
- package/templates/superadmin/ai-observability/page.tsx +17 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ============================================================================
|
|
3
|
+
* LANGCHAIN CONFIGURATION
|
|
4
|
+
* ============================================================================
|
|
5
|
+
*
|
|
6
|
+
* Central configuration for the LangChain plugin in this theme.
|
|
7
|
+
* Includes both observability settings and agent definitions.
|
|
8
|
+
*
|
|
9
|
+
* ============================================================================
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { ObservabilityConfig } from '@/plugins/langchain/types/observability.types'
|
|
13
|
+
import type {
|
|
14
|
+
ThemeLangChainConfig,
|
|
15
|
+
AgentDefinition,
|
|
16
|
+
AgentContext,
|
|
17
|
+
} from '@/plugins/langchain/types/langchain.types'
|
|
18
|
+
import { createAgentHelpers } from '@/plugins/langchain/lib/agent-helpers'
|
|
19
|
+
|
|
20
|
+
// Tool factories (relative imports since we're inside lib/langchain/)
|
|
21
|
+
import { createTaskTools } from './tools/tasks'
|
|
22
|
+
import { createCustomerTools } from './tools/customers'
|
|
23
|
+
import { createPageTools } from './tools/pages'
|
|
24
|
+
import { createOrchestratorTools } from './tools/orchestrator'
|
|
25
|
+
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// OBSERVABILITY CONFIGURATION
|
|
28
|
+
// ============================================================================
|
|
29
|
+
|
|
30
|
+
export interface LangChainObservabilityConfig {
|
|
31
|
+
/** Observability configuration */
|
|
32
|
+
observability: ObservabilityConfig
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const observabilityConfig: LangChainObservabilityConfig = {
|
|
36
|
+
observability: {
|
|
37
|
+
/** Enable observability tracing */
|
|
38
|
+
enabled: true,
|
|
39
|
+
|
|
40
|
+
/** Data retention settings */
|
|
41
|
+
retention: {
|
|
42
|
+
/** Days to keep trace data */
|
|
43
|
+
traces: 30,
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
/** Sampling configuration */
|
|
47
|
+
sampling: {
|
|
48
|
+
/** Sample rate (0.0-1.0) - 1.0 = 100% */
|
|
49
|
+
rate: 1.0,
|
|
50
|
+
/** Always trace errors regardless of sample rate */
|
|
51
|
+
alwaysTraceErrors: true,
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
/** PII and content processing */
|
|
55
|
+
pii: {
|
|
56
|
+
/** Mask inputs for PII (email, phone, card, SSN patterns) */
|
|
57
|
+
maskInputs: false,
|
|
58
|
+
/** Mask outputs for PII */
|
|
59
|
+
maskOutputs: false,
|
|
60
|
+
/** Truncate content at this length (characters) */
|
|
61
|
+
truncateAt: 10000,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// ============================================================================
|
|
67
|
+
// AGENT DEFINITIONS
|
|
68
|
+
// ============================================================================
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* All agents available in this theme.
|
|
72
|
+
*
|
|
73
|
+
* Each agent has:
|
|
74
|
+
* - provider: LLM provider (ollama, openai, anthropic)
|
|
75
|
+
* - model: Model name
|
|
76
|
+
* - temperature: Creativity level (0-1)
|
|
77
|
+
* - createTools: Factory function that returns tools for this agent
|
|
78
|
+
* - systemPrompt: Name of the .md file in /agents folder
|
|
79
|
+
* - description: What this agent does (documentation)
|
|
80
|
+
* - sessionConfig: (optional) Memory customization (TTL, maxMessages)
|
|
81
|
+
* - enrichContext: (optional) Fetch runtime data for prompt templates
|
|
82
|
+
*/
|
|
83
|
+
export const AGENTS: Record<string, AgentDefinition> = {
|
|
84
|
+
// ========================================================================
|
|
85
|
+
// SINGLE AGENT - Uses Ollama (local, fast)
|
|
86
|
+
// Model configured via LANGCHAIN_OLLAMA_MODEL in .env
|
|
87
|
+
// ========================================================================
|
|
88
|
+
'single-agent': {
|
|
89
|
+
provider: 'ollama',
|
|
90
|
+
// model: uses LANGCHAIN_OLLAMA_MODEL from .env
|
|
91
|
+
temperature: 0.3,
|
|
92
|
+
description: 'Unified agent with access to all entity tools (tasks, customers, pages)',
|
|
93
|
+
systemPrompt: 'single-agent', // loads from agents/single-agent.md
|
|
94
|
+
createTools: (context: AgentContext) => [
|
|
95
|
+
...createTaskTools(context),
|
|
96
|
+
...createCustomerTools(context),
|
|
97
|
+
...createPageTools(context),
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
// ========================================================================
|
|
102
|
+
// ORCHESTRATOR - Uses Anthropic Claude for reliable intent classification
|
|
103
|
+
// ========================================================================
|
|
104
|
+
'orchestrator': {
|
|
105
|
+
provider: 'anthropic',
|
|
106
|
+
model: 'claude-3-haiku-20240307', // Claude 3 Haiku - fast and reliable
|
|
107
|
+
temperature: 0.1, // Low temperature for consistent routing
|
|
108
|
+
description: 'Analyzes user intent and routes to the appropriate specialized agent',
|
|
109
|
+
systemPrompt: 'orchestrator', // loads from agents/orchestrator.md
|
|
110
|
+
createTools: () => createOrchestratorTools(),
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
// ========================================================================
|
|
114
|
+
// SUB-AGENTS - Use OpenAI GPT-4o-mini (fast and cost-effective)
|
|
115
|
+
// ========================================================================
|
|
116
|
+
'task-assistant': {
|
|
117
|
+
provider: 'openai',
|
|
118
|
+
model: 'gpt-4o-mini', // Fast and cheap for simple operations
|
|
119
|
+
temperature: 0.3,
|
|
120
|
+
description: 'Specialized agent for task management (CRUD operations)',
|
|
121
|
+
systemPrompt: 'task-assistant', // loads from agents/task-assistant.md
|
|
122
|
+
createTools: (context: AgentContext) => createTaskTools(context),
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
'customer-assistant': {
|
|
126
|
+
provider: 'openai',
|
|
127
|
+
model: 'gpt-4o-mini',
|
|
128
|
+
temperature: 0.3,
|
|
129
|
+
description: 'Specialized agent for customer management (CRUD operations)',
|
|
130
|
+
systemPrompt: 'customer-assistant', // loads from agents/customer-assistant.md
|
|
131
|
+
createTools: (context: AgentContext) => createCustomerTools(context),
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
'page-assistant': {
|
|
135
|
+
provider: 'openai',
|
|
136
|
+
model: 'gpt-4o-mini',
|
|
137
|
+
temperature: 0.3,
|
|
138
|
+
description: 'Specialized agent for page/content management with blocks',
|
|
139
|
+
systemPrompt: 'page-assistant', // loads from agents/page-assistant.md
|
|
140
|
+
createTools: (context: AgentContext) => createPageTools(context),
|
|
141
|
+
},
|
|
142
|
+
|
|
143
|
+
// ========================================================================
|
|
144
|
+
// DEMO AGENT - Example with sessionConfig + enrichContext
|
|
145
|
+
// This agent demonstrates advanced features for reference
|
|
146
|
+
// ========================================================================
|
|
147
|
+
'demo-assistant': {
|
|
148
|
+
provider: 'ollama',
|
|
149
|
+
temperature: 0.4,
|
|
150
|
+
description: 'Demo agent showing sessionConfig and enrichContext usage',
|
|
151
|
+
systemPrompt: 'single-agent', // Reuses single-agent prompt for demo
|
|
152
|
+
|
|
153
|
+
// Memory customization: conversations expire after 48 hours
|
|
154
|
+
sessionConfig: {
|
|
155
|
+
ttlHours: 48,
|
|
156
|
+
maxMessages: 100,
|
|
157
|
+
},
|
|
158
|
+
|
|
159
|
+
// Enrich context with runtime data for Handlebars templates
|
|
160
|
+
// This data is available in system prompts as {{user.name}}, etc.
|
|
161
|
+
enrichContext: async ({ userId, teamId }) => {
|
|
162
|
+
// In production, you would fetch real user/team data:
|
|
163
|
+
// const user = await UsersService.getById(userId)
|
|
164
|
+
// const team = await TeamsService.getById(teamId)
|
|
165
|
+
|
|
166
|
+
return {
|
|
167
|
+
userId,
|
|
168
|
+
teamId,
|
|
169
|
+
// Example enriched data for prompt templates
|
|
170
|
+
user: {
|
|
171
|
+
name: 'Demo User',
|
|
172
|
+
role: 'admin',
|
|
173
|
+
},
|
|
174
|
+
company: {
|
|
175
|
+
name: 'Acme Corp',
|
|
176
|
+
timezone: 'America/Argentina/Buenos_Aires',
|
|
177
|
+
},
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
createTools: (context: AgentContext) => [
|
|
182
|
+
...createTaskTools(context),
|
|
183
|
+
...createCustomerTools(context),
|
|
184
|
+
],
|
|
185
|
+
},
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// ============================================================================
|
|
189
|
+
// THEME CONFIG (for plugin compatibility)
|
|
190
|
+
// ============================================================================
|
|
191
|
+
|
|
192
|
+
export const langchainConfig: ThemeLangChainConfig = {
|
|
193
|
+
defaultProvider: 'ollama',
|
|
194
|
+
defaultTemperature: 0.3,
|
|
195
|
+
agents: AGENTS,
|
|
196
|
+
observability: observabilityConfig.observability,
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// ============================================================================
|
|
200
|
+
// HELPERS (from plugin factory)
|
|
201
|
+
// ============================================================================
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Helper functions created from the plugin's factory.
|
|
205
|
+
* These provide convenient access to agent configuration.
|
|
206
|
+
*/
|
|
207
|
+
const helpers = createAgentHelpers(AGENTS, {
|
|
208
|
+
provider: langchainConfig.defaultProvider,
|
|
209
|
+
model: langchainConfig.defaultModel,
|
|
210
|
+
temperature: langchainConfig.defaultTemperature,
|
|
211
|
+
})
|
|
212
|
+
|
|
213
|
+
// Re-export individual helpers for convenience
|
|
214
|
+
export const {
|
|
215
|
+
getAgentConfig,
|
|
216
|
+
getAgentModelConfig,
|
|
217
|
+
getAgentTools,
|
|
218
|
+
getAgentPromptName,
|
|
219
|
+
getAgentSessionConfig,
|
|
220
|
+
getAgentEnrichContext,
|
|
221
|
+
hasAgent,
|
|
222
|
+
getAgentNames,
|
|
223
|
+
} = helpers
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observability Configuration (Client-Safe)
|
|
3
|
+
*
|
|
4
|
+
* This file exports ONLY observability config without server dependencies.
|
|
5
|
+
* Use this in 'use client' components to avoid importing server-only code.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ObservabilityConfig } from '@/plugins/langchain/types/observability.types'
|
|
9
|
+
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// OBSERVABILITY CONFIGURATION (CLIENT-SAFE)
|
|
12
|
+
// ============================================================================
|
|
13
|
+
|
|
14
|
+
export const observabilityConfig: { observability: ObservabilityConfig } = {
|
|
15
|
+
observability: {
|
|
16
|
+
enabled: true,
|
|
17
|
+
retention: {
|
|
18
|
+
traces: 7, // Days to keep trace data
|
|
19
|
+
},
|
|
20
|
+
sampling: {
|
|
21
|
+
rate: 1.0, // 100% sampling in development
|
|
22
|
+
alwaysTraceErrors: true,
|
|
23
|
+
},
|
|
24
|
+
pii: {
|
|
25
|
+
maskInputs: true,
|
|
26
|
+
maskOutputs: true,
|
|
27
|
+
truncateAt: 10000,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
}
|