@whykusanagi/corrupted-theme 0.1.2 → 0.1.3
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/CHANGELOG.md +133 -0
- package/README.md +6 -0
- package/docs/CAPABILITIES.md +209 -0
- package/docs/CHARACTER_LEVEL_CORRUPTION.md +264 -0
- package/docs/CORRUPTION_PHRASES.md +529 -0
- package/docs/FUTURE_WORK.md +189 -0
- package/docs/IMPLEMENTATION_VALIDATION.md +401 -0
- package/docs/LLM_PROVIDERS.md +345 -0
- package/docs/PERSONALITY.md +128 -0
- package/docs/ROADMAP.md +266 -0
- package/docs/ROUTING.md +324 -0
- package/docs/STYLE_GUIDE.md +605 -0
- package/docs/brand/BRAND_OVERVIEW.md +413 -0
- package/docs/brand/COLOR_SYSTEM.md +583 -0
- package/docs/brand/DESIGN_TOKENS.md +1009 -0
- package/docs/brand/TRANSLATION_FAILURE_AESTHETIC.md +525 -0
- package/docs/brand/TYPOGRAPHY.md +624 -0
- package/docs/components/ANIMATION_GUIDELINES.md +901 -0
- package/docs/components/COMPONENT_LIBRARY.md +1061 -0
- package/docs/components/GLASSMORPHISM.md +602 -0
- package/docs/components/INTERACTIVE_STATES.md +766 -0
- package/docs/governance/CONTRIBUTION_GUIDELINES.md +593 -0
- package/docs/governance/DESIGN_SYSTEM_GOVERNANCE.md +451 -0
- package/docs/governance/VERSION_MANAGEMENT.md +447 -0
- package/docs/governance/VERSION_REFERENCES.md +229 -0
- package/docs/platforms/CLI_IMPLEMENTATION.md +1025 -0
- package/docs/platforms/COMPONENT_MAPPING.md +579 -0
- package/docs/platforms/NPM_PACKAGE.md +854 -0
- package/docs/platforms/WEB_IMPLEMENTATION.md +1221 -0
- package/docs/standards/ACCESSIBILITY.md +715 -0
- package/docs/standards/ANTI_PATTERNS.md +554 -0
- package/docs/standards/SPACING_SYSTEM.md +549 -0
- package/examples/button.html +1 -1
- package/examples/card.html +1 -1
- package/examples/form.html +1 -1
- package/examples/index.html +2 -2
- package/examples/layout.html +1 -1
- package/examples/nikke-team-builder.html +1 -1
- package/examples/showcase-complete.html +840 -15
- package/examples/showcase.html +1 -1
- package/package.json +4 -2
- package/src/css/components.css +676 -0
- package/src/lib/character-corruption.js +563 -0
- package/src/lib/components.js +283 -0
package/docs/ROADMAP.md
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# CelesteCLI Roadmap
|
|
2
|
+
|
|
3
|
+
This document tracks planned features, enhancements, and potential migrations for CelesteCLI.
|
|
4
|
+
|
|
5
|
+
## Current Status (December 2025)
|
|
6
|
+
|
|
7
|
+
### ✅ Completed
|
|
8
|
+
- Enterprise-grade RPG menu system with contextual help
|
|
9
|
+
- 18 AI-powered skills via function calling
|
|
10
|
+
- Multi-provider support (OpenAI, Grok, Venice, Anthropic, OpenRouter, DigitalOcean)
|
|
11
|
+
- Vertex AI support via OpenAI-compatible endpoint
|
|
12
|
+
- Session persistence and auto-save
|
|
13
|
+
- NSFW mode with Venice.ai image generation
|
|
14
|
+
- Context-aware /safe command
|
|
15
|
+
- Tool result filtering (hide raw JSON from UI)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Short-Term (Q1 2025)
|
|
20
|
+
|
|
21
|
+
### High Priority
|
|
22
|
+
|
|
23
|
+
#### 1. Vertex AI (Google Cloud) Setup Guide
|
|
24
|
+
- **Status**: Requires complex Google Cloud configuration
|
|
25
|
+
- **Goal**: Document complete Vertex AI setup for enterprise users
|
|
26
|
+
- **Provider Clarification**:
|
|
27
|
+
- **Gemini AI (AI Studio)**: Simple API keys ✅ READY
|
|
28
|
+
- **Vertex AI (Google Cloud)**: OAuth2 tokens, requires setup ⚠️ ENTERPRISE ONLY
|
|
29
|
+
|
|
30
|
+
**Vertex AI Requirements:**
|
|
31
|
+
1. **Google Cloud Project**: Active GCP project with billing enabled
|
|
32
|
+
2. **Vertex AI API**: Enable Vertex AI API in GCP console
|
|
33
|
+
3. **Service Account**: Create service account with `Vertex AI User` role
|
|
34
|
+
4. **Authentication**: Use OAuth2 tokens (NOT simple API keys)
|
|
35
|
+
5. **Token Management**: Tokens expire after 1 hour, need refresh mechanism
|
|
36
|
+
|
|
37
|
+
**Endpoint URL Format:**
|
|
38
|
+
```
|
|
39
|
+
https://aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/endpoints/openapi
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Configuration Example:**
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"api_key": "ya29.c.c0ASRK0Ga...", // OAuth2 access token
|
|
46
|
+
"base_url": "https://aiplatform.googleapis.com/v1/projects/my-project/locations/us-central1/endpoints/openapi",
|
|
47
|
+
"model": "gemini-2.0-flash",
|
|
48
|
+
"timeout": 60
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Token Generation (Go example):**
|
|
53
|
+
```go
|
|
54
|
+
import "golang.org/x/oauth2/google"
|
|
55
|
+
|
|
56
|
+
creds, _ := google.FindDefaultCredentials(ctx, "https://www.googleapis.com/auth/cloud-platform")
|
|
57
|
+
token, _ := creds.TokenSource.Token()
|
|
58
|
+
config.APIKey = token.AccessToken
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Why Most Users Should Use Gemini Instead:**
|
|
62
|
+
- Gemini AI: Simple API key from https://aistudio.google.com/apikey
|
|
63
|
+
- Vertex AI: Requires GCP project, billing, OAuth2 setup
|
|
64
|
+
- Both use same Gemini models, same function calling capabilities
|
|
65
|
+
- Vertex AI is for enterprise users with existing GCP infrastructure
|
|
66
|
+
|
|
67
|
+
- **Decision**: Gemini AI is the recommended provider for most users
|
|
68
|
+
|
|
69
|
+
#### 2. Improve Error Messaging
|
|
70
|
+
- **Goal**: Better error messages for common issues
|
|
71
|
+
- **Tasks**:
|
|
72
|
+
- [ ] API key validation on startup
|
|
73
|
+
- [ ] Clear messages for unsupported model features
|
|
74
|
+
- [ ] Network timeout handling with retry suggestions
|
|
75
|
+
- [ ] Configuration validation with fix suggestions
|
|
76
|
+
|
|
77
|
+
#### 3. Performance Optimization
|
|
78
|
+
- **Goal**: Reduce latency and improve responsiveness
|
|
79
|
+
- **Tasks**:
|
|
80
|
+
- [ ] Stream parsing optimization
|
|
81
|
+
- [ ] Reduce re-renders in TUI
|
|
82
|
+
- [ ] Cache provider model lists
|
|
83
|
+
- [ ] Lazy-load skill definitions
|
|
84
|
+
|
|
85
|
+
### Medium Priority
|
|
86
|
+
|
|
87
|
+
#### 4. Enhanced Skill Management
|
|
88
|
+
- **Goal**: Better skill discovery and usage
|
|
89
|
+
- **Tasks**:
|
|
90
|
+
- [ ] /skills menu shows skill descriptions on hover/selection
|
|
91
|
+
- [ ] Skill usage examples in help text
|
|
92
|
+
- [ ] Skill execution history (recent skills used)
|
|
93
|
+
- [ ] Skill favorites/pinning
|
|
94
|
+
|
|
95
|
+
#### 5. Configuration Management
|
|
96
|
+
- **Goal**: Easier config switching and management
|
|
97
|
+
- **Tasks**:
|
|
98
|
+
- [ ] /config list shows model details and capabilities
|
|
99
|
+
- [ ] /config test <profile> - test API connectivity
|
|
100
|
+
- [ ] Config templates for common providers
|
|
101
|
+
- [ ] Import/export config profiles
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Medium-Term (Q2-Q3 2025)
|
|
106
|
+
|
|
107
|
+
### Research & Evaluation
|
|
108
|
+
|
|
109
|
+
#### 6. Native Vertex AI SDK Migration (Option B)
|
|
110
|
+
- **Status**: Documented as potential enhancement
|
|
111
|
+
- **Trigger**: If Google deprecates OpenAI-compatible endpoint OR performance benefits are significant
|
|
112
|
+
- **Complexity**: MEDIUM (8-12 hours estimated)
|
|
113
|
+
- **Impact**: Better long-term stability, native Gemini features
|
|
114
|
+
|
|
115
|
+
**Migration Plan**:
|
|
116
|
+
|
|
117
|
+
##### Phase 1: Research & Prototyping (2-3 hours)
|
|
118
|
+
- [ ] Set up native genai SDK in test branch
|
|
119
|
+
- [ ] Prototype skill definition conversion (JSON → genai.FunctionDeclaration)
|
|
120
|
+
- [ ] Test response parsing (functionCall vs tool_calls)
|
|
121
|
+
- [ ] Benchmark performance vs OpenAI-compatible endpoint
|
|
122
|
+
|
|
123
|
+
##### Phase 2: Abstraction Layer (3-4 hours)
|
|
124
|
+
- [ ] Create provider abstraction interface
|
|
125
|
+
- [ ] Implement OpenAI provider adapter
|
|
126
|
+
- [ ] Implement native Gemini provider adapter
|
|
127
|
+
- [ ] Unified response format converter
|
|
128
|
+
|
|
129
|
+
##### Phase 3: Testing & Validation (2-3 hours)
|
|
130
|
+
- [ ] Test all 18 skills with native SDK
|
|
131
|
+
- [ ] Validate function calling accuracy
|
|
132
|
+
- [ ] Test multi-turn conversations
|
|
133
|
+
- [ ] Compare performance metrics
|
|
134
|
+
|
|
135
|
+
##### Phase 4: Migration (1-2 hours)
|
|
136
|
+
- [ ] Switch default Vertex AI provider to native SDK
|
|
137
|
+
- [ ] Update documentation
|
|
138
|
+
- [ ] Deprecation notice for OpenAI-compatible endpoint
|
|
139
|
+
|
|
140
|
+
**Code Structure Example**:
|
|
141
|
+
```go
|
|
142
|
+
// Future architecture with provider abstraction
|
|
143
|
+
|
|
144
|
+
type Provider interface {
|
|
145
|
+
SendMessage(ctx context.Context, messages []Message, tools []Tool) (*Response, error)
|
|
146
|
+
SupportsFunctionCalling() bool
|
|
147
|
+
ConvertSkillDefinition(skill SkillDefinition) interface{}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
type OpenAIProvider struct {
|
|
151
|
+
client *openai.Client
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
type GeminiProvider struct {
|
|
155
|
+
client *genai.Client
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Skills remain unchanged - adapters handle conversion
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Decision Criteria**:
|
|
162
|
+
- Google announces deprecation of OpenAI endpoint → Migrate immediately
|
|
163
|
+
- Native SDK shows >20% performance improvement → Evaluate migration
|
|
164
|
+
- Native SDK enables exclusive features → Evaluate value vs effort
|
|
165
|
+
- Community reports OpenAI endpoint issues → Migrate proactively
|
|
166
|
+
|
|
167
|
+
**Resources**:
|
|
168
|
+
- [Google GenAI SDK Docs](https://pkg.go.dev/google.golang.org/genai)
|
|
169
|
+
- [Function Calling Guide](https://ai.google.dev/gemini-api/docs/function-calling)
|
|
170
|
+
- [Migration Guide](https://ai.google.dev/gemini-api/docs/migrate)
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
### Feature Enhancements
|
|
175
|
+
|
|
176
|
+
#### 7. Advanced Skill Features
|
|
177
|
+
- **Goal**: More powerful AI capabilities
|
|
178
|
+
- **Tasks**:
|
|
179
|
+
- [ ] Parallel skill execution (when LLM calls multiple)
|
|
180
|
+
- [ ] Skill chaining (output of one feeds another)
|
|
181
|
+
- [ ] Custom user-defined skills (plugin system)
|
|
182
|
+
- [ ] Skill templates and generators
|
|
183
|
+
|
|
184
|
+
#### 8. Conversation Management
|
|
185
|
+
- **Goal**: Better session handling
|
|
186
|
+
- **Tasks**:
|
|
187
|
+
- [ ] Named sessions (save/load by name)
|
|
188
|
+
- [ ] Session search (find past conversations)
|
|
189
|
+
- [ ] Session export (markdown, JSON)
|
|
190
|
+
- [ ] Session branching (fork conversation)
|
|
191
|
+
|
|
192
|
+
#### 9. Multi-Modal Support
|
|
193
|
+
- **Goal**: Beyond text interactions
|
|
194
|
+
- **Tasks**:
|
|
195
|
+
- [ ] Image input support (upload images for analysis)
|
|
196
|
+
- [ ] File attachment support
|
|
197
|
+
- [ ] Voice input/output (ElevenLabs integration)
|
|
198
|
+
- [ ] PDF parsing and analysis
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Long-Term (Q4 2025+)
|
|
203
|
+
|
|
204
|
+
### Major Features
|
|
205
|
+
|
|
206
|
+
#### 10. Team/Collaboration Features
|
|
207
|
+
- **Goal**: Multi-user support
|
|
208
|
+
- **Tasks**:
|
|
209
|
+
- [ ] Shared sessions
|
|
210
|
+
- [ ] Team workspaces
|
|
211
|
+
- [ ] Permission management
|
|
212
|
+
- [ ] Audit logs
|
|
213
|
+
|
|
214
|
+
#### 11. Cloud Sync
|
|
215
|
+
- **Goal**: Cross-device session sync
|
|
216
|
+
- **Tasks**:
|
|
217
|
+
- [ ] Optional cloud backup
|
|
218
|
+
- [ ] Encrypted session storage
|
|
219
|
+
- [ ] Device sync
|
|
220
|
+
- [ ] Web UI companion
|
|
221
|
+
|
|
222
|
+
#### 12. Advanced Analytics
|
|
223
|
+
- **Goal**: Usage insights
|
|
224
|
+
- **Tasks**:
|
|
225
|
+
- [ ] Token usage tracking
|
|
226
|
+
- [ ] Cost estimation per provider
|
|
227
|
+
- [ ] Skill usage analytics
|
|
228
|
+
- [ ] Performance metrics dashboard
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Deprecated/Archived
|
|
233
|
+
|
|
234
|
+
### Considered but Deferred
|
|
235
|
+
- **Local LLM support**: Complexity vs benefit ratio too high for v1
|
|
236
|
+
- **Browser extension**: Scope too large, focus on CLI first
|
|
237
|
+
- **Mobile app**: Desktop/terminal focus more valuable
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Contributing to Roadmap
|
|
242
|
+
|
|
243
|
+
This roadmap is living document. To propose additions:
|
|
244
|
+
|
|
245
|
+
1. Check existing items to avoid duplicates
|
|
246
|
+
2. Open GitHub issue with `[Roadmap]` prefix
|
|
247
|
+
3. Describe:
|
|
248
|
+
- Use case and problem being solved
|
|
249
|
+
- Estimated complexity (LOW/MEDIUM/HIGH)
|
|
250
|
+
- Impact on existing features
|
|
251
|
+
- User benefit
|
|
252
|
+
|
|
253
|
+
Priority is determined by:
|
|
254
|
+
- User requests and feedback
|
|
255
|
+
- Technical dependencies
|
|
256
|
+
- Maintenance burden
|
|
257
|
+
- Strategic value
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## Version History
|
|
262
|
+
|
|
263
|
+
- **v0.1** (Dec 2025): Initial roadmap creation
|
|
264
|
+
- Enterprise menu system complete
|
|
265
|
+
- Vertex AI OpenAI-compatible endpoint implemented
|
|
266
|
+
- Native SDK migration documented as Option B
|
package/docs/ROUTING.md
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
# Celeste ↔ NIKKE Sub-Agent Routing Architecture
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Celeste uses intelligent intent detection to route queries:
|
|
6
|
+
- **NIKKE queries** → NIKKE sub-agent (dedicated for game-specific data)
|
|
7
|
+
- **General queries** → Main Celeste agent (personality + streaming + general chat)
|
|
8
|
+
|
|
9
|
+
This separation reduces context window bloat and improves response accuracy for both contexts.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## How Routing Works
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
User Input
|
|
17
|
+
↓
|
|
18
|
+
[celeste-widget.js: Fetch routing rules]
|
|
19
|
+
↓
|
|
20
|
+
[Detect Intent: NIKKE keywords/patterns?]
|
|
21
|
+
├─ YES (NIKKE detected)
|
|
22
|
+
│ └─ Route to NIKKE sub-agent
|
|
23
|
+
│ └─ Return formatted response
|
|
24
|
+
└─ NO (General query)
|
|
25
|
+
└─ Send to Main Celeste agent
|
|
26
|
+
└─ Celeste responds
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Intent Detection
|
|
32
|
+
|
|
33
|
+
### Keywords Trigger NIKKE Routing
|
|
34
|
+
```
|
|
35
|
+
"nikke", "union raid", "ur", "intercept",
|
|
36
|
+
"character", "tier", "tier list", "meta", "best squad",
|
|
37
|
+
"farm", "build", "equipment", "weapon",
|
|
38
|
+
"chapter", "raid", "boss", "strategy", "guide"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Pattern Matching
|
|
42
|
+
```regex
|
|
43
|
+
^(who|which).*(nikke|character).*(best|good|tier)
|
|
44
|
+
^(how|tips).*(farm|clear|beat)
|
|
45
|
+
^(what).*(meta|tier|build)
|
|
46
|
+
^(nikke).*(tier|rank|list)
|
|
47
|
+
union.*raid|ur.*guide|nikke.*build
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Examples
|
|
51
|
+
|
|
52
|
+
**Triggers NIKKE Routing:**
|
|
53
|
+
- "Who's the best NIKKE character?"
|
|
54
|
+
- "How do I farm efficiently?"
|
|
55
|
+
- "What's the current meta?"
|
|
56
|
+
- "Union Raid tier list"
|
|
57
|
+
- "Build guide for Rapture"
|
|
58
|
+
- "Best squad for tower?"
|
|
59
|
+
|
|
60
|
+
**Does NOT Trigger NIKKE Routing:**
|
|
61
|
+
- "Hi Celeste, how are you?"
|
|
62
|
+
- "Tell me about yourself"
|
|
63
|
+
- "What's your favorite outfit?"
|
|
64
|
+
- "Stream recommendations?"
|
|
65
|
+
- "Tell me some lore"
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Configuration Files
|
|
70
|
+
|
|
71
|
+
### `routing/routing_rules.json`
|
|
72
|
+
**Contains:** Intent detection patterns, NIKKE keywords, fallback messages
|
|
73
|
+
|
|
74
|
+
**Key Section:**
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"nikke_detection": {
|
|
78
|
+
"keywords": ["nikke", "union raid", ...],
|
|
79
|
+
"patterns": [
|
|
80
|
+
"^(who|which).*(nikke|character).*(best|good|tier)",
|
|
81
|
+
...
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
"routing_rules": [
|
|
85
|
+
{
|
|
86
|
+
"condition": "query_matches(nikke_detection)",
|
|
87
|
+
"action": "route_to_sub_agent",
|
|
88
|
+
"sub_agent": "nikke_agent",
|
|
89
|
+
"fallback_message": "The NIKKE archives are temporarily sealed..."
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### `routing/nikke_agent_config.json`
|
|
96
|
+
**Contains:** Sub-agent endpoint, auth, timeouts, OpenSearch indices
|
|
97
|
+
|
|
98
|
+
**Key Section:**
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"nikke_agent": {
|
|
102
|
+
"endpoint": "${NIKKE_AGENT_ENDPOINT}",
|
|
103
|
+
"auth": {
|
|
104
|
+
"scheme": "bearer",
|
|
105
|
+
"key": "${NIKKE_AGENT_KEY}"
|
|
106
|
+
},
|
|
107
|
+
"timeouts": {
|
|
108
|
+
"connect_ms": 5000,
|
|
109
|
+
"read_ms": 10000,
|
|
110
|
+
"total_ms": 10000
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Environment Variables
|
|
119
|
+
|
|
120
|
+
Set these in your `.env` or deployment configuration:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Main Celeste Agent (Digital Ocean)
|
|
124
|
+
AGENT_ENDPOINT=https://svzuwvds2ipgf4ysetvzxvai.agents.do-ai.run
|
|
125
|
+
AGENT_KEY=sk-xxxxx
|
|
126
|
+
|
|
127
|
+
# NIKKE Sub-Agent
|
|
128
|
+
NIKKE_AGENT_ENDPOINT=https://nikke-agent.whykusanagi.xyz/v1/nikke/query
|
|
129
|
+
NIKKE_AGENT_KEY=sk-nikke-xxxxx
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Web Widget Integration
|
|
135
|
+
|
|
136
|
+
The `celeste-widget.js` loads routing rules from celesteCLI repo:
|
|
137
|
+
|
|
138
|
+
```javascript
|
|
139
|
+
const CELESTE_CONFIG = {
|
|
140
|
+
routingRulesUrl: 'https://raw.githubusercontent.com/whykusanagi/celesteCLI/main/routing/routing_rules.json'
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
async function sendToCeleste(message) {
|
|
144
|
+
// Fetch routing rules
|
|
145
|
+
const routingRules = await fetch(CELESTE_CONFIG.routingRulesUrl).then(r => r.json());
|
|
146
|
+
|
|
147
|
+
// Detect intent
|
|
148
|
+
const intent = detectIntent(message, routingRules);
|
|
149
|
+
|
|
150
|
+
// Route accordingly
|
|
151
|
+
if (intent === 'nikke') {
|
|
152
|
+
// Call NIKKE sub-agent
|
|
153
|
+
} else {
|
|
154
|
+
// Call main Celeste agent
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Fallback Behavior
|
|
162
|
+
|
|
163
|
+
If the NIKKE sub-agent is unavailable:
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
User Query (NIKKE detected)
|
|
167
|
+
↓
|
|
168
|
+
[Attempt NIKKE sub-agent]
|
|
169
|
+
├─ Timeout after 10 seconds
|
|
170
|
+
└─ Return fallback message:
|
|
171
|
+
"The NIKKE archives are temporarily sealed. Ask again in a moment, onii-chan."
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
The widget gracefully degrades instead of hanging or throwing an error.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## OpenSearch Integration
|
|
179
|
+
|
|
180
|
+
### Celeste Indices
|
|
181
|
+
- `celeste_capabilities` - What Celeste can do
|
|
182
|
+
- `celeste_emotes` - Emote recommendations
|
|
183
|
+
- `celeste_user_profiles` - User behavior data
|
|
184
|
+
- `celeste_chat_logs` - Sample interactions
|
|
185
|
+
|
|
186
|
+
### NIKKE Sub-Agent Indices
|
|
187
|
+
- `nikke_characters` - Character database
|
|
188
|
+
- `nikke_tiers` - Tier lists
|
|
189
|
+
- `nikke_guides` - Build guides
|
|
190
|
+
- `nikke_union_data` - Protected union data
|
|
191
|
+
|
|
192
|
+
Each agent queries its own indices only. No cross-contamination.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Response Handling
|
|
197
|
+
|
|
198
|
+
### NIKKE Sub-Agent Response
|
|
199
|
+
The sub-agent returns structured data:
|
|
200
|
+
```json
|
|
201
|
+
{
|
|
202
|
+
"characters": [...],
|
|
203
|
+
"tiers": [...],
|
|
204
|
+
"builds": [...],
|
|
205
|
+
"recommendations": [...],
|
|
206
|
+
"source_indices": [...]
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Main Celeste agent formats this with personality:
|
|
211
|
+
```
|
|
212
|
+
"Based on the archives, here's what I found:
|
|
213
|
+
• Top DPS: Rapi, Viper, Privaty
|
|
214
|
+
• Support Meta: Modernia, Ether, Helm
|
|
215
|
+
|
|
216
|
+
Want me to explain any builds, onii-chan? 💜"
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Celeste Direct Response
|
|
220
|
+
Main agent responds directly with personality:
|
|
221
|
+
```
|
|
222
|
+
"Hi there! I'm Celeste, your demon noble co-host.
|
|
223
|
+
I can chat, moderate chat, play games... or tease you about your questionable taste. 😈
|
|
224
|
+
What'll it be?"
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Monitoring
|
|
230
|
+
|
|
231
|
+
### Log Entry Example
|
|
232
|
+
```
|
|
233
|
+
[2025-11-21 14:32:10] User: "best nikke characters?"
|
|
234
|
+
[2025-11-21 14:32:10] Intent Detection: MATCHED (keyword="nikke")
|
|
235
|
+
[2025-11-21 14:32:10] Routing: NIKKE_AGENT
|
|
236
|
+
[2025-11-21 14:32:10] Sub-agent latency: 342ms
|
|
237
|
+
[2025-11-21 14:32:10] Response: [formatted with Celeste personality]
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Health Checks
|
|
241
|
+
```bash
|
|
242
|
+
# Check main Celeste agent
|
|
243
|
+
curl ${AGENT_ENDPOINT}/health
|
|
244
|
+
|
|
245
|
+
# Check NIKKE sub-agent
|
|
246
|
+
curl ${NIKKE_AGENT_ENDPOINT}/v1/health
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Troubleshooting
|
|
252
|
+
|
|
253
|
+
### Symptom: NIKKE query routed to Celeste instead of sub-agent
|
|
254
|
+
**Possible Causes:**
|
|
255
|
+
- Routing rules not loaded correctly
|
|
256
|
+
- Intent detection pattern doesn't match query
|
|
257
|
+
- Widget JavaScript error
|
|
258
|
+
|
|
259
|
+
**Fix:**
|
|
260
|
+
1. Verify routing rules fetch succeeds
|
|
261
|
+
2. Check browser console for JavaScript errors
|
|
262
|
+
3. Manually test intent detection regex
|
|
263
|
+
|
|
264
|
+
### Symptom: NIKKE queries timeout
|
|
265
|
+
**Possible Causes:**
|
|
266
|
+
- Sub-agent endpoint unreachable
|
|
267
|
+
- Timeout too short (10s default)
|
|
268
|
+
- OpenSearch query is slow
|
|
269
|
+
|
|
270
|
+
**Fix:**
|
|
271
|
+
1. Check `nikke_agent_config.json` endpoint
|
|
272
|
+
2. Verify NIKKE_AGENT_ENDPOINT env var is set
|
|
273
|
+
3. Test sub-agent health endpoint
|
|
274
|
+
|
|
275
|
+
### Symptom: Fallback message appears frequently
|
|
276
|
+
**Possible Causes:**
|
|
277
|
+
- NIKKE sub-agent is down
|
|
278
|
+
- Network connectivity issue
|
|
279
|
+
- Timeout threshold too low
|
|
280
|
+
|
|
281
|
+
**Fix:**
|
|
282
|
+
1. Check NIKKE sub-agent deployment status
|
|
283
|
+
2. Increase timeout in `nikke_agent_config.json` if needed
|
|
284
|
+
3. Review error logs for specific failures
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Adding New Routing Rules
|
|
289
|
+
|
|
290
|
+
To route a new query type (e.g., art questions to art agent):
|
|
291
|
+
|
|
292
|
+
1. **Edit `routing/routing_rules.json`:**
|
|
293
|
+
```json
|
|
294
|
+
{
|
|
295
|
+
"condition": "query_intent == 'art'",
|
|
296
|
+
"action": "route_to_sub_agent",
|
|
297
|
+
"sub_agent": "art_agent",
|
|
298
|
+
"endpoint_env_var": "ART_AGENT_ENDPOINT"
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
2. **Edit `routing/nikke_agent_config.json`** to add the new agent config
|
|
303
|
+
|
|
304
|
+
3. **Update detection keywords/patterns** in `routing_rules.json`
|
|
305
|
+
|
|
306
|
+
4. **Deploy** the updated files
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## Performance Targets
|
|
311
|
+
|
|
312
|
+
- **Intent detection:** <10ms
|
|
313
|
+
- **NIKKE sub-agent call:** <10 seconds (timeout)
|
|
314
|
+
- **Fallback response:** <100ms
|
|
315
|
+
- **General Celeste response:** <5 seconds
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## Related Documentation
|
|
320
|
+
|
|
321
|
+
- `../celeste_essence.json` - System prompt with routing logic
|
|
322
|
+
- `../Celeste_Capabilities.json` - What Celeste can do
|
|
323
|
+
- `../opensearch/README.md` - Index management
|
|
324
|
+
- `../../nikke-agent/docs/` - NIKKE sub-agent documentation
|