@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.
@@ -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
+ }