@getanima/core 0.2.4 → 0.3.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.
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Input validation & sanitization for Anima SDK.
3
+ *
4
+ * Every public method should validate inputs before processing.
5
+ * Fail fast, fail loud — don't silently accept garbage data.
6
+ */
7
+ export declare const LIMITS: {
8
+ /** Max length for a single memory content field */
9
+ readonly MAX_MEMORY_CONTENT: 50000;
10
+ /** Max length for a single note */
11
+ readonly MAX_NOTE_LENGTH: 10000;
12
+ /** Max length for a name field */
13
+ readonly MAX_NAME_LENGTH: 200;
14
+ /** Max length for a topic field */
15
+ readonly MAX_TOPIC_LENGTH: 500;
16
+ /** Max length for an opinion */
17
+ readonly MAX_OPINION_LENGTH: 10000;
18
+ /** Max number of tags per memory */
19
+ readonly MAX_TAGS: 50;
20
+ /** Max length of a single tag */
21
+ readonly MAX_TAG_LENGTH: 100;
22
+ /** Max number of notes per relationship */
23
+ readonly MAX_NOTES_PER_RELATIONSHIP: 1000;
24
+ /** Max number of preferences per relationship */
25
+ readonly MAX_PREFERENCES: 100;
26
+ /** Max number of relationships */
27
+ readonly MAX_RELATIONSHIPS: 10000;
28
+ /** Max number of memories in index */
29
+ readonly MAX_MEMORIES: 100000;
30
+ /** Max number of opinions */
31
+ readonly MAX_OPINIONS: 5000;
32
+ };
33
+ export declare class AnimaValidationError extends Error {
34
+ readonly field: string;
35
+ readonly constraint: string;
36
+ constructor(field: string, constraint: string);
37
+ }
38
+ /** Validate a required string field is non-empty and within length */
39
+ export declare function validateString(value: unknown, field: string, opts?: {
40
+ maxLength?: number;
41
+ minLength?: number;
42
+ required?: boolean;
43
+ }): string;
44
+ /** Validate an optional string — returns undefined if not provided */
45
+ export declare function validateOptionalString(value: unknown, field: string, maxLength: number): string | undefined;
46
+ /** Validate a number is within range */
47
+ export declare function validateNumber(value: unknown, field: string, opts?: {
48
+ min?: number;
49
+ max?: number;
50
+ required?: boolean;
51
+ }): number;
52
+ /** Validate a string array with per-item and total limits */
53
+ export declare function validateStringArray(value: unknown, field: string, opts?: {
54
+ maxItems?: number;
55
+ maxItemLength?: number;
56
+ required?: boolean;
57
+ }): string[];
58
+ /**
59
+ * Validate and sanitize a storage path.
60
+ *
61
+ * Prevents:
62
+ * - Path traversal (../../etc/passwd)
63
+ * - Null bytes
64
+ * - Paths outside the resolved directory
65
+ */
66
+ export declare function validateStoragePath(storagePath: string): string;
67
+ /**
68
+ * Ensure a sub-path stays within the base directory.
69
+ * Use this when constructing paths from user-provided segments.
70
+ */
71
+ export declare function validateSubPath(basePath: string, subPath: string): string;
72
+ /** Validate a value is one of the allowed options */
73
+ export declare function validateEnum<T extends string>(value: unknown, field: string, allowed: readonly T[], defaultValue?: T): T;
74
+ /** Validate confidence score: must be 0-1 */
75
+ export declare function validateConfidence(value: unknown, field?: string): number;
76
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,eAAO,MAAM,MAAM;IACjB,mDAAmD;;IAEnD,mCAAmC;;IAEnC,kCAAkC;;IAElC,mCAAmC;;IAEnC,gCAAgC;;IAEhC,oCAAoC;;IAEpC,iCAAiC;;IAEjC,2CAA2C;;IAE3C,iDAAiD;;IAEjD,kCAAkC;;IAElC,sCAAsC;;IAEtC,6BAA6B;;CAErB,CAAC;AAIX,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAM9C;AAID,sEAAsE;AACtE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACxE,MAAM,CAuBR;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAGpB;AAID,wCAAwC;AACxC,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5D,MAAM,CAiBR;AAID,6DAA6D;AAC7D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3E,MAAM,EAAE,CAyBV;AAID;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAmB/D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMzE;AAID,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,YAAY,CAAC,EAAE,CAAC,GACf,CAAC,CAWH;AAID,6CAA6C;AAC7C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAe,GAAG,MAAM,CAE/E"}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ /**
3
+ * Input validation & sanitization for Anima SDK.
4
+ *
5
+ * Every public method should validate inputs before processing.
6
+ * Fail fast, fail loud — don't silently accept garbage data.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AnimaValidationError = exports.LIMITS = void 0;
10
+ exports.validateString = validateString;
11
+ exports.validateOptionalString = validateOptionalString;
12
+ exports.validateNumber = validateNumber;
13
+ exports.validateStringArray = validateStringArray;
14
+ exports.validateStoragePath = validateStoragePath;
15
+ exports.validateSubPath = validateSubPath;
16
+ exports.validateEnum = validateEnum;
17
+ exports.validateConfidence = validateConfidence;
18
+ const path_1 = require("path");
19
+ // ============ LIMITS ============
20
+ exports.LIMITS = {
21
+ /** Max length for a single memory content field */
22
+ MAX_MEMORY_CONTENT: 50_000, // 50KB — generous but not absurd
23
+ /** Max length for a single note */
24
+ MAX_NOTE_LENGTH: 10_000, // 10KB
25
+ /** Max length for a name field */
26
+ MAX_NAME_LENGTH: 200,
27
+ /** Max length for a topic field */
28
+ MAX_TOPIC_LENGTH: 500,
29
+ /** Max length for an opinion */
30
+ MAX_OPINION_LENGTH: 10_000,
31
+ /** Max number of tags per memory */
32
+ MAX_TAGS: 50,
33
+ /** Max length of a single tag */
34
+ MAX_TAG_LENGTH: 100,
35
+ /** Max number of notes per relationship */
36
+ MAX_NOTES_PER_RELATIONSHIP: 1000,
37
+ /** Max number of preferences per relationship */
38
+ MAX_PREFERENCES: 100,
39
+ /** Max number of relationships */
40
+ MAX_RELATIONSHIPS: 10_000,
41
+ /** Max number of memories in index */
42
+ MAX_MEMORIES: 100_000,
43
+ /** Max number of opinions */
44
+ MAX_OPINIONS: 5_000,
45
+ };
46
+ // ============ ERRORS ============
47
+ class AnimaValidationError extends Error {
48
+ field;
49
+ constraint;
50
+ constructor(field, constraint) {
51
+ super(`Validation failed: ${field} — ${constraint}`);
52
+ this.name = 'AnimaValidationError';
53
+ this.field = field;
54
+ this.constraint = constraint;
55
+ }
56
+ }
57
+ exports.AnimaValidationError = AnimaValidationError;
58
+ // ============ STRING VALIDATORS ============
59
+ /** Validate a required string field is non-empty and within length */
60
+ function validateString(value, field, opts = {}) {
61
+ const { maxLength, minLength = 1, required = true } = opts;
62
+ if (value === undefined || value === null) {
63
+ if (required)
64
+ throw new AnimaValidationError(field, 'is required');
65
+ return '';
66
+ }
67
+ if (typeof value !== 'string') {
68
+ throw new AnimaValidationError(field, 'must be a string');
69
+ }
70
+ const trimmed = value.trim();
71
+ if (required && trimmed.length < minLength) {
72
+ throw new AnimaValidationError(field, `must be at least ${minLength} character(s), got ${trimmed.length}`);
73
+ }
74
+ if (maxLength && trimmed.length > maxLength) {
75
+ throw new AnimaValidationError(field, `must be at most ${maxLength} characters, got ${trimmed.length}`);
76
+ }
77
+ return trimmed;
78
+ }
79
+ /** Validate an optional string — returns undefined if not provided */
80
+ function validateOptionalString(value, field, maxLength) {
81
+ if (value === undefined || value === null)
82
+ return undefined;
83
+ return validateString(value, field, { maxLength, required: false });
84
+ }
85
+ // ============ NUMBER VALIDATORS ============
86
+ /** Validate a number is within range */
87
+ function validateNumber(value, field, opts = {}) {
88
+ const { min = -Infinity, max = Infinity, required = true } = opts;
89
+ if (value === undefined || value === null) {
90
+ if (required)
91
+ throw new AnimaValidationError(field, 'is required');
92
+ return 0;
93
+ }
94
+ if (typeof value !== 'number' || isNaN(value) || !isFinite(value)) {
95
+ throw new AnimaValidationError(field, 'must be a finite number');
96
+ }
97
+ if (value < min || value > max) {
98
+ throw new AnimaValidationError(field, `must be between ${min} and ${max}, got ${value}`);
99
+ }
100
+ return value;
101
+ }
102
+ // ============ ARRAY VALIDATORS ============
103
+ /** Validate a string array with per-item and total limits */
104
+ function validateStringArray(value, field, opts = {}) {
105
+ const { maxItems = 100, maxItemLength = 500, required = false } = opts;
106
+ if (value === undefined || value === null) {
107
+ if (required)
108
+ throw new AnimaValidationError(field, 'is required');
109
+ return [];
110
+ }
111
+ if (!Array.isArray(value)) {
112
+ throw new AnimaValidationError(field, 'must be an array');
113
+ }
114
+ if (value.length > maxItems) {
115
+ throw new AnimaValidationError(field, `must have at most ${maxItems} items, got ${value.length}`);
116
+ }
117
+ return value.map((item, i) => {
118
+ if (typeof item !== 'string') {
119
+ throw new AnimaValidationError(`${field}[${i}]`, 'must be a string');
120
+ }
121
+ if (item.length > maxItemLength) {
122
+ throw new AnimaValidationError(`${field}[${i}]`, `must be at most ${maxItemLength} characters`);
123
+ }
124
+ return item;
125
+ });
126
+ }
127
+ // ============ PATH VALIDATION ============
128
+ /**
129
+ * Validate and sanitize a storage path.
130
+ *
131
+ * Prevents:
132
+ * - Path traversal (../../etc/passwd)
133
+ * - Null bytes
134
+ * - Paths outside the resolved directory
135
+ */
136
+ function validateStoragePath(storagePath) {
137
+ if (!storagePath || typeof storagePath !== 'string') {
138
+ throw new AnimaValidationError('storagePath', 'is required and must be a non-empty string');
139
+ }
140
+ // Reject null bytes (used in path traversal attacks)
141
+ if (storagePath.includes('\0')) {
142
+ throw new AnimaValidationError('storagePath', 'must not contain null bytes');
143
+ }
144
+ // Resolve to absolute path and normalize
145
+ const resolved = (0, path_1.resolve)((0, path_1.normalize)(storagePath));
146
+ // On Windows, reject UNC paths unless explicitly a local drive
147
+ if (process.platform === 'win32' && resolved.startsWith('\\\\')) {
148
+ throw new AnimaValidationError('storagePath', 'UNC paths are not supported');
149
+ }
150
+ return resolved;
151
+ }
152
+ /**
153
+ * Ensure a sub-path stays within the base directory.
154
+ * Use this when constructing paths from user-provided segments.
155
+ */
156
+ function validateSubPath(basePath, subPath) {
157
+ const resolved = (0, path_1.resolve)(basePath, (0, path_1.normalize)(subPath));
158
+ if (!resolved.startsWith((0, path_1.resolve)(basePath))) {
159
+ throw new AnimaValidationError('path', `traversal detected: ${subPath} escapes ${basePath}`);
160
+ }
161
+ return resolved;
162
+ }
163
+ // ============ ENUM VALIDATORS ============
164
+ /** Validate a value is one of the allowed options */
165
+ function validateEnum(value, field, allowed, defaultValue) {
166
+ if (value === undefined || value === null) {
167
+ if (defaultValue !== undefined)
168
+ return defaultValue;
169
+ throw new AnimaValidationError(field, `is required, must be one of: ${allowed.join(', ')}`);
170
+ }
171
+ if (!allowed.includes(value)) {
172
+ throw new AnimaValidationError(field, `must be one of: ${allowed.join(', ')}, got "${value}"`);
173
+ }
174
+ return value;
175
+ }
176
+ // ============ CONFIDENCE VALIDATOR ============
177
+ /** Validate confidence score: must be 0-1 */
178
+ function validateConfidence(value, field = 'confidence') {
179
+ return validateNumber(value, field, { min: 0, max: 1, required: true });
180
+ }
181
+ //# 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getanima/core",
3
- "version": "0.2.4",
3
+ "version": "0.3.1",
4
4
  "description": "Identity and memory infrastructure for AI agents",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/esm/index.js",