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.
- package/README.md +261 -0
- package/action/action.yml +59 -0
- package/action/package.json +24 -0
- package/action/src/index.ts +455 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +335 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/rewriter/index.d.ts +45 -0
- package/dist/rewriter/index.d.ts.map +1 -0
- package/dist/rewriter/index.js +163 -0
- package/dist/rewriter/index.js.map +1 -0
- package/dist/schema/copy-patterns.d.ts +298 -0
- package/dist/schema/copy-patterns.d.ts.map +1 -0
- package/dist/schema/copy-patterns.js +53 -0
- package/dist/schema/copy-patterns.js.map +1 -0
- package/dist/schema/cta-rules.d.ts +274 -0
- package/dist/schema/cta-rules.d.ts.map +1 -0
- package/dist/schema/cta-rules.js +45 -0
- package/dist/schema/cta-rules.js.map +1 -0
- package/dist/schema/index.d.ts +2172 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +92 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/tests.d.ts +274 -0
- package/dist/schema/tests.d.ts.map +1 -0
- package/dist/schema/tests.js +37 -0
- package/dist/schema/tests.js.map +1 -0
- package/dist/schema/tokens.d.ts +632 -0
- package/dist/schema/tokens.d.ts.map +1 -0
- package/dist/schema/tokens.js +68 -0
- package/dist/schema/tokens.js.map +1 -0
- package/dist/schema/voice.d.ts +280 -0
- package/dist/schema/voice.d.ts.map +1 -0
- package/dist/schema/voice.js +52 -0
- package/dist/schema/voice.js.map +1 -0
- package/dist/server/billing.d.ts +53 -0
- package/dist/server/billing.d.ts.map +1 -0
- package/dist/server/billing.js +216 -0
- package/dist/server/billing.js.map +1 -0
- package/dist/server/http.d.ts +5 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +470 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +480 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/middleware/auth.d.ts +15 -0
- package/dist/server/middleware/auth.d.ts.map +1 -0
- package/dist/server/middleware/auth.js +83 -0
- package/dist/server/middleware/auth.js.map +1 -0
- package/dist/utils/pack-loader.d.ts +13 -0
- package/dist/utils/pack-loader.d.ts.map +1 -0
- package/dist/utils/pack-loader.js +98 -0
- package/dist/utils/pack-loader.js.map +1 -0
- package/dist/validator/index.d.ts +21 -0
- package/dist/validator/index.d.ts.map +1 -0
- package/dist/validator/index.js +60 -0
- package/dist/validator/index.js.map +1 -0
- package/dist/validator/rules/constraints.d.ts +8 -0
- package/dist/validator/rules/constraints.d.ts.map +1 -0
- package/dist/validator/rules/constraints.js +150 -0
- package/dist/validator/rules/constraints.js.map +1 -0
- package/dist/validator/rules/cta.d.ts +11 -0
- package/dist/validator/rules/cta.d.ts.map +1 -0
- package/dist/validator/rules/cta.js +113 -0
- package/dist/validator/rules/cta.js.map +1 -0
- package/dist/validator/rules/voice.d.ts +6 -0
- package/dist/validator/rules/voice.d.ts.map +1 -0
- package/dist/validator/rules/voice.js +106 -0
- package/dist/validator/rules/voice.js.map +1 -0
- package/package.json +61 -0
- package/packs/saas/copy_patterns.yaml +423 -0
- package/packs/saas/cta_rules.yaml +362 -0
- package/packs/saas/manifest.yaml +16 -0
- package/packs/saas/tests.yaml +305 -0
- package/packs/saas/tokens.json +226 -0
- package/packs/saas/voice.yaml +232 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/schema/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Voice schema - defines tone, vocabulary, and communication style
|
|
4
|
+
*/
|
|
5
|
+
export declare const ToneAttributeSchema: z.ZodObject<{
|
|
6
|
+
name: z.ZodString;
|
|
7
|
+
weight: z.ZodDefault<z.ZodNumber>;
|
|
8
|
+
description: z.ZodOptional<z.ZodString>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
name: string;
|
|
11
|
+
weight: number;
|
|
12
|
+
description?: string | undefined;
|
|
13
|
+
}, {
|
|
14
|
+
name: string;
|
|
15
|
+
weight?: number | undefined;
|
|
16
|
+
description?: string | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const VocabularyRuleSchema: z.ZodObject<{
|
|
19
|
+
preferred: z.ZodString;
|
|
20
|
+
avoid: z.ZodArray<z.ZodString, "many">;
|
|
21
|
+
context: z.ZodOptional<z.ZodString>;
|
|
22
|
+
}, "strip", z.ZodTypeAny, {
|
|
23
|
+
preferred: string;
|
|
24
|
+
avoid: string[];
|
|
25
|
+
context?: string | undefined;
|
|
26
|
+
}, {
|
|
27
|
+
preferred: string;
|
|
28
|
+
avoid: string[];
|
|
29
|
+
context?: string | undefined;
|
|
30
|
+
}>;
|
|
31
|
+
export declare const DoNotSchema: z.ZodObject<{
|
|
32
|
+
pattern: z.ZodString;
|
|
33
|
+
isRegex: z.ZodDefault<z.ZodBoolean>;
|
|
34
|
+
reason: z.ZodString;
|
|
35
|
+
severity: z.ZodDefault<z.ZodEnum<["error", "warning", "info"]>>;
|
|
36
|
+
suggestion: z.ZodOptional<z.ZodString>;
|
|
37
|
+
}, "strip", z.ZodTypeAny, {
|
|
38
|
+
pattern: string;
|
|
39
|
+
isRegex: boolean;
|
|
40
|
+
reason: string;
|
|
41
|
+
severity: "error" | "warning" | "info";
|
|
42
|
+
suggestion?: string | undefined;
|
|
43
|
+
}, {
|
|
44
|
+
pattern: string;
|
|
45
|
+
reason: string;
|
|
46
|
+
isRegex?: boolean | undefined;
|
|
47
|
+
severity?: "error" | "warning" | "info" | undefined;
|
|
48
|
+
suggestion?: string | undefined;
|
|
49
|
+
}>;
|
|
50
|
+
export declare const ExampleSchema: z.ZodObject<{
|
|
51
|
+
bad: z.ZodString;
|
|
52
|
+
good: z.ZodString;
|
|
53
|
+
explanation: z.ZodOptional<z.ZodString>;
|
|
54
|
+
context: z.ZodOptional<z.ZodString>;
|
|
55
|
+
}, "strip", z.ZodTypeAny, {
|
|
56
|
+
bad: string;
|
|
57
|
+
good: string;
|
|
58
|
+
context?: string | undefined;
|
|
59
|
+
explanation?: string | undefined;
|
|
60
|
+
}, {
|
|
61
|
+
bad: string;
|
|
62
|
+
good: string;
|
|
63
|
+
context?: string | undefined;
|
|
64
|
+
explanation?: string | undefined;
|
|
65
|
+
}>;
|
|
66
|
+
export declare const VoiceSchema: z.ZodObject<{
|
|
67
|
+
version: z.ZodDefault<z.ZodString>;
|
|
68
|
+
name: z.ZodString;
|
|
69
|
+
description: z.ZodOptional<z.ZodString>;
|
|
70
|
+
tone: z.ZodObject<{
|
|
71
|
+
attributes: z.ZodArray<z.ZodObject<{
|
|
72
|
+
name: z.ZodString;
|
|
73
|
+
weight: z.ZodDefault<z.ZodNumber>;
|
|
74
|
+
description: z.ZodOptional<z.ZodString>;
|
|
75
|
+
}, "strip", z.ZodTypeAny, {
|
|
76
|
+
name: string;
|
|
77
|
+
weight: number;
|
|
78
|
+
description?: string | undefined;
|
|
79
|
+
}, {
|
|
80
|
+
name: string;
|
|
81
|
+
weight?: number | undefined;
|
|
82
|
+
description?: string | undefined;
|
|
83
|
+
}>, "many">;
|
|
84
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
85
|
+
}, "strip", z.ZodTypeAny, {
|
|
86
|
+
attributes: {
|
|
87
|
+
name: string;
|
|
88
|
+
weight: number;
|
|
89
|
+
description?: string | undefined;
|
|
90
|
+
}[];
|
|
91
|
+
summary?: string | undefined;
|
|
92
|
+
}, {
|
|
93
|
+
attributes: {
|
|
94
|
+
name: string;
|
|
95
|
+
weight?: number | undefined;
|
|
96
|
+
description?: string | undefined;
|
|
97
|
+
}[];
|
|
98
|
+
summary?: string | undefined;
|
|
99
|
+
}>;
|
|
100
|
+
vocabulary: z.ZodObject<{
|
|
101
|
+
rules: z.ZodArray<z.ZodObject<{
|
|
102
|
+
preferred: z.ZodString;
|
|
103
|
+
avoid: z.ZodArray<z.ZodString, "many">;
|
|
104
|
+
context: z.ZodOptional<z.ZodString>;
|
|
105
|
+
}, "strip", z.ZodTypeAny, {
|
|
106
|
+
preferred: string;
|
|
107
|
+
avoid: string[];
|
|
108
|
+
context?: string | undefined;
|
|
109
|
+
}, {
|
|
110
|
+
preferred: string;
|
|
111
|
+
avoid: string[];
|
|
112
|
+
context?: string | undefined;
|
|
113
|
+
}>, "many">;
|
|
114
|
+
forbidden: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
115
|
+
encouraged: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
116
|
+
}, "strip", z.ZodTypeAny, {
|
|
117
|
+
rules: {
|
|
118
|
+
preferred: string;
|
|
119
|
+
avoid: string[];
|
|
120
|
+
context?: string | undefined;
|
|
121
|
+
}[];
|
|
122
|
+
forbidden: string[];
|
|
123
|
+
encouraged: string[];
|
|
124
|
+
}, {
|
|
125
|
+
rules: {
|
|
126
|
+
preferred: string;
|
|
127
|
+
avoid: string[];
|
|
128
|
+
context?: string | undefined;
|
|
129
|
+
}[];
|
|
130
|
+
forbidden?: string[] | undefined;
|
|
131
|
+
encouraged?: string[] | undefined;
|
|
132
|
+
}>;
|
|
133
|
+
doNot: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
134
|
+
pattern: z.ZodString;
|
|
135
|
+
isRegex: z.ZodDefault<z.ZodBoolean>;
|
|
136
|
+
reason: z.ZodString;
|
|
137
|
+
severity: z.ZodDefault<z.ZodEnum<["error", "warning", "info"]>>;
|
|
138
|
+
suggestion: z.ZodOptional<z.ZodString>;
|
|
139
|
+
}, "strip", z.ZodTypeAny, {
|
|
140
|
+
pattern: string;
|
|
141
|
+
isRegex: boolean;
|
|
142
|
+
reason: string;
|
|
143
|
+
severity: "error" | "warning" | "info";
|
|
144
|
+
suggestion?: string | undefined;
|
|
145
|
+
}, {
|
|
146
|
+
pattern: string;
|
|
147
|
+
reason: string;
|
|
148
|
+
isRegex?: boolean | undefined;
|
|
149
|
+
severity?: "error" | "warning" | "info" | undefined;
|
|
150
|
+
suggestion?: string | undefined;
|
|
151
|
+
}>, "many">>;
|
|
152
|
+
examples: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
153
|
+
bad: z.ZodString;
|
|
154
|
+
good: z.ZodString;
|
|
155
|
+
explanation: z.ZodOptional<z.ZodString>;
|
|
156
|
+
context: z.ZodOptional<z.ZodString>;
|
|
157
|
+
}, "strip", z.ZodTypeAny, {
|
|
158
|
+
bad: string;
|
|
159
|
+
good: string;
|
|
160
|
+
context?: string | undefined;
|
|
161
|
+
explanation?: string | undefined;
|
|
162
|
+
}, {
|
|
163
|
+
bad: string;
|
|
164
|
+
good: string;
|
|
165
|
+
context?: string | undefined;
|
|
166
|
+
explanation?: string | undefined;
|
|
167
|
+
}>, "many">>;
|
|
168
|
+
constraints: z.ZodDefault<z.ZodObject<{
|
|
169
|
+
maxSentenceLength: z.ZodOptional<z.ZodNumber>;
|
|
170
|
+
maxParagraphLength: z.ZodOptional<z.ZodNumber>;
|
|
171
|
+
readingLevel: z.ZodOptional<z.ZodEnum<["simple", "moderate", "technical"]>>;
|
|
172
|
+
personPov: z.ZodOptional<z.ZodEnum<["first-singular", "first-plural", "second", "third"]>>;
|
|
173
|
+
contractions: z.ZodDefault<z.ZodEnum<["required", "allowed", "forbidden"]>>;
|
|
174
|
+
oxfordComma: z.ZodDefault<z.ZodBoolean>;
|
|
175
|
+
}, "strip", z.ZodTypeAny, {
|
|
176
|
+
contractions: "forbidden" | "required" | "allowed";
|
|
177
|
+
oxfordComma: boolean;
|
|
178
|
+
maxSentenceLength?: number | undefined;
|
|
179
|
+
maxParagraphLength?: number | undefined;
|
|
180
|
+
readingLevel?: "simple" | "moderate" | "technical" | undefined;
|
|
181
|
+
personPov?: "first-singular" | "first-plural" | "second" | "third" | undefined;
|
|
182
|
+
}, {
|
|
183
|
+
maxSentenceLength?: number | undefined;
|
|
184
|
+
maxParagraphLength?: number | undefined;
|
|
185
|
+
readingLevel?: "simple" | "moderate" | "technical" | undefined;
|
|
186
|
+
personPov?: "first-singular" | "first-plural" | "second" | "third" | undefined;
|
|
187
|
+
contractions?: "forbidden" | "required" | "allowed" | undefined;
|
|
188
|
+
oxfordComma?: boolean | undefined;
|
|
189
|
+
}>>;
|
|
190
|
+
}, "strip", z.ZodTypeAny, {
|
|
191
|
+
name: string;
|
|
192
|
+
version: string;
|
|
193
|
+
tone: {
|
|
194
|
+
attributes: {
|
|
195
|
+
name: string;
|
|
196
|
+
weight: number;
|
|
197
|
+
description?: string | undefined;
|
|
198
|
+
}[];
|
|
199
|
+
summary?: string | undefined;
|
|
200
|
+
};
|
|
201
|
+
vocabulary: {
|
|
202
|
+
rules: {
|
|
203
|
+
preferred: string;
|
|
204
|
+
avoid: string[];
|
|
205
|
+
context?: string | undefined;
|
|
206
|
+
}[];
|
|
207
|
+
forbidden: string[];
|
|
208
|
+
encouraged: string[];
|
|
209
|
+
};
|
|
210
|
+
doNot: {
|
|
211
|
+
pattern: string;
|
|
212
|
+
isRegex: boolean;
|
|
213
|
+
reason: string;
|
|
214
|
+
severity: "error" | "warning" | "info";
|
|
215
|
+
suggestion?: string | undefined;
|
|
216
|
+
}[];
|
|
217
|
+
examples: {
|
|
218
|
+
bad: string;
|
|
219
|
+
good: string;
|
|
220
|
+
context?: string | undefined;
|
|
221
|
+
explanation?: string | undefined;
|
|
222
|
+
}[];
|
|
223
|
+
constraints: {
|
|
224
|
+
contractions: "forbidden" | "required" | "allowed";
|
|
225
|
+
oxfordComma: boolean;
|
|
226
|
+
maxSentenceLength?: number | undefined;
|
|
227
|
+
maxParagraphLength?: number | undefined;
|
|
228
|
+
readingLevel?: "simple" | "moderate" | "technical" | undefined;
|
|
229
|
+
personPov?: "first-singular" | "first-plural" | "second" | "third" | undefined;
|
|
230
|
+
};
|
|
231
|
+
description?: string | undefined;
|
|
232
|
+
}, {
|
|
233
|
+
name: string;
|
|
234
|
+
tone: {
|
|
235
|
+
attributes: {
|
|
236
|
+
name: string;
|
|
237
|
+
weight?: number | undefined;
|
|
238
|
+
description?: string | undefined;
|
|
239
|
+
}[];
|
|
240
|
+
summary?: string | undefined;
|
|
241
|
+
};
|
|
242
|
+
vocabulary: {
|
|
243
|
+
rules: {
|
|
244
|
+
preferred: string;
|
|
245
|
+
avoid: string[];
|
|
246
|
+
context?: string | undefined;
|
|
247
|
+
}[];
|
|
248
|
+
forbidden?: string[] | undefined;
|
|
249
|
+
encouraged?: string[] | undefined;
|
|
250
|
+
};
|
|
251
|
+
description?: string | undefined;
|
|
252
|
+
version?: string | undefined;
|
|
253
|
+
doNot?: {
|
|
254
|
+
pattern: string;
|
|
255
|
+
reason: string;
|
|
256
|
+
isRegex?: boolean | undefined;
|
|
257
|
+
severity?: "error" | "warning" | "info" | undefined;
|
|
258
|
+
suggestion?: string | undefined;
|
|
259
|
+
}[] | undefined;
|
|
260
|
+
examples?: {
|
|
261
|
+
bad: string;
|
|
262
|
+
good: string;
|
|
263
|
+
context?: string | undefined;
|
|
264
|
+
explanation?: string | undefined;
|
|
265
|
+
}[] | undefined;
|
|
266
|
+
constraints?: {
|
|
267
|
+
maxSentenceLength?: number | undefined;
|
|
268
|
+
maxParagraphLength?: number | undefined;
|
|
269
|
+
readingLevel?: "simple" | "moderate" | "technical" | undefined;
|
|
270
|
+
personPov?: "first-singular" | "first-plural" | "second" | "third" | undefined;
|
|
271
|
+
contractions?: "forbidden" | "required" | "allowed" | undefined;
|
|
272
|
+
oxfordComma?: boolean | undefined;
|
|
273
|
+
} | undefined;
|
|
274
|
+
}>;
|
|
275
|
+
export type ToneAttribute = z.infer<typeof ToneAttributeSchema>;
|
|
276
|
+
export type VocabularyRule = z.infer<typeof VocabularyRuleSchema>;
|
|
277
|
+
export type DoNot = z.infer<typeof DoNotSchema>;
|
|
278
|
+
export type Example = z.infer<typeof ExampleSchema>;
|
|
279
|
+
export type Voice = z.infer<typeof VoiceSchema>;
|
|
280
|
+
//# sourceMappingURL=voice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../src/schema/voice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAI9B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;EAMtB,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAKxB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BtB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Voice schema - defines tone, vocabulary, and communication style
|
|
4
|
+
*/
|
|
5
|
+
export const ToneAttributeSchema = z.object({
|
|
6
|
+
name: z.string().describe('Attribute name, e.g., "professional", "friendly"'),
|
|
7
|
+
weight: z.number().min(0).max(1).default(0.5).describe('How strongly this attribute should be present (0-1)'),
|
|
8
|
+
description: z.string().optional().describe('What this tone means in practice'),
|
|
9
|
+
});
|
|
10
|
+
export const VocabularyRuleSchema = z.object({
|
|
11
|
+
preferred: z.string().describe('The preferred term'),
|
|
12
|
+
avoid: z.array(z.string()).describe('Terms to avoid in favor of preferred'),
|
|
13
|
+
context: z.string().optional().describe('When this rule applies'),
|
|
14
|
+
});
|
|
15
|
+
export const DoNotSchema = z.object({
|
|
16
|
+
pattern: z.string().describe('Pattern to match (string or regex)'),
|
|
17
|
+
isRegex: z.boolean().default(false).describe('Whether pattern is a regex'),
|
|
18
|
+
reason: z.string().describe('Why this should be avoided'),
|
|
19
|
+
severity: z.enum(['error', 'warning', 'info']).default('warning'),
|
|
20
|
+
suggestion: z.string().optional().describe('What to use instead'),
|
|
21
|
+
});
|
|
22
|
+
export const ExampleSchema = z.object({
|
|
23
|
+
bad: z.string().describe('Example of what NOT to write'),
|
|
24
|
+
good: z.string().describe('Example of what TO write'),
|
|
25
|
+
explanation: z.string().optional().describe('Why the good version is better'),
|
|
26
|
+
context: z.string().optional().describe('Where this example applies'),
|
|
27
|
+
});
|
|
28
|
+
export const VoiceSchema = z.object({
|
|
29
|
+
version: z.string().default('1.0').describe('Schema version'),
|
|
30
|
+
name: z.string().describe('Name of this voice profile'),
|
|
31
|
+
description: z.string().optional().describe('Description of this voice'),
|
|
32
|
+
tone: z.object({
|
|
33
|
+
attributes: z.array(ToneAttributeSchema).describe('Tone attributes with weights'),
|
|
34
|
+
summary: z.string().optional().describe('One-line summary of overall tone'),
|
|
35
|
+
}),
|
|
36
|
+
vocabulary: z.object({
|
|
37
|
+
rules: z.array(VocabularyRuleSchema).describe('Preferred vocabulary mappings'),
|
|
38
|
+
forbidden: z.array(z.string()).default([]).describe('Words/phrases that are never allowed'),
|
|
39
|
+
encouraged: z.array(z.string()).default([]).describe('Words/phrases to use when appropriate'),
|
|
40
|
+
}),
|
|
41
|
+
doNot: z.array(DoNotSchema).default([]).describe('Patterns and phrases to avoid'),
|
|
42
|
+
examples: z.array(ExampleSchema).default([]).describe('Before/after examples'),
|
|
43
|
+
constraints: z.object({
|
|
44
|
+
maxSentenceLength: z.number().optional().describe('Maximum words per sentence'),
|
|
45
|
+
maxParagraphLength: z.number().optional().describe('Maximum sentences per paragraph'),
|
|
46
|
+
readingLevel: z.enum(['simple', 'moderate', 'technical']).optional(),
|
|
47
|
+
personPov: z.enum(['first-singular', 'first-plural', 'second', 'third']).optional().describe('Preferred point of view'),
|
|
48
|
+
contractions: z.enum(['required', 'allowed', 'forbidden']).default('allowed'),
|
|
49
|
+
oxfordComma: z.boolean().default(true),
|
|
50
|
+
}).default({}),
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=voice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.js","sourceRoot":"","sources":["../../src/schema/voice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { SupabaseClient } from '@supabase/supabase-js';
|
|
2
|
+
import Stripe from 'stripe';
|
|
3
|
+
export declare function getSupabase(): SupabaseClient;
|
|
4
|
+
export declare function getStripe(): Stripe;
|
|
5
|
+
export declare const TIERS: {
|
|
6
|
+
readonly free: {
|
|
7
|
+
readonly limit: 1000;
|
|
8
|
+
readonly price: 0;
|
|
9
|
+
};
|
|
10
|
+
readonly pro: {
|
|
11
|
+
readonly limit: 50000;
|
|
12
|
+
readonly price: 2900;
|
|
13
|
+
};
|
|
14
|
+
readonly team: {
|
|
15
|
+
readonly limit: 250000;
|
|
16
|
+
readonly price: 9900;
|
|
17
|
+
};
|
|
18
|
+
readonly enterprise: {
|
|
19
|
+
readonly limit: number;
|
|
20
|
+
readonly price: null;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export type Tier = keyof typeof TIERS;
|
|
24
|
+
export interface UserProfile {
|
|
25
|
+
id: string;
|
|
26
|
+
email: string;
|
|
27
|
+
tier: Tier;
|
|
28
|
+
api_key: string;
|
|
29
|
+
stripe_customer_id: string | null;
|
|
30
|
+
stripe_subscription_id: string | null;
|
|
31
|
+
monthly_request_limit: number;
|
|
32
|
+
}
|
|
33
|
+
export interface UsageStats {
|
|
34
|
+
tier: Tier;
|
|
35
|
+
limit: number;
|
|
36
|
+
used: number;
|
|
37
|
+
remaining: number;
|
|
38
|
+
reset_date: string;
|
|
39
|
+
}
|
|
40
|
+
export declare function validateApiKey(apiKey: string): Promise<UserProfile | null>;
|
|
41
|
+
export declare function checkQuota(userId: string): Promise<{
|
|
42
|
+
allowed: boolean;
|
|
43
|
+
stats: UsageStats;
|
|
44
|
+
}>;
|
|
45
|
+
export declare function recordUsage(userId: string, endpoint: string, method: string, statusCode: number, responseTimeMs: number): Promise<boolean>;
|
|
46
|
+
export declare function createCheckoutSession(userId: string, tier: 'pro' | 'team', successUrl: string, cancelUrl: string): Promise<string | null>;
|
|
47
|
+
export declare function handleStripeWebhook(payload: string | Buffer, signature: string): Promise<{
|
|
48
|
+
success: boolean;
|
|
49
|
+
error?: string;
|
|
50
|
+
}>;
|
|
51
|
+
export declare function createPortalSession(userId: string, returnUrl: string): Promise<string | null>;
|
|
52
|
+
export declare function isBillingEnabled(): boolean;
|
|
53
|
+
//# sourceMappingURL=billing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/server/billing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAY5B,wBAAgB,WAAW,IAAI,cAAc,CAK5C;AAED,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAGD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;CAKR,CAAC;AAEX,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,KAAK,CAAC;AAGtC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAGD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAYhF;AAGD,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,CAwBjG;AAGD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAGD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,KAAK,GAAG,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsDxB;AAGD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA+D/C;AAGD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBxB;AAGD,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { createClient } from '@supabase/supabase-js';
|
|
2
|
+
import Stripe from 'stripe';
|
|
3
|
+
// Environment variables (set these in .env)
|
|
4
|
+
const SUPABASE_URL = process.env.SUPABASE_URL || '';
|
|
5
|
+
const SUPABASE_SERVICE_KEY = process.env.SUPABASE_SERVICE_KEY || '';
|
|
6
|
+
const STRIPE_SECRET_KEY = process.env.STRIPE_SECRET_KEY || '';
|
|
7
|
+
const STRIPE_WEBHOOK_SECRET = process.env.STRIPE_WEBHOOK_SECRET || '';
|
|
8
|
+
// Initialize clients
|
|
9
|
+
let supabase = null;
|
|
10
|
+
let stripe = null;
|
|
11
|
+
export function getSupabase() {
|
|
12
|
+
if (!supabase && SUPABASE_URL && SUPABASE_SERVICE_KEY) {
|
|
13
|
+
supabase = createClient(SUPABASE_URL, SUPABASE_SERVICE_KEY);
|
|
14
|
+
}
|
|
15
|
+
return supabase;
|
|
16
|
+
}
|
|
17
|
+
export function getStripe() {
|
|
18
|
+
if (!stripe && STRIPE_SECRET_KEY) {
|
|
19
|
+
stripe = new Stripe(STRIPE_SECRET_KEY, { apiVersion: '2023-10-16' });
|
|
20
|
+
}
|
|
21
|
+
return stripe;
|
|
22
|
+
}
|
|
23
|
+
// Tier configuration
|
|
24
|
+
export const TIERS = {
|
|
25
|
+
free: { limit: 1000, price: 0 },
|
|
26
|
+
pro: { limit: 50000, price: 2900 }, // $29.00 in cents
|
|
27
|
+
team: { limit: 250000, price: 9900 }, // $99.00 in cents
|
|
28
|
+
enterprise: { limit: Infinity, price: null }, // Custom pricing
|
|
29
|
+
};
|
|
30
|
+
// Validate API key and get user profile
|
|
31
|
+
export async function validateApiKey(apiKey) {
|
|
32
|
+
const db = getSupabase();
|
|
33
|
+
if (!db)
|
|
34
|
+
return null;
|
|
35
|
+
const { data, error } = await db
|
|
36
|
+
.from('profiles')
|
|
37
|
+
.select('*')
|
|
38
|
+
.eq('api_key', apiKey)
|
|
39
|
+
.single();
|
|
40
|
+
if (error || !data)
|
|
41
|
+
return null;
|
|
42
|
+
return data;
|
|
43
|
+
}
|
|
44
|
+
// Check if user has remaining quota
|
|
45
|
+
export async function checkQuota(userId) {
|
|
46
|
+
const db = getSupabase();
|
|
47
|
+
if (!db) {
|
|
48
|
+
return {
|
|
49
|
+
allowed: true,
|
|
50
|
+
stats: { tier: 'free', limit: 1000, used: 0, remaining: 1000, reset_date: '' }
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const { data, error } = await db.rpc('get_usage_stats', { p_user_id: userId });
|
|
54
|
+
if (error) {
|
|
55
|
+
console.error('Error checking quota:', error);
|
|
56
|
+
return {
|
|
57
|
+
allowed: true,
|
|
58
|
+
stats: { tier: 'free', limit: 1000, used: 0, remaining: 1000, reset_date: '' }
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const stats = data;
|
|
62
|
+
return {
|
|
63
|
+
allowed: stats.remaining > 0,
|
|
64
|
+
stats,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// Record API usage
|
|
68
|
+
export async function recordUsage(userId, endpoint, method, statusCode, responseTimeMs) {
|
|
69
|
+
const db = getSupabase();
|
|
70
|
+
if (!db)
|
|
71
|
+
return true;
|
|
72
|
+
const { data, error } = await db.rpc('increment_usage', {
|
|
73
|
+
p_user_id: userId,
|
|
74
|
+
p_endpoint: endpoint,
|
|
75
|
+
p_method: method,
|
|
76
|
+
p_status: statusCode,
|
|
77
|
+
p_time_ms: responseTimeMs,
|
|
78
|
+
});
|
|
79
|
+
if (error) {
|
|
80
|
+
console.error('Error recording usage:', error);
|
|
81
|
+
return true; // Don't block on logging errors
|
|
82
|
+
}
|
|
83
|
+
return data;
|
|
84
|
+
}
|
|
85
|
+
// Create Stripe checkout session
|
|
86
|
+
export async function createCheckoutSession(userId, tier, successUrl, cancelUrl) {
|
|
87
|
+
const stripeClient = getStripe();
|
|
88
|
+
const db = getSupabase();
|
|
89
|
+
if (!stripeClient || !db)
|
|
90
|
+
return null;
|
|
91
|
+
// Get or create Stripe customer
|
|
92
|
+
const { data: profile } = await db
|
|
93
|
+
.from('profiles')
|
|
94
|
+
.select('email, stripe_customer_id')
|
|
95
|
+
.eq('id', userId)
|
|
96
|
+
.single();
|
|
97
|
+
if (!profile)
|
|
98
|
+
return null;
|
|
99
|
+
let customerId = profile.stripe_customer_id;
|
|
100
|
+
if (!customerId) {
|
|
101
|
+
const customer = await stripeClient.customers.create({
|
|
102
|
+
email: profile.email,
|
|
103
|
+
metadata: { user_id: userId },
|
|
104
|
+
});
|
|
105
|
+
customerId = customer.id;
|
|
106
|
+
await db
|
|
107
|
+
.from('profiles')
|
|
108
|
+
.update({ stripe_customer_id: customerId })
|
|
109
|
+
.eq('id', userId);
|
|
110
|
+
}
|
|
111
|
+
// Create checkout session
|
|
112
|
+
const session = await stripeClient.checkout.sessions.create({
|
|
113
|
+
customer: customerId,
|
|
114
|
+
mode: 'subscription',
|
|
115
|
+
payment_method_types: ['card'],
|
|
116
|
+
line_items: [
|
|
117
|
+
{
|
|
118
|
+
price_data: {
|
|
119
|
+
currency: 'usd',
|
|
120
|
+
product_data: {
|
|
121
|
+
name: `StyleMCP ${tier.charAt(0).toUpperCase() + tier.slice(1)}`,
|
|
122
|
+
description: `${TIERS[tier].limit.toLocaleString()} API requests/month`,
|
|
123
|
+
},
|
|
124
|
+
unit_amount: TIERS[tier].price,
|
|
125
|
+
recurring: { interval: 'month' },
|
|
126
|
+
},
|
|
127
|
+
quantity: 1,
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
success_url: successUrl,
|
|
131
|
+
cancel_url: cancelUrl,
|
|
132
|
+
metadata: { user_id: userId, tier },
|
|
133
|
+
});
|
|
134
|
+
return session.url;
|
|
135
|
+
}
|
|
136
|
+
// Handle Stripe webhook
|
|
137
|
+
export async function handleStripeWebhook(payload, signature) {
|
|
138
|
+
const stripeClient = getStripe();
|
|
139
|
+
const db = getSupabase();
|
|
140
|
+
if (!stripeClient || !db || !STRIPE_WEBHOOK_SECRET) {
|
|
141
|
+
return { success: false, error: 'Stripe not configured' };
|
|
142
|
+
}
|
|
143
|
+
let event;
|
|
144
|
+
try {
|
|
145
|
+
event = stripeClient.webhooks.constructEvent(payload, signature, STRIPE_WEBHOOK_SECRET);
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
return { success: false, error: `Webhook signature verification failed` };
|
|
149
|
+
}
|
|
150
|
+
switch (event.type) {
|
|
151
|
+
case 'checkout.session.completed': {
|
|
152
|
+
const session = event.data.object;
|
|
153
|
+
const userId = session.metadata?.user_id;
|
|
154
|
+
const tier = session.metadata?.tier;
|
|
155
|
+
if (userId && tier) {
|
|
156
|
+
await db
|
|
157
|
+
.from('profiles')
|
|
158
|
+
.update({
|
|
159
|
+
tier,
|
|
160
|
+
stripe_subscription_id: session.subscription,
|
|
161
|
+
monthly_request_limit: TIERS[tier].limit,
|
|
162
|
+
updated_at: new Date().toISOString(),
|
|
163
|
+
})
|
|
164
|
+
.eq('id', userId);
|
|
165
|
+
}
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
case 'customer.subscription.deleted': {
|
|
169
|
+
const subscription = event.data.object;
|
|
170
|
+
await db
|
|
171
|
+
.from('profiles')
|
|
172
|
+
.update({
|
|
173
|
+
tier: 'free',
|
|
174
|
+
stripe_subscription_id: null,
|
|
175
|
+
monthly_request_limit: TIERS.free.limit,
|
|
176
|
+
updated_at: new Date().toISOString(),
|
|
177
|
+
})
|
|
178
|
+
.eq('stripe_subscription_id', subscription.id);
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
case 'customer.subscription.updated': {
|
|
182
|
+
const subscription = event.data.object;
|
|
183
|
+
// Handle plan changes, cancellation at period end, etc.
|
|
184
|
+
if (subscription.cancel_at_period_end) {
|
|
185
|
+
// Subscription will cancel at end of period - could notify user
|
|
186
|
+
console.log('Subscription will cancel:', subscription.id);
|
|
187
|
+
}
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return { success: true };
|
|
192
|
+
}
|
|
193
|
+
// Create customer portal session for managing subscription
|
|
194
|
+
export async function createPortalSession(userId, returnUrl) {
|
|
195
|
+
const stripeClient = getStripe();
|
|
196
|
+
const db = getSupabase();
|
|
197
|
+
if (!stripeClient || !db)
|
|
198
|
+
return null;
|
|
199
|
+
const { data: profile } = await db
|
|
200
|
+
.from('profiles')
|
|
201
|
+
.select('stripe_customer_id')
|
|
202
|
+
.eq('id', userId)
|
|
203
|
+
.single();
|
|
204
|
+
if (!profile?.stripe_customer_id)
|
|
205
|
+
return null;
|
|
206
|
+
const session = await stripeClient.billingPortal.sessions.create({
|
|
207
|
+
customer: profile.stripe_customer_id,
|
|
208
|
+
return_url: returnUrl,
|
|
209
|
+
});
|
|
210
|
+
return session.url;
|
|
211
|
+
}
|
|
212
|
+
// Check if billing is configured
|
|
213
|
+
export function isBillingEnabled() {
|
|
214
|
+
return !!(SUPABASE_URL && SUPABASE_SERVICE_KEY && STRIPE_SECRET_KEY);
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=billing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/server/billing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":";AAkBA,QAAA,MAAM,GAAG,6CAAY,CAAC;AAoftB,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAa/C;AAOD,eAAe,GAAG,CAAC"}
|