stylemcp 0.1.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.
Files changed (83) hide show
  1. package/README.md +261 -0
  2. package/action/action.yml +59 -0
  3. package/action/package.json +24 -0
  4. package/action/src/index.ts +455 -0
  5. package/dist/cli/index.d.ts +3 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +335 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/index.d.ts +5 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +10 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/rewriter/index.d.ts +45 -0
  14. package/dist/rewriter/index.d.ts.map +1 -0
  15. package/dist/rewriter/index.js +163 -0
  16. package/dist/rewriter/index.js.map +1 -0
  17. package/dist/schema/copy-patterns.d.ts +298 -0
  18. package/dist/schema/copy-patterns.d.ts.map +1 -0
  19. package/dist/schema/copy-patterns.js +53 -0
  20. package/dist/schema/copy-patterns.js.map +1 -0
  21. package/dist/schema/cta-rules.d.ts +274 -0
  22. package/dist/schema/cta-rules.d.ts.map +1 -0
  23. package/dist/schema/cta-rules.js +45 -0
  24. package/dist/schema/cta-rules.js.map +1 -0
  25. package/dist/schema/index.d.ts +2172 -0
  26. package/dist/schema/index.d.ts.map +1 -0
  27. package/dist/schema/index.js +92 -0
  28. package/dist/schema/index.js.map +1 -0
  29. package/dist/schema/tests.d.ts +274 -0
  30. package/dist/schema/tests.d.ts.map +1 -0
  31. package/dist/schema/tests.js +37 -0
  32. package/dist/schema/tests.js.map +1 -0
  33. package/dist/schema/tokens.d.ts +632 -0
  34. package/dist/schema/tokens.d.ts.map +1 -0
  35. package/dist/schema/tokens.js +68 -0
  36. package/dist/schema/tokens.js.map +1 -0
  37. package/dist/schema/voice.d.ts +280 -0
  38. package/dist/schema/voice.d.ts.map +1 -0
  39. package/dist/schema/voice.js +52 -0
  40. package/dist/schema/voice.js.map +1 -0
  41. package/dist/server/billing.d.ts +53 -0
  42. package/dist/server/billing.d.ts.map +1 -0
  43. package/dist/server/billing.js +216 -0
  44. package/dist/server/billing.js.map +1 -0
  45. package/dist/server/http.d.ts +5 -0
  46. package/dist/server/http.d.ts.map +1 -0
  47. package/dist/server/http.js +470 -0
  48. package/dist/server/http.js.map +1 -0
  49. package/dist/server/index.d.ts +3 -0
  50. package/dist/server/index.d.ts.map +1 -0
  51. package/dist/server/index.js +480 -0
  52. package/dist/server/index.js.map +1 -0
  53. package/dist/server/middleware/auth.d.ts +15 -0
  54. package/dist/server/middleware/auth.d.ts.map +1 -0
  55. package/dist/server/middleware/auth.js +83 -0
  56. package/dist/server/middleware/auth.js.map +1 -0
  57. package/dist/utils/pack-loader.d.ts +13 -0
  58. package/dist/utils/pack-loader.d.ts.map +1 -0
  59. package/dist/utils/pack-loader.js +98 -0
  60. package/dist/utils/pack-loader.js.map +1 -0
  61. package/dist/validator/index.d.ts +21 -0
  62. package/dist/validator/index.d.ts.map +1 -0
  63. package/dist/validator/index.js +60 -0
  64. package/dist/validator/index.js.map +1 -0
  65. package/dist/validator/rules/constraints.d.ts +8 -0
  66. package/dist/validator/rules/constraints.d.ts.map +1 -0
  67. package/dist/validator/rules/constraints.js +150 -0
  68. package/dist/validator/rules/constraints.js.map +1 -0
  69. package/dist/validator/rules/cta.d.ts +11 -0
  70. package/dist/validator/rules/cta.d.ts.map +1 -0
  71. package/dist/validator/rules/cta.js +113 -0
  72. package/dist/validator/rules/cta.js.map +1 -0
  73. package/dist/validator/rules/voice.d.ts +6 -0
  74. package/dist/validator/rules/voice.d.ts.map +1 -0
  75. package/dist/validator/rules/voice.js +106 -0
  76. package/dist/validator/rules/voice.js.map +1 -0
  77. package/package.json +61 -0
  78. package/packs/saas/copy_patterns.yaml +423 -0
  79. package/packs/saas/cta_rules.yaml +362 -0
  80. package/packs/saas/manifest.yaml +16 -0
  81. package/packs/saas/tests.yaml +305 -0
  82. package/packs/saas/tokens.json +226 -0
  83. package/packs/saas/voice.yaml +232 -0
@@ -0,0 +1,470 @@
1
+ #!/usr/bin/env node
2
+ import express from 'express';
3
+ import cors from 'cors';
4
+ import { loadPack, getPacksDirectory, listAvailablePacks } from '../utils/pack-loader.js';
5
+ import { validate } from '../validator/index.js';
6
+ import { rewrite, rewriteMinimal, rewriteAggressive, formatChanges } from '../rewriter/index.js';
7
+ import { join } from 'path';
8
+ import crypto from 'crypto';
9
+ import { createCheckoutSession, handleStripeWebhook, createPortalSession, isBillingEnabled } from './billing.js';
10
+ const app = express();
11
+ const PORT = process.env.PORT || 3000;
12
+ const API_KEY = process.env.STYLEMCP_API_KEY || '';
13
+ const GITHUB_WEBHOOK_SECRET = process.env.GITHUB_WEBHOOK_SECRET || '';
14
+ // Middleware
15
+ app.use(cors());
16
+ app.use(express.json({ limit: '1mb' }));
17
+ // Pack cache
18
+ const packCache = new Map();
19
+ async function getPack(packName) {
20
+ if (packCache.has(packName)) {
21
+ return packCache.get(packName);
22
+ }
23
+ const packPath = join(getPacksDirectory(), packName);
24
+ const result = await loadPack({ packPath });
25
+ packCache.set(packName, result.pack);
26
+ return result.pack;
27
+ }
28
+ // Optional API key authentication
29
+ function authMiddleware(req, res, next) {
30
+ if (!API_KEY) {
31
+ // No API key configured, allow all requests
32
+ next();
33
+ return;
34
+ }
35
+ const providedKey = req.headers['x-api-key'] || req.query.api_key;
36
+ if (providedKey !== API_KEY) {
37
+ res.status(401).json({ error: 'Invalid or missing API key' });
38
+ return;
39
+ }
40
+ next();
41
+ }
42
+ // Health check (no auth required)
43
+ app.get('/health', (_req, res) => {
44
+ res.json({ status: 'ok', version: '0.1.0' });
45
+ });
46
+ // List available packs
47
+ app.get('/api/packs', authMiddleware, async (_req, res) => {
48
+ try {
49
+ const packs = await listAvailablePacks();
50
+ res.json({ packs });
51
+ }
52
+ catch (error) {
53
+ res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
54
+ }
55
+ });
56
+ // Get pack details
57
+ app.get('/api/packs/:pack', authMiddleware, async (req, res) => {
58
+ try {
59
+ const packName = String(req.params.pack);
60
+ const pack = await getPack(packName);
61
+ res.json({
62
+ name: pack.manifest.name,
63
+ version: pack.manifest.version,
64
+ description: pack.manifest.description,
65
+ config: pack.manifest.config,
66
+ });
67
+ }
68
+ catch (error) {
69
+ res.status(404).json({ error: `Pack not found: ${req.params.pack}` });
70
+ }
71
+ });
72
+ // Validate text
73
+ app.post('/api/validate', authMiddleware, async (req, res) => {
74
+ try {
75
+ const { text, pack: packName = 'saas', context } = req.body;
76
+ if (!text || typeof text !== 'string') {
77
+ res.status(400).json({ error: 'Missing or invalid "text" field' });
78
+ return;
79
+ }
80
+ const pack = await getPack(packName);
81
+ const result = validate({ pack, text, context });
82
+ res.json(result);
83
+ }
84
+ catch (error) {
85
+ res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
86
+ }
87
+ });
88
+ // Batch validate
89
+ app.post('/api/validate/batch', authMiddleware, async (req, res) => {
90
+ try {
91
+ const { items, pack: packName = 'saas' } = req.body;
92
+ if (!Array.isArray(items)) {
93
+ res.status(400).json({ error: 'Missing or invalid "items" array' });
94
+ return;
95
+ }
96
+ const pack = await getPack(packName);
97
+ const results = items.map((item) => ({
98
+ id: item.id,
99
+ result: validate({ pack, text: item.text, context: item.context }),
100
+ }));
101
+ const totalScore = results.reduce((sum, r) => sum + r.result.score, 0);
102
+ const avgScore = Math.round(totalScore / results.length);
103
+ res.json({
104
+ averageScore: avgScore,
105
+ totalItems: results.length,
106
+ passedItems: results.filter(r => r.result.valid).length,
107
+ results,
108
+ });
109
+ }
110
+ catch (error) {
111
+ res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
112
+ }
113
+ });
114
+ // Rewrite text
115
+ app.post('/api/rewrite', authMiddleware, async (req, res) => {
116
+ try {
117
+ const { text, pack: packName = 'saas', mode = 'normal', context } = req.body;
118
+ if (!text || typeof text !== 'string') {
119
+ res.status(400).json({ error: 'Missing or invalid "text" field' });
120
+ return;
121
+ }
122
+ const pack = await getPack(packName);
123
+ let result;
124
+ const options = { pack, text, context };
125
+ if (mode === 'minimal') {
126
+ result = rewriteMinimal(options);
127
+ }
128
+ else if (mode === 'aggressive') {
129
+ result = rewriteAggressive(options);
130
+ }
131
+ else {
132
+ result = rewrite(options);
133
+ }
134
+ res.json({
135
+ ...result,
136
+ summary: formatChanges(result),
137
+ });
138
+ }
139
+ catch (error) {
140
+ res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
141
+ }
142
+ });
143
+ // Get voice rules
144
+ app.get('/api/packs/:pack/voice', authMiddleware, async (req, res) => {
145
+ try {
146
+ const pack = await getPack(String(req.params.pack));
147
+ const section = req.query.section;
148
+ if (section && section !== 'all') {
149
+ res.json(pack.voice[section]);
150
+ }
151
+ else {
152
+ res.json(pack.voice);
153
+ }
154
+ }
155
+ catch (error) {
156
+ res.status(404).json({ error: `Pack not found: ${req.params.pack}` });
157
+ }
158
+ });
159
+ // Get copy patterns
160
+ app.get('/api/packs/:pack/patterns', authMiddleware, async (req, res) => {
161
+ try {
162
+ const pack = await getPack(String(req.params.pack));
163
+ const category = req.query.category;
164
+ let patterns = pack.copyPatterns.patterns;
165
+ if (category && category !== 'all') {
166
+ patterns = patterns.filter(p => p.category === category);
167
+ }
168
+ res.json({ patterns });
169
+ }
170
+ catch (error) {
171
+ res.status(404).json({ error: `Pack not found: ${req.params.pack}` });
172
+ }
173
+ });
174
+ // Get CTA rules
175
+ app.get('/api/packs/:pack/ctas', authMiddleware, async (req, res) => {
176
+ try {
177
+ const pack = await getPack(String(req.params.pack));
178
+ res.json({
179
+ guidelines: pack.ctaRules.guidelines,
180
+ categories: pack.ctaRules.categories,
181
+ antiPatterns: pack.ctaRules.antiPatterns,
182
+ });
183
+ }
184
+ catch (error) {
185
+ res.status(404).json({ error: `Pack not found: ${req.params.pack}` });
186
+ }
187
+ });
188
+ // Get design tokens
189
+ app.get('/api/packs/:pack/tokens', authMiddleware, async (req, res) => {
190
+ try {
191
+ const pack = await getPack(String(req.params.pack));
192
+ const type = req.query.type;
193
+ if (type && type !== 'all') {
194
+ res.json(pack.tokens[type]);
195
+ }
196
+ else {
197
+ res.json(pack.tokens);
198
+ }
199
+ }
200
+ catch (error) {
201
+ res.status(404).json({ error: `Pack not found: ${req.params.pack}` });
202
+ }
203
+ });
204
+ // Suggest CTAs
205
+ app.post('/api/suggest-ctas', authMiddleware, async (req, res) => {
206
+ try {
207
+ const { context, pack: packName = 'saas' } = req.body;
208
+ if (!context || typeof context !== 'string') {
209
+ res.status(400).json({ error: 'Missing or invalid "context" field' });
210
+ return;
211
+ }
212
+ const pack = await getPack(packName);
213
+ const lowerContext = context.toLowerCase();
214
+ const suggestions = [];
215
+ for (const category of pack.ctaRules.categories) {
216
+ for (const cta of category.ctas) {
217
+ const matchesContext = cta.context.some(c => c.toLowerCase().includes(lowerContext) || lowerContext.includes(c.toLowerCase()));
218
+ if (matchesContext) {
219
+ suggestions.push({
220
+ text: cta.text,
221
+ category: category.name,
222
+ priority: cta.priority,
223
+ contexts: cta.context,
224
+ });
225
+ }
226
+ }
227
+ }
228
+ res.json({
229
+ context,
230
+ suggestions: suggestions.slice(0, 10),
231
+ guidelines: pack.ctaRules.guidelines,
232
+ });
233
+ }
234
+ catch (error) {
235
+ res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
236
+ }
237
+ });
238
+ // Stripe webhook endpoint (needs raw body for signature verification)
239
+ app.post('/api/webhook/stripe', express.raw({ type: 'application/json' }), async (req, res) => {
240
+ try {
241
+ const signature = req.headers['stripe-signature'];
242
+ if (!signature) {
243
+ res.status(400).json({ error: 'Missing stripe-signature header' });
244
+ return;
245
+ }
246
+ const result = await handleStripeWebhook(req.body, signature);
247
+ if (!result.success) {
248
+ res.status(400).json({ error: result.error });
249
+ return;
250
+ }
251
+ res.json({ received: true });
252
+ }
253
+ catch (error) {
254
+ console.error('Stripe webhook error:', error);
255
+ res.status(500).json({ error: 'Webhook processing failed' });
256
+ }
257
+ });
258
+ // Create Stripe checkout session
259
+ app.post('/api/checkout', async (req, res) => {
260
+ try {
261
+ if (!isBillingEnabled()) {
262
+ res.status(503).json({ error: 'Billing not configured' });
263
+ return;
264
+ }
265
+ const { userId, tier } = req.body;
266
+ if (!userId || !tier) {
267
+ res.status(400).json({ error: 'Missing userId or tier' });
268
+ return;
269
+ }
270
+ if (!['pro', 'team'].includes(tier)) {
271
+ res.status(400).json({ error: 'Invalid tier. Must be "pro" or "team"' });
272
+ return;
273
+ }
274
+ const successUrl = `${req.protocol}://${req.get('host')}/dashboard.html?checkout=success`;
275
+ const cancelUrl = `${req.protocol}://${req.get('host')}/pricing.html?checkout=cancelled`;
276
+ const checkoutUrl = await createCheckoutSession(userId, tier, successUrl, cancelUrl);
277
+ if (!checkoutUrl) {
278
+ res.status(500).json({ error: 'Failed to create checkout session' });
279
+ return;
280
+ }
281
+ res.json({ url: checkoutUrl });
282
+ }
283
+ catch (error) {
284
+ console.error('Checkout error:', error);
285
+ res.status(500).json({ error: 'Failed to create checkout session' });
286
+ }
287
+ });
288
+ // Create Stripe customer portal session
289
+ app.post('/api/billing/portal', async (req, res) => {
290
+ try {
291
+ if (!isBillingEnabled()) {
292
+ res.status(503).json({ error: 'Billing not configured' });
293
+ return;
294
+ }
295
+ const { userId } = req.body;
296
+ if (!userId) {
297
+ res.status(400).json({ error: 'Missing userId' });
298
+ return;
299
+ }
300
+ const returnUrl = `${req.protocol}://${req.get('host')}/dashboard.html`;
301
+ const portalUrl = await createPortalSession(userId, returnUrl);
302
+ if (!portalUrl) {
303
+ res.status(500).json({ error: 'Failed to create portal session. User may not have an active subscription.' });
304
+ return;
305
+ }
306
+ res.json({ url: portalUrl });
307
+ }
308
+ catch (error) {
309
+ console.error('Portal error:', error);
310
+ res.status(500).json({ error: 'Failed to create portal session' });
311
+ }
312
+ });
313
+ // GitHub webhook endpoint
314
+ app.post('/api/webhook/github', express.raw({ type: 'application/json' }), async (req, res) => {
315
+ try {
316
+ // Verify webhook signature if secret is configured
317
+ if (GITHUB_WEBHOOK_SECRET) {
318
+ const signature = req.headers['x-hub-signature-256'];
319
+ if (!signature) {
320
+ res.status(401).json({ error: 'Missing signature' });
321
+ return;
322
+ }
323
+ const body = req.body;
324
+ const hmac = crypto.createHmac('sha256', GITHUB_WEBHOOK_SECRET);
325
+ const digest = 'sha256=' + hmac.update(body).digest('hex');
326
+ if (!crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(digest))) {
327
+ res.status(401).json({ error: 'Invalid signature' });
328
+ return;
329
+ }
330
+ }
331
+ const event = req.headers['x-github-event'];
332
+ const payload = JSON.parse(req.body.toString());
333
+ console.log(`Received GitHub webhook: ${event}`);
334
+ // Handle PR events
335
+ if (event === 'pull_request' && ['opened', 'synchronize'].includes(payload.action)) {
336
+ // TODO: Trigger validation on PR files
337
+ console.log(`PR ${payload.action}: ${payload.pull_request.html_url}`);
338
+ }
339
+ res.json({ received: true, event });
340
+ }
341
+ catch (error) {
342
+ console.error('Webhook error:', error);
343
+ res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
344
+ }
345
+ });
346
+ // SSE endpoint for MCP over HTTP
347
+ app.get('/api/mcp/sse', authMiddleware, (req, res) => {
348
+ res.setHeader('Content-Type', 'text/event-stream');
349
+ res.setHeader('Cache-Control', 'no-cache');
350
+ res.setHeader('Connection', 'keep-alive');
351
+ // Send initial connection event
352
+ res.write(`data: ${JSON.stringify({ type: 'connected', version: '0.1.0' })}\n\n`);
353
+ // Keep connection alive
354
+ const keepAlive = setInterval(() => {
355
+ res.write(`: keepalive\n\n`);
356
+ }, 30000);
357
+ req.on('close', () => {
358
+ clearInterval(keepAlive);
359
+ });
360
+ });
361
+ // MCP tool call endpoint (for SSE-based MCP)
362
+ app.post('/api/mcp/call', authMiddleware, async (req, res) => {
363
+ try {
364
+ const { tool, arguments: args } = req.body;
365
+ if (!tool) {
366
+ res.status(400).json({ error: 'Missing "tool" field' });
367
+ return;
368
+ }
369
+ // Route to appropriate handler
370
+ switch (tool) {
371
+ case 'validate_text': {
372
+ const pack = await getPack(args?.pack || 'saas');
373
+ const result = validate({
374
+ pack,
375
+ text: args?.text,
376
+ context: args?.context_type ? { type: args.context_type } : undefined,
377
+ });
378
+ res.json({ result });
379
+ break;
380
+ }
381
+ case 'rewrite_to_style': {
382
+ const pack = await getPack(args?.pack || 'saas');
383
+ const mode = args?.mode || 'normal';
384
+ const options = {
385
+ pack,
386
+ text: args?.text,
387
+ context: args?.context_type ? { type: args.context_type } : undefined,
388
+ };
389
+ let result;
390
+ if (mode === 'minimal') {
391
+ result = rewriteMinimal(options);
392
+ }
393
+ else if (mode === 'aggressive') {
394
+ result = rewriteAggressive(options);
395
+ }
396
+ else {
397
+ result = rewrite(options);
398
+ }
399
+ res.json({ result: { ...result, summary: formatChanges(result) } });
400
+ break;
401
+ }
402
+ case 'get_voice_rules': {
403
+ const pack = await getPack(args?.pack || 'saas');
404
+ const section = args?.section || 'all';
405
+ const data = section === 'all' ? pack.voice : pack.voice[section];
406
+ res.json({ result: data });
407
+ break;
408
+ }
409
+ case 'get_copy_patterns': {
410
+ const pack = await getPack(args?.pack || 'saas');
411
+ let patterns = pack.copyPatterns.patterns;
412
+ if (args?.category && args.category !== 'all') {
413
+ patterns = patterns.filter(p => p.category === args.category);
414
+ }
415
+ res.json({ result: patterns });
416
+ break;
417
+ }
418
+ case 'get_cta_rules': {
419
+ const pack = await getPack(args?.pack || 'saas');
420
+ res.json({
421
+ result: {
422
+ guidelines: pack.ctaRules.guidelines,
423
+ categories: pack.ctaRules.categories,
424
+ antiPatterns: pack.ctaRules.antiPatterns,
425
+ },
426
+ });
427
+ break;
428
+ }
429
+ case 'get_tokens': {
430
+ const pack = await getPack(args?.pack || 'saas');
431
+ const type = args?.type || 'all';
432
+ const data = type === 'all' ? pack.tokens : pack.tokens[type];
433
+ res.json({ result: data });
434
+ break;
435
+ }
436
+ case 'list_packs': {
437
+ const packs = await listAvailablePacks();
438
+ res.json({ result: { available_packs: packs } });
439
+ break;
440
+ }
441
+ default:
442
+ res.status(400).json({ error: `Unknown tool: ${tool}` });
443
+ }
444
+ }
445
+ catch (error) {
446
+ res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
447
+ }
448
+ });
449
+ // Start server
450
+ export function startServer(port) {
451
+ const listenPort = port || PORT;
452
+ app.listen(listenPort, () => {
453
+ console.log(`StyleMCP HTTP server running on port ${listenPort}`);
454
+ console.log(` Health: http://localhost:${listenPort}/health`);
455
+ console.log(` API: http://localhost:${listenPort}/api/validate`);
456
+ console.log(` MCP: http://localhost:${listenPort}/api/mcp/sse`);
457
+ if (API_KEY) {
458
+ console.log(` Auth: API key required (X-Api-Key header)`);
459
+ }
460
+ else {
461
+ console.log(` Auth: None (set STYLEMCP_API_KEY to enable)`);
462
+ }
463
+ });
464
+ }
465
+ // Run if called directly
466
+ if (import.meta.url === `file://${process.argv[1]}`) {
467
+ startServer();
468
+ }
469
+ export default app;
470
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":""}