@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,15 @@
1
+ import { type ToolArguments, type ToolResult } from '../index.js';
2
+ import type { RequestContext } from '../../types/request-context.js';
3
+ import type { Tool as MCPTool } from '@modelcontextprotocol/sdk/types.js';
4
+ export declare class UpdateTool {
5
+ private static updateService;
6
+ /**
7
+ * Get the tool definition
8
+ */
9
+ static getToolDefinition(): MCPTool;
10
+ /**
11
+ * Execute the tool
12
+ */
13
+ static execute(args: ToolArguments, _context: RequestContext): Promise<ToolResult>;
14
+ }
15
+ //# sourceMappingURL=update.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/update/update.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAQ1E,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAuB;IAEnD;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,OAAO;IAsBnC;;OAEG;WACU,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;CA8DzF"}
@@ -0,0 +1,86 @@
1
+ import { z } from 'zod';
2
+ import { createSuccessResult, createErrorResult, } from '../index.js';
3
+ import { UpdateService } from '../../services/UpdateService.js';
4
+ const UpdateArgsSchema = z.object({
5
+ includeChangelog: z.boolean().optional().default(true),
6
+ checkOnly: z.boolean().optional().default(false),
7
+ });
8
+ export class UpdateTool {
9
+ static updateService = new UpdateService();
10
+ /**
11
+ * Get the tool definition
12
+ */
13
+ static getToolDefinition() {
14
+ return {
15
+ name: 'update',
16
+ description: '🔄 CHECK FOR UPDATES 🔄\n\n⚡ KEEP YOUR TINY-BRAIN UP TO DATE: Check for new versions and get download links.\n\n✅ FEATURES:\n • Version comparison with semantic versioning\n • Direct download links for new releases\n • Changelog retrieval\n • Update instructions\n\n💡 USAGE: Simply call to check for updates. Set includeChangelog=false to skip changelog.',
17
+ inputSchema: {
18
+ type: 'object',
19
+ properties: {
20
+ includeChangelog: {
21
+ type: 'boolean',
22
+ description: 'Include the changelog in the response (default: true)',
23
+ },
24
+ checkOnly: {
25
+ type: 'boolean',
26
+ description: 'Only check version without full update info (default: false)',
27
+ },
28
+ },
29
+ required: [],
30
+ },
31
+ };
32
+ }
33
+ /**
34
+ * Execute the tool
35
+ */
36
+ static async execute(args, _context) {
37
+ try {
38
+ const parsedArgs = UpdateArgsSchema.parse(args);
39
+ if (parsedArgs.checkOnly) {
40
+ const isUpdateAvailable = await this.updateService.isUpdateAvailable();
41
+ return createSuccessResult(JSON.stringify({
42
+ updateAvailable: isUpdateAvailable,
43
+ message: isUpdateAvailable
44
+ ? '🆕 A new version of tiny-brain is available!'
45
+ : '✅ You are running the latest version of tiny-brain.',
46
+ }));
47
+ }
48
+ const updateInfo = await this.updateService.checkForUpdate();
49
+ let response = `## 🔄 tiny-brain Update Check\n\n`;
50
+ response += `**Current Version:** ${updateInfo.currentVersion}\n`;
51
+ response += `**Latest Version:** ${updateInfo.latestVersion}\n\n`;
52
+ if (updateInfo.updateAvailable) {
53
+ response += `### 🆕 Update Available!\n\n`;
54
+ if (updateInfo.downloadUrl) {
55
+ response += `**Download:** [tiny-brain v${updateInfo.latestVersion}](${updateInfo.downloadUrl})\n\n`;
56
+ }
57
+ if (parsedArgs.includeChangelog && updateInfo.changelog) {
58
+ response += `### 📝 What's New\n\n${updateInfo.changelog}\n\n`;
59
+ }
60
+ response += `### 📦 How to Update\n\n`;
61
+ response += `1. Download the new .dxt file from the link above\n`;
62
+ response += `2. Open Claude Desktop settings\n`;
63
+ response += `3. Drag and drop the new .dxt file or double-click it\n`;
64
+ response += `4. Restart Claude Desktop if needed\n\n`;
65
+ response += `*Note: Your personas and data will be preserved during the update.*`;
66
+ }
67
+ else {
68
+ response += `### ✅ You're Up to Date!\n\n`;
69
+ response += `You are running the latest version of tiny-brain. No update needed.`;
70
+ }
71
+ return createSuccessResult(response);
72
+ }
73
+ catch (error) {
74
+ if (error instanceof z.ZodError) {
75
+ return createErrorResult(`Invalid arguments: ${error.message}`);
76
+ }
77
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
78
+ // Provide helpful error messages
79
+ if (errorMessage.includes('fetch')) {
80
+ return createErrorResult(`Unable to check for updates. Please ensure you have an internet connection and try again later.\n\nError: ${errorMessage}`);
81
+ }
82
+ return createErrorResult(`Failed to check for updates: ${errorMessage}`);
83
+ }
84
+ }
85
+ }
86
+ //# sourceMappingURL=update.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.tool.js","sourceRoot":"","sources":["../../../src/tools/update/update.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Validate Response Tool - MCP Implementation
3
+ *
4
+ * Tool for validating response quality and alignment
5
+ */
6
+ import { type ToolArguments, type ToolResult } from '../index.js';
7
+ import type { RequestContext } from '../../types/request-context.js';
8
+ import { Tool as MCPTool } from '@modelcontextprotocol/sdk/types.js';
9
+ export declare class ValidateResponseTool {
10
+ static getToolDefinition(): MCPTool;
11
+ static execute(args: ToolArguments, context: RequestContext): Promise<ToolResult>;
12
+ }
13
+ //# sourceMappingURL=validate-response.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-response.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/validate-response/validate-response.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAUrE,qBAAa,oBAAoB;IAC/B,MAAM,CAAC,iBAAiB,IAAI,OAAO;WAmCtB,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;CAwGxF"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Validate Response Tool - MCP Implementation
3
+ *
4
+ * Tool for validating response quality and alignment
5
+ */
6
+ import { z } from 'zod';
7
+ import { createSuccessResult, createErrorResult, } from '../index.js';
8
+ import { ResponseValidationService } from '@magic-ingredients/tiny-brain-core';
9
+ const ValidateResponseArgsSchema = z.object({
10
+ userMessage: z.string(),
11
+ generatedResponse: z.string(),
12
+ userId: z.string().optional(),
13
+ responseContext: z.record(z.unknown()).optional(),
14
+ saveInsights: z.boolean().optional().default(true),
15
+ });
16
+ export class ValidateResponseTool {
17
+ static getToolDefinition() {
18
+ return {
19
+ name: 'validate_response',
20
+ description: 'Validates generated responses for quality, accuracy, and persona alignment using core validation service. Performs multi-dimensional assessment and can save learning insights.',
21
+ inputSchema: {
22
+ type: 'object',
23
+ properties: {
24
+ userMessage: {
25
+ type: 'string',
26
+ description: 'The original user message',
27
+ },
28
+ generatedResponse: {
29
+ type: 'string',
30
+ description: 'The generated response to validate',
31
+ },
32
+ userId: {
33
+ type: 'string',
34
+ description: 'User ID for personalization',
35
+ },
36
+ responseContext: {
37
+ type: 'object',
38
+ description: 'Additional context for validation',
39
+ },
40
+ saveInsights: {
41
+ type: 'boolean',
42
+ description: 'Whether to save learning insights',
43
+ default: true,
44
+ },
45
+ },
46
+ required: ['userMessage', 'generatedResponse'],
47
+ },
48
+ };
49
+ }
50
+ static async execute(args, context) {
51
+ try {
52
+ const validatedArgs = ValidateResponseArgsSchema.parse(args);
53
+ // Create service with RequestContext
54
+ const validationService = new ResponseValidationService(context);
55
+ // Perform validation with explicit args
56
+ const validation = await validationService.validate(validatedArgs);
57
+ // Format result based on validity
58
+ const lines = [];
59
+ lines.push(`Validation Result: ${validation.isValid ? '✅ Valid' : '⚠️ Issues Found'}`);
60
+ lines.push('');
61
+ lines.push('## Scores');
62
+ lines.push(`- Quality: ${Math.round(validation.qualityScore * 100)}%`);
63
+ lines.push(`- Factual Accuracy: ${Math.round(validation.factualAccuracy * 100)}%`);
64
+ lines.push(`- Persona Alignment: ${Math.round(validation.personaAlignment * 100)}%`);
65
+ if (validation.issues.length > 0) {
66
+ lines.push('');
67
+ lines.push('## Issues');
68
+ // Group issues by severity
69
+ const highSeverity = validation.issues.filter((i) => i.severity === 'high');
70
+ const mediumSeverity = validation.issues.filter((i) => i.severity === 'medium');
71
+ const lowSeverity = validation.issues.filter((i) => i.severity === 'low');
72
+ if (highSeverity.length > 0) {
73
+ lines.push('');
74
+ lines.push('### High Severity');
75
+ highSeverity.forEach((issue) => {
76
+ lines.push(`- **${issue.type}**: ${issue.description}`);
77
+ if (issue.suggestion) {
78
+ lines.push(` → ${issue.suggestion}`);
79
+ }
80
+ });
81
+ }
82
+ if (mediumSeverity.length > 0) {
83
+ lines.push('');
84
+ lines.push('### Medium Severity');
85
+ mediumSeverity.forEach((issue) => {
86
+ lines.push(`- **${issue.type}**: ${issue.description}`);
87
+ if (issue.suggestion) {
88
+ lines.push(` → ${issue.suggestion}`);
89
+ }
90
+ });
91
+ }
92
+ if (lowSeverity.length > 0) {
93
+ lines.push('');
94
+ lines.push('### Low Severity');
95
+ lowSeverity.forEach((issue) => {
96
+ lines.push(`- **${issue.type}**: ${issue.description}`);
97
+ if (issue.suggestion) {
98
+ lines.push(` → ${issue.suggestion}`);
99
+ }
100
+ });
101
+ }
102
+ }
103
+ if (validation.suggestions.length > 0) {
104
+ lines.push('');
105
+ lines.push('## Suggestions');
106
+ validation.suggestions.forEach((suggestion) => {
107
+ lines.push(`- ${suggestion}`);
108
+ });
109
+ }
110
+ // Add metrics summary if available
111
+ try {
112
+ const metrics = await validationService.getValidationMetrics();
113
+ if (metrics.totalValidations > 0) {
114
+ lines.push('');
115
+ lines.push('## Historical Metrics');
116
+ lines.push(`- Total Validations: ${metrics.totalValidations}`);
117
+ lines.push(`- Avg Quality: ${Math.round(metrics.averageQuality * 100)}%`);
118
+ lines.push(`- Avg Accuracy: ${Math.round(metrics.averageFactualAccuracy * 100)}%`);
119
+ lines.push(`- Avg Alignment: ${Math.round(metrics.averagePersonaAlignment * 100)}%`);
120
+ if (metrics.commonIssues.length > 0) {
121
+ lines.push('');
122
+ lines.push('Common Issues:');
123
+ metrics.commonIssues.slice(0, 3).forEach((issue) => {
124
+ lines.push(`- ${issue.type}: ${issue.count} occurrences`);
125
+ });
126
+ }
127
+ }
128
+ }
129
+ catch {
130
+ // Metrics are optional, don't fail if they can't be retrieved
131
+ }
132
+ return createSuccessResult(lines.join('\n'));
133
+ }
134
+ catch (error) {
135
+ if (error instanceof z.ZodError) {
136
+ return createErrorResult(`Invalid arguments: ${error.errors.map((e) => e.message).join(', ')}`);
137
+ }
138
+ return createErrorResult(error instanceof Error ? error.message : 'Unknown error occurred');
139
+ }
140
+ }
141
+ }
142
+ //# sourceMappingURL=validate-response.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-response.tool.js","sourceRoot":"","sources":["../../../src/tools/validate-response/validate-response.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Request Context for Local MCP Server
3
+ *
4
+ * Re-export the RequestContext from core and extend if needed
5
+ */
6
+ export { RequestContext } from '@magic-ingredients/tiny-brain-core';
7
+ //# sourceMappingURL=request-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/types/request-context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Request Context for Local MCP Server
3
+ *
4
+ * Re-export the RequestContext from core and extend if needed
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=request-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/types/request-context.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@magic-ingredients/tiny-brain-local",
3
+ "version": "0.3.10",
4
+ "description": "Local MCP server implementation for Tiny Brain AI assistant",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "bin": {
10
+ "tiny-brain": "./dist/cli.js"
11
+ },
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.js"
16
+ }
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md"
21
+ ],
22
+ "scripts": {
23
+ "build": "tsc",
24
+ "dev": "tsx src/index.ts",
25
+ "test": "vitest run",
26
+ "test:coverage": "vitest run --coverage",
27
+ "lint": "eslint src",
28
+ "typecheck": "tsc --noEmit",
29
+ "dxt:clean": "rm -rf dxt/node_modules dxt/package-lock.json dxt/dist dxt/server/index.js",
30
+ "dxt:build": "npm run dxt:clean && npm run build && node scripts/bundle-dxt.js",
31
+ "dxt:pack": "npm run dxt:build && cd dxt && npm install && npx @anthropic-ai/dxt pack . dist/tiny-brain-$(node -p \"require('../package.json').version\").dxt",
32
+ "dxt:install": "npm install -g @anthropic-ai/dxt",
33
+ "dxt:init": "cd dxt && dxt init"
34
+ },
35
+ "dependencies": {
36
+ "@magic-ingredients/tiny-brain-core": "^0.3.10",
37
+ "@modelcontextprotocol/sdk": "^1.0.6",
38
+ "better-opn": "^3.0.2",
39
+ "marked": "^15.0.0",
40
+ "zod": "^3.23.8"
41
+ },
42
+ "devDependencies": {
43
+ "@anthropic-ai/dxt": "^0.2.5",
44
+ "@types/node": "^20.14.2",
45
+ "@vitest/coverage-v8": "^2.1.8",
46
+ "eslint": "^8.57.0",
47
+ "tsx": "^4.19.2",
48
+ "typescript": "^5.4.5",
49
+ "vitest": "^2.1.8"
50
+ },
51
+ "engines": {
52
+ "node": ">=18.0.0"
53
+ },
54
+ "keywords": [
55
+ "mcp",
56
+ "ai",
57
+ "assistant",
58
+ "tiny-brain",
59
+ "model-context-protocol",
60
+ "local-server"
61
+ ],
62
+ "author": "Magic Ingredients",
63
+ "license": "MIT",
64
+ "repository": {
65
+ "type": "git",
66
+ "url": "https://github.com/magic-ingredients/tiny-brain.git",
67
+ "directory": "packages/tiny-brain-local"
68
+ },
69
+ "homepage": "https://github.com/magic-ingredients/tiny-brain#readme",
70
+ "bugs": {
71
+ "url": "https://github.com/magic-ingredients/tiny-brain/issues"
72
+ },
73
+ "publishConfig": {
74
+ "access": "public",
75
+ "registry": "https://registry.npmjs.org/"
76
+ }
77
+ }