asciikit-mcp 2.0.0
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/README.md +174 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +170 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/license-validator.d.ts +30 -0
- package/dist/lib/license-validator.d.ts.map +1 -0
- package/dist/lib/license-validator.js +78 -0
- package/dist/lib/license-validator.js.map +1 -0
- package/dist/lib/pattern-loader-v2.d.ts +45 -0
- package/dist/lib/pattern-loader-v2.d.ts.map +1 -0
- package/dist/lib/pattern-loader-v2.js +101 -0
- package/dist/lib/pattern-loader-v2.js.map +1 -0
- package/dist/lib/pattern-loader.d.ts +46 -0
- package/dist/lib/pattern-loader.d.ts.map +1 -0
- package/dist/lib/pattern-loader.js +116 -0
- package/dist/lib/pattern-loader.js.map +1 -0
- package/dist/patterns/bundle.json +104 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +171 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/license-validator.d.ts +30 -0
- package/dist/src/lib/license-validator.d.ts.map +1 -0
- package/dist/src/lib/license-validator.js +78 -0
- package/dist/src/lib/license-validator.js.map +1 -0
- package/dist/src/lib/pattern-loader-v2.d.ts +45 -0
- package/dist/src/lib/pattern-loader-v2.d.ts.map +1 -0
- package/dist/src/lib/pattern-loader-v2.js +109 -0
- package/dist/src/lib/pattern-loader-v2.js.map +1 -0
- package/dist/src/types/index.d.ts +19 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +5 -0
- package/dist/src/types/index.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* AsciiKit MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Provides ASCII wireframe patterns to Claude Code via MCP protocol
|
|
6
|
+
* Requires valid license key for decryption and access
|
|
7
|
+
*/
|
|
8
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
9
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
10
|
+
import { CallToolRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
11
|
+
import { LicenseValidator } from './lib/license-validator.js';
|
|
12
|
+
import { PatternLoader } from './lib/pattern-loader-v2.js';
|
|
13
|
+
const LICENSE_KEY = process.env.ASCIIKIT_LICENSE_KEY;
|
|
14
|
+
const LICENSE_API_URL = process.env.ASCIIKIT_LICENSE_API_URL || 'https://asciikit-license-api.currently-studio.workers.dev';
|
|
15
|
+
async function main() {
|
|
16
|
+
console.error('🚀 Starting AsciiKit MCP Server...');
|
|
17
|
+
// Check for license key
|
|
18
|
+
if (!LICENSE_KEY) {
|
|
19
|
+
console.error('❌ Error: ASCIIKIT_LICENSE_KEY environment variable not set');
|
|
20
|
+
console.error('');
|
|
21
|
+
console.error('Please configure your license key in Claude Code MCP settings:');
|
|
22
|
+
console.error('{');
|
|
23
|
+
console.error(' "mcpServers": {');
|
|
24
|
+
console.error(' "asciikit": {');
|
|
25
|
+
console.error(' "command": "asciikit-mcp",');
|
|
26
|
+
console.error(' "env": {');
|
|
27
|
+
console.error(' "ASCIIKIT_LICENSE_KEY": "your-license-key-here"');
|
|
28
|
+
console.error(' }');
|
|
29
|
+
console.error(' }');
|
|
30
|
+
console.error(' }');
|
|
31
|
+
console.error('}');
|
|
32
|
+
console.error('');
|
|
33
|
+
console.error('Get your license at: https://asciikit.com');
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
// Validate license
|
|
37
|
+
const validator = new LicenseValidator(LICENSE_API_URL, LICENSE_KEY);
|
|
38
|
+
const isValid = await validator.validate();
|
|
39
|
+
if (!isValid) {
|
|
40
|
+
console.error('❌ License validation failed');
|
|
41
|
+
console.error('');
|
|
42
|
+
console.error('Your license key is invalid, expired, or has been revoked.');
|
|
43
|
+
console.error('');
|
|
44
|
+
console.error('To continue using AsciiKit:');
|
|
45
|
+
console.error('1. Check your license key is correct');
|
|
46
|
+
console.error('2. Verify your subscription is active at https://asciikit.com');
|
|
47
|
+
console.error('3. Contact support: hello@asciikit.com');
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
console.error('✅ License validated successfully');
|
|
51
|
+
// Load patterns (no encryption - license validation is the protection)
|
|
52
|
+
const patternLoader = new PatternLoader();
|
|
53
|
+
await patternLoader.load();
|
|
54
|
+
console.error(`✅ Loaded ${patternLoader.getPatternCount()} patterns`);
|
|
55
|
+
// Create MCP server
|
|
56
|
+
const server = new Server({
|
|
57
|
+
name: 'asciikit',
|
|
58
|
+
version: '2.0.0',
|
|
59
|
+
}, {
|
|
60
|
+
capabilities: {
|
|
61
|
+
resources: {},
|
|
62
|
+
tools: {},
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
// List available patterns as resources
|
|
66
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
67
|
+
const patterns = patternLoader.listPatterns();
|
|
68
|
+
return {
|
|
69
|
+
resources: patterns.map((patternId) => ({
|
|
70
|
+
uri: `asciikit://patterns/${patternId}`,
|
|
71
|
+
name: patternId.replace(/\//g, ' / '),
|
|
72
|
+
mimeType: 'text/markdown',
|
|
73
|
+
description: `ASCII wireframe pattern: ${patternId}`,
|
|
74
|
+
})),
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
// Read pattern content
|
|
78
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
79
|
+
const url = new URL(request.params.uri);
|
|
80
|
+
const patternId = url.pathname.replace('/patterns/', '');
|
|
81
|
+
const content = patternLoader.getPattern(patternId);
|
|
82
|
+
if (!content) {
|
|
83
|
+
throw new Error(`Pattern not found: ${patternId}`);
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
contents: [
|
|
87
|
+
{
|
|
88
|
+
uri: request.params.uri,
|
|
89
|
+
mimeType: 'text/markdown',
|
|
90
|
+
text: content,
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
// List available tools
|
|
96
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
97
|
+
return {
|
|
98
|
+
tools: [
|
|
99
|
+
{
|
|
100
|
+
name: 'search_patterns',
|
|
101
|
+
description: 'Search for patterns by keyword or category',
|
|
102
|
+
inputSchema: {
|
|
103
|
+
type: 'object',
|
|
104
|
+
properties: {
|
|
105
|
+
query: {
|
|
106
|
+
type: 'string',
|
|
107
|
+
description: 'Search query (pattern name, category, or keyword)',
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
required: ['query'],
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: 'list_categories',
|
|
115
|
+
description: 'List all available pattern categories',
|
|
116
|
+
inputSchema: {
|
|
117
|
+
type: 'object',
|
|
118
|
+
properties: {},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
// Handle tool calls
|
|
125
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
126
|
+
const { name, arguments: args } = request.params;
|
|
127
|
+
if (name === 'search_patterns') {
|
|
128
|
+
const query = args.query.toLowerCase();
|
|
129
|
+
const results = patternLoader.searchPatterns(query);
|
|
130
|
+
return {
|
|
131
|
+
content: [
|
|
132
|
+
{
|
|
133
|
+
type: 'text',
|
|
134
|
+
text: `Found ${results.length} patterns matching "${query}":\n\n${results.map((id) => `- ${id}`).join('\n')}`,
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
if (name === 'list_categories') {
|
|
140
|
+
const categories = patternLoader.getCategories();
|
|
141
|
+
return {
|
|
142
|
+
content: [
|
|
143
|
+
{
|
|
144
|
+
type: 'text',
|
|
145
|
+
text: `Available categories (${categories.length}):\n\n${categories.map((cat) => `- ${cat}`).join('\n')}`,
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
151
|
+
});
|
|
152
|
+
// Start revalidation timer (every 24 hours)
|
|
153
|
+
setInterval(async () => {
|
|
154
|
+
console.error('🔄 Revalidating license...');
|
|
155
|
+
const stillValid = await validator.validate();
|
|
156
|
+
if (!stillValid) {
|
|
157
|
+
console.error('❌ License no longer valid. Shutting down.');
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
console.error('✅ License still valid');
|
|
161
|
+
}, 24 * 60 * 60 * 1000);
|
|
162
|
+
// Start server
|
|
163
|
+
const transport = new StdioServerTransport();
|
|
164
|
+
await server.connect(transport);
|
|
165
|
+
console.error('✨ AsciiKit MCP Server running');
|
|
166
|
+
}
|
|
167
|
+
main().catch((error) => {
|
|
168
|
+
console.error('Fatal error:', error);
|
|
169
|
+
process.exit(1);
|
|
170
|
+
});
|
|
171
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* License Validator
|
|
3
|
+
*
|
|
4
|
+
* Validates license keys against the AsciiKit License API
|
|
5
|
+
*/
|
|
6
|
+
import type { LicenseValidationResponse } from '../types/index.js';
|
|
7
|
+
export declare class LicenseValidator {
|
|
8
|
+
private apiUrl;
|
|
9
|
+
private licenseKey;
|
|
10
|
+
private lastValidation;
|
|
11
|
+
constructor(apiUrl: string, licenseKey: string);
|
|
12
|
+
/**
|
|
13
|
+
* Validates license key with API
|
|
14
|
+
* @returns true if valid, false otherwise
|
|
15
|
+
*/
|
|
16
|
+
validate(): Promise<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* Gets last validation result
|
|
19
|
+
*/
|
|
20
|
+
getLastValidation(): LicenseValidationResponse | null;
|
|
21
|
+
/**
|
|
22
|
+
* Checks if license is trial
|
|
23
|
+
*/
|
|
24
|
+
isTrial(): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Gets days remaining for trial licenses
|
|
27
|
+
*/
|
|
28
|
+
getDaysRemaining(): number | null;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=license-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license-validator.d.ts","sourceRoot":"","sources":["../../../src/lib/license-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAA0C;gBAEpD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAK9C;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IA4ClC;;OAEG;IACH,iBAAiB,IAAI,yBAAyB,GAAG,IAAI;IAIrD;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI;CAOlC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* License Validator
|
|
3
|
+
*
|
|
4
|
+
* Validates license keys against the AsciiKit License API
|
|
5
|
+
*/
|
|
6
|
+
export class LicenseValidator {
|
|
7
|
+
apiUrl;
|
|
8
|
+
licenseKey;
|
|
9
|
+
lastValidation = null;
|
|
10
|
+
constructor(apiUrl, licenseKey) {
|
|
11
|
+
this.apiUrl = apiUrl;
|
|
12
|
+
this.licenseKey = licenseKey;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Validates license key with API
|
|
16
|
+
* @returns true if valid, false otherwise
|
|
17
|
+
*/
|
|
18
|
+
async validate() {
|
|
19
|
+
try {
|
|
20
|
+
const response = await fetch(`${this.apiUrl}/api/validate`, {
|
|
21
|
+
method: 'POST',
|
|
22
|
+
headers: {
|
|
23
|
+
'Content-Type': 'application/json',
|
|
24
|
+
},
|
|
25
|
+
body: JSON.stringify({
|
|
26
|
+
license_key: this.licenseKey,
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
console.error(`License API returned status ${response.status}`);
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
const data = await response.json();
|
|
34
|
+
this.lastValidation = data;
|
|
35
|
+
if (!data.valid) {
|
|
36
|
+
console.error(`License validation failed: ${data.reason}`);
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
// Check if trial is expiring soon
|
|
40
|
+
if (data.tier === 'trial' && data.expires_at) {
|
|
41
|
+
const daysRemaining = Math.ceil((data.expires_at - Date.now()) / (24 * 60 * 60 * 1000));
|
|
42
|
+
if (daysRemaining <= 2) {
|
|
43
|
+
console.error('');
|
|
44
|
+
console.error(`⏰ Your trial expires in ${daysRemaining} day${daysRemaining === 1 ? '' : 's'}!`);
|
|
45
|
+
console.error(' Subscribe at: https://asciikit.com/subscribe');
|
|
46
|
+
console.error('');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error('License validation error:', error);
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Gets last validation result
|
|
58
|
+
*/
|
|
59
|
+
getLastValidation() {
|
|
60
|
+
return this.lastValidation;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Checks if license is trial
|
|
64
|
+
*/
|
|
65
|
+
isTrial() {
|
|
66
|
+
return this.lastValidation?.tier === 'trial';
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Gets days remaining for trial licenses
|
|
70
|
+
*/
|
|
71
|
+
getDaysRemaining() {
|
|
72
|
+
if (!this.lastValidation || this.lastValidation.tier !== 'trial' || !this.lastValidation.expires_at) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return Math.ceil((this.lastValidation.expires_at - Date.now()) / (24 * 60 * 60 * 1000));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=license-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license-validator.js","sourceRoot":"","sources":["../../../src/lib/license-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,cAAc,GAAqC,IAAI,CAAC;IAEhE,YAAY,MAAc,EAAE,UAAkB;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,eAAe,EAAE;gBAC1D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,WAAW,EAAE,IAAI,CAAC,UAAU;iBAC7B,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA+B,CAAC;YAChE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAE3B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3D,OAAO,KAAK,CAAC;YACf,CAAC;YAED,kCAAkC;YAClC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;gBAExF,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAClB,OAAO,CAAC,KAAK,CAAC,2BAA2B,aAAa,OAAO,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;oBAChG,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;oBACjE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,KAAK,OAAO,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YACpG,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1F,CAAC;CACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern Loader (No Encryption)
|
|
3
|
+
*
|
|
4
|
+
* Loads patterns from unencrypted bundle
|
|
5
|
+
* License validation is done separately - this just loads the patterns
|
|
6
|
+
*/
|
|
7
|
+
export declare class PatternLoader {
|
|
8
|
+
private patterns;
|
|
9
|
+
private version;
|
|
10
|
+
private categories;
|
|
11
|
+
private loaded;
|
|
12
|
+
/**
|
|
13
|
+
* Loads patterns from bundle file
|
|
14
|
+
*/
|
|
15
|
+
load(): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Gets a specific pattern by ID
|
|
18
|
+
*/
|
|
19
|
+
getPattern(patternId: string): string | null;
|
|
20
|
+
/**
|
|
21
|
+
* Lists all available pattern IDs
|
|
22
|
+
*/
|
|
23
|
+
listPatterns(): string[];
|
|
24
|
+
/**
|
|
25
|
+
* Searches patterns by query
|
|
26
|
+
*/
|
|
27
|
+
searchPatterns(query: string): string[];
|
|
28
|
+
/**
|
|
29
|
+
* Gets all categories
|
|
30
|
+
*/
|
|
31
|
+
getCategories(): string[];
|
|
32
|
+
/**
|
|
33
|
+
* Gets pattern count
|
|
34
|
+
*/
|
|
35
|
+
getPatternCount(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Gets pattern version
|
|
38
|
+
*/
|
|
39
|
+
getVersion(): string;
|
|
40
|
+
/**
|
|
41
|
+
* Checks if patterns are loaded
|
|
42
|
+
*/
|
|
43
|
+
isLoaded(): boolean;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=pattern-loader-v2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-loader-v2.d.ts","sourceRoot":"","sources":["../../../src/lib/pattern-loader-v2.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAkB;IAEhC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B3B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQ5C;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAQxB;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAgBvC;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAQzB;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,QAAQ,IAAI,OAAO;CAGpB"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern Loader (No Encryption)
|
|
3
|
+
*
|
|
4
|
+
* Loads patterns from unencrypted bundle
|
|
5
|
+
* License validation is done separately - this just loads the patterns
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs/promises';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
11
|
+
const __dirname = path.dirname(__filename);
|
|
12
|
+
export class PatternLoader {
|
|
13
|
+
patterns = {};
|
|
14
|
+
version = 'unknown';
|
|
15
|
+
categories = [];
|
|
16
|
+
loaded = false;
|
|
17
|
+
/**
|
|
18
|
+
* Loads patterns from bundle file
|
|
19
|
+
*/
|
|
20
|
+
async load() {
|
|
21
|
+
try {
|
|
22
|
+
// Read pattern bundle
|
|
23
|
+
// Try production path first (dist/patterns/bundle.json)
|
|
24
|
+
let bundlePath = path.join(__dirname, '../patterns/bundle.json');
|
|
25
|
+
try {
|
|
26
|
+
await fs.access(bundlePath);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// Fall back to development path (src/patterns/bundle.json)
|
|
30
|
+
bundlePath = path.join(__dirname, '../../src/patterns/bundle.json');
|
|
31
|
+
}
|
|
32
|
+
const bundleContent = await fs.readFile(bundlePath, 'utf-8');
|
|
33
|
+
const bundle = JSON.parse(bundleContent);
|
|
34
|
+
// Store patterns in memory
|
|
35
|
+
this.patterns = bundle.patterns;
|
|
36
|
+
this.version = bundle.version;
|
|
37
|
+
this.categories = bundle.categories;
|
|
38
|
+
this.loaded = true;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof Error && error.message.includes('ENOENT')) {
|
|
42
|
+
throw new Error('Pattern bundle not found. Run "npm run build:patterns" to generate it.');
|
|
43
|
+
}
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Gets a specific pattern by ID
|
|
49
|
+
*/
|
|
50
|
+
getPattern(patternId) {
|
|
51
|
+
if (!this.loaded) {
|
|
52
|
+
throw new Error('Patterns not loaded. Call load() first.');
|
|
53
|
+
}
|
|
54
|
+
return this.patterns[patternId] || null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Lists all available pattern IDs
|
|
58
|
+
*/
|
|
59
|
+
listPatterns() {
|
|
60
|
+
if (!this.loaded) {
|
|
61
|
+
throw new Error('Patterns not loaded. Call load() first.');
|
|
62
|
+
}
|
|
63
|
+
return Object.keys(this.patterns).sort();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Searches patterns by query
|
|
67
|
+
*/
|
|
68
|
+
searchPatterns(query) {
|
|
69
|
+
if (!this.loaded) {
|
|
70
|
+
throw new Error('Patterns not loaded. Call load() first.');
|
|
71
|
+
}
|
|
72
|
+
const lowerQuery = query.toLowerCase();
|
|
73
|
+
return Object.keys(this.patterns)
|
|
74
|
+
.filter((id) => {
|
|
75
|
+
const lowerID = id.toLowerCase();
|
|
76
|
+
const content = this.patterns[id].toLowerCase();
|
|
77
|
+
return lowerID.includes(lowerQuery) || content.includes(lowerQuery);
|
|
78
|
+
})
|
|
79
|
+
.sort();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Gets all categories
|
|
83
|
+
*/
|
|
84
|
+
getCategories() {
|
|
85
|
+
if (!this.loaded) {
|
|
86
|
+
throw new Error('Patterns not loaded. Call load() first.');
|
|
87
|
+
}
|
|
88
|
+
return this.categories;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Gets pattern count
|
|
92
|
+
*/
|
|
93
|
+
getPatternCount() {
|
|
94
|
+
return Object.keys(this.patterns).length;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Gets pattern version
|
|
98
|
+
*/
|
|
99
|
+
getVersion() {
|
|
100
|
+
return this.version;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Checks if patterns are loaded
|
|
104
|
+
*/
|
|
105
|
+
isLoaded() {
|
|
106
|
+
return this.loaded;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=pattern-loader-v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-loader-v2.js","sourceRoot":"","sources":["../../../src/lib/pattern-loader-v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript types for AsciiKit MCP Server
|
|
3
|
+
*/
|
|
4
|
+
export interface LicenseValidationResponse {
|
|
5
|
+
valid: boolean;
|
|
6
|
+
tier?: 'trial' | 'paid';
|
|
7
|
+
status?: 'trial' | 'active' | 'cancelled' | 'expired';
|
|
8
|
+
expires_at?: number | null;
|
|
9
|
+
email?: string;
|
|
10
|
+
reason?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface PatternBundle {
|
|
13
|
+
patterns: Record<string, string>;
|
|
14
|
+
version: string;
|
|
15
|
+
built_at: number;
|
|
16
|
+
total_patterns: number;
|
|
17
|
+
categories: string[];
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IACtD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "asciikit-mcp",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "AsciiKit MCP server for Claude Code - Professional ASCII wireframe patterns for AI-assisted design",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"asciikit-mcp": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc && chmod +x dist/index.js && mkdir -p dist/patterns && cp src/patterns/bundle.json dist/patterns/",
|
|
12
|
+
"dev": "tsx src/index.ts",
|
|
13
|
+
"test": "tsx src/test.ts",
|
|
14
|
+
"prepublishOnly": "npm run build"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"asciikit",
|
|
18
|
+
"mcp",
|
|
19
|
+
"claude",
|
|
20
|
+
"wireframe",
|
|
21
|
+
"design",
|
|
22
|
+
"ui",
|
|
23
|
+
"ux",
|
|
24
|
+
"patterns"
|
|
25
|
+
],
|
|
26
|
+
"author": "AsciiKit",
|
|
27
|
+
"license": "PROPRIETARY",
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/asciikit/asciikit-mcp"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://asciikit.com",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@modelcontextprotocol/sdk": "^0.5.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/node": "^20.11.0",
|
|
38
|
+
"tsx": "^4.7.0",
|
|
39
|
+
"typescript": "^5.3.3"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=18.0.0"
|
|
43
|
+
},
|
|
44
|
+
"files": [
|
|
45
|
+
"dist/**/*",
|
|
46
|
+
"README.md"
|
|
47
|
+
]
|
|
48
|
+
}
|