@lovelybunch/core 1.0.3
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/dist/change-proposal.d.ts +71 -0
- package/dist/change-proposal.d.ts.map +1 -0
- package/dist/change-proposal.js +205 -0
- package/dist/change-proposal.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown-storage.d.ts +34 -0
- package/dist/markdown-storage.d.ts.map +1 -0
- package/dist/markdown-storage.js +356 -0
- package/dist/markdown-storage.js.map +1 -0
- package/dist/migration.d.ts +57 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +250 -0
- package/dist/migration.js.map +1 -0
- package/dist/storage.d.ts +57 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +403 -0
- package/dist/storage.js.map +1 -0
- package/dist/unified-storage.d.ts +59 -0
- package/dist/unified-storage.d.ts.map +1 -0
- package/dist/unified-storage.js +199 -0
- package/dist/unified-storage.js.map +1 -0
- package/dist/validation.d.ts +62 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +500 -0
- package/dist/validation.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprehensive validation utilities for GAIT data structures
|
|
3
|
+
*/
|
|
4
|
+
export class ValidationManager {
|
|
5
|
+
/**
|
|
6
|
+
* Validate a Change Proposal
|
|
7
|
+
*/
|
|
8
|
+
validateChangeProposal(proposal) {
|
|
9
|
+
const errors = [];
|
|
10
|
+
const warnings = [];
|
|
11
|
+
// Required fields validation
|
|
12
|
+
if (!proposal.id) {
|
|
13
|
+
errors.push({
|
|
14
|
+
field: 'id',
|
|
15
|
+
message: 'Change Proposal ID is required',
|
|
16
|
+
severity: 'error'
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
else if (!/^cp-\d{3}$/.test(proposal.id)) {
|
|
20
|
+
warnings.push({
|
|
21
|
+
field: 'id',
|
|
22
|
+
message: 'Change Proposal ID should follow format "cp-XXX"',
|
|
23
|
+
severity: 'warning'
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (!proposal.intent || proposal.intent.trim().length === 0) {
|
|
27
|
+
errors.push({
|
|
28
|
+
field: 'intent',
|
|
29
|
+
message: 'Intent description is required',
|
|
30
|
+
severity: 'error'
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
else if (proposal.intent.length < 10) {
|
|
34
|
+
warnings.push({
|
|
35
|
+
field: 'intent',
|
|
36
|
+
message: 'Intent description is very short, consider adding more detail',
|
|
37
|
+
severity: 'warning'
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
else if (proposal.intent.length > 500) {
|
|
41
|
+
warnings.push({
|
|
42
|
+
field: 'intent',
|
|
43
|
+
message: 'Intent description is very long, consider making it more concise',
|
|
44
|
+
severity: 'warning'
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
// Author validation
|
|
48
|
+
const authorValidation = this.validateAuthor(proposal.author);
|
|
49
|
+
errors.push(...authorValidation.errors);
|
|
50
|
+
warnings.push(...authorValidation.warnings);
|
|
51
|
+
// Status validation
|
|
52
|
+
const validStatuses = ['draft', 'proposed', 'approved', 'merged', 'rejected'];
|
|
53
|
+
if (!validStatuses.includes(proposal.status)) {
|
|
54
|
+
errors.push({
|
|
55
|
+
field: 'status',
|
|
56
|
+
message: `Invalid status "${proposal.status}". Must be one of: ${validStatuses.join(', ')}`,
|
|
57
|
+
severity: 'error'
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// Plan steps validation
|
|
61
|
+
if (proposal.planSteps.length === 0) {
|
|
62
|
+
warnings.push({
|
|
63
|
+
field: 'planSteps',
|
|
64
|
+
message: 'No plan steps defined. Consider adding implementation steps',
|
|
65
|
+
severity: 'warning'
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
proposal.planSteps.forEach((step, index) => {
|
|
70
|
+
const stepValidation = this.validatePlanStep(step, index);
|
|
71
|
+
errors.push(...stepValidation.errors);
|
|
72
|
+
warnings.push(...stepValidation.warnings);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
// Evidence validation
|
|
76
|
+
proposal.evidence.forEach((evidence, index) => {
|
|
77
|
+
const evidenceValidation = this.validateEvidence(evidence, index);
|
|
78
|
+
errors.push(...evidenceValidation.errors);
|
|
79
|
+
warnings.push(...evidenceValidation.warnings);
|
|
80
|
+
});
|
|
81
|
+
// Feature flags validation
|
|
82
|
+
proposal.featureFlags.forEach((flag, index) => {
|
|
83
|
+
const flagValidation = this.validateFeatureFlag(flag, index);
|
|
84
|
+
errors.push(...flagValidation.errors);
|
|
85
|
+
warnings.push(...flagValidation.warnings);
|
|
86
|
+
});
|
|
87
|
+
// Experiments validation
|
|
88
|
+
proposal.experiments.forEach((experiment, index) => {
|
|
89
|
+
const expValidation = this.validateExperiment(experiment, index);
|
|
90
|
+
errors.push(...expValidation.errors);
|
|
91
|
+
warnings.push(...expValidation.warnings);
|
|
92
|
+
});
|
|
93
|
+
// Metadata validation
|
|
94
|
+
if (!proposal.metadata.createdAt) {
|
|
95
|
+
errors.push({
|
|
96
|
+
field: 'metadata.createdAt',
|
|
97
|
+
message: 'Creation date is required',
|
|
98
|
+
severity: 'error'
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (!proposal.metadata.updatedAt) {
|
|
102
|
+
errors.push({
|
|
103
|
+
field: 'metadata.updatedAt',
|
|
104
|
+
message: 'Update date is required',
|
|
105
|
+
severity: 'error'
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
if (proposal.metadata.createdAt && proposal.metadata.updatedAt) {
|
|
109
|
+
if (proposal.metadata.updatedAt < proposal.metadata.createdAt) {
|
|
110
|
+
errors.push({
|
|
111
|
+
field: 'metadata.updatedAt',
|
|
112
|
+
message: 'Update date cannot be before creation date',
|
|
113
|
+
severity: 'error'
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
valid: errors.length === 0,
|
|
119
|
+
errors,
|
|
120
|
+
warnings
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Validate an Author
|
|
125
|
+
*/
|
|
126
|
+
validateAuthor(author) {
|
|
127
|
+
const errors = [];
|
|
128
|
+
const warnings = [];
|
|
129
|
+
if (!author.id) {
|
|
130
|
+
errors.push({
|
|
131
|
+
field: 'author.id',
|
|
132
|
+
message: 'Author ID is required',
|
|
133
|
+
severity: 'error'
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
if (!author.name || author.name.trim().length === 0) {
|
|
137
|
+
errors.push({
|
|
138
|
+
field: 'author.name',
|
|
139
|
+
message: 'Author name is required',
|
|
140
|
+
severity: 'error'
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
if (!['human', 'agent'].includes(author.type)) {
|
|
144
|
+
errors.push({
|
|
145
|
+
field: 'author.type',
|
|
146
|
+
message: 'Author type must be "human" or "agent"',
|
|
147
|
+
severity: 'error'
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (author.email && !this.isValidEmail(author.email)) {
|
|
151
|
+
errors.push({
|
|
152
|
+
field: 'author.email',
|
|
153
|
+
message: 'Invalid email format',
|
|
154
|
+
severity: 'error'
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
valid: errors.length === 0,
|
|
159
|
+
errors,
|
|
160
|
+
warnings
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Validate a Plan Step
|
|
165
|
+
*/
|
|
166
|
+
validatePlanStep(step, index) {
|
|
167
|
+
const errors = [];
|
|
168
|
+
const warnings = [];
|
|
169
|
+
if (!step.id) {
|
|
170
|
+
errors.push({
|
|
171
|
+
field: `planSteps[${index}].id`,
|
|
172
|
+
message: 'Plan step ID is required',
|
|
173
|
+
severity: 'error'
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
if (!step.description || step.description.trim().length === 0) {
|
|
177
|
+
errors.push({
|
|
178
|
+
field: `planSteps[${index}].description`,
|
|
179
|
+
message: 'Plan step description is required',
|
|
180
|
+
severity: 'error'
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
const validStatuses = ['pending', 'in-progress', 'completed', 'failed'];
|
|
184
|
+
if (!validStatuses.includes(step.status)) {
|
|
185
|
+
errors.push({
|
|
186
|
+
field: `planSteps[${index}].status`,
|
|
187
|
+
message: `Invalid step status "${step.status}". Must be one of: ${validStatuses.join(', ')}`,
|
|
188
|
+
severity: 'error'
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
if (step.status === 'completed' && !step.executedAt) {
|
|
192
|
+
warnings.push({
|
|
193
|
+
field: `planSteps[${index}].executedAt`,
|
|
194
|
+
message: 'Completed step should have execution timestamp',
|
|
195
|
+
severity: 'warning'
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
if (step.status === 'failed' && !step.error) {
|
|
199
|
+
warnings.push({
|
|
200
|
+
field: `planSteps[${index}].error`,
|
|
201
|
+
message: 'Failed step should include error information',
|
|
202
|
+
severity: 'warning'
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
valid: errors.length === 0,
|
|
207
|
+
errors,
|
|
208
|
+
warnings
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Validate Evidence
|
|
213
|
+
*/
|
|
214
|
+
validateEvidence(evidence, index) {
|
|
215
|
+
const errors = [];
|
|
216
|
+
const warnings = [];
|
|
217
|
+
const validTypes = ['test', 'benchmark', 'screenshot', 'log', 'other'];
|
|
218
|
+
if (!validTypes.includes(evidence.type)) {
|
|
219
|
+
errors.push({
|
|
220
|
+
field: `evidence[${index}].type`,
|
|
221
|
+
message: `Invalid evidence type "${evidence.type}". Must be one of: ${validTypes.join(', ')}`,
|
|
222
|
+
severity: 'error'
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
if (!evidence.description || evidence.description.trim().length === 0) {
|
|
226
|
+
errors.push({
|
|
227
|
+
field: `evidence[${index}].description`,
|
|
228
|
+
message: 'Evidence description is required',
|
|
229
|
+
severity: 'error'
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
if (!evidence.timestamp) {
|
|
233
|
+
errors.push({
|
|
234
|
+
field: `evidence[${index}].timestamp`,
|
|
235
|
+
message: 'Evidence timestamp is required',
|
|
236
|
+
severity: 'error'
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
if (evidence.data === null || evidence.data === undefined) {
|
|
240
|
+
warnings.push({
|
|
241
|
+
field: `evidence[${index}].data`,
|
|
242
|
+
message: 'Evidence data is empty',
|
|
243
|
+
severity: 'warning'
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
return {
|
|
247
|
+
valid: errors.length === 0,
|
|
248
|
+
errors,
|
|
249
|
+
warnings
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Validate Feature Flag
|
|
254
|
+
*/
|
|
255
|
+
validateFeatureFlag(flag, index) {
|
|
256
|
+
const errors = [];
|
|
257
|
+
const warnings = [];
|
|
258
|
+
if (!flag.id) {
|
|
259
|
+
errors.push({
|
|
260
|
+
field: `featureFlags[${index}].id`,
|
|
261
|
+
message: 'Feature flag ID is required',
|
|
262
|
+
severity: 'error'
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
if (!flag.name || flag.name.trim().length === 0) {
|
|
266
|
+
errors.push({
|
|
267
|
+
field: `featureFlags[${index}].name`,
|
|
268
|
+
message: 'Feature flag name is required',
|
|
269
|
+
severity: 'error'
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
const validTypes = ['boolean', 'string', 'number', 'json'];
|
|
273
|
+
if (!validTypes.includes(flag.type)) {
|
|
274
|
+
errors.push({
|
|
275
|
+
field: `featureFlags[${index}].type`,
|
|
276
|
+
message: `Invalid flag type "${flag.type}". Must be one of: ${validTypes.join(', ')}`,
|
|
277
|
+
severity: 'error'
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
if (flag.defaultValue === null || flag.defaultValue === undefined) {
|
|
281
|
+
errors.push({
|
|
282
|
+
field: `featureFlags[${index}].defaultValue`,
|
|
283
|
+
message: 'Feature flag default value is required',
|
|
284
|
+
severity: 'error'
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
// Type-specific validation
|
|
288
|
+
if (flag.type === 'boolean' && typeof flag.defaultValue !== 'boolean') {
|
|
289
|
+
errors.push({
|
|
290
|
+
field: `featureFlags[${index}].defaultValue`,
|
|
291
|
+
message: 'Boolean flag must have boolean default value',
|
|
292
|
+
severity: 'error'
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
if (flag.type === 'number' && typeof flag.defaultValue !== 'number') {
|
|
296
|
+
errors.push({
|
|
297
|
+
field: `featureFlags[${index}].defaultValue`,
|
|
298
|
+
message: 'Number flag must have number default value',
|
|
299
|
+
severity: 'error'
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
if (flag.type === 'string' && typeof flag.defaultValue !== 'string') {
|
|
303
|
+
errors.push({
|
|
304
|
+
field: `featureFlags[${index}].defaultValue`,
|
|
305
|
+
message: 'String flag must have string default value',
|
|
306
|
+
severity: 'error'
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
return {
|
|
310
|
+
valid: errors.length === 0,
|
|
311
|
+
errors,
|
|
312
|
+
warnings
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Validate Experiment
|
|
317
|
+
*/
|
|
318
|
+
validateExperiment(experiment, index) {
|
|
319
|
+
const errors = [];
|
|
320
|
+
const warnings = [];
|
|
321
|
+
if (!experiment.id) {
|
|
322
|
+
errors.push({
|
|
323
|
+
field: `experiments[${index}].id`,
|
|
324
|
+
message: 'Experiment ID is required',
|
|
325
|
+
severity: 'error'
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
if (!experiment.name || experiment.name.trim().length === 0) {
|
|
329
|
+
errors.push({
|
|
330
|
+
field: `experiments[${index}].name`,
|
|
331
|
+
message: 'Experiment name is required',
|
|
332
|
+
severity: 'error'
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
if (!experiment.hypothesis || experiment.hypothesis.trim().length === 0) {
|
|
336
|
+
errors.push({
|
|
337
|
+
field: `experiments[${index}].hypothesis`,
|
|
338
|
+
message: 'Experiment hypothesis is required',
|
|
339
|
+
severity: 'error'
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
if (experiment.variants.length < 2) {
|
|
343
|
+
errors.push({
|
|
344
|
+
field: `experiments[${index}].variants`,
|
|
345
|
+
message: 'Experiment must have at least 2 variants',
|
|
346
|
+
severity: 'error'
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
// Validate variant allocations sum to 100%
|
|
350
|
+
const totalAllocation = experiment.variants.reduce((sum, variant) => sum + variant.allocation, 0);
|
|
351
|
+
if (Math.abs(totalAllocation - 100) > 0.01) {
|
|
352
|
+
errors.push({
|
|
353
|
+
field: `experiments[${index}].variants`,
|
|
354
|
+
message: `Variant allocations must sum to 100%, currently ${totalAllocation}%`,
|
|
355
|
+
severity: 'error'
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
const validStatuses = ['draft', 'running', 'paused', 'completed'];
|
|
359
|
+
if (!validStatuses.includes(experiment.status)) {
|
|
360
|
+
errors.push({
|
|
361
|
+
field: `experiments[${index}].status`,
|
|
362
|
+
message: `Invalid experiment status "${experiment.status}". Must be one of: ${validStatuses.join(', ')}`,
|
|
363
|
+
severity: 'error'
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
return {
|
|
367
|
+
valid: errors.length === 0,
|
|
368
|
+
errors,
|
|
369
|
+
warnings
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Validate YAML frontmatter structure
|
|
374
|
+
*/
|
|
375
|
+
validateYamlFrontmatter(frontmatter) {
|
|
376
|
+
const errors = [];
|
|
377
|
+
const warnings = [];
|
|
378
|
+
const requiredFields = ['id', 'intent', 'author', 'status'];
|
|
379
|
+
for (const field of requiredFields) {
|
|
380
|
+
if (!frontmatter[field]) {
|
|
381
|
+
errors.push({
|
|
382
|
+
field: `frontmatter.${field}`,
|
|
383
|
+
message: `Required frontmatter field "${field}" is missing`,
|
|
384
|
+
severity: 'error'
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
if (frontmatter.author && typeof frontmatter.author === 'object') {
|
|
389
|
+
if (!frontmatter.author.name) {
|
|
390
|
+
errors.push({
|
|
391
|
+
field: 'frontmatter.author.name',
|
|
392
|
+
message: 'Author name is required in frontmatter',
|
|
393
|
+
severity: 'error'
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
// Validate date formats
|
|
398
|
+
const dateFields = ['createdAt', 'updatedAt'];
|
|
399
|
+
for (const field of dateFields) {
|
|
400
|
+
if (frontmatter[field] && !this.isValidISODate(frontmatter[field])) {
|
|
401
|
+
errors.push({
|
|
402
|
+
field: `frontmatter.${field}`,
|
|
403
|
+
message: `Invalid date format for ${field}. Use ISO 8601 format`,
|
|
404
|
+
severity: 'error'
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
return {
|
|
409
|
+
valid: errors.length === 0,
|
|
410
|
+
errors,
|
|
411
|
+
warnings
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Validate markdown content structure
|
|
416
|
+
*/
|
|
417
|
+
validateMarkdownContent(content) {
|
|
418
|
+
const errors = [];
|
|
419
|
+
const warnings = [];
|
|
420
|
+
// Check for required sections
|
|
421
|
+
const requiredSections = ['Problem Statement', 'Implementation Plan'];
|
|
422
|
+
const recommendedSections = ['Success Criteria', 'Design Artifacts'];
|
|
423
|
+
for (const section of requiredSections) {
|
|
424
|
+
if (!content.includes(`## ${section}`)) {
|
|
425
|
+
errors.push({
|
|
426
|
+
field: 'markdown.content',
|
|
427
|
+
message: `Required section "${section}" is missing`,
|
|
428
|
+
severity: 'error'
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
for (const section of recommendedSections) {
|
|
433
|
+
if (!content.includes(`## ${section}`)) {
|
|
434
|
+
warnings.push({
|
|
435
|
+
field: 'markdown.content',
|
|
436
|
+
message: `Recommended section "${section}" is missing`,
|
|
437
|
+
severity: 'warning'
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
// Check for empty sections
|
|
442
|
+
const sections = content.split(/^## /m);
|
|
443
|
+
for (const section of sections) {
|
|
444
|
+
if (section.trim().length === 0) {
|
|
445
|
+
warnings.push({
|
|
446
|
+
field: 'markdown.content',
|
|
447
|
+
message: 'Found empty section in markdown content',
|
|
448
|
+
severity: 'warning'
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
return {
|
|
453
|
+
valid: errors.length === 0,
|
|
454
|
+
errors,
|
|
455
|
+
warnings
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Helper method to validate email format
|
|
460
|
+
*/
|
|
461
|
+
isValidEmail(email) {
|
|
462
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
463
|
+
return emailRegex.test(email);
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Helper method to validate ISO date format
|
|
467
|
+
*/
|
|
468
|
+
isValidISODate(dateString) {
|
|
469
|
+
const date = new Date(dateString);
|
|
470
|
+
return date instanceof Date && !isNaN(date.getTime()) && date.toISOString() === dateString;
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Format validation results for display
|
|
474
|
+
*/
|
|
475
|
+
formatValidationResults(result) {
|
|
476
|
+
let output = '';
|
|
477
|
+
if (result.errors.length > 0) {
|
|
478
|
+
output += '❌ Validation Errors:\n';
|
|
479
|
+
result.errors.forEach(error => {
|
|
480
|
+
output += ` • ${error.field}: ${error.message}\n`;
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
if (result.warnings.length > 0) {
|
|
484
|
+
output += '⚠️ Validation Warnings:\n';
|
|
485
|
+
result.warnings.forEach(warning => {
|
|
486
|
+
output += ` • ${warning.field}: ${warning.message}\n`;
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
if (result.valid && result.warnings.length === 0) {
|
|
490
|
+
output = '✅ Validation passed with no issues';
|
|
491
|
+
}
|
|
492
|
+
else if (result.valid) {
|
|
493
|
+
output = '✅ Validation passed with warnings\n' + output;
|
|
494
|
+
}
|
|
495
|
+
return output;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
// Export a singleton instance
|
|
499
|
+
export const validationManager = new ValidationManager();
|
|
500
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lovelybunch/core",
|
|
3
|
+
"version": "1.0.3",
|
|
4
|
+
"description": "Core business logic for GAIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist/**/*",
|
|
10
|
+
"README.md"
|
|
11
|
+
],
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+https://github.com/bluer/gait.git"
|
|
15
|
+
},
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
18
|
+
},
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"import": "./dist/index.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "tsc -b",
|
|
27
|
+
"dev": "tsc -b --watch",
|
|
28
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
29
|
+
"type-check": "tsc --noEmit",
|
|
30
|
+
"lint": "eslint src --ext .ts",
|
|
31
|
+
"test": "vitest run"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@lovelybunch/types": "workspace:*",
|
|
35
|
+
"gray-matter": "^4.0.3",
|
|
36
|
+
"js-yaml": "^4.1.0",
|
|
37
|
+
"nanoid": "^5.0.4",
|
|
38
|
+
"zod": "^3.22.4"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/js-yaml": "^4.0.9",
|
|
42
|
+
"typescript": "^5.3.3",
|
|
43
|
+
"vitest": "^1.2.1"
|
|
44
|
+
}
|
|
45
|
+
}
|