@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.
Files changed (147) hide show
  1. package/dist/agents/formatters/claude-code-formatter.d.ts +37 -0
  2. package/dist/agents/formatters/claude-code-formatter.d.ts.map +1 -0
  3. package/dist/agents/formatters/claude-code-formatter.js +217 -0
  4. package/dist/agents/formatters/claude-code-formatter.js.map +1 -0
  5. package/dist/agents/formatters/formatter-factory.d.ts +25 -0
  6. package/dist/agents/formatters/formatter-factory.d.ts.map +1 -0
  7. package/dist/agents/formatters/formatter-factory.js +61 -0
  8. package/dist/agents/formatters/formatter-factory.js.map +1 -0
  9. package/dist/agents/types.d.ts +68 -0
  10. package/dist/agents/types.d.ts.map +1 -0
  11. package/dist/agents/types.js +12 -0
  12. package/dist/agents/types.js.map +1 -0
  13. package/dist/analyser/analyzers/script-analyzer.d.ts +10 -0
  14. package/dist/analyser/analyzers/script-analyzer.d.ts.map +1 -0
  15. package/dist/analyser/analyzers/script-analyzer.js +205 -0
  16. package/dist/analyser/analyzers/script-analyzer.js.map +1 -0
  17. package/dist/analyser/detectors/base-detector.d.ts +12 -0
  18. package/dist/analyser/detectors/base-detector.d.ts.map +1 -0
  19. package/dist/analyser/detectors/base-detector.js +50 -0
  20. package/dist/analyser/detectors/base-detector.js.map +1 -0
  21. package/dist/analyser/detectors/javascript-detector.d.ts +19 -0
  22. package/dist/analyser/detectors/javascript-detector.d.ts.map +1 -0
  23. package/dist/analyser/detectors/javascript-detector.js +347 -0
  24. package/dist/analyser/detectors/javascript-detector.js.map +1 -0
  25. package/dist/analyser/index.d.ts +5 -0
  26. package/dist/analyser/index.d.ts.map +1 -0
  27. package/dist/analyser/index.js +315 -0
  28. package/dist/analyser/index.js.map +1 -0
  29. package/dist/analyser/types.d.ts +2 -0
  30. package/dist/analyser/types.d.ts.map +1 -0
  31. package/dist/analyser/types.js +2 -0
  32. package/dist/analyser/types.js.map +1 -0
  33. package/dist/analyser/utils.d.ts +5 -0
  34. package/dist/analyser/utils.d.ts.map +1 -0
  35. package/dist/analyser/utils.js +24 -0
  36. package/dist/analyser/utils.js.map +1 -0
  37. package/dist/cli/cli-factory.d.ts.map +1 -1
  38. package/dist/cli/cli-factory.js +17 -0
  39. package/dist/cli/cli-factory.js.map +1 -1
  40. package/dist/cli/commands/analyse.command.d.ts +7 -0
  41. package/dist/cli/commands/analyse.command.d.ts.map +1 -0
  42. package/dist/cli/commands/analyse.command.js +130 -0
  43. package/dist/cli/commands/analyse.command.js.map +1 -0
  44. package/dist/cli/commands/status.command.d.ts.map +1 -1
  45. package/dist/cli/commands/status.command.js +3 -1
  46. package/dist/cli/commands/status.command.js.map +1 -1
  47. package/dist/core/mcp-server.d.ts +10 -8
  48. package/dist/core/mcp-server.d.ts.map +1 -1
  49. package/dist/core/mcp-server.js +93 -85
  50. package/dist/core/mcp-server.js.map +1 -1
  51. package/dist/index.d.ts +3 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +33 -8
  54. package/dist/index.js.map +1 -1
  55. package/dist/prompts/persona/persona.prompt.js +8 -8
  56. package/dist/prompts/persona/persona.prompt.js.map +1 -1
  57. package/dist/prompts/planning/planning.prompt.d.ts +0 -8
  58. package/dist/prompts/planning/planning.prompt.d.ts.map +1 -1
  59. package/dist/prompts/planning/planning.prompt.js +0 -175
  60. package/dist/prompts/planning/planning.prompt.js.map +1 -1
  61. package/dist/services/agent-installation-service.d.ts +101 -0
  62. package/dist/services/agent-installation-service.d.ts.map +1 -0
  63. package/dist/services/agent-installation-service.js +328 -0
  64. package/dist/services/agent-installation-service.js.map +1 -0
  65. package/dist/services/agent-manager.d.ts +45 -0
  66. package/dist/services/agent-manager.d.ts.map +1 -0
  67. package/dist/services/agent-manager.js +154 -0
  68. package/dist/services/agent-manager.js.map +1 -0
  69. package/dist/services/agent-service.d.ts +70 -0
  70. package/dist/services/agent-service.d.ts.map +1 -0
  71. package/dist/services/agent-service.js +273 -0
  72. package/dist/services/agent-service.js.map +1 -0
  73. package/dist/services/analyse-service.d.ts +97 -0
  74. package/dist/services/analyse-service.d.ts.map +1 -0
  75. package/dist/services/analyse-service.js +370 -0
  76. package/dist/services/analyse-service.js.map +1 -0
  77. package/dist/services/dashboard-launcher.service.d.ts +20 -0
  78. package/dist/services/dashboard-launcher.service.d.ts.map +1 -0
  79. package/dist/services/dashboard-launcher.service.js +30 -0
  80. package/dist/services/dashboard-launcher.service.js.map +1 -0
  81. package/dist/services/persona-enhancer.d.ts +52 -0
  82. package/dist/services/persona-enhancer.d.ts.map +1 -0
  83. package/dist/services/persona-enhancer.js +252 -0
  84. package/dist/services/persona-enhancer.js.map +1 -0
  85. package/dist/services/persona-grouper.d.ts +29 -0
  86. package/dist/services/persona-grouper.d.ts.map +1 -0
  87. package/dist/services/persona-grouper.js +111 -0
  88. package/dist/services/persona-grouper.js.map +1 -0
  89. package/dist/services/persona-service.d.ts +52 -0
  90. package/dist/services/persona-service.d.ts.map +1 -0
  91. package/dist/services/{enhanced-persona-service.js → persona-service.js} +125 -7
  92. package/dist/services/persona-service.js.map +1 -0
  93. package/dist/services/remote/auth-token-service.d.ts.map +1 -1
  94. package/dist/services/remote/auth-token-service.js +10 -3
  95. package/dist/services/remote/auth-token-service.js.map +1 -1
  96. package/dist/services/remote/system-persona-service.d.ts.map +1 -1
  97. package/dist/services/remote/system-persona-service.js +41 -10
  98. package/dist/services/remote/system-persona-service.js.map +1 -1
  99. package/dist/services/repo-service.d.ts +195 -0
  100. package/dist/services/repo-service.d.ts.map +1 -0
  101. package/dist/services/repo-service.js +1023 -0
  102. package/dist/services/repo-service.js.map +1 -0
  103. package/dist/services/types/persona-types.d.ts +84 -0
  104. package/dist/services/types/persona-types.d.ts.map +1 -0
  105. package/dist/services/types/persona-types.js +5 -0
  106. package/dist/services/types/persona-types.js.map +1 -0
  107. package/dist/services/versioning-service.d.ts +79 -0
  108. package/dist/services/versioning-service.d.ts.map +1 -0
  109. package/dist/services/versioning-service.js +191 -0
  110. package/dist/services/versioning-service.js.map +1 -0
  111. package/dist/storage/local-filesystem-adapter.d.ts +1 -0
  112. package/dist/storage/local-filesystem-adapter.d.ts.map +1 -1
  113. package/dist/storage/local-filesystem-adapter.js +47 -3
  114. package/dist/storage/local-filesystem-adapter.js.map +1 -1
  115. package/dist/storage/platform-config-adapter.d.ts +9 -0
  116. package/dist/storage/platform-config-adapter.d.ts.map +1 -1
  117. package/dist/storage/platform-config-adapter.js +55 -1
  118. package/dist/storage/platform-config-adapter.js.map +1 -1
  119. package/dist/tools/analyse.tool.d.ts +17 -0
  120. package/dist/tools/analyse.tool.d.ts.map +1 -0
  121. package/dist/tools/analyse.tool.js +124 -0
  122. package/dist/tools/analyse.tool.js.map +1 -0
  123. package/dist/tools/persona/as.tool.d.ts +32 -11
  124. package/dist/tools/persona/as.tool.d.ts.map +1 -1
  125. package/dist/tools/persona/as.tool.js +452 -317
  126. package/dist/tools/persona/as.tool.js.map +1 -1
  127. package/dist/tools/persona/persona.tool.js +2 -2
  128. package/dist/tools/persona/persona.tool.js.map +1 -1
  129. package/dist/tools/plan/plan.tool.d.ts +3 -3
  130. package/dist/tools/plan/plan.tool.d.ts.map +1 -1
  131. package/dist/tools/plan/plan.tool.js +78 -55
  132. package/dist/tools/plan/plan.tool.js.map +1 -1
  133. package/dist/tools/tool-registry.d.ts.map +1 -1
  134. package/dist/tools/tool-registry.js +4 -0
  135. package/dist/tools/tool-registry.js.map +1 -1
  136. package/dist/utils/repo-utils.d.ts +10 -0
  137. package/dist/utils/repo-utils.d.ts.map +1 -0
  138. package/dist/utils/repo-utils.js +55 -0
  139. package/dist/utils/repo-utils.js.map +1 -0
  140. package/package.json +6 -2
  141. package/dist/services/enhanced-persona-service.d.ts +0 -22
  142. package/dist/services/enhanced-persona-service.d.ts.map +0 -1
  143. package/dist/services/enhanced-persona-service.js.map +0 -1
  144. package/dist/services/plan-watcher.service.d.ts +0 -141
  145. package/dist/services/plan-watcher.service.d.ts.map +0 -1
  146. package/dist/services/plan-watcher.service.js +0 -1010
  147. 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
- * Enhanced PersonaService with Library Support
2
+ * PersonaService with Library Support
3
3
  *
4
- * Extends the core PersonaService to add library persona fetching
5
- * and sync detection capabilities
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 EnhancedPersonaService extends CorePersonaService {
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
- // Import the persona (calling the superclass method)
170
- const localName = await super.importLibraryPersona(libraryPersona);
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=enhanced-persona-service.js.map
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,EAAE,MAAM,oCAAoC,CAAC;AACjE,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;IAOvD;;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"}
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"}