@stackbilt/core 0.1.1
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/__tests__/sanitize.test.d.ts +2 -0
- package/dist/__tests__/sanitize.test.d.ts.map +1 -0
- package/dist/__tests__/sanitize.test.js +51 -0
- package/dist/__tests__/sanitize.test.js.map +1 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +42 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/sanitize.d.ts +7 -0
- package/dist/sanitize.d.ts.map +1 -0
- package/dist/sanitize.js +14 -0
- package/dist/sanitize.js.map +1 -0
- package/dist/schemas.d.ts +316 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +128 -0
- package/dist/schemas.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/sanitize.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const sanitize_1 = require("../sanitize");
|
|
5
|
+
const errors_1 = require("../errors");
|
|
6
|
+
(0, vitest_1.describe)('sanitizeInput', () => {
|
|
7
|
+
(0, vitest_1.it)('removes null bytes', () => {
|
|
8
|
+
(0, vitest_1.expect)((0, sanitize_1.sanitizeInput)('hello\x00world')).toBe('helloworld');
|
|
9
|
+
});
|
|
10
|
+
(0, vitest_1.it)('removes control characters', () => {
|
|
11
|
+
(0, vitest_1.expect)((0, sanitize_1.sanitizeInput)('line\x01\x02\x1Fone')).toBe('lineone');
|
|
12
|
+
});
|
|
13
|
+
(0, vitest_1.it)('removes DEL character (0x7F)', () => {
|
|
14
|
+
(0, vitest_1.expect)((0, sanitize_1.sanitizeInput)('test\x7Fvalue')).toBe('testvalue');
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.it)('preserves normal text', () => {
|
|
17
|
+
(0, vitest_1.expect)((0, sanitize_1.sanitizeInput)('Hello, World!')).toBe('Hello, World!');
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.it)('preserves newlines are stripped (control chars)', () => {
|
|
20
|
+
// \n is 0x0A which is in the \x00-\x1F range
|
|
21
|
+
(0, vitest_1.expect)((0, sanitize_1.sanitizeInput)('line1\nline2')).toBe('line1line2');
|
|
22
|
+
});
|
|
23
|
+
(0, vitest_1.it)('truncates at 50000 characters', () => {
|
|
24
|
+
const long = 'a'.repeat(60000);
|
|
25
|
+
(0, vitest_1.expect)((0, sanitize_1.sanitizeInput)(long)).toHaveLength(50000);
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.it)('handles empty string', () => {
|
|
28
|
+
(0, vitest_1.expect)((0, sanitize_1.sanitizeInput)('')).toBe('');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
(0, vitest_1.describe)('sanitizeErrorMessage', () => {
|
|
32
|
+
(0, vitest_1.it)('maps SQLITE_CONSTRAINT to safe message', () => {
|
|
33
|
+
(0, vitest_1.expect)((0, errors_1.sanitizeErrorMessage)(new Error('SQLITE_CONSTRAINT: UNIQUE'))).toBe('Database constraint violated');
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.it)('maps network errors to safe message', () => {
|
|
36
|
+
(0, vitest_1.expect)((0, errors_1.sanitizeErrorMessage)(new Error('fetch failed'))).toBe('Network error - please retry');
|
|
37
|
+
});
|
|
38
|
+
(0, vitest_1.it)('maps timeout errors to safe message', () => {
|
|
39
|
+
(0, vitest_1.expect)((0, errors_1.sanitizeErrorMessage)(new Error('request timed out'))).toBe('Request timed out');
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.it)('maps not found errors', () => {
|
|
42
|
+
(0, vitest_1.expect)((0, errors_1.sanitizeErrorMessage)(new Error('Resource not found'))).toBe('Resource not found');
|
|
43
|
+
});
|
|
44
|
+
(0, vitest_1.it)('returns generic message for unknown errors', () => {
|
|
45
|
+
(0, vitest_1.expect)((0, errors_1.sanitizeErrorMessage)(new Error('weird internal thing'))).toBe('An internal error occurred. Please try again.');
|
|
46
|
+
});
|
|
47
|
+
(0, vitest_1.it)('handles non-Error values', () => {
|
|
48
|
+
(0, vitest_1.expect)((0, errors_1.sanitizeErrorMessage)('some string error')).toBe('An internal error occurred. Please try again.');
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=sanitize.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.test.js","sourceRoot":"","sources":["../../src/__tests__/sanitize.test.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error sanitization utilities.
|
|
3
|
+
* Prevents leaking internal details in error messages.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Sanitize error messages for external display.
|
|
7
|
+
* Logs full error internally, returns safe message externally.
|
|
8
|
+
*/
|
|
9
|
+
export declare function sanitizeErrorMessage(error: unknown): string;
|
|
10
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAe3D"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Error sanitization utilities.
|
|
4
|
+
* Prevents leaking internal details in error messages.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.sanitizeErrorMessage = sanitizeErrorMessage;
|
|
8
|
+
/**
|
|
9
|
+
* Safe error messages for known error patterns.
|
|
10
|
+
* Maps internal error indicators to user-friendly messages.
|
|
11
|
+
*/
|
|
12
|
+
const SAFE_ERROR_PATTERNS = [
|
|
13
|
+
[/SQLITE_CONSTRAINT/i, 'Database constraint violated'],
|
|
14
|
+
[/SQLITE_BUSY/i, 'Database temporarily unavailable'],
|
|
15
|
+
[/SQLITE_FULL/i, 'Storage limit exceeded'],
|
|
16
|
+
[/SQLITE_ERROR/i, 'Database error'],
|
|
17
|
+
[/network|fetch failed|connection/i, 'Network error - please retry'],
|
|
18
|
+
[/timeout|timed out/i, 'Request timed out'],
|
|
19
|
+
[/rate limit/i, 'Rate limit exceeded'],
|
|
20
|
+
[/invalid.*json|json.*parse/i, 'Invalid request format'],
|
|
21
|
+
[/not found/i, 'Resource not found'],
|
|
22
|
+
[/unauthorized|authentication/i, 'Authentication required'],
|
|
23
|
+
[/forbidden|permission/i, 'Permission denied'],
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Sanitize error messages for external display.
|
|
27
|
+
* Logs full error internally, returns safe message externally.
|
|
28
|
+
*/
|
|
29
|
+
function sanitizeErrorMessage(error) {
|
|
30
|
+
const raw = error instanceof Error ? error.message : String(error);
|
|
31
|
+
// Check for known safe patterns
|
|
32
|
+
for (const [pattern, safeMessage] of SAFE_ERROR_PATTERNS) {
|
|
33
|
+
if (pattern.test(raw)) {
|
|
34
|
+
return safeMessage;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Log full error for debugging (internal only)
|
|
38
|
+
console.error('[Internal Error]', raw);
|
|
39
|
+
// Return generic message for unknown errors
|
|
40
|
+
return 'An internal error occurred. Please try again.';
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAwBH,oDAeC;AArCD;;;GAGG;AACH,MAAM,mBAAmB,GAA4B;IACnD,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;IACtD,CAAC,cAAc,EAAE,kCAAkC,CAAC;IACpD,CAAC,cAAc,EAAE,wBAAwB,CAAC;IAC1C,CAAC,eAAe,EAAE,gBAAgB,CAAC;IACnC,CAAC,kCAAkC,EAAE,8BAA8B,CAAC;IACpE,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;IAC3C,CAAC,aAAa,EAAE,qBAAqB,CAAC;IACtC,CAAC,4BAA4B,EAAE,wBAAwB,CAAC;IACxD,CAAC,YAAY,EAAE,oBAAoB,CAAC;IACpC,CAAC,8BAA8B,EAAE,yBAAyB,CAAC;IAC3D,CAAC,uBAAuB,EAAE,mBAAmB,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,KAAc;IACjD,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnE,gCAAgC;IAChC,KAAK,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,mBAAmB,EAAE,CAAC;QACzD,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAEvC,4CAA4C;IAC5C,OAAO,+CAA+C,CAAC;AACzD,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,cAAc,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.sanitizeErrorMessage = exports.sanitizeInput = void 0;
|
|
18
|
+
var sanitize_1 = require("./sanitize");
|
|
19
|
+
Object.defineProperty(exports, "sanitizeInput", { enumerable: true, get: function () { return sanitize_1.sanitizeInput; } });
|
|
20
|
+
var errors_1 = require("./errors");
|
|
21
|
+
Object.defineProperty(exports, "sanitizeErrorMessage", { enumerable: true, get: function () { return errors_1.sanitizeErrorMessage; } });
|
|
22
|
+
__exportStar(require("./schemas"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AACtB,mCAAgD;AAAvC,8GAAA,oBAAoB,OAAA;AAC7B,4CAA0B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sanitizes user input to prevent prompt injection and other attacks
|
|
3
|
+
* @param input Raw user input
|
|
4
|
+
* @returns Sanitized input with control characters removed and length limited
|
|
5
|
+
*/
|
|
6
|
+
export declare function sanitizeInput(input: string): string;
|
|
7
|
+
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAInD"}
|
package/dist/sanitize.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sanitizeInput = sanitizeInput;
|
|
4
|
+
/**
|
|
5
|
+
* Sanitizes user input to prevent prompt injection and other attacks
|
|
6
|
+
* @param input Raw user input
|
|
7
|
+
* @returns Sanitized input with control characters removed and length limited
|
|
8
|
+
*/
|
|
9
|
+
function sanitizeInput(input) {
|
|
10
|
+
return input
|
|
11
|
+
.replace(/[\x00-\x1F\x7F]/g, '') // Remove control characters
|
|
12
|
+
.slice(0, 50000); // Hard limit to prevent abuse
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":";;AAKA,sCAIC;AATD;;;;GAIG;AACH,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,KAAK;SACT,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,4BAA4B;SAC5D,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,8BAA8B;AACpD,CAAC"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod validation schemas for Charter governance data.
|
|
3
|
+
*
|
|
4
|
+
* These schemas define the shape of governance artifacts (ledger entries,
|
|
5
|
+
* patterns, protocols, requests) and can be used for input validation
|
|
6
|
+
* in both Kit CLI and Cloud API contexts.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
export declare const CreateLedgerEntrySchema: z.ZodEffects<z.ZodObject<{
|
|
10
|
+
entry_type: z.ZodEnum<["RULING", "ADR", "POLICY", "SOP", "STRATEGIC", "REVIEW", "NOTARY_STAMP"]>;
|
|
11
|
+
source_mode: z.ZodEnum<["PRODUCT", "UX", "RISK", "ARCHITECT", "TDD", "SPRINT"]>;
|
|
12
|
+
title: z.ZodString;
|
|
13
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
14
|
+
input_excerpt: z.ZodOptional<z.ZodString>;
|
|
15
|
+
output: z.ZodString;
|
|
16
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
17
|
+
project_id: z.ZodOptional<z.ZodString>;
|
|
18
|
+
artifact_hash: z.ZodOptional<z.ZodString>;
|
|
19
|
+
quality_metadata: z.ZodOptional<z.ZodObject<{
|
|
20
|
+
specificity_score: z.ZodNumber;
|
|
21
|
+
rubric_version: z.ZodString;
|
|
22
|
+
}, "strip", z.ZodTypeAny, {
|
|
23
|
+
specificity_score: number;
|
|
24
|
+
rubric_version: string;
|
|
25
|
+
}, {
|
|
26
|
+
specificity_score: number;
|
|
27
|
+
rubric_version: string;
|
|
28
|
+
}>>;
|
|
29
|
+
stamp: z.ZodOptional<z.ZodObject<{
|
|
30
|
+
stamp_id: z.ZodString;
|
|
31
|
+
ledger_ids: z.ZodArray<z.ZodString, "many">;
|
|
32
|
+
issued_at: z.ZodString;
|
|
33
|
+
policy_hash: z.ZodString;
|
|
34
|
+
signature: z.ZodString;
|
|
35
|
+
}, "strip", z.ZodTypeAny, {
|
|
36
|
+
stamp_id: string;
|
|
37
|
+
ledger_ids: string[];
|
|
38
|
+
issued_at: string;
|
|
39
|
+
policy_hash: string;
|
|
40
|
+
signature: string;
|
|
41
|
+
}, {
|
|
42
|
+
stamp_id: string;
|
|
43
|
+
ledger_ids: string[];
|
|
44
|
+
issued_at: string;
|
|
45
|
+
policy_hash: string;
|
|
46
|
+
signature: string;
|
|
47
|
+
}>>;
|
|
48
|
+
create_pattern: z.ZodOptional<z.ZodObject<{
|
|
49
|
+
name: z.ZodString;
|
|
50
|
+
category: z.ZodEnum<["COMPUTE", "DATA", "INTEGRATION", "SECURITY", "ASYNC"]>;
|
|
51
|
+
blessed_solution: z.ZodString;
|
|
52
|
+
rationale: z.ZodOptional<z.ZodString>;
|
|
53
|
+
anti_patterns: z.ZodOptional<z.ZodString>;
|
|
54
|
+
documentation_url: z.ZodOptional<z.ZodString>;
|
|
55
|
+
}, "strip", z.ZodTypeAny, {
|
|
56
|
+
name: string;
|
|
57
|
+
category: "COMPUTE" | "DATA" | "INTEGRATION" | "SECURITY" | "ASYNC";
|
|
58
|
+
blessed_solution: string;
|
|
59
|
+
rationale?: string | undefined;
|
|
60
|
+
anti_patterns?: string | undefined;
|
|
61
|
+
documentation_url?: string | undefined;
|
|
62
|
+
}, {
|
|
63
|
+
name: string;
|
|
64
|
+
category: "COMPUTE" | "DATA" | "INTEGRATION" | "SECURITY" | "ASYNC";
|
|
65
|
+
blessed_solution: string;
|
|
66
|
+
rationale?: string | undefined;
|
|
67
|
+
anti_patterns?: string | undefined;
|
|
68
|
+
documentation_url?: string | undefined;
|
|
69
|
+
}>>;
|
|
70
|
+
}, "strip", z.ZodTypeAny, {
|
|
71
|
+
entry_type: "RULING" | "ADR" | "POLICY" | "SOP" | "STRATEGIC" | "REVIEW" | "NOTARY_STAMP";
|
|
72
|
+
source_mode: "PRODUCT" | "UX" | "RISK" | "ARCHITECT" | "TDD" | "SPRINT";
|
|
73
|
+
title: string;
|
|
74
|
+
output: string;
|
|
75
|
+
summary?: string | undefined;
|
|
76
|
+
input_excerpt?: string | undefined;
|
|
77
|
+
tags?: string[] | undefined;
|
|
78
|
+
project_id?: string | undefined;
|
|
79
|
+
artifact_hash?: string | undefined;
|
|
80
|
+
quality_metadata?: {
|
|
81
|
+
specificity_score: number;
|
|
82
|
+
rubric_version: string;
|
|
83
|
+
} | undefined;
|
|
84
|
+
stamp?: {
|
|
85
|
+
stamp_id: string;
|
|
86
|
+
ledger_ids: string[];
|
|
87
|
+
issued_at: string;
|
|
88
|
+
policy_hash: string;
|
|
89
|
+
signature: string;
|
|
90
|
+
} | undefined;
|
|
91
|
+
create_pattern?: {
|
|
92
|
+
name: string;
|
|
93
|
+
category: "COMPUTE" | "DATA" | "INTEGRATION" | "SECURITY" | "ASYNC";
|
|
94
|
+
blessed_solution: string;
|
|
95
|
+
rationale?: string | undefined;
|
|
96
|
+
anti_patterns?: string | undefined;
|
|
97
|
+
documentation_url?: string | undefined;
|
|
98
|
+
} | undefined;
|
|
99
|
+
}, {
|
|
100
|
+
entry_type: "RULING" | "ADR" | "POLICY" | "SOP" | "STRATEGIC" | "REVIEW" | "NOTARY_STAMP";
|
|
101
|
+
source_mode: "PRODUCT" | "UX" | "RISK" | "ARCHITECT" | "TDD" | "SPRINT";
|
|
102
|
+
title: string;
|
|
103
|
+
output: string;
|
|
104
|
+
summary?: string | undefined;
|
|
105
|
+
input_excerpt?: string | undefined;
|
|
106
|
+
tags?: string[] | undefined;
|
|
107
|
+
project_id?: string | undefined;
|
|
108
|
+
artifact_hash?: string | undefined;
|
|
109
|
+
quality_metadata?: {
|
|
110
|
+
specificity_score: number;
|
|
111
|
+
rubric_version: string;
|
|
112
|
+
} | undefined;
|
|
113
|
+
stamp?: {
|
|
114
|
+
stamp_id: string;
|
|
115
|
+
ledger_ids: string[];
|
|
116
|
+
issued_at: string;
|
|
117
|
+
policy_hash: string;
|
|
118
|
+
signature: string;
|
|
119
|
+
} | undefined;
|
|
120
|
+
create_pattern?: {
|
|
121
|
+
name: string;
|
|
122
|
+
category: "COMPUTE" | "DATA" | "INTEGRATION" | "SECURITY" | "ASYNC";
|
|
123
|
+
blessed_solution: string;
|
|
124
|
+
rationale?: string | undefined;
|
|
125
|
+
anti_patterns?: string | undefined;
|
|
126
|
+
documentation_url?: string | undefined;
|
|
127
|
+
} | undefined;
|
|
128
|
+
}>, {
|
|
129
|
+
entry_type: "RULING" | "ADR" | "POLICY" | "SOP" | "STRATEGIC" | "REVIEW" | "NOTARY_STAMP";
|
|
130
|
+
source_mode: "PRODUCT" | "UX" | "RISK" | "ARCHITECT" | "TDD" | "SPRINT";
|
|
131
|
+
title: string;
|
|
132
|
+
output: string;
|
|
133
|
+
summary?: string | undefined;
|
|
134
|
+
input_excerpt?: string | undefined;
|
|
135
|
+
tags?: string[] | undefined;
|
|
136
|
+
project_id?: string | undefined;
|
|
137
|
+
artifact_hash?: string | undefined;
|
|
138
|
+
quality_metadata?: {
|
|
139
|
+
specificity_score: number;
|
|
140
|
+
rubric_version: string;
|
|
141
|
+
} | undefined;
|
|
142
|
+
stamp?: {
|
|
143
|
+
stamp_id: string;
|
|
144
|
+
ledger_ids: string[];
|
|
145
|
+
issued_at: string;
|
|
146
|
+
policy_hash: string;
|
|
147
|
+
signature: string;
|
|
148
|
+
} | undefined;
|
|
149
|
+
create_pattern?: {
|
|
150
|
+
name: string;
|
|
151
|
+
category: "COMPUTE" | "DATA" | "INTEGRATION" | "SECURITY" | "ASYNC";
|
|
152
|
+
blessed_solution: string;
|
|
153
|
+
rationale?: string | undefined;
|
|
154
|
+
anti_patterns?: string | undefined;
|
|
155
|
+
documentation_url?: string | undefined;
|
|
156
|
+
} | undefined;
|
|
157
|
+
}, {
|
|
158
|
+
entry_type: "RULING" | "ADR" | "POLICY" | "SOP" | "STRATEGIC" | "REVIEW" | "NOTARY_STAMP";
|
|
159
|
+
source_mode: "PRODUCT" | "UX" | "RISK" | "ARCHITECT" | "TDD" | "SPRINT";
|
|
160
|
+
title: string;
|
|
161
|
+
output: string;
|
|
162
|
+
summary?: string | undefined;
|
|
163
|
+
input_excerpt?: string | undefined;
|
|
164
|
+
tags?: string[] | undefined;
|
|
165
|
+
project_id?: string | undefined;
|
|
166
|
+
artifact_hash?: string | undefined;
|
|
167
|
+
quality_metadata?: {
|
|
168
|
+
specificity_score: number;
|
|
169
|
+
rubric_version: string;
|
|
170
|
+
} | undefined;
|
|
171
|
+
stamp?: {
|
|
172
|
+
stamp_id: string;
|
|
173
|
+
ledger_ids: string[];
|
|
174
|
+
issued_at: string;
|
|
175
|
+
policy_hash: string;
|
|
176
|
+
signature: string;
|
|
177
|
+
} | undefined;
|
|
178
|
+
create_pattern?: {
|
|
179
|
+
name: string;
|
|
180
|
+
category: "COMPUTE" | "DATA" | "INTEGRATION" | "SECURITY" | "ASYNC";
|
|
181
|
+
blessed_solution: string;
|
|
182
|
+
rationale?: string | undefined;
|
|
183
|
+
anti_patterns?: string | undefined;
|
|
184
|
+
documentation_url?: string | undefined;
|
|
185
|
+
} | undefined;
|
|
186
|
+
}>;
|
|
187
|
+
export declare const UpdateLedgerStatusSchema: z.ZodObject<{
|
|
188
|
+
status: z.ZodEnum<["ACTIVE", "SUPERSEDED", "ARCHIVED"]>;
|
|
189
|
+
}, "strip", z.ZodTypeAny, {
|
|
190
|
+
status: "ACTIVE" | "SUPERSEDED" | "ARCHIVED";
|
|
191
|
+
}, {
|
|
192
|
+
status: "ACTIVE" | "SUPERSEDED" | "ARCHIVED";
|
|
193
|
+
}>;
|
|
194
|
+
export declare const CreatePatternSchema: z.ZodObject<{
|
|
195
|
+
name: z.ZodString;
|
|
196
|
+
category: z.ZodEnum<["COMPUTE", "DATA", "INTEGRATION", "SECURITY", "ASYNC"]>;
|
|
197
|
+
blessed_solution: z.ZodString;
|
|
198
|
+
rationale: z.ZodOptional<z.ZodString>;
|
|
199
|
+
anti_patterns: z.ZodOptional<z.ZodString>;
|
|
200
|
+
documentation_url: z.ZodOptional<z.ZodString>;
|
|
201
|
+
related_ledger_id: z.ZodOptional<z.ZodString>;
|
|
202
|
+
project_id: z.ZodOptional<z.ZodString>;
|
|
203
|
+
}, "strip", z.ZodTypeAny, {
|
|
204
|
+
name: string;
|
|
205
|
+
category: "COMPUTE" | "DATA" | "INTEGRATION" | "SECURITY" | "ASYNC";
|
|
206
|
+
blessed_solution: string;
|
|
207
|
+
project_id?: string | undefined;
|
|
208
|
+
rationale?: string | undefined;
|
|
209
|
+
anti_patterns?: string | undefined;
|
|
210
|
+
documentation_url?: string | undefined;
|
|
211
|
+
related_ledger_id?: string | undefined;
|
|
212
|
+
}, {
|
|
213
|
+
name: string;
|
|
214
|
+
category: "COMPUTE" | "DATA" | "INTEGRATION" | "SECURITY" | "ASYNC";
|
|
215
|
+
blessed_solution: string;
|
|
216
|
+
project_id?: string | undefined;
|
|
217
|
+
rationale?: string | undefined;
|
|
218
|
+
anti_patterns?: string | undefined;
|
|
219
|
+
documentation_url?: string | undefined;
|
|
220
|
+
related_ledger_id?: string | undefined;
|
|
221
|
+
}>;
|
|
222
|
+
export declare const UpdatePatternSchema: z.ZodObject<{
|
|
223
|
+
name: z.ZodOptional<z.ZodString>;
|
|
224
|
+
blessed_solution: z.ZodOptional<z.ZodString>;
|
|
225
|
+
rationale: z.ZodOptional<z.ZodString>;
|
|
226
|
+
anti_patterns: z.ZodOptional<z.ZodString>;
|
|
227
|
+
documentation_url: z.ZodOptional<z.ZodString>;
|
|
228
|
+
status: z.ZodOptional<z.ZodEnum<["ACTIVE", "DEPRECATED", "EVALUATING"]>>;
|
|
229
|
+
}, "strip", z.ZodTypeAny, {
|
|
230
|
+
status?: "ACTIVE" | "DEPRECATED" | "EVALUATING" | undefined;
|
|
231
|
+
name?: string | undefined;
|
|
232
|
+
blessed_solution?: string | undefined;
|
|
233
|
+
rationale?: string | undefined;
|
|
234
|
+
anti_patterns?: string | undefined;
|
|
235
|
+
documentation_url?: string | undefined;
|
|
236
|
+
}, {
|
|
237
|
+
status?: "ACTIVE" | "DEPRECATED" | "EVALUATING" | undefined;
|
|
238
|
+
name?: string | undefined;
|
|
239
|
+
blessed_solution?: string | undefined;
|
|
240
|
+
rationale?: string | undefined;
|
|
241
|
+
anti_patterns?: string | undefined;
|
|
242
|
+
documentation_url?: string | undefined;
|
|
243
|
+
}>;
|
|
244
|
+
export declare const CreateProtocolSchema: z.ZodObject<{
|
|
245
|
+
title: z.ZodEffects<z.ZodString, string, string>;
|
|
246
|
+
description: z.ZodString;
|
|
247
|
+
content: z.ZodString;
|
|
248
|
+
project_id: z.ZodOptional<z.ZodString>;
|
|
249
|
+
}, "strip", z.ZodTypeAny, {
|
|
250
|
+
title: string;
|
|
251
|
+
description: string;
|
|
252
|
+
content: string;
|
|
253
|
+
project_id?: string | undefined;
|
|
254
|
+
}, {
|
|
255
|
+
title: string;
|
|
256
|
+
description: string;
|
|
257
|
+
content: string;
|
|
258
|
+
project_id?: string | undefined;
|
|
259
|
+
}>;
|
|
260
|
+
export declare const CreateGovernanceRequestSchema: z.ZodObject<{
|
|
261
|
+
title: z.ZodString;
|
|
262
|
+
description: z.ZodOptional<z.ZodString>;
|
|
263
|
+
request_type: z.ZodEnum<["FEATURE_APPROVAL", "ARCHITECTURE_REVIEW", "POLICY_QUESTION", "EXCEPTION_REQUEST", "TOOL_EVALUATION"]>;
|
|
264
|
+
domain: z.ZodEnum<["ARCHITECTURE", "DATA", "STANDARDS", "SECURITY", "STRATEGY"]>;
|
|
265
|
+
urgency: z.ZodDefault<z.ZodEnum<["LOW", "STANDARD", "ELEVATED", "CRITICAL"]>>;
|
|
266
|
+
complexity: z.ZodDefault<z.ZodEnum<["TRIVIAL", "SIMPLE", "MODERATE", "COMPLEX", "EPIC"]>>;
|
|
267
|
+
requester: z.ZodOptional<z.ZodString>;
|
|
268
|
+
project_id: z.ZodOptional<z.ZodString>;
|
|
269
|
+
}, "strip", z.ZodTypeAny, {
|
|
270
|
+
title: string;
|
|
271
|
+
request_type: "FEATURE_APPROVAL" | "ARCHITECTURE_REVIEW" | "POLICY_QUESTION" | "EXCEPTION_REQUEST" | "TOOL_EVALUATION";
|
|
272
|
+
domain: "DATA" | "SECURITY" | "ARCHITECTURE" | "STANDARDS" | "STRATEGY";
|
|
273
|
+
urgency: "LOW" | "STANDARD" | "ELEVATED" | "CRITICAL";
|
|
274
|
+
complexity: "TRIVIAL" | "SIMPLE" | "MODERATE" | "COMPLEX" | "EPIC";
|
|
275
|
+
project_id?: string | undefined;
|
|
276
|
+
description?: string | undefined;
|
|
277
|
+
requester?: string | undefined;
|
|
278
|
+
}, {
|
|
279
|
+
title: string;
|
|
280
|
+
request_type: "FEATURE_APPROVAL" | "ARCHITECTURE_REVIEW" | "POLICY_QUESTION" | "EXCEPTION_REQUEST" | "TOOL_EVALUATION";
|
|
281
|
+
domain: "DATA" | "SECURITY" | "ARCHITECTURE" | "STANDARDS" | "STRATEGY";
|
|
282
|
+
project_id?: string | undefined;
|
|
283
|
+
description?: string | undefined;
|
|
284
|
+
urgency?: "LOW" | "STANDARD" | "ELEVATED" | "CRITICAL" | undefined;
|
|
285
|
+
complexity?: "TRIVIAL" | "SIMPLE" | "MODERATE" | "COMPLEX" | "EPIC" | undefined;
|
|
286
|
+
requester?: string | undefined;
|
|
287
|
+
}>;
|
|
288
|
+
export declare const ResolveGovernanceRequestSchema: z.ZodObject<{
|
|
289
|
+
resolution_summary: z.ZodString;
|
|
290
|
+
resolution_ledger_id: z.ZodOptional<z.ZodString>;
|
|
291
|
+
}, "strip", z.ZodTypeAny, {
|
|
292
|
+
resolution_summary: string;
|
|
293
|
+
resolution_ledger_id?: string | undefined;
|
|
294
|
+
}, {
|
|
295
|
+
resolution_summary: string;
|
|
296
|
+
resolution_ledger_id?: string | undefined;
|
|
297
|
+
}>;
|
|
298
|
+
export declare const CreateProjectSchema: z.ZodObject<{
|
|
299
|
+
name: z.ZodEffects<z.ZodString, string, string>;
|
|
300
|
+
description: z.ZodOptional<z.ZodString>;
|
|
301
|
+
}, "strip", z.ZodTypeAny, {
|
|
302
|
+
name: string;
|
|
303
|
+
description?: string | undefined;
|
|
304
|
+
}, {
|
|
305
|
+
name: string;
|
|
306
|
+
description?: string | undefined;
|
|
307
|
+
}>;
|
|
308
|
+
export type CreateLedgerEntryRequest = z.infer<typeof CreateLedgerEntrySchema>;
|
|
309
|
+
export type UpdateLedgerStatusRequest = z.infer<typeof UpdateLedgerStatusSchema>;
|
|
310
|
+
export type CreatePatternRequest = z.infer<typeof CreatePatternSchema>;
|
|
311
|
+
export type UpdatePatternRequest = z.infer<typeof UpdatePatternSchema>;
|
|
312
|
+
export type CreateProtocolRequest = z.infer<typeof CreateProtocolSchema>;
|
|
313
|
+
export type CreateGovernanceRequestType = z.infer<typeof CreateGovernanceRequestSchema>;
|
|
314
|
+
export type ResolveGovernanceRequestType = z.infer<typeof ResolveGovernanceRequestSchema>;
|
|
315
|
+
export type CreateProjectRequest = z.infer<typeof CreateProjectSchema>;
|
|
316
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2ClC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;EAEnC,CAAC;AAMH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;EAO9B,CAAC;AAMH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAY/B,CAAC;AAMH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWxC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;EAGzC,CAAC;AAMH,eAAO,MAAM,mBAAmB;;;;;;;;;EAM9B,CAAC;AAMH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC/E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACjF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACvE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACvE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACzE,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACxF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAC1F,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
package/dist/schemas.js
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Zod validation schemas for Charter governance data.
|
|
4
|
+
*
|
|
5
|
+
* These schemas define the shape of governance artifacts (ledger entries,
|
|
6
|
+
* patterns, protocols, requests) and can be used for input validation
|
|
7
|
+
* in both Kit CLI and Cloud API contexts.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.CreateProjectSchema = exports.ResolveGovernanceRequestSchema = exports.CreateGovernanceRequestSchema = exports.CreateProtocolSchema = exports.UpdatePatternSchema = exports.CreatePatternSchema = exports.UpdateLedgerStatusSchema = exports.CreateLedgerEntrySchema = void 0;
|
|
11
|
+
const zod_1 = require("zod");
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Ledger Entry Schemas
|
|
14
|
+
// ============================================================================
|
|
15
|
+
exports.CreateLedgerEntrySchema = zod_1.z.object({
|
|
16
|
+
entry_type: zod_1.z.enum(['RULING', 'ADR', 'POLICY', 'SOP', 'STRATEGIC', 'REVIEW', 'NOTARY_STAMP']),
|
|
17
|
+
source_mode: zod_1.z.enum(['PRODUCT', 'UX', 'RISK', 'ARCHITECT', 'TDD', 'SPRINT']),
|
|
18
|
+
title: zod_1.z.string()
|
|
19
|
+
.min(5, "Title must be at least 5 characters")
|
|
20
|
+
.max(100, "Title must be at most 100 characters"),
|
|
21
|
+
summary: zod_1.z.string().max(500).optional(),
|
|
22
|
+
input_excerpt: zod_1.z.string().max(500).optional(),
|
|
23
|
+
output: zod_1.z.string().min(10, "Output must be at least 10 characters"),
|
|
24
|
+
tags: zod_1.z.array(zod_1.z.string()).optional(),
|
|
25
|
+
project_id: zod_1.z.string().optional(),
|
|
26
|
+
artifact_hash: zod_1.z.string().regex(/^sha256:[A-Fa-f0-9]{64}$/).optional(),
|
|
27
|
+
quality_metadata: zod_1.z.object({
|
|
28
|
+
specificity_score: zod_1.z.number().min(0).max(100),
|
|
29
|
+
rubric_version: zod_1.z.string().min(1)
|
|
30
|
+
}).optional(),
|
|
31
|
+
stamp: zod_1.z.object({
|
|
32
|
+
stamp_id: zod_1.z.string().min(1),
|
|
33
|
+
ledger_ids: zod_1.z.array(zod_1.z.string().uuid()).min(1),
|
|
34
|
+
issued_at: zod_1.z.string().min(1),
|
|
35
|
+
policy_hash: zod_1.z.string().regex(/^sha256:[A-Fa-f0-9]{64}$/),
|
|
36
|
+
signature: zod_1.z.string().min(8)
|
|
37
|
+
}).optional(),
|
|
38
|
+
create_pattern: zod_1.z.object({
|
|
39
|
+
name: zod_1.z.string().min(3).max(100),
|
|
40
|
+
category: zod_1.z.enum(['COMPUTE', 'DATA', 'INTEGRATION', 'SECURITY', 'ASYNC']),
|
|
41
|
+
blessed_solution: zod_1.z.string().min(5).max(200),
|
|
42
|
+
rationale: zod_1.z.string().max(1000).optional(),
|
|
43
|
+
anti_patterns: zod_1.z.string().max(500).optional(),
|
|
44
|
+
documentation_url: zod_1.z.string().url().optional()
|
|
45
|
+
}).optional()
|
|
46
|
+
}).superRefine((data, ctx) => {
|
|
47
|
+
if (data.entry_type === 'NOTARY_STAMP') {
|
|
48
|
+
if (!data.artifact_hash) {
|
|
49
|
+
ctx.addIssue({ code: zod_1.z.ZodIssueCode.custom, message: 'artifact_hash is required for NOTARY_STAMP' });
|
|
50
|
+
}
|
|
51
|
+
if (!data.quality_metadata) {
|
|
52
|
+
ctx.addIssue({ code: zod_1.z.ZodIssueCode.custom, message: 'quality_metadata is required for NOTARY_STAMP' });
|
|
53
|
+
}
|
|
54
|
+
if (!data.stamp) {
|
|
55
|
+
ctx.addIssue({ code: zod_1.z.ZodIssueCode.custom, message: 'stamp is required for NOTARY_STAMP' });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
exports.UpdateLedgerStatusSchema = zod_1.z.object({
|
|
60
|
+
status: zod_1.z.enum(['ACTIVE', 'SUPERSEDED', 'ARCHIVED'])
|
|
61
|
+
});
|
|
62
|
+
// ============================================================================
|
|
63
|
+
// Pattern Schemas
|
|
64
|
+
// ============================================================================
|
|
65
|
+
exports.CreatePatternSchema = zod_1.z.object({
|
|
66
|
+
name: zod_1.z.string().min(3).max(100),
|
|
67
|
+
category: zod_1.z.enum(['COMPUTE', 'DATA', 'INTEGRATION', 'SECURITY', 'ASYNC']),
|
|
68
|
+
blessed_solution: zod_1.z.string().min(5).max(200),
|
|
69
|
+
rationale: zod_1.z.string().max(1000).optional(),
|
|
70
|
+
anti_patterns: zod_1.z.string().max(500).optional(),
|
|
71
|
+
documentation_url: zod_1.z.string().url().optional(),
|
|
72
|
+
related_ledger_id: zod_1.z.string().uuid().optional(),
|
|
73
|
+
project_id: zod_1.z.string().optional()
|
|
74
|
+
});
|
|
75
|
+
exports.UpdatePatternSchema = zod_1.z.object({
|
|
76
|
+
name: zod_1.z.string().min(3).max(100).optional(),
|
|
77
|
+
blessed_solution: zod_1.z.string().min(5).max(200).optional(),
|
|
78
|
+
rationale: zod_1.z.string().max(1000).optional(),
|
|
79
|
+
anti_patterns: zod_1.z.string().max(500).optional(),
|
|
80
|
+
documentation_url: zod_1.z.string().url().optional(),
|
|
81
|
+
status: zod_1.z.enum(['ACTIVE', 'DEPRECATED', 'EVALUATING']).optional()
|
|
82
|
+
});
|
|
83
|
+
// ============================================================================
|
|
84
|
+
// Protocol Schemas
|
|
85
|
+
// ============================================================================
|
|
86
|
+
exports.CreateProtocolSchema = zod_1.z.object({
|
|
87
|
+
title: zod_1.z.string()
|
|
88
|
+
.min(3, "Title must be at least 3 characters")
|
|
89
|
+
.max(40, "Title must be at most 40 characters")
|
|
90
|
+
.transform(s => s.toUpperCase()),
|
|
91
|
+
description: zod_1.z.string()
|
|
92
|
+
.min(10, "Description must be at least 10 characters")
|
|
93
|
+
.max(120, "Description must be at most 120 characters"),
|
|
94
|
+
content: zod_1.z.string()
|
|
95
|
+
.min(20, "Content must be at least 20 characters")
|
|
96
|
+
.max(10000, "Content must be at most 10000 characters"),
|
|
97
|
+
project_id: zod_1.z.string().optional()
|
|
98
|
+
});
|
|
99
|
+
// ============================================================================
|
|
100
|
+
// Governance Request Schemas
|
|
101
|
+
// ============================================================================
|
|
102
|
+
exports.CreateGovernanceRequestSchema = zod_1.z.object({
|
|
103
|
+
title: zod_1.z.string()
|
|
104
|
+
.min(5, "Title must be at least 5 characters")
|
|
105
|
+
.max(150, "Title must be at most 150 characters"),
|
|
106
|
+
description: zod_1.z.string().max(2000).optional(),
|
|
107
|
+
request_type: zod_1.z.enum(['FEATURE_APPROVAL', 'ARCHITECTURE_REVIEW', 'POLICY_QUESTION', 'EXCEPTION_REQUEST', 'TOOL_EVALUATION']),
|
|
108
|
+
domain: zod_1.z.enum(['ARCHITECTURE', 'DATA', 'STANDARDS', 'SECURITY', 'STRATEGY']),
|
|
109
|
+
urgency: zod_1.z.enum(['LOW', 'STANDARD', 'ELEVATED', 'CRITICAL']).default('STANDARD'),
|
|
110
|
+
complexity: zod_1.z.enum(['TRIVIAL', 'SIMPLE', 'MODERATE', 'COMPLEX', 'EPIC']).default('MODERATE'),
|
|
111
|
+
requester: zod_1.z.string().max(100).optional(),
|
|
112
|
+
project_id: zod_1.z.string().optional()
|
|
113
|
+
});
|
|
114
|
+
exports.ResolveGovernanceRequestSchema = zod_1.z.object({
|
|
115
|
+
resolution_summary: zod_1.z.string().min(10).max(500),
|
|
116
|
+
resolution_ledger_id: zod_1.z.string().uuid().optional()
|
|
117
|
+
});
|
|
118
|
+
// ============================================================================
|
|
119
|
+
// Project Schemas
|
|
120
|
+
// ============================================================================
|
|
121
|
+
exports.CreateProjectSchema = zod_1.z.object({
|
|
122
|
+
name: zod_1.z.string()
|
|
123
|
+
.min(2, "Project name must be at least 2 characters")
|
|
124
|
+
.max(50, "Project name must be at most 50 characters")
|
|
125
|
+
.transform(s => s.toUpperCase().replace(/\s+/g, '_')),
|
|
126
|
+
description: zod_1.z.string().max(500).optional()
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@stackbilt/core",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Core schemas, sanitization, and error handling for Charter Kit",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"README.md",
|
|
16
|
+
"LICENSE"
|
|
17
|
+
],
|
|
18
|
+
"engines": {
|
|
19
|
+
"node": ">=18.0.0"
|
|
20
|
+
},
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "https://github.com/Stackbilt-dev/charter.git",
|
|
24
|
+
"directory": "packages/core"
|
|
25
|
+
},
|
|
26
|
+
"bugs": {
|
|
27
|
+
"url": "https://github.com/Stackbilt-dev/charter/issues"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://github.com/Stackbilt-dev/charter#readme",
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"zod": "^3.24.1"
|
|
32
|
+
},
|
|
33
|
+
"license": "Apache-2.0"
|
|
34
|
+
}
|