@magic-ingredients/tiny-brain-local 0.8.0 → 0.10.2
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/dist/agents/formatters/claude-code-formatter.d.ts +37 -0
- package/dist/agents/formatters/claude-code-formatter.d.ts.map +1 -0
- package/dist/agents/formatters/claude-code-formatter.js +217 -0
- package/dist/agents/formatters/claude-code-formatter.js.map +1 -0
- package/dist/agents/formatters/formatter-factory.d.ts +25 -0
- package/dist/agents/formatters/formatter-factory.d.ts.map +1 -0
- package/dist/agents/formatters/formatter-factory.js +61 -0
- package/dist/agents/formatters/formatter-factory.js.map +1 -0
- package/dist/agents/types.d.ts +68 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +12 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/analyser/analyzers/script-analyzer.d.ts +10 -0
- package/dist/analyser/analyzers/script-analyzer.d.ts.map +1 -0
- package/dist/analyser/analyzers/script-analyzer.js +205 -0
- package/dist/analyser/analyzers/script-analyzer.js.map +1 -0
- package/dist/analyser/detectors/base-detector.d.ts +12 -0
- package/dist/analyser/detectors/base-detector.d.ts.map +1 -0
- package/dist/analyser/detectors/base-detector.js +50 -0
- package/dist/analyser/detectors/base-detector.js.map +1 -0
- package/dist/analyser/detectors/javascript-detector.d.ts +19 -0
- package/dist/analyser/detectors/javascript-detector.d.ts.map +1 -0
- package/dist/analyser/detectors/javascript-detector.js +347 -0
- package/dist/analyser/detectors/javascript-detector.js.map +1 -0
- package/dist/analyser/index.d.ts +5 -0
- package/dist/analyser/index.d.ts.map +1 -0
- package/dist/analyser/index.js +315 -0
- package/dist/analyser/index.js.map +1 -0
- package/dist/analyser/types.d.ts +2 -0
- package/dist/analyser/types.d.ts.map +1 -0
- package/dist/analyser/types.js +2 -0
- package/dist/analyser/types.js.map +1 -0
- package/dist/analyser/utils.d.ts +5 -0
- package/dist/analyser/utils.d.ts.map +1 -0
- package/dist/analyser/utils.js +24 -0
- package/dist/analyser/utils.js.map +1 -0
- package/dist/cli/cli-factory.d.ts.map +1 -1
- package/dist/cli/cli-factory.js +17 -0
- package/dist/cli/cli-factory.js.map +1 -1
- package/dist/cli/commands/analyse.command.d.ts +7 -0
- package/dist/cli/commands/analyse.command.d.ts.map +1 -0
- package/dist/cli/commands/analyse.command.js +130 -0
- package/dist/cli/commands/analyse.command.js.map +1 -0
- package/dist/cli/commands/status.command.d.ts.map +1 -1
- package/dist/cli/commands/status.command.js +3 -1
- package/dist/cli/commands/status.command.js.map +1 -1
- package/dist/core/mcp-server.d.ts +10 -8
- package/dist/core/mcp-server.d.ts.map +1 -1
- package/dist/core/mcp-server.js +93 -85
- package/dist/core/mcp-server.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -8
- package/dist/index.js.map +1 -1
- package/dist/prompts/persona/persona.prompt.js +8 -8
- package/dist/prompts/persona/persona.prompt.js.map +1 -1
- package/dist/prompts/planning/planning.prompt.d.ts +0 -8
- package/dist/prompts/planning/planning.prompt.d.ts.map +1 -1
- package/dist/prompts/planning/planning.prompt.js +0 -175
- package/dist/prompts/planning/planning.prompt.js.map +1 -1
- package/dist/services/agent-installation-service.d.ts +101 -0
- package/dist/services/agent-installation-service.d.ts.map +1 -0
- package/dist/services/agent-installation-service.js +328 -0
- package/dist/services/agent-installation-service.js.map +1 -0
- package/dist/services/agent-manager.d.ts +45 -0
- package/dist/services/agent-manager.d.ts.map +1 -0
- package/dist/services/agent-manager.js +154 -0
- package/dist/services/agent-manager.js.map +1 -0
- package/dist/services/agent-service.d.ts +70 -0
- package/dist/services/agent-service.d.ts.map +1 -0
- package/dist/services/agent-service.js +273 -0
- package/dist/services/agent-service.js.map +1 -0
- package/dist/services/analyse-service.d.ts +97 -0
- package/dist/services/analyse-service.d.ts.map +1 -0
- package/dist/services/analyse-service.js +370 -0
- package/dist/services/analyse-service.js.map +1 -0
- package/dist/services/dashboard-launcher.service.d.ts +20 -0
- package/dist/services/dashboard-launcher.service.d.ts.map +1 -0
- package/dist/services/dashboard-launcher.service.js +30 -0
- package/dist/services/dashboard-launcher.service.js.map +1 -0
- package/dist/services/persona-enhancer.d.ts +52 -0
- package/dist/services/persona-enhancer.d.ts.map +1 -0
- package/dist/services/persona-enhancer.js +252 -0
- package/dist/services/persona-enhancer.js.map +1 -0
- package/dist/services/persona-grouper.d.ts +29 -0
- package/dist/services/persona-grouper.d.ts.map +1 -0
- package/dist/services/persona-grouper.js +111 -0
- package/dist/services/persona-grouper.js.map +1 -0
- package/dist/services/persona-service.d.ts +52 -0
- package/dist/services/persona-service.d.ts.map +1 -0
- package/dist/services/{enhanced-persona-service.js → persona-service.js} +125 -7
- package/dist/services/persona-service.js.map +1 -0
- package/dist/services/remote/auth-token-service.d.ts.map +1 -1
- package/dist/services/remote/auth-token-service.js +10 -3
- package/dist/services/remote/auth-token-service.js.map +1 -1
- package/dist/services/remote/system-persona-service.d.ts.map +1 -1
- package/dist/services/remote/system-persona-service.js +41 -10
- package/dist/services/remote/system-persona-service.js.map +1 -1
- package/dist/services/repo-service.d.ts +195 -0
- package/dist/services/repo-service.d.ts.map +1 -0
- package/dist/services/repo-service.js +1023 -0
- package/dist/services/repo-service.js.map +1 -0
- package/dist/services/types/persona-types.d.ts +84 -0
- package/dist/services/types/persona-types.d.ts.map +1 -0
- package/dist/services/types/persona-types.js +5 -0
- package/dist/services/types/persona-types.js.map +1 -0
- package/dist/services/versioning-service.d.ts +79 -0
- package/dist/services/versioning-service.d.ts.map +1 -0
- package/dist/services/versioning-service.js +191 -0
- package/dist/services/versioning-service.js.map +1 -0
- package/dist/storage/local-filesystem-adapter.d.ts +1 -0
- package/dist/storage/local-filesystem-adapter.d.ts.map +1 -1
- package/dist/storage/local-filesystem-adapter.js +47 -3
- package/dist/storage/local-filesystem-adapter.js.map +1 -1
- package/dist/storage/platform-config-adapter.d.ts +9 -0
- package/dist/storage/platform-config-adapter.d.ts.map +1 -1
- package/dist/storage/platform-config-adapter.js +55 -1
- package/dist/storage/platform-config-adapter.js.map +1 -1
- package/dist/tools/analyse.tool.d.ts +17 -0
- package/dist/tools/analyse.tool.d.ts.map +1 -0
- package/dist/tools/analyse.tool.js +124 -0
- package/dist/tools/analyse.tool.js.map +1 -0
- package/dist/tools/persona/as.tool.d.ts +32 -11
- package/dist/tools/persona/as.tool.d.ts.map +1 -1
- package/dist/tools/persona/as.tool.js +452 -317
- package/dist/tools/persona/as.tool.js.map +1 -1
- package/dist/tools/persona/persona.tool.js +2 -2
- package/dist/tools/persona/persona.tool.js.map +1 -1
- package/dist/tools/plan/plan.tool.d.ts +3 -3
- package/dist/tools/plan/plan.tool.d.ts.map +1 -1
- package/dist/tools/plan/plan.tool.js +78 -55
- package/dist/tools/plan/plan.tool.js.map +1 -1
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/tool-registry.js +4 -0
- package/dist/tools/tool-registry.js.map +1 -1
- package/dist/utils/repo-utils.d.ts +10 -0
- package/dist/utils/repo-utils.d.ts.map +1 -0
- package/dist/utils/repo-utils.js +55 -0
- package/dist/utils/repo-utils.js.map +1 -0
- package/package.json +6 -2
- package/dist/services/enhanced-persona-service.d.ts +0 -22
- package/dist/services/enhanced-persona-service.d.ts.map +0 -1
- package/dist/services/enhanced-persona-service.js.map +0 -1
- package/dist/services/plan-watcher.service.d.ts +0 -141
- package/dist/services/plan-watcher.service.d.ts.map +0 -1
- package/dist/services/plan-watcher.service.js +0 -1010
- package/dist/services/plan-watcher.service.js.map +0 -1
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona Enhancer Service
|
|
3
|
+
*
|
|
4
|
+
* Enhances base personas with repository-specific agent instructions
|
|
5
|
+
*/
|
|
6
|
+
export class PersonaEnhancer {
|
|
7
|
+
/**
|
|
8
|
+
* Enhance a persona profile with agent usage instructions
|
|
9
|
+
*/
|
|
10
|
+
static enhanceProfile(baseProfile, options) {
|
|
11
|
+
const { installedAgents } = options;
|
|
12
|
+
if (!installedAgents || installedAgents.length === 0) {
|
|
13
|
+
return baseProfile; // No enhancement needed
|
|
14
|
+
}
|
|
15
|
+
// Generate agent instructions based on persona type
|
|
16
|
+
const instructions = this.generateAgentInstructions(options);
|
|
17
|
+
// Check if profile already has agent instructions (to avoid duplicates)
|
|
18
|
+
if (baseProfile.includes('## Agent Usage') || baseProfile.includes('## User Agent Instructions')) {
|
|
19
|
+
return baseProfile; // Already enhanced
|
|
20
|
+
}
|
|
21
|
+
// Insert instructions in the USER block
|
|
22
|
+
// Look for USER-BLOCK-START and add after User Rules but before User Details
|
|
23
|
+
const userBlockStart = '<!-- USER-BLOCK-START -->';
|
|
24
|
+
const userRulesPattern = /## User Rules[\s\S]*?(?=##|<!-- USER-BLOCK-END -->)/;
|
|
25
|
+
// Find where to insert the agent usage
|
|
26
|
+
const userBlockIndex = baseProfile.indexOf(userBlockStart);
|
|
27
|
+
if (userBlockIndex !== -1) {
|
|
28
|
+
// Find the end of User Rules section
|
|
29
|
+
const afterUserBlock = baseProfile.substring(userBlockIndex);
|
|
30
|
+
const userRulesMatch = afterUserBlock.match(userRulesPattern);
|
|
31
|
+
if (userRulesMatch) {
|
|
32
|
+
// Insert after User Rules
|
|
33
|
+
const insertPoint = userBlockIndex + (userRulesMatch.index ?? 0) + userRulesMatch[0].length;
|
|
34
|
+
const before = baseProfile.substring(0, insertPoint);
|
|
35
|
+
const after = baseProfile.substring(insertPoint);
|
|
36
|
+
return `${before}\n${instructions}\n${after}`;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// No User Rules section, insert after USER-BLOCK-START
|
|
40
|
+
const insertPoint = userBlockIndex + userBlockStart.length;
|
|
41
|
+
const before = baseProfile.substring(0, insertPoint);
|
|
42
|
+
const after = baseProfile.substring(insertPoint);
|
|
43
|
+
return `${before}\n\n${instructions}${after}`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// No user block found, create one
|
|
48
|
+
const systemBlockEnd = '<!-- SYSTEM-BLOCK-END -->';
|
|
49
|
+
const systemEndIndex = baseProfile.indexOf(systemBlockEnd);
|
|
50
|
+
if (systemEndIndex !== -1) {
|
|
51
|
+
const insertPoint = systemEndIndex + systemBlockEnd.length;
|
|
52
|
+
const before = baseProfile.substring(0, insertPoint);
|
|
53
|
+
const after = baseProfile.substring(insertPoint);
|
|
54
|
+
const newUserBlock = `\n\n<!-- USER-BLOCK-START -->\n${instructions}\n<!-- USER-BLOCK-END -->`;
|
|
55
|
+
return `${before}${newUserBlock}${after}`;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// No blocks at all, append at end
|
|
59
|
+
return `${baseProfile}\n\n<!-- USER-BLOCK-START -->\n${instructions}\n<!-- USER-BLOCK-END -->`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate agent usage instructions based on persona type and installed agents
|
|
65
|
+
*/
|
|
66
|
+
static generateAgentInstructions(options) {
|
|
67
|
+
const { installedAgents, personaName, personaType } = options;
|
|
68
|
+
let instructions = `## User Agent Instructions
|
|
69
|
+
|
|
70
|
+
You have specialized agents available for this repository. Use them as follows:\n\n`;
|
|
71
|
+
// Group agents by category
|
|
72
|
+
const agentsByCategory = this.groupAgentsByCategory(installedAgents);
|
|
73
|
+
// Generate instructions based on persona type
|
|
74
|
+
if (personaType === 'tester' || personaName.toLowerCase().includes('test') || personaName.toLowerCase() === 'qa') {
|
|
75
|
+
instructions += this.generateTesterInstructions(agentsByCategory);
|
|
76
|
+
}
|
|
77
|
+
else if (personaType === 'developer' || personaName.toLowerCase().includes('dev')) {
|
|
78
|
+
instructions += this.generateDeveloperInstructions(agentsByCategory);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
instructions += this.generateGenericInstructions(agentsByCategory);
|
|
82
|
+
}
|
|
83
|
+
// Add list of all installed agents
|
|
84
|
+
instructions += `\n### Installed Agents for this Repository\n`;
|
|
85
|
+
installedAgents.forEach(agent => {
|
|
86
|
+
instructions += `- ${agent.id} (${agent.description})\n`;
|
|
87
|
+
});
|
|
88
|
+
return instructions;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Group agents by their category/purpose
|
|
92
|
+
*/
|
|
93
|
+
static groupAgentsByCategory(agents) {
|
|
94
|
+
const groups = new Map();
|
|
95
|
+
agents.forEach(agent => {
|
|
96
|
+
// Determine category based on agent ID or description
|
|
97
|
+
let category = 'general';
|
|
98
|
+
if (agent.id.includes('test') || agent.description.toLowerCase().includes('test')) {
|
|
99
|
+
category = 'testing';
|
|
100
|
+
}
|
|
101
|
+
else if (agent.id.includes('analys') || agent.id.includes('analyze')) {
|
|
102
|
+
category = 'analysis';
|
|
103
|
+
}
|
|
104
|
+
else if (agent.id.includes('refactor')) {
|
|
105
|
+
category = 'refactoring';
|
|
106
|
+
}
|
|
107
|
+
else if (agent.id.includes('review')) {
|
|
108
|
+
category = 'review';
|
|
109
|
+
}
|
|
110
|
+
else if (agent.id.includes('strateg')) {
|
|
111
|
+
category = 'planning';
|
|
112
|
+
}
|
|
113
|
+
if (!groups.has(category)) {
|
|
114
|
+
groups.set(category, []);
|
|
115
|
+
}
|
|
116
|
+
const categoryAgents = groups.get(category);
|
|
117
|
+
if (categoryAgents) {
|
|
118
|
+
categoryAgents.push(agent);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
return groups;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Generate instructions for tester personas
|
|
125
|
+
*/
|
|
126
|
+
static generateTesterInstructions(agentsByCategory) {
|
|
127
|
+
let instructions = '';
|
|
128
|
+
// Testing agents
|
|
129
|
+
const testingAgents = agentsByCategory.get('testing') || [];
|
|
130
|
+
testingAgents.forEach(agent => {
|
|
131
|
+
instructions += this.formatAgentSection(agent, this.getTestingUseCases(agent));
|
|
132
|
+
});
|
|
133
|
+
// Analysis agents (useful for test planning)
|
|
134
|
+
const analysisAgents = agentsByCategory.get('analysis') || [];
|
|
135
|
+
analysisAgents.forEach(agent => {
|
|
136
|
+
instructions += this.formatAgentSection(agent, [
|
|
137
|
+
'Understanding code structure before testing',
|
|
138
|
+
'Identifying test requirements',
|
|
139
|
+
'Finding edge cases and dependencies'
|
|
140
|
+
]);
|
|
141
|
+
});
|
|
142
|
+
// Planning agents
|
|
143
|
+
const planningAgents = agentsByCategory.get('planning') || [];
|
|
144
|
+
planningAgents.forEach(agent => {
|
|
145
|
+
instructions += this.formatAgentSection(agent, [
|
|
146
|
+
'Creating comprehensive test plans',
|
|
147
|
+
'Prioritizing test scenarios',
|
|
148
|
+
'Defining coverage goals'
|
|
149
|
+
]);
|
|
150
|
+
});
|
|
151
|
+
// Add workflow section
|
|
152
|
+
instructions += `\n### Testing Workflow
|
|
153
|
+
1. **Analyze**: Use analysis agents to understand the code
|
|
154
|
+
2. **Plan**: Use strategy agents to plan comprehensive coverage
|
|
155
|
+
3. **Execute**: Use testing agents to write and run tests
|
|
156
|
+
4. **Iterate**: Refine tests based on results\n\n`;
|
|
157
|
+
return instructions;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Generate instructions for developer personas
|
|
161
|
+
*/
|
|
162
|
+
static generateDeveloperInstructions(agentsByCategory) {
|
|
163
|
+
let instructions = '';
|
|
164
|
+
// Start with analysis
|
|
165
|
+
const analysisAgents = agentsByCategory.get('analysis') || [];
|
|
166
|
+
analysisAgents.forEach(agent => {
|
|
167
|
+
instructions += this.formatAgentSection(agent, [
|
|
168
|
+
'Understanding existing code before changes',
|
|
169
|
+
'Finding dependencies and impacts',
|
|
170
|
+
'Identifying refactoring opportunities'
|
|
171
|
+
]);
|
|
172
|
+
});
|
|
173
|
+
// Refactoring agents
|
|
174
|
+
const refactoringAgents = agentsByCategory.get('refactoring') || [];
|
|
175
|
+
refactoringAgents.forEach(agent => {
|
|
176
|
+
instructions += this.formatAgentSection(agent, [
|
|
177
|
+
'Improving code structure',
|
|
178
|
+
'Extracting reusable components',
|
|
179
|
+
'Optimizing performance'
|
|
180
|
+
]);
|
|
181
|
+
});
|
|
182
|
+
// Testing agents (developers should test too!)
|
|
183
|
+
const testingAgents = agentsByCategory.get('testing') || [];
|
|
184
|
+
if (testingAgents.length > 0) {
|
|
185
|
+
instructions += `\n### Testing Your Code\n`;
|
|
186
|
+
testingAgents.forEach(agent => {
|
|
187
|
+
instructions += this.formatAgentSection(agent, [
|
|
188
|
+
'Writing tests for new features',
|
|
189
|
+
'Ensuring code quality'
|
|
190
|
+
]);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
return instructions;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Generate generic instructions for other personas
|
|
197
|
+
*/
|
|
198
|
+
static generateGenericInstructions(agentsByCategory) {
|
|
199
|
+
let instructions = '';
|
|
200
|
+
agentsByCategory.forEach((agents) => {
|
|
201
|
+
agents.forEach(agent => {
|
|
202
|
+
instructions += this.formatAgentSection(agent);
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
return instructions;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Format a single agent section
|
|
209
|
+
*/
|
|
210
|
+
static formatAgentSection(agent, useCases) {
|
|
211
|
+
let section = `### ${agent.name || agent.id}\n`;
|
|
212
|
+
section += `${agent.description}\n`;
|
|
213
|
+
section += '```json\n';
|
|
214
|
+
section += JSON.stringify({
|
|
215
|
+
subagent_type: agent.id,
|
|
216
|
+
prompt: '[specific task description]',
|
|
217
|
+
description: agent.id.split('-').slice(0, 2).join(' ')
|
|
218
|
+
}, null, 2);
|
|
219
|
+
section += '\n```\n';
|
|
220
|
+
if (useCases && useCases.length > 0) {
|
|
221
|
+
section += `Best for: ${useCases.join(', ')}\n`;
|
|
222
|
+
}
|
|
223
|
+
if (agent.capabilities && agent.capabilities.length > 0) {
|
|
224
|
+
section += `Capabilities: ${agent.capabilities.slice(0, 3).join(', ')}\n`;
|
|
225
|
+
}
|
|
226
|
+
section += '\n';
|
|
227
|
+
return section;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Get testing-specific use cases based on agent ID
|
|
231
|
+
*/
|
|
232
|
+
static getTestingUseCases(agent) {
|
|
233
|
+
const id = agent.id.toLowerCase();
|
|
234
|
+
if (id.includes('react')) {
|
|
235
|
+
return ['Component testing', 'User interactions', 'State management', 'Hooks testing'];
|
|
236
|
+
}
|
|
237
|
+
else if (id.includes('jest')) {
|
|
238
|
+
return ['Unit tests', 'Mocking', 'Snapshot tests', 'Async testing'];
|
|
239
|
+
}
|
|
240
|
+
else if (id.includes('typescript')) {
|
|
241
|
+
return ['Type safety', 'Interface testing', 'Generic testing'];
|
|
242
|
+
}
|
|
243
|
+
else if (id.includes('e2e') || id.includes('cypress') || id.includes('playwright')) {
|
|
244
|
+
return ['End-to-end flows', 'User journeys', 'Cross-browser testing'];
|
|
245
|
+
}
|
|
246
|
+
else if (id.includes('api')) {
|
|
247
|
+
return ['API endpoints', 'Request/response validation', 'Error handling'];
|
|
248
|
+
}
|
|
249
|
+
return ['General testing'];
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=persona-enhancer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona-enhancer.js","sourceRoot":"","sources":["../../src/services/persona-enhancer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona Grouper
|
|
3
|
+
*
|
|
4
|
+
* Groups local personas with their synced library versions
|
|
5
|
+
*/
|
|
6
|
+
import type { LocalPersona, LibraryPersona, GroupedPersonasData } from './types/persona-types.js';
|
|
7
|
+
export declare class PersonaGrouper {
|
|
8
|
+
/**
|
|
9
|
+
* Group local personas with their synced library versions
|
|
10
|
+
*/
|
|
11
|
+
groupPersonas(localPersonas: LocalPersona[], libraryPersonas: LibraryPersona[], activePersonaId?: string): GroupedPersonasData;
|
|
12
|
+
/**
|
|
13
|
+
* Check if a local persona has an update available
|
|
14
|
+
*/
|
|
15
|
+
private checkForUpdate;
|
|
16
|
+
/**
|
|
17
|
+
* Check if library version is newer than local version
|
|
18
|
+
*/
|
|
19
|
+
isNewerVersion(localVersion: string, libraryVersion: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Parse semantic version string
|
|
22
|
+
*/
|
|
23
|
+
private parseVersion;
|
|
24
|
+
/**
|
|
25
|
+
* Check if a local persona has updates available
|
|
26
|
+
*/
|
|
27
|
+
hasUpdate(local: LocalPersona, library: LibraryPersona | null): boolean;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=persona-grouper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona-grouper.d.ts","sourceRoot":"","sources":["../../src/services/persona-grouper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAgB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEhH,qBAAa,cAAc;IACzB;;OAEG;IACH,aAAa,CACX,aAAa,EAAE,YAAY,EAAE,EAC7B,eAAe,EAAE,cAAc,EAAE,EACjC,eAAe,CAAC,EAAE,MAAM,GACvB,mBAAmB;IAwCtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO;IA+BrE;;OAEG;IACH,OAAO,CAAC,YAAY;IAoBpB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO;CAIxE"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persona Grouper
|
|
3
|
+
*
|
|
4
|
+
* Groups local personas with their synced library versions
|
|
5
|
+
*/
|
|
6
|
+
export class PersonaGrouper {
|
|
7
|
+
/**
|
|
8
|
+
* Group local personas with their synced library versions
|
|
9
|
+
*/
|
|
10
|
+
groupPersonas(localPersonas, libraryPersonas, activePersonaId) {
|
|
11
|
+
const userPersonas = [];
|
|
12
|
+
const syncedLibraryIds = new Set();
|
|
13
|
+
// Process each local persona
|
|
14
|
+
for (const localPersona of localPersonas) {
|
|
15
|
+
let syncedLibraryPersona = null;
|
|
16
|
+
let hasUpdate = false;
|
|
17
|
+
// Check if this local persona is synced from library
|
|
18
|
+
if (localPersona.syncedFrom) {
|
|
19
|
+
syncedLibraryPersona = libraryPersonas.find(lib => lib.id === localPersona.syncedFrom) || null;
|
|
20
|
+
if (syncedLibraryPersona) {
|
|
21
|
+
syncedLibraryIds.add(syncedLibraryPersona.id);
|
|
22
|
+
hasUpdate = this.checkForUpdate(localPersona, syncedLibraryPersona);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
userPersonas.push({
|
|
26
|
+
local: localPersona,
|
|
27
|
+
synced: syncedLibraryPersona,
|
|
28
|
+
hasUpdate,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
// Filter out library personas that are already synced
|
|
32
|
+
const unsyncedLibraryPersonas = libraryPersonas.filter(lib => !syncedLibraryIds.has(lib.id));
|
|
33
|
+
return {
|
|
34
|
+
userPersonas,
|
|
35
|
+
libraryPersonas: unsyncedLibraryPersonas,
|
|
36
|
+
activePersonaId,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check if a local persona has an update available
|
|
41
|
+
*/
|
|
42
|
+
checkForUpdate(local, library) {
|
|
43
|
+
// If local has no version, it needs update
|
|
44
|
+
if (!local.version) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
// Compare versions
|
|
48
|
+
return this.isNewerVersion(local.version, library.version);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check if library version is newer than local version
|
|
52
|
+
*/
|
|
53
|
+
isNewerVersion(localVersion, libraryVersion) {
|
|
54
|
+
try {
|
|
55
|
+
const localParts = this.parseVersion(localVersion);
|
|
56
|
+
const libraryParts = this.parseVersion(libraryVersion);
|
|
57
|
+
// Compare major.minor.patch
|
|
58
|
+
for (let i = 0; i < 3; i++) {
|
|
59
|
+
if (libraryParts[i] > localParts[i])
|
|
60
|
+
return true;
|
|
61
|
+
if (libraryParts[i] < localParts[i])
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
// If versions are equal, check for pre-release
|
|
65
|
+
// Library version without pre-release is newer than local with pre-release
|
|
66
|
+
if (localVersion.includes('-') && !libraryVersion.includes('-')) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// If parsing fails, handle malformed versions
|
|
73
|
+
// If local is invalid but library is valid, update is needed
|
|
74
|
+
try {
|
|
75
|
+
this.parseVersion(libraryVersion);
|
|
76
|
+
return true; // Library version is valid, local is not
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Both invalid or library invalid
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Parse semantic version string
|
|
86
|
+
*/
|
|
87
|
+
parseVersion(version) {
|
|
88
|
+
// Remove pre-release and build metadata
|
|
89
|
+
const cleanVersion = version.split('-')[0].split('+')[0];
|
|
90
|
+
// Split into parts and parse
|
|
91
|
+
const parts = cleanVersion.split('.').map(p => parseInt(p, 10));
|
|
92
|
+
// Ensure we have at least 3 parts
|
|
93
|
+
while (parts.length < 3) {
|
|
94
|
+
parts.push(0);
|
|
95
|
+
}
|
|
96
|
+
// Validate parts
|
|
97
|
+
if (parts.some(p => isNaN(p))) {
|
|
98
|
+
throw new Error(`Invalid version: ${version}`);
|
|
99
|
+
}
|
|
100
|
+
return parts;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Check if a local persona has updates available
|
|
104
|
+
*/
|
|
105
|
+
hasUpdate(local, library) {
|
|
106
|
+
if (!library)
|
|
107
|
+
return false;
|
|
108
|
+
return this.checkForUpdate(local, library);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=persona-grouper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona-grouper.js","sourceRoot":"","sources":["../../src/services/persona-grouper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PersonaService with Library Support
|
|
3
|
+
*
|
|
4
|
+
* Extends the core PersonaService to add library persona fetching,
|
|
5
|
+
* sync detection capabilities, and agent enhancement
|
|
6
|
+
*/
|
|
7
|
+
import { PersonaService as CorePersonaService } from '@magic-ingredients/tiny-brain-core';
|
|
8
|
+
import type { PersonaListItem } from '@magic-ingredients/tiny-brain-core';
|
|
9
|
+
import type { RequestContext } from '../types/request-context.js';
|
|
10
|
+
export declare class PersonaService extends CorePersonaService {
|
|
11
|
+
private systemPersonaService;
|
|
12
|
+
constructor(context: RequestContext);
|
|
13
|
+
/**
|
|
14
|
+
* Get insights for a persona
|
|
15
|
+
*/
|
|
16
|
+
getInsights(personaName: string): Promise<any>;
|
|
17
|
+
/**
|
|
18
|
+
* Override listPersonasWithMode to add library support
|
|
19
|
+
*/
|
|
20
|
+
listPersonasWithMode(mode?: 'all' | 'local' | 'library'): Promise<PersonaListItem[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Import a library persona by name or ID
|
|
23
|
+
*/
|
|
24
|
+
importLibraryPersonaByName(nameOrId: string): Promise<string | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Check if a persona exists locally
|
|
27
|
+
*/
|
|
28
|
+
exists(personaName: string): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Ensure a persona has a USER block for user customizations
|
|
31
|
+
*/
|
|
32
|
+
ensureUserBlock(personaName: string): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Add a USER block to a persona
|
|
35
|
+
*/
|
|
36
|
+
addUserBlock(persona: {
|
|
37
|
+
systemBlock: string;
|
|
38
|
+
[key: string]: any;
|
|
39
|
+
}, localName: string): {
|
|
40
|
+
systemBlock: string;
|
|
41
|
+
[key: string]: any;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Add a USER block to a profile string that doesn't have one
|
|
45
|
+
*/
|
|
46
|
+
private addUserBlockToProfile;
|
|
47
|
+
/**
|
|
48
|
+
* Add agent instructions to a persona's USER block
|
|
49
|
+
*/
|
|
50
|
+
addAgentInstructions(personaName: string, agentList: any[]): Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=persona-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona-service.d.ts","sourceRoot":"","sources":["../../src/services/persona-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,OAAO,CAAC,oBAAoB,CAAuB;gBAEvC,OAAO,EAAE,cAAc;IAKnC;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAYpD;;OAEG;IACG,oBAAoB,CAAC,IAAI,GAAE,KAAK,GAAG,OAAO,GAAG,SAAiB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAgJjG;;OAEG;IACG,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgC1E;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnD;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BzD;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,SAAS,EAAE,MAAM,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IAgBlI;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACG,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,GAAG,EAAE,GACf,OAAO,CAAC,IAAI,CAAC;CA4BjB"}
|
|
@@ -1,17 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* PersonaService with Library Support
|
|
3
3
|
*
|
|
4
|
-
* Extends the core PersonaService to add library persona fetching
|
|
5
|
-
*
|
|
4
|
+
* Extends the core PersonaService to add library persona fetching,
|
|
5
|
+
* sync detection capabilities, and agent enhancement
|
|
6
6
|
*/
|
|
7
7
|
import { PersonaService as CorePersonaService } from '@magic-ingredients/tiny-brain-core';
|
|
8
8
|
import { SystemPersonaService } from './remote/system-persona-service.js';
|
|
9
|
-
export class
|
|
9
|
+
export class PersonaService extends CorePersonaService {
|
|
10
10
|
systemPersonaService;
|
|
11
11
|
constructor(context) {
|
|
12
12
|
super(context);
|
|
13
13
|
this.systemPersonaService = new SystemPersonaService(context);
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Get insights for a persona
|
|
17
|
+
*/
|
|
18
|
+
async getInsights(personaName) {
|
|
19
|
+
try {
|
|
20
|
+
const insightsContent = await this.storage.getPersonaFile(personaName, 'insights.json', this.userId);
|
|
21
|
+
if (!insightsContent)
|
|
22
|
+
return null;
|
|
23
|
+
return JSON.parse(insightsContent);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
this.log('debug', `Failed to load insights for ${personaName}:`, error);
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
15
30
|
/**
|
|
16
31
|
* Override listPersonasWithMode to add library support
|
|
17
32
|
*/
|
|
@@ -166,9 +181,112 @@ export class EnhancedPersonaService extends CorePersonaService {
|
|
|
166
181
|
if (!libraryPersona) {
|
|
167
182
|
return null; // Not found in library
|
|
168
183
|
}
|
|
169
|
-
//
|
|
170
|
-
const
|
|
184
|
+
// Fetch the full persona details (the list doesn't include full profile content)
|
|
185
|
+
const fullPersona = await this.systemPersonaService.fetchSystemPersona(libraryPersona.id);
|
|
186
|
+
if (!fullPersona) {
|
|
187
|
+
this.log('warn', `Could not fetch full details for library persona: ${libraryPersona.id}`);
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
// Import the persona with full content (calling the superclass method)
|
|
191
|
+
const localName = await super.importLibraryPersona(fullPersona);
|
|
171
192
|
return localName;
|
|
172
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* Check if a persona exists locally
|
|
196
|
+
*/
|
|
197
|
+
async exists(personaName) {
|
|
198
|
+
const personas = await this.listPersonas({});
|
|
199
|
+
return personas.includes(personaName);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Ensure a persona has a USER block for user customizations
|
|
203
|
+
*/
|
|
204
|
+
async ensureUserBlock(personaName) {
|
|
205
|
+
const persona = await this.loadPersona({ personaName });
|
|
206
|
+
if (!persona?.profile) {
|
|
207
|
+
this.log('warn', `Could not load persona ${personaName} to add USER block`);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const profileContent = typeof persona.profile === 'string'
|
|
211
|
+
? persona.profile
|
|
212
|
+
: JSON.stringify(persona.profile);
|
|
213
|
+
// Check if USER block already exists
|
|
214
|
+
if (profileContent.includes('<!-- USER-BLOCK-START -->')) {
|
|
215
|
+
this.log('info', `Persona ${personaName} already has USER block`);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
// Add USER block after SYSTEM block
|
|
219
|
+
const enhancedProfile = this.addUserBlockToProfile(profileContent, personaName);
|
|
220
|
+
// Save the updated persona
|
|
221
|
+
await this.savePersona({
|
|
222
|
+
personaName,
|
|
223
|
+
profile: enhancedProfile
|
|
224
|
+
});
|
|
225
|
+
this.log('info', `Added USER block to persona ${personaName}`);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Add a USER block to a persona
|
|
229
|
+
*/
|
|
230
|
+
addUserBlock(persona, localName) {
|
|
231
|
+
this.log('debug', `addUserBlock called with persona keys: ${Object.keys(persona)}, systemBlock type: ${typeof persona.systemBlock}`);
|
|
232
|
+
if (!persona.systemBlock) {
|
|
233
|
+
this.log('error', `addUserBlock: systemBlock is undefined or null`);
|
|
234
|
+
throw new Error('systemBlock is required but was undefined');
|
|
235
|
+
}
|
|
236
|
+
const enhancedSystemBlock = this.addUserBlockToProfile(persona.systemBlock, localName);
|
|
237
|
+
return {
|
|
238
|
+
...persona,
|
|
239
|
+
systemBlock: enhancedSystemBlock
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Add a USER block to a profile string that doesn't have one
|
|
244
|
+
*/
|
|
245
|
+
addUserBlockToProfile(profileContent, personaName) {
|
|
246
|
+
this.log('debug', `addUserBlockToProfile called with profileContent type: ${typeof profileContent}, length: ${profileContent?.length || 0}`);
|
|
247
|
+
if (!profileContent) {
|
|
248
|
+
this.log('error', `addUserBlockToProfile: profileContent is undefined or null`);
|
|
249
|
+
throw new Error('profileContent is required but was undefined');
|
|
250
|
+
}
|
|
251
|
+
// Find SYSTEM-BLOCK-END and add USER block after it
|
|
252
|
+
const systemBlockEnd = '<!-- SYSTEM-BLOCK-END -->';
|
|
253
|
+
const systemEndIndex = profileContent.indexOf(systemBlockEnd);
|
|
254
|
+
const userBlock = `\n\n<!-- USER-BLOCK-START -->\n## User Metadata\n- Created: ${new Date().toISOString()}\n- Modified: ${new Date().toISOString()}\n- Source: Library (${personaName})\n\n## User Rules\n<!-- User can add custom rules here -->\n\n## User Details\n<!-- User can add custom details here -->\n<!-- USER-BLOCK-END -->`;
|
|
255
|
+
if (systemEndIndex === -1) {
|
|
256
|
+
// No system block, add USER block at end
|
|
257
|
+
return profileContent + userBlock;
|
|
258
|
+
}
|
|
259
|
+
// Add USER block after system block
|
|
260
|
+
const insertPoint = systemEndIndex + systemBlockEnd.length;
|
|
261
|
+
const before = profileContent.substring(0, insertPoint);
|
|
262
|
+
const after = profileContent.substring(insertPoint);
|
|
263
|
+
return before + userBlock + after;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Add agent instructions to a persona's USER block
|
|
267
|
+
*/
|
|
268
|
+
async addAgentInstructions(personaName, agentList) {
|
|
269
|
+
const persona = await this.loadPersona({ personaName });
|
|
270
|
+
if (!persona?.profile) {
|
|
271
|
+
this.log('warn', `Could not load persona ${personaName} for agent enhancement`);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const profileContent = typeof persona.profile === 'string'
|
|
275
|
+
? persona.profile
|
|
276
|
+
: JSON.stringify(persona.profile);
|
|
277
|
+
// Import PersonaEnhancer for agent instructions
|
|
278
|
+
const { PersonaEnhancer } = await import('./persona-enhancer.js');
|
|
279
|
+
// Add agent instructions to USER block using PersonaEnhancer
|
|
280
|
+
const profileWithAgents = PersonaEnhancer.enhanceProfile(profileContent, {
|
|
281
|
+
personaName,
|
|
282
|
+
installedAgents: agentList
|
|
283
|
+
});
|
|
284
|
+
// Save updated profile
|
|
285
|
+
await this.savePersona({
|
|
286
|
+
personaName,
|
|
287
|
+
profile: profileWithAgents
|
|
288
|
+
});
|
|
289
|
+
this.log('info', `Added agent instructions to persona ${personaName}`);
|
|
290
|
+
}
|
|
173
291
|
}
|
|
174
|
-
//# sourceMappingURL=
|
|
292
|
+
//# sourceMappingURL=persona-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona-service.js","sourceRoot":"","sources":["../../src/services/persona-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-token-service.d.ts","sourceRoot":"","sources":["../../../src/services/remote/auth-token-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"auth-token-service.d.ts","sourceRoot":"","sources":["../../../src/services/remote/auth-token-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,WAAW,EAAa,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,MAAM,CAAwB;gBAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,SAAS;IAevD;;OAEG;IACH,mBAAmB,IAAI,qBAAqB;IA2C5C;;;OAGG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAmF7F;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAmB/C;;OAEG;IACH,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAkB/C;;OAEG;IACH,eAAe,IAAI,OAAO;IAO1B;;OAEG;IACH,SAAS,IAAI,IAAI;IAKjB;;OAEG;IACH,QAAQ,IAAI,SAAS,GAAG,IAAI;CAG7B"}
|