@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.
- package/LICENSE +21 -0
- package/README.md +81 -0
- package/dist/core/console-logger.d.ts +30 -0
- package/dist/core/console-logger.d.ts.map +1 -0
- package/dist/core/console-logger.js +101 -0
- package/dist/core/console-logger.js.map +1 -0
- package/dist/core/file-logger.d.ts +40 -0
- package/dist/core/file-logger.d.ts.map +1 -0
- package/dist/core/file-logger.js +223 -0
- package/dist/core/file-logger.js.map +1 -0
- package/dist/core/mcp-server.d.ts +54 -0
- package/dist/core/mcp-server.d.ts.map +1 -0
- package/dist/core/mcp-server.js +295 -0
- package/dist/core/mcp-server.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +39 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +5 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/memory/memory.prompt.d.ts +32 -0
- package/dist/prompts/memory/memory.prompt.d.ts.map +1 -0
- package/dist/prompts/memory/memory.prompt.js +204 -0
- package/dist/prompts/memory/memory.prompt.js.map +1 -0
- package/dist/prompts/persona/persona.prompt.d.ts +27 -0
- package/dist/prompts/persona/persona.prompt.d.ts.map +1 -0
- package/dist/prompts/persona/persona.prompt.js +592 -0
- package/dist/prompts/persona/persona.prompt.js.map +1 -0
- package/dist/prompts/planning/planning.prompt.d.ts +56 -0
- package/dist/prompts/planning/planning.prompt.d.ts.map +1 -0
- package/dist/prompts/planning/planning.prompt.js +1016 -0
- package/dist/prompts/planning/planning.prompt.js.map +1 -0
- package/dist/prompts/prompt-registry.d.ts +25 -0
- package/dist/prompts/prompt-registry.d.ts.map +1 -0
- package/dist/prompts/prompt-registry.js +68 -0
- package/dist/prompts/prompt-registry.js.map +1 -0
- package/dist/prompts/thinking/thinking.prompt.d.ts +29 -0
- package/dist/prompts/thinking/thinking.prompt.d.ts.map +1 -0
- package/dist/prompts/thinking/thinking.prompt.js +171 -0
- package/dist/prompts/thinking/thinking.prompt.js.map +1 -0
- package/dist/services/UpdateService.d.ts +29 -0
- package/dist/services/UpdateService.d.ts.map +1 -0
- package/dist/services/UpdateService.js +132 -0
- package/dist/services/UpdateService.js.map +1 -0
- package/dist/services/plan-watcher.service.d.ts +143 -0
- package/dist/services/plan-watcher.service.d.ts.map +1 -0
- package/dist/services/plan-watcher.service.js +914 -0
- package/dist/services/plan-watcher.service.js.map +1 -0
- package/dist/storage/local-filesystem-adapter.d.ts +39 -0
- package/dist/storage/local-filesystem-adapter.d.ts.map +1 -0
- package/dist/storage/local-filesystem-adapter.js +208 -0
- package/dist/storage/local-filesystem-adapter.js.map +1 -0
- package/dist/storage/storage-path-builder.d.ts +14 -0
- package/dist/storage/storage-path-builder.d.ts.map +1 -0
- package/dist/storage/storage-path-builder.js +43 -0
- package/dist/storage/storage-path-builder.js.map +1 -0
- package/dist/test-setup.d.ts +2 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +12 -0
- package/dist/test-setup.js.map +1 -0
- package/dist/tools/analyse-request/analyse-request.tool.d.ts +8 -0
- package/dist/tools/analyse-request/analyse-request.tool.d.ts.map +1 -0
- package/dist/tools/analyse-request/analyse-request.tool.js +120 -0
- package/dist/tools/analyse-request/analyse-request.tool.js.map +1 -0
- package/dist/tools/index.d.ts +69 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +24 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/memory/memory.tool.d.ts +15 -0
- package/dist/tools/memory/memory.tool.d.ts.map +1 -0
- package/dist/tools/memory/memory.tool.js +110 -0
- package/dist/tools/memory/memory.tool.js.map +1 -0
- package/dist/tools/persona/as.tool.d.ts +25 -0
- package/dist/tools/persona/as.tool.d.ts.map +1 -0
- package/dist/tools/persona/as.tool.js +294 -0
- package/dist/tools/persona/as.tool.js.map +1 -0
- package/dist/tools/persona/persona.tool.d.ts +8 -0
- package/dist/tools/persona/persona.tool.d.ts.map +1 -0
- package/dist/tools/persona/persona.tool.js +193 -0
- package/dist/tools/persona/persona.tool.js.map +1 -0
- package/dist/tools/plan/plan.tool.d.ts +18 -0
- package/dist/tools/plan/plan.tool.d.ts.map +1 -0
- package/dist/tools/plan/plan.tool.js +643 -0
- package/dist/tools/plan/plan.tool.js.map +1 -0
- package/dist/tools/strategy/strategy.tool.d.ts +13 -0
- package/dist/tools/strategy/strategy.tool.d.ts.map +1 -0
- package/dist/tools/strategy/strategy.tool.js +199 -0
- package/dist/tools/strategy/strategy.tool.js.map +1 -0
- package/dist/tools/thinking/thinking.tool.d.ts +13 -0
- package/dist/tools/thinking/thinking.tool.d.ts.map +1 -0
- package/dist/tools/thinking/thinking.tool.js +226 -0
- package/dist/tools/thinking/thinking.tool.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +20 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +61 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/tools/update/update.tool.d.ts +15 -0
- package/dist/tools/update/update.tool.d.ts.map +1 -0
- package/dist/tools/update/update.tool.js +86 -0
- package/dist/tools/update/update.tool.js.map +1 -0
- package/dist/tools/validate-response/validate-response.tool.d.ts +13 -0
- package/dist/tools/validate-response/validate-response.tool.d.ts.map +1 -0
- package/dist/tools/validate-response/validate-response.tool.js +142 -0
- package/dist/tools/validate-response/validate-response.tool.js.map +1 -0
- package/dist/types/request-context.d.ts +7 -0
- package/dist/types/request-context.d.ts.map +1 -0
- package/dist/types/request-context.js +7 -0
- package/dist/types/request-context.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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
|
+
}
|