@magic-ingredients/tiny-brain-local 0.3.10

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.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +81 -0
  3. package/dist/core/console-logger.d.ts +30 -0
  4. package/dist/core/console-logger.d.ts.map +1 -0
  5. package/dist/core/console-logger.js +101 -0
  6. package/dist/core/console-logger.js.map +1 -0
  7. package/dist/core/file-logger.d.ts +40 -0
  8. package/dist/core/file-logger.d.ts.map +1 -0
  9. package/dist/core/file-logger.js +223 -0
  10. package/dist/core/file-logger.js.map +1 -0
  11. package/dist/core/mcp-server.d.ts +54 -0
  12. package/dist/core/mcp-server.d.ts.map +1 -0
  13. package/dist/core/mcp-server.js +295 -0
  14. package/dist/core/mcp-server.js.map +1 -0
  15. package/dist/index.d.ts +8 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +37 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/prompts/index.d.ts +39 -0
  20. package/dist/prompts/index.d.ts.map +1 -0
  21. package/dist/prompts/index.js +5 -0
  22. package/dist/prompts/index.js.map +1 -0
  23. package/dist/prompts/memory/memory.prompt.d.ts +32 -0
  24. package/dist/prompts/memory/memory.prompt.d.ts.map +1 -0
  25. package/dist/prompts/memory/memory.prompt.js +204 -0
  26. package/dist/prompts/memory/memory.prompt.js.map +1 -0
  27. package/dist/prompts/persona/persona.prompt.d.ts +27 -0
  28. package/dist/prompts/persona/persona.prompt.d.ts.map +1 -0
  29. package/dist/prompts/persona/persona.prompt.js +592 -0
  30. package/dist/prompts/persona/persona.prompt.js.map +1 -0
  31. package/dist/prompts/planning/planning.prompt.d.ts +56 -0
  32. package/dist/prompts/planning/planning.prompt.d.ts.map +1 -0
  33. package/dist/prompts/planning/planning.prompt.js +1016 -0
  34. package/dist/prompts/planning/planning.prompt.js.map +1 -0
  35. package/dist/prompts/prompt-registry.d.ts +25 -0
  36. package/dist/prompts/prompt-registry.d.ts.map +1 -0
  37. package/dist/prompts/prompt-registry.js +68 -0
  38. package/dist/prompts/prompt-registry.js.map +1 -0
  39. package/dist/prompts/thinking/thinking.prompt.d.ts +29 -0
  40. package/dist/prompts/thinking/thinking.prompt.d.ts.map +1 -0
  41. package/dist/prompts/thinking/thinking.prompt.js +171 -0
  42. package/dist/prompts/thinking/thinking.prompt.js.map +1 -0
  43. package/dist/services/UpdateService.d.ts +29 -0
  44. package/dist/services/UpdateService.d.ts.map +1 -0
  45. package/dist/services/UpdateService.js +132 -0
  46. package/dist/services/UpdateService.js.map +1 -0
  47. package/dist/services/plan-watcher.service.d.ts +143 -0
  48. package/dist/services/plan-watcher.service.d.ts.map +1 -0
  49. package/dist/services/plan-watcher.service.js +914 -0
  50. package/dist/services/plan-watcher.service.js.map +1 -0
  51. package/dist/storage/local-filesystem-adapter.d.ts +39 -0
  52. package/dist/storage/local-filesystem-adapter.d.ts.map +1 -0
  53. package/dist/storage/local-filesystem-adapter.js +208 -0
  54. package/dist/storage/local-filesystem-adapter.js.map +1 -0
  55. package/dist/storage/storage-path-builder.d.ts +14 -0
  56. package/dist/storage/storage-path-builder.d.ts.map +1 -0
  57. package/dist/storage/storage-path-builder.js +43 -0
  58. package/dist/storage/storage-path-builder.js.map +1 -0
  59. package/dist/test-setup.d.ts +2 -0
  60. package/dist/test-setup.d.ts.map +1 -0
  61. package/dist/test-setup.js +12 -0
  62. package/dist/test-setup.js.map +1 -0
  63. package/dist/tools/analyse-request/analyse-request.tool.d.ts +8 -0
  64. package/dist/tools/analyse-request/analyse-request.tool.d.ts.map +1 -0
  65. package/dist/tools/analyse-request/analyse-request.tool.js +120 -0
  66. package/dist/tools/analyse-request/analyse-request.tool.js.map +1 -0
  67. package/dist/tools/index.d.ts +69 -0
  68. package/dist/tools/index.d.ts.map +1 -0
  69. package/dist/tools/index.js +24 -0
  70. package/dist/tools/index.js.map +1 -0
  71. package/dist/tools/memory/memory.tool.d.ts +15 -0
  72. package/dist/tools/memory/memory.tool.d.ts.map +1 -0
  73. package/dist/tools/memory/memory.tool.js +110 -0
  74. package/dist/tools/memory/memory.tool.js.map +1 -0
  75. package/dist/tools/persona/as.tool.d.ts +25 -0
  76. package/dist/tools/persona/as.tool.d.ts.map +1 -0
  77. package/dist/tools/persona/as.tool.js +294 -0
  78. package/dist/tools/persona/as.tool.js.map +1 -0
  79. package/dist/tools/persona/persona.tool.d.ts +8 -0
  80. package/dist/tools/persona/persona.tool.d.ts.map +1 -0
  81. package/dist/tools/persona/persona.tool.js +193 -0
  82. package/dist/tools/persona/persona.tool.js.map +1 -0
  83. package/dist/tools/plan/plan.tool.d.ts +18 -0
  84. package/dist/tools/plan/plan.tool.d.ts.map +1 -0
  85. package/dist/tools/plan/plan.tool.js +643 -0
  86. package/dist/tools/plan/plan.tool.js.map +1 -0
  87. package/dist/tools/strategy/strategy.tool.d.ts +13 -0
  88. package/dist/tools/strategy/strategy.tool.d.ts.map +1 -0
  89. package/dist/tools/strategy/strategy.tool.js +199 -0
  90. package/dist/tools/strategy/strategy.tool.js.map +1 -0
  91. package/dist/tools/thinking/thinking.tool.d.ts +13 -0
  92. package/dist/tools/thinking/thinking.tool.d.ts.map +1 -0
  93. package/dist/tools/thinking/thinking.tool.js +226 -0
  94. package/dist/tools/thinking/thinking.tool.js.map +1 -0
  95. package/dist/tools/tool-registry.d.ts +20 -0
  96. package/dist/tools/tool-registry.d.ts.map +1 -0
  97. package/dist/tools/tool-registry.js +61 -0
  98. package/dist/tools/tool-registry.js.map +1 -0
  99. package/dist/tools/update/update.tool.d.ts +15 -0
  100. package/dist/tools/update/update.tool.d.ts.map +1 -0
  101. package/dist/tools/update/update.tool.js +86 -0
  102. package/dist/tools/update/update.tool.js.map +1 -0
  103. package/dist/tools/validate-response/validate-response.tool.d.ts +13 -0
  104. package/dist/tools/validate-response/validate-response.tool.d.ts.map +1 -0
  105. package/dist/tools/validate-response/validate-response.tool.js +142 -0
  106. package/dist/tools/validate-response/validate-response.tool.js.map +1 -0
  107. package/dist/types/request-context.d.ts +7 -0
  108. package/dist/types/request-context.d.ts.map +1 -0
  109. package/dist/types/request-context.js +7 -0
  110. package/dist/types/request-context.js.map +1 -0
  111. package/package.json +77 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.prompt.js","sourceRoot":"","sources":["../../../src/prompts/memory/memory.prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Persona Prompt Handler
3
+ *
4
+ * Thin dispatcher for persona-related prompt executions
5
+ * Validates args with Zod, dispatches to PersonaService, formats responses
6
+ */
7
+ import type { RequestContext } from '../../types/request-context.js';
8
+ import type { Prompt } from '@modelcontextprotocol/sdk/types.js';
9
+ import type { PromptResponse } from '../index.js';
10
+ export declare class PersonaPrompt {
11
+ /**
12
+ * Get all persona-related prompt definitions
13
+ */
14
+ static getPromptDefinitions(): Prompt[];
15
+ /**
16
+ * Main handler that routes to specific prompt handlers
17
+ */
18
+ static handle(name: string, args: Record<string, unknown>, context: RequestContext): Promise<PromptResponse>;
19
+ static handleListPersonas(args: Record<string, unknown>, context: RequestContext): Promise<PromptResponse>;
20
+ static handleBecome(args: Record<string, unknown>, context: RequestContext): Promise<PromptResponse>;
21
+ static handleCreatePersona(args: Record<string, unknown>, context: RequestContext): Promise<PromptResponse>;
22
+ static handleUpdatePersona(args: Record<string, unknown>, context: RequestContext): Promise<PromptResponse>;
23
+ static handleRemovePersona(args: Record<string, unknown>, context: RequestContext): Promise<PromptResponse>;
24
+ static handleShowPersona(args: Record<string, unknown>, context: RequestContext): Promise<PromptResponse>;
25
+ static handleCurrentPersona(args: Record<string, unknown>, context: RequestContext): Promise<PromptResponse>;
26
+ }
27
+ //# sourceMappingURL=persona.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persona.prompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/persona/persona.prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAwClD,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI,MAAM,EAAE;IAmFvC;;OAEG;WACU,MAAM,CACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC;WAqBb,kBAAkB,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC;WA2Cb,YAAY,CACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC;WAyEb,mBAAmB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC;WAyEb,mBAAmB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC;WA+Gb,mBAAmB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC;WAkEb,iBAAiB,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC;WA0Eb,oBAAoB,CAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC;CAmE3B"}
@@ -0,0 +1,592 @@
1
+ /**
2
+ * Persona Prompt Handler
3
+ *
4
+ * Thin dispatcher for persona-related prompt executions
5
+ * Validates args with Zod, dispatches to PersonaService, formats responses
6
+ */
7
+ import { z } from 'zod';
8
+ import { PersonaService, PersonaLearningService, formatPersonaList, createDefaultProfile, formatPersona, formatActivationMessage } from '@magic-ingredients/tiny-brain-core';
9
+ // Zod schemas for each prompt handler
10
+ const ListPersonasArgsSchema = z.object({});
11
+ const BecomeArgsSchema = z.object({
12
+ persona_name: z.string(),
13
+ autoCreate: z.boolean().optional().default(true),
14
+ });
15
+ const CreatePersonaArgsSchema = z.object({
16
+ name: z.string(),
17
+ description: z.string().optional(),
18
+ style: z.string().optional(),
19
+ });
20
+ const UpdatePersonaArgsSchema = z.object({
21
+ name: z.string(),
22
+ updates: z.string(),
23
+ });
24
+ const ArchivePersonaArgsSchema = z.object({
25
+ name: z.string(),
26
+ reason: z.string().optional(),
27
+ });
28
+ const ShowPersonaArgsSchema = z.object({
29
+ name: z.string(),
30
+ });
31
+ const CurrentPersonaArgsSchema = z.object({});
32
+ export class PersonaPrompt {
33
+ /**
34
+ * Get all persona-related prompt definitions
35
+ */
36
+ static getPromptDefinitions() {
37
+ return [
38
+ {
39
+ name: 'as',
40
+ description: '🎭 Switch to a specific persona to tailor responses',
41
+ arguments: [
42
+ {
43
+ name: 'persona_name',
44
+ description: 'Name of the persona to become',
45
+ required: true,
46
+ },
47
+ ],
48
+ },
49
+ {
50
+ name: 'list_personas',
51
+ description: '📋 Show all available personas',
52
+ },
53
+ {
54
+ name: 'create_persona',
55
+ description: '✨ Create a new persona with specific traits',
56
+ arguments: [
57
+ {
58
+ name: 'name',
59
+ description: 'Name for the new persona',
60
+ required: true,
61
+ },
62
+ {
63
+ name: 'description',
64
+ description: 'Description of persona traits and characteristics',
65
+ required: true,
66
+ },
67
+ ],
68
+ },
69
+ {
70
+ name: 'update_persona',
71
+ description: '✏️ Update an existing persona',
72
+ arguments: [
73
+ {
74
+ name: 'name',
75
+ description: 'Name of the persona to update',
76
+ required: true,
77
+ },
78
+ {
79
+ name: 'updates',
80
+ description: 'What to update about the persona',
81
+ required: true,
82
+ },
83
+ ],
84
+ },
85
+ {
86
+ name: 'archive_persona',
87
+ description: '📦 Archive a persona (safe removal)',
88
+ arguments: [
89
+ {
90
+ name: 'name',
91
+ description: 'Name of the persona to archive',
92
+ required: true,
93
+ },
94
+ {
95
+ name: 'reason',
96
+ description: 'Reason for archiving',
97
+ required: false,
98
+ },
99
+ ],
100
+ },
101
+ {
102
+ name: 'show_persona',
103
+ description: '👁️ Display detailed information about a specific persona',
104
+ arguments: [
105
+ {
106
+ name: 'name',
107
+ description: 'Name of the persona to show',
108
+ required: true,
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ name: 'current_persona',
114
+ description: '🎭 Show information about the currently active persona',
115
+ },
116
+ ];
117
+ }
118
+ /**
119
+ * Main handler that routes to specific prompt handlers
120
+ */
121
+ static async handle(name, args, context) {
122
+ switch (name) {
123
+ case 'list_personas':
124
+ return await PersonaPrompt.handleListPersonas(args, context);
125
+ case 'as':
126
+ return await PersonaPrompt.handleBecome(args, context);
127
+ case 'create_persona':
128
+ return await PersonaPrompt.handleCreatePersona(args, context);
129
+ case 'update_persona':
130
+ return await PersonaPrompt.handleUpdatePersona(args, context);
131
+ case 'archive_persona':
132
+ return await PersonaPrompt.handleRemovePersona(args, context);
133
+ case 'show_persona':
134
+ return await PersonaPrompt.handleShowPersona(args, context);
135
+ case 'current_persona':
136
+ return await PersonaPrompt.handleCurrentPersona(args, context);
137
+ default:
138
+ throw new Error(`Unknown persona prompt: ${name}`);
139
+ }
140
+ }
141
+ static async handleListPersonas(args, context) {
142
+ try {
143
+ // Validate args (no args for list operation)
144
+ ListPersonasArgsSchema.parse(args);
145
+ // Create service with RequestContext
146
+ const service = new PersonaService(context);
147
+ // Call service method with args (matching tool pattern)
148
+ const personas = await service.listPersonas({
149
+ includeArchived: false
150
+ });
151
+ // Format response
152
+ const response = formatPersonaList(personas, context.activePersona?.id);
153
+ return {
154
+ description: 'List all available personas',
155
+ messages: [
156
+ {
157
+ role: 'user',
158
+ content: {
159
+ type: 'text',
160
+ text: 'List all personas',
161
+ },
162
+ },
163
+ {
164
+ role: 'assistant',
165
+ content: {
166
+ type: 'text',
167
+ text: response,
168
+ },
169
+ },
170
+ ],
171
+ };
172
+ }
173
+ catch (error) {
174
+ if (error instanceof z.ZodError) {
175
+ throw new Error(`Invalid arguments: ${error.errors.map(e => e.message).join(', ')}`);
176
+ }
177
+ throw error;
178
+ }
179
+ }
180
+ static async handleBecome(args, context) {
181
+ try {
182
+ // Validate args
183
+ const validatedArgs = BecomeArgsSchema.parse(args);
184
+ // Create service with RequestContext
185
+ const service = new PersonaService(context);
186
+ // Call service method with args
187
+ const existingPersona = await service.loadPersona({
188
+ personaName: validatedArgs.persona_name
189
+ });
190
+ if (!existingPersona && !validatedArgs.autoCreate) {
191
+ return {
192
+ messages: [
193
+ {
194
+ role: 'user',
195
+ content: {
196
+ type: 'text',
197
+ text: `Switch to "${validatedArgs.persona_name}" persona`,
198
+ },
199
+ },
200
+ {
201
+ role: 'assistant',
202
+ content: {
203
+ type: 'text',
204
+ text: `Persona "${validatedArgs.persona_name}" not found. Set autoCreate: true to create it.`,
205
+ },
206
+ },
207
+ ],
208
+ };
209
+ }
210
+ let isNew = false;
211
+ if (!existingPersona && validatedArgs.autoCreate) {
212
+ const newProfile = createDefaultProfile(validatedArgs.persona_name, new Date().toISOString());
213
+ await service.createPersona({
214
+ personaName: validatedArgs.persona_name,
215
+ profile: newProfile
216
+ });
217
+ isNew = true;
218
+ }
219
+ // Format response
220
+ const message = formatActivationMessage(validatedArgs.persona_name, isNew);
221
+ return {
222
+ messages: [
223
+ {
224
+ role: 'user',
225
+ content: {
226
+ type: 'text',
227
+ text: `Switch to "${validatedArgs.persona_name}" persona`,
228
+ },
229
+ },
230
+ {
231
+ role: 'assistant',
232
+ content: {
233
+ type: 'text',
234
+ text: message,
235
+ },
236
+ },
237
+ ],
238
+ };
239
+ }
240
+ catch (error) {
241
+ if (error instanceof z.ZodError) {
242
+ throw new Error(`Invalid arguments: ${error.errors.map(e => e.message).join(', ')}`);
243
+ }
244
+ throw error;
245
+ }
246
+ }
247
+ static async handleCreatePersona(args, context) {
248
+ try {
249
+ // Validate args
250
+ const validatedArgs = CreatePersonaArgsSchema.parse(args);
251
+ // Create service with RequestContext
252
+ const service = new PersonaService(context);
253
+ // Check if already exists
254
+ const existing = await service.loadPersona({
255
+ personaName: validatedArgs.name
256
+ });
257
+ if (existing) {
258
+ return {
259
+ messages: [
260
+ {
261
+ role: 'user',
262
+ content: {
263
+ type: 'text',
264
+ text: `Create persona "${validatedArgs.name}"`,
265
+ },
266
+ },
267
+ {
268
+ role: 'assistant',
269
+ content: {
270
+ type: 'text',
271
+ text: `Persona "${validatedArgs.name}" already exists`,
272
+ },
273
+ },
274
+ ],
275
+ };
276
+ }
277
+ // Create profile and persona
278
+ const profile = createDefaultProfile(validatedArgs.name, new Date().toISOString(), validatedArgs.description, validatedArgs.style);
279
+ await service.createPersona({
280
+ personaName: validatedArgs.name,
281
+ profile: profile
282
+ });
283
+ return {
284
+ messages: [
285
+ {
286
+ role: 'user',
287
+ content: {
288
+ type: 'text',
289
+ text: `Create persona "${validatedArgs.name}"`,
290
+ },
291
+ },
292
+ {
293
+ role: 'assistant',
294
+ content: {
295
+ type: 'text',
296
+ text: `Created persona "${validatedArgs.name}"`,
297
+ },
298
+ },
299
+ ],
300
+ };
301
+ }
302
+ catch (error) {
303
+ if (error instanceof z.ZodError) {
304
+ throw new Error(`Invalid arguments: ${error.errors.map(e => e.message).join(', ')}`);
305
+ }
306
+ throw error;
307
+ }
308
+ }
309
+ static async handleUpdatePersona(args, context) {
310
+ try {
311
+ // Validate args
312
+ const validatedArgs = UpdatePersonaArgsSchema.parse(args);
313
+ // Create service with RequestContext
314
+ const service = new PersonaService(context);
315
+ // Load existing persona
316
+ const existingPersona = await service.loadPersona({
317
+ personaName: validatedArgs.name
318
+ });
319
+ if (!existingPersona) {
320
+ return {
321
+ messages: [
322
+ {
323
+ role: 'user',
324
+ content: {
325
+ type: 'text',
326
+ text: `Update persona "${validatedArgs.name}"`,
327
+ },
328
+ },
329
+ {
330
+ role: 'assistant',
331
+ content: {
332
+ type: 'text',
333
+ text: `Persona "${validatedArgs.name}" not found`,
334
+ },
335
+ },
336
+ ],
337
+ };
338
+ }
339
+ // Parse updates as JSON if possible, otherwise treat as text
340
+ let data;
341
+ try {
342
+ data = JSON.parse(validatedArgs.updates);
343
+ }
344
+ catch {
345
+ // If not JSON, treat as description update
346
+ data = { description: validatedArgs.updates };
347
+ }
348
+ // Check for learning opportunities (matching tool pattern)
349
+ const learningEvaluation = PersonaLearningService.evaluateUpdateForLearning(data, context);
350
+ let updatesApplied = [];
351
+ if (learningEvaluation.hasLearning && learningEvaluation.extractedLearning) {
352
+ await service.updateInsights({
353
+ personaName: validatedArgs.name,
354
+ insights: learningEvaluation.extractedLearning,
355
+ });
356
+ updatesApplied.push(`${learningEvaluation.learningType}`);
357
+ }
358
+ // Handle profile updates
359
+ if (data.profile && typeof data.profile === 'string') {
360
+ await service.savePersona({
361
+ personaName: validatedArgs.name,
362
+ profile: data.profile,
363
+ });
364
+ updatesApplied.push('profile');
365
+ }
366
+ else if (!learningEvaluation.hasLearning) {
367
+ // Fallback: append updates to profile
368
+ const profileString = typeof existingPersona.profile === 'string'
369
+ ? existingPersona.profile
370
+ : JSON.stringify(existingPersona.profile);
371
+ const updatedProfile = profileString + '\n\n## Updates\n' + validatedArgs.updates;
372
+ await service.savePersona({
373
+ personaName: validatedArgs.name,
374
+ profile: updatedProfile,
375
+ });
376
+ updatesApplied.push('profile (appended)');
377
+ }
378
+ const updateMessage = updatesApplied.length > 0
379
+ ? `Updated persona "${validatedArgs.name}": ${updatesApplied.join(', ')}`
380
+ : `Updated persona "${validatedArgs.name}"`;
381
+ return {
382
+ messages: [
383
+ {
384
+ role: 'user',
385
+ content: {
386
+ type: 'text',
387
+ text: `Update persona "${validatedArgs.name}" with changes: ${validatedArgs.updates}`,
388
+ },
389
+ },
390
+ {
391
+ role: 'assistant',
392
+ content: {
393
+ type: 'text',
394
+ text: updateMessage,
395
+ },
396
+ },
397
+ ],
398
+ };
399
+ }
400
+ catch (error) {
401
+ if (error instanceof z.ZodError) {
402
+ throw new Error(`Invalid arguments: ${error.errors.map(e => e.message).join(', ')}`);
403
+ }
404
+ throw error;
405
+ }
406
+ }
407
+ static async handleRemovePersona(args, context) {
408
+ try {
409
+ // Validate args
410
+ const validatedArgs = ArchivePersonaArgsSchema.parse(args);
411
+ // Create service with RequestContext
412
+ const service = new PersonaService(context);
413
+ // Check if persona exists
414
+ const existing = await service.loadPersona({
415
+ personaName: validatedArgs.name
416
+ });
417
+ if (!existing) {
418
+ return {
419
+ messages: [
420
+ {
421
+ role: 'user',
422
+ content: {
423
+ type: 'text',
424
+ text: `Archive persona "${validatedArgs.name}"`,
425
+ },
426
+ },
427
+ {
428
+ role: 'assistant',
429
+ content: {
430
+ type: 'text',
431
+ text: `Persona "${validatedArgs.name}" not found`,
432
+ },
433
+ },
434
+ ],
435
+ };
436
+ }
437
+ // Archive the persona
438
+ await service.archivePersona({
439
+ personaName: validatedArgs.name,
440
+ reason: validatedArgs.reason || 'Archived via prompt handler',
441
+ });
442
+ return {
443
+ messages: [
444
+ {
445
+ role: 'user',
446
+ content: {
447
+ type: 'text',
448
+ text: `Archive persona "${validatedArgs.name}"`,
449
+ },
450
+ },
451
+ {
452
+ role: 'assistant',
453
+ content: {
454
+ type: 'text',
455
+ text: `Archived persona "${validatedArgs.name}"`,
456
+ },
457
+ },
458
+ ],
459
+ };
460
+ }
461
+ catch (error) {
462
+ if (error instanceof z.ZodError) {
463
+ throw new Error(`Invalid arguments: ${error.errors.map(e => e.message).join(', ')}`);
464
+ }
465
+ throw error;
466
+ }
467
+ }
468
+ static async handleShowPersona(args, context) {
469
+ try {
470
+ // Validate args
471
+ const validatedArgs = ShowPersonaArgsSchema.parse(args);
472
+ // Create service with RequestContext
473
+ const service = new PersonaService(context);
474
+ // Load persona
475
+ const persona = await service.loadPersona({
476
+ personaName: validatedArgs.name
477
+ });
478
+ if (!persona) {
479
+ return {
480
+ messages: [
481
+ {
482
+ role: 'user',
483
+ content: {
484
+ type: 'text',
485
+ text: `Show persona "${validatedArgs.name}"`,
486
+ },
487
+ },
488
+ {
489
+ role: 'assistant',
490
+ content: {
491
+ type: 'text',
492
+ text: `Persona "${validatedArgs.name}" not found`,
493
+ },
494
+ },
495
+ ],
496
+ };
497
+ }
498
+ // Get files and format response
499
+ const files = await service.listPersonaFiles({
500
+ personaName: validatedArgs.name
501
+ });
502
+ const formattedPersona = formatPersona(persona?.profile || null, validatedArgs.name);
503
+ let response = `Persona: ${validatedArgs.name}\n`;
504
+ response += `Files: ${files.length}\n\n`;
505
+ response += formattedPersona;
506
+ return {
507
+ messages: [
508
+ {
509
+ role: 'user',
510
+ content: {
511
+ type: 'text',
512
+ text: `Show persona "${validatedArgs.name}"`,
513
+ },
514
+ },
515
+ {
516
+ role: 'assistant',
517
+ content: {
518
+ type: 'text',
519
+ text: response,
520
+ },
521
+ },
522
+ ],
523
+ };
524
+ }
525
+ catch (error) {
526
+ if (error instanceof z.ZodError) {
527
+ throw new Error(`Invalid arguments: ${error.errors.map(e => e.message).join(', ')}`);
528
+ }
529
+ throw error;
530
+ }
531
+ }
532
+ static async handleCurrentPersona(args, context) {
533
+ try {
534
+ // Validate args (no args for current operation)
535
+ CurrentPersonaArgsSchema.parse(args);
536
+ const activePersonaName = context.activePersona?.id;
537
+ if (!activePersonaName) {
538
+ return {
539
+ messages: [
540
+ {
541
+ role: 'user',
542
+ content: {
543
+ type: 'text',
544
+ text: 'Show current persona',
545
+ },
546
+ },
547
+ {
548
+ role: 'assistant',
549
+ content: {
550
+ type: 'text',
551
+ text: 'No persona is currently active',
552
+ },
553
+ },
554
+ ],
555
+ };
556
+ }
557
+ // Create service with RequestContext
558
+ const service = new PersonaService(context);
559
+ // Load current persona
560
+ const persona = await service.loadPersona({
561
+ personaName: activePersonaName
562
+ });
563
+ // Format response
564
+ const formattedPersona = formatPersona(persona?.profile || null, activePersonaName);
565
+ return {
566
+ messages: [
567
+ {
568
+ role: 'user',
569
+ content: {
570
+ type: 'text',
571
+ text: 'Show current persona',
572
+ },
573
+ },
574
+ {
575
+ role: 'assistant',
576
+ content: {
577
+ type: 'text',
578
+ text: formattedPersona,
579
+ },
580
+ },
581
+ ],
582
+ };
583
+ }
584
+ catch (error) {
585
+ if (error instanceof z.ZodError) {
586
+ throw new Error(`Invalid arguments: ${error.errors.map(e => e.message).join(', ')}`);
587
+ }
588
+ throw error;
589
+ }
590
+ }
591
+ }
592
+ //# sourceMappingURL=persona.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persona.prompt.js","sourceRoot":"","sources":["../../../src/prompts/persona/persona.prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACxB,MAAM,oCAAoC,CAAC;AAE5C,sCAAsC;AACtC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5C,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACjD,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE9C,MAAM,OAAO,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,oBAAoB;QACzB,OAAO;YACL;gBACE,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,qDAAqD;gBAClE,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,cAAc;wBACpB,WAAW,EAAE,+BAA+B;wBAC5C,QAAQ,EAAE,IAAI;qBACf;iBACF;aACF;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,gCAAgC;aAC9C;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,6CAA6C;gBAC1D,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,WAAW,EAAE,0BAA0B;wBACvC,QAAQ,EAAE,IAAI;qBACf;oBACD;wBACE,IAAI,EAAE,aAAa;wBACnB,WAAW,EAAE,mDAAmD;wBAChE,QAAQ,EAAE,IAAI;qBACf;iBACF;aACF;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,+BAA+B;gBAC5C,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,WAAW,EAAE,+BAA+B;wBAC5C,QAAQ,EAAE,IAAI;qBACf;oBACD;wBACE,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,kCAAkC;wBAC/C,QAAQ,EAAE,IAAI;qBACf;iBACF;aACF;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,qCAAqC;gBAClD,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,WAAW,EAAE,gCAAgC;wBAC7C,QAAQ,EAAE,IAAI;qBACf;oBACD;wBACE,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,sBAAsB;wBACnC,QAAQ,EAAE,KAAK;qBAChB;iBACF;aACF;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,2DAA2D;gBACxE,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,MAAM;wBACZ,WAAW,EAAE,6BAA6B;wBAC1C,QAAQ,EAAE,IAAI;qBACf;iBACF;aACF;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,wDAAwD;aACtE;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,IAAY,EACZ,IAA6B,EAC7B,OAAuB;QAEvB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,eAAe;gBAClB,OAAO,MAAM,aAAa,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/D,KAAK,IAAI;gBACP,OAAO,MAAM,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzD,KAAK,gBAAgB;gBACnB,OAAO,MAAM,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAChE,KAAK,gBAAgB;gBACnB,OAAO,MAAM,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAChE,KAAK,iBAAiB;gBACpB,OAAO,MAAM,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAChE,KAAK,cAAc;gBACjB,OAAO,MAAM,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9D,KAAK,iBAAiB;gBACpB,OAAO,MAAM,aAAa,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACjE;gBACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAC7B,IAA6B,EAC7B,OAAuB;QAEvB,IAAI,CAAC;YACH,6CAA6C;YAC7C,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEnC,qCAAqC;YACrC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;YAE5C,wDAAwD;YACxD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC;gBAC1C,eAAe,EAAE,KAAK;aACvB,CAAC,CAAC;YAEH,kBAAkB;YAClB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAExE,OAAO;gBACL,WAAW,EAAE,6BAA6B;gBAC1C,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,mBAAmB;yBAC1B;qBACF;oBACD;wBACE,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,IAA6B,EAC7B,OAAuB;QAEvB,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEnD,qCAAqC;YACrC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;YAE5C,gCAAgC;YAChC,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC;gBAChD,WAAW,EAAE,aAAa,CAAC,YAAY;aACxC,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;gBAClD,OAAO;oBACL,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,cAAc,aAAa,CAAC,YAAY,WAAW;6BAC1D;yBACF;wBACD;4BACE,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,YAAY,aAAa,CAAC,YAAY,iDAAiD;6BAC9F;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;gBACjD,MAAM,UAAU,GAAG,oBAAoB,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC9F,MAAM,OAAO,CAAC,aAAa,CAAC;oBAC1B,WAAW,EAAE,aAAa,CAAC,YAAY;oBACvC,OAAO,EAAE,UAAU;iBACpB,CAAC,CAAC;gBACH,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;YAED,kBAAkB;YAClB,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAE3E,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,cAAc,aAAa,CAAC,YAAY,WAAW;yBAC1D;qBACF;oBACD;wBACE,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,OAAO;yBACd;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAC9B,IAA6B,EAC7B,OAAuB;QAEvB,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE1D,qCAAqC;YACrC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;YAE5C,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC;gBACzC,WAAW,EAAE,aAAa,CAAC,IAAI;aAChC,CAAC,CAAC;YAEH,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO;oBACL,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,mBAAmB,aAAa,CAAC,IAAI,GAAG;6BAC/C;yBACF;wBACD;4BACE,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,YAAY,aAAa,CAAC,IAAI,kBAAkB;6BACvD;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,6BAA6B;YAC7B,MAAM,OAAO,GAAG,oBAAoB,CAClC,aAAa,CAAC,IAAI,EAClB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACxB,aAAa,CAAC,WAAW,EACzB,aAAa,CAAC,KAAK,CACpB,CAAC;YAEF,MAAM,OAAO,CAAC,aAAa,CAAC;gBAC1B,WAAW,EAAE,aAAa,CAAC,IAAI;gBAC/B,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;YAEH,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,mBAAmB,aAAa,CAAC,IAAI,GAAG;yBAC/C;qBACF;oBACD;wBACE,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,oBAAoB,aAAa,CAAC,IAAI,GAAG;yBAChD;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAC9B,IAA6B,EAC7B,OAAuB;QAEvB,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE1D,qCAAqC;YACrC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;YAE5C,wBAAwB;YACxB,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC;gBAChD,WAAW,EAAE,aAAa,CAAC,IAAI;aAChC,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO;oBACL,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,mBAAmB,aAAa,CAAC,IAAI,GAAG;6BAC/C;yBACF;wBACD;4BACE,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,YAAY,aAAa,CAAC,IAAI,aAAa;6BAClD;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,6DAA6D;YAC7D,IAAI,IAA6B,CAAC;YAClC,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;gBAC3C,IAAI,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC;YAChD,CAAC;YAED,2DAA2D;YAC3D,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,yBAAyB,CACzE,IAAI,EACJ,OAAO,CACR,CAAC;YAEF,IAAI,cAAc,GAAa,EAAE,CAAC;YAElC,IAAI,kBAAkB,CAAC,WAAW,IAAI,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;gBAC3E,MAAM,OAAO,CAAC,cAAc,CAAC;oBAC3B,WAAW,EAAE,aAAa,CAAC,IAAI;oBAC/B,QAAQ,EAAE,kBAAkB,CAAC,iBAAiB;iBAC/C,CAAC,CAAC;gBACH,cAAc,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,YAAY,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,yBAAyB;YACzB,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,OAAO,CAAC,WAAW,CAAC;oBACxB,WAAW,EAAE,aAAa,CAAC,IAAI;oBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CAAC;gBACH,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;gBAC3C,sCAAsC;gBACtC,MAAM,aAAa,GAAG,OAAO,eAAe,CAAC,OAAO,KAAK,QAAQ;oBAC/D,CAAC,CAAC,eAAe,CAAC,OAAO;oBACzB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBAE5C,MAAM,cAAc,GAAG,aAAa,GAAG,kBAAkB,GAAG,aAAa,CAAC,OAAO,CAAC;gBAElF,MAAM,OAAO,CAAC,WAAW,CAAC;oBACxB,WAAW,EAAE,aAAa,CAAC,IAAI;oBAC/B,OAAO,EAAE,cAAc;iBACxB,CAAC,CAAC;gBACH,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC;gBAC7C,CAAC,CAAC,oBAAoB,aAAa,CAAC,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACzE,CAAC,CAAC,oBAAoB,aAAa,CAAC,IAAI,GAAG,CAAC;YAE9C,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,mBAAmB,aAAa,CAAC,IAAI,mBAAmB,aAAa,CAAC,OAAO,EAAE;yBACtF;qBACF;oBACD;wBACE,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,aAAa;yBACpB;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAC9B,IAA6B,EAC7B,OAAuB;QAEvB,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,aAAa,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE3D,qCAAqC;YACrC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;YAE5C,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC;gBACzC,WAAW,EAAE,aAAa,CAAC,IAAI;aAChC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,oBAAoB,aAAa,CAAC,IAAI,GAAG;6BAChD;yBACF;wBACD;4BACE,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,YAAY,aAAa,CAAC,IAAI,aAAa;6BAClD;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,sBAAsB;YACtB,MAAM,OAAO,CAAC,cAAc,CAAC;gBAC3B,WAAW,EAAE,aAAa,CAAC,IAAI;gBAC/B,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,6BAA6B;aAC9D,CAAC,CAAC;YAEH,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,oBAAoB,aAAa,CAAC,IAAI,GAAG;yBAChD;qBACF;oBACD;wBACE,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,qBAAqB,aAAa,CAAC,IAAI,GAAG;yBACjD;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAC5B,IAA6B,EAC7B,OAAuB;QAEvB,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAExD,qCAAqC;YACrC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;YAE5C,eAAe;YACf,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC;gBACxC,WAAW,EAAE,aAAa,CAAC,IAAI;aAChC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO;oBACL,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,iBAAiB,aAAa,CAAC,IAAI,GAAG;6BAC7C;yBACF;wBACD;4BACE,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,YAAY,aAAa,CAAC,IAAI,aAAa;6BAClD;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,gCAAgC;YAChC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC;gBAC3C,WAAW,EAAE,aAAa,CAAC,IAAI;aAChC,CAAC,CAAC;YAEH,MAAM,gBAAgB,GAAG,aAAa,CACpC,OAAO,EAAE,OAAc,IAAI,IAAI,EAC/B,aAAa,CAAC,IAAI,CACnB,CAAC;YAEF,IAAI,QAAQ,GAAG,YAAY,aAAa,CAAC,IAAI,IAAI,CAAC;YAClD,QAAQ,IAAI,UAAU,KAAK,CAAC,MAAM,MAAM,CAAC;YACzC,QAAQ,IAAI,gBAAgB,CAAC;YAE7B,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,iBAAiB,aAAa,CAAC,IAAI,GAAG;yBAC7C;qBACF;oBACD;wBACE,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAC/B,IAA6B,EAC7B,OAAuB;QAEvB,IAAI,CAAC;YACH,gDAAgD;YAChD,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAErC,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;YAEpD,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,OAAO;oBACL,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,sBAAsB;6BAC7B;yBACF;wBACD;4BACE,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,gCAAgC;6BACvC;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,qCAAqC;YACrC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;YAE5C,uBAAuB;YACvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC;gBACxC,WAAW,EAAE,iBAAiB;aAC/B,CAAC,CAAC;YAEH,kBAAkB;YAClB,MAAM,gBAAgB,GAAG,aAAa,CACpC,OAAO,EAAE,OAAc,IAAI,IAAI,EAC/B,iBAAiB,CAClB,CAAC;YAEF,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,sBAAsB;yBAC7B;qBACF;oBACD;wBACE,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gBAAgB;yBACvB;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}