@ordis-dev/ordis 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.
Files changed (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +192 -0
  3. package/dist/__tests__/api.test.d.ts +5 -0
  4. package/dist/__tests__/api.test.d.ts.map +1 -0
  5. package/dist/__tests__/api.test.js +95 -0
  6. package/dist/__tests__/api.test.js.map +1 -0
  7. package/dist/__tests__/cli.test.d.ts +6 -0
  8. package/dist/__tests__/cli.test.d.ts.map +1 -0
  9. package/dist/__tests__/cli.test.js +103 -0
  10. package/dist/__tests__/cli.test.js.map +1 -0
  11. package/dist/cli/__tests__/cli.test.d.ts +5 -0
  12. package/dist/cli/__tests__/cli.test.d.ts.map +1 -0
  13. package/dist/cli/__tests__/cli.test.js +13 -0
  14. package/dist/cli/__tests__/cli.test.js.map +1 -0
  15. package/dist/cli.d.ts +7 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +225 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/core/__tests__/pipeline.test.d.ts +5 -0
  20. package/dist/core/__tests__/pipeline.test.d.ts.map +1 -0
  21. package/dist/core/__tests__/pipeline.test.js +334 -0
  22. package/dist/core/__tests__/pipeline.test.js.map +1 -0
  23. package/dist/core/__tests__/validator.test.d.ts +5 -0
  24. package/dist/core/__tests__/validator.test.d.ts.map +1 -0
  25. package/dist/core/__tests__/validator.test.js +124 -0
  26. package/dist/core/__tests__/validator.test.js.map +1 -0
  27. package/dist/core/errors.d.ts +27 -0
  28. package/dist/core/errors.d.ts.map +1 -0
  29. package/dist/core/errors.js +35 -0
  30. package/dist/core/errors.js.map +1 -0
  31. package/dist/core/index.d.ts +8 -0
  32. package/dist/core/index.d.ts.map +1 -0
  33. package/dist/core/index.js +7 -0
  34. package/dist/core/index.js.map +1 -0
  35. package/dist/core/pipeline.d.ts +28 -0
  36. package/dist/core/pipeline.d.ts.map +1 -0
  37. package/dist/core/pipeline.js +212 -0
  38. package/dist/core/pipeline.js.map +1 -0
  39. package/dist/core/types.d.ts +55 -0
  40. package/dist/core/types.d.ts.map +1 -0
  41. package/dist/core/types.js +5 -0
  42. package/dist/core/types.js.map +1 -0
  43. package/dist/core/validator.d.ts +19 -0
  44. package/dist/core/validator.d.ts.map +1 -0
  45. package/dist/core/validator.js +147 -0
  46. package/dist/core/validator.js.map +1 -0
  47. package/dist/index.d.ts +19 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +18 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/llm/__tests__/client.test.d.ts +5 -0
  52. package/dist/llm/__tests__/client.test.d.ts.map +1 -0
  53. package/dist/llm/__tests__/client.test.js +350 -0
  54. package/dist/llm/__tests__/client.test.js.map +1 -0
  55. package/dist/llm/__tests__/prompt-builder.test.d.ts +5 -0
  56. package/dist/llm/__tests__/prompt-builder.test.d.ts.map +1 -0
  57. package/dist/llm/__tests__/prompt-builder.test.js +171 -0
  58. package/dist/llm/__tests__/prompt-builder.test.js.map +1 -0
  59. package/dist/llm/__tests__/retry.test.d.ts +5 -0
  60. package/dist/llm/__tests__/retry.test.d.ts.map +1 -0
  61. package/dist/llm/__tests__/retry.test.js +350 -0
  62. package/dist/llm/__tests__/retry.test.js.map +1 -0
  63. package/dist/llm/__tests__/token-counter.test.d.ts +5 -0
  64. package/dist/llm/__tests__/token-counter.test.d.ts.map +1 -0
  65. package/dist/llm/__tests__/token-counter.test.js +166 -0
  66. package/dist/llm/__tests__/token-counter.test.js.map +1 -0
  67. package/dist/llm/client.d.ts +56 -0
  68. package/dist/llm/client.d.ts.map +1 -0
  69. package/dist/llm/client.js +266 -0
  70. package/dist/llm/client.js.map +1 -0
  71. package/dist/llm/errors.d.ts +27 -0
  72. package/dist/llm/errors.d.ts.map +1 -0
  73. package/dist/llm/errors.js +35 -0
  74. package/dist/llm/errors.js.map +1 -0
  75. package/dist/llm/index.d.ts +10 -0
  76. package/dist/llm/index.d.ts.map +1 -0
  77. package/dist/llm/index.js +8 -0
  78. package/dist/llm/index.js.map +1 -0
  79. package/dist/llm/prompt-builder.d.ts +13 -0
  80. package/dist/llm/prompt-builder.d.ts.map +1 -0
  81. package/dist/llm/prompt-builder.js +107 -0
  82. package/dist/llm/prompt-builder.js.map +1 -0
  83. package/dist/llm/token-counter.d.ts +82 -0
  84. package/dist/llm/token-counter.d.ts.map +1 -0
  85. package/dist/llm/token-counter.js +109 -0
  86. package/dist/llm/token-counter.js.map +1 -0
  87. package/dist/llm/types.d.ts +96 -0
  88. package/dist/llm/types.d.ts.map +1 -0
  89. package/dist/llm/types.js +5 -0
  90. package/dist/llm/types.js.map +1 -0
  91. package/dist/schemas/__tests__/integration.test.d.ts +5 -0
  92. package/dist/schemas/__tests__/integration.test.d.ts.map +1 -0
  93. package/dist/schemas/__tests__/integration.test.js +366 -0
  94. package/dist/schemas/__tests__/integration.test.js.map +1 -0
  95. package/dist/schemas/__tests__/loader.test.d.ts +5 -0
  96. package/dist/schemas/__tests__/loader.test.d.ts.map +1 -0
  97. package/dist/schemas/__tests__/loader.test.js +271 -0
  98. package/dist/schemas/__tests__/loader.test.js.map +1 -0
  99. package/dist/schemas/__tests__/validator.test.d.ts +5 -0
  100. package/dist/schemas/__tests__/validator.test.d.ts.map +1 -0
  101. package/dist/schemas/__tests__/validator.test.js +592 -0
  102. package/dist/schemas/__tests__/validator.test.js.map +1 -0
  103. package/dist/schemas/errors.d.ts +38 -0
  104. package/dist/schemas/errors.d.ts.map +1 -0
  105. package/dist/schemas/errors.js +49 -0
  106. package/dist/schemas/errors.js.map +1 -0
  107. package/dist/schemas/index.d.ts +8 -0
  108. package/dist/schemas/index.d.ts.map +1 -0
  109. package/dist/schemas/index.js +7 -0
  110. package/dist/schemas/index.js.map +1 -0
  111. package/dist/schemas/loader.d.ts +29 -0
  112. package/dist/schemas/loader.d.ts.map +1 -0
  113. package/dist/schemas/loader.js +71 -0
  114. package/dist/schemas/loader.js.map +1 -0
  115. package/dist/schemas/types.d.ts +75 -0
  116. package/dist/schemas/types.d.ts.map +1 -0
  117. package/dist/schemas/types.js +7 -0
  118. package/dist/schemas/types.js.map +1 -0
  119. package/dist/schemas/validator.d.ts +12 -0
  120. package/dist/schemas/validator.d.ts.map +1 -0
  121. package/dist/schemas/validator.js +211 -0
  122. package/dist/schemas/validator.js.map +1 -0
  123. package/package.json +60 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Schema validation errors and error codes
3
+ */
4
+ export declare const ErrorCodes: {
5
+ readonly INVALID_JSON: "INVALID_JSON";
6
+ readonly MISSING_FIELDS: "MISSING_FIELDS";
7
+ readonly INVALID_FIELD_TYPE: "INVALID_FIELD_TYPE";
8
+ readonly INVALID_FIELD_NAME: "INVALID_FIELD_NAME";
9
+ readonly INVALID_ENUM_VALUE: "INVALID_ENUM_VALUE";
10
+ readonly INVALID_CONSTRAINT: "INVALID_CONSTRAINT";
11
+ readonly MISSING_ENUM_VALUES: "MISSING_ENUM_VALUES";
12
+ readonly EMPTY_ENUM_VALUES: "EMPTY_ENUM_VALUES";
13
+ readonly INVALID_PATTERN: "INVALID_PATTERN";
14
+ readonly CONSTRAINT_MISMATCH: "CONSTRAINT_MISMATCH";
15
+ readonly DUPLICATE_ENUM_VALUE: "DUPLICATE_ENUM_VALUE";
16
+ readonly CONFIDENCE_BELOW_THRESHOLD: "CONFIDENCE_BELOW_THRESHOLD";
17
+ readonly INVALID_CONFIDENCE_CONFIG: "INVALID_CONFIDENCE_CONFIG";
18
+ readonly MISSING_CONFIDENCE_SCORE: "MISSING_CONFIDENCE_SCORE";
19
+ readonly INVALID_CONFIDENCE_SCORE: "INVALID_CONFIDENCE_SCORE";
20
+ };
21
+ export type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes];
22
+ /**
23
+ * Custom error class for schema validation errors
24
+ */
25
+ export declare class SchemaValidationError extends Error {
26
+ code: ErrorCode;
27
+ field?: string | undefined;
28
+ details?: Record<string, unknown> | undefined;
29
+ constructor(message: string, code: ErrorCode, field?: string | undefined, details?: Record<string, unknown> | undefined);
30
+ toJSON(): {
31
+ name: string;
32
+ message: string;
33
+ code: ErrorCode;
34
+ field: string | undefined;
35
+ details: Record<string, unknown> | undefined;
36
+ };
37
+ }
38
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/schemas/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;CAqBb,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAErE;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAGrC,IAAI,EAAE,SAAS;IACf,KAAK,CAAC,EAAE,MAAM;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAHxC,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,SAAS,EACf,KAAK,CAAC,EAAE,MAAM,YAAA,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;IAO1C,MAAM;;;;;;;CASP"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Schema validation errors and error codes
3
+ */
4
+ export const ErrorCodes = {
5
+ // Schema structure errors
6
+ INVALID_JSON: 'INVALID_JSON',
7
+ MISSING_FIELDS: 'MISSING_FIELDS',
8
+ INVALID_FIELD_TYPE: 'INVALID_FIELD_TYPE',
9
+ INVALID_FIELD_NAME: 'INVALID_FIELD_NAME',
10
+ // Field constraint errors
11
+ INVALID_ENUM_VALUE: 'INVALID_ENUM_VALUE',
12
+ INVALID_CONSTRAINT: 'INVALID_CONSTRAINT',
13
+ MISSING_ENUM_VALUES: 'MISSING_ENUM_VALUES',
14
+ EMPTY_ENUM_VALUES: 'EMPTY_ENUM_VALUES',
15
+ INVALID_PATTERN: 'INVALID_PATTERN',
16
+ CONSTRAINT_MISMATCH: 'CONSTRAINT_MISMATCH',
17
+ DUPLICATE_ENUM_VALUE: 'DUPLICATE_ENUM_VALUE',
18
+ // Confidence-related errors
19
+ CONFIDENCE_BELOW_THRESHOLD: 'CONFIDENCE_BELOW_THRESHOLD',
20
+ INVALID_CONFIDENCE_CONFIG: 'INVALID_CONFIDENCE_CONFIG',
21
+ MISSING_CONFIDENCE_SCORE: 'MISSING_CONFIDENCE_SCORE',
22
+ INVALID_CONFIDENCE_SCORE: 'INVALID_CONFIDENCE_SCORE',
23
+ };
24
+ /**
25
+ * Custom error class for schema validation errors
26
+ */
27
+ export class SchemaValidationError extends Error {
28
+ code;
29
+ field;
30
+ details;
31
+ constructor(message, code, field, details) {
32
+ super(message);
33
+ this.code = code;
34
+ this.field = field;
35
+ this.details = details;
36
+ this.name = 'SchemaValidationError';
37
+ Object.setPrototypeOf(this, SchemaValidationError.prototype);
38
+ }
39
+ toJSON() {
40
+ return {
41
+ name: this.name,
42
+ message: this.message,
43
+ code: this.code,
44
+ field: this.field,
45
+ details: this.details,
46
+ };
47
+ }
48
+ }
49
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/schemas/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,0BAA0B;IAC1B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IAExC,0BAA0B;IAC1B,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,sBAAsB;IAE5C,4BAA4B;IAC5B,0BAA0B,EAAE,4BAA4B;IACxD,yBAAyB,EAAE,2BAA2B;IACtD,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;CAC5C,CAAC;AAIX;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAGrC;IACA;IACA;IAJT,YACE,OAAe,EACR,IAAe,EACf,KAAc,EACd,OAAiC;QAExC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAW;QACf,UAAK,GAAL,KAAK,CAAS;QACd,YAAO,GAAP,OAAO,CAA0B;QAGxC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Schema module exports
3
+ */
4
+ export { loadSchema, parseSchema, loadSchemaFromObject } from './loader.js';
5
+ export { validateSchema } from './validator.js';
6
+ export { SchemaValidationError, ErrorCodes } from './errors.js';
7
+ export type { Schema, FieldDefinition, FieldType, ValidationError, ValidationResult } from './types.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAChE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Schema module exports
3
+ */
4
+ export { loadSchema, parseSchema, loadSchemaFromObject } from './loader.js';
5
+ export { validateSchema } from './validator.js';
6
+ export { SchemaValidationError, ErrorCodes } from './errors.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Schema loader - loads and parses schema files
3
+ */
4
+ import type { Schema } from './types.js';
5
+ /**
6
+ * Loads a schema from a file path
7
+ *
8
+ * @param filePath - Path to the schema JSON file
9
+ * @returns Validated schema object
10
+ * @throws {SchemaValidationError} If the file cannot be read or schema is invalid
11
+ */
12
+ export declare function loadSchema(filePath: string): Promise<Schema>;
13
+ /**
14
+ * Parses a schema from a JSON string
15
+ *
16
+ * @param jsonString - JSON string containing the schema
17
+ * @returns Validated schema object
18
+ * @throws {SchemaValidationError} If the JSON is invalid or schema is malformed
19
+ */
20
+ export declare function parseSchema(jsonString: string): Schema;
21
+ /**
22
+ * Loads a schema from an object (useful for testing or programmatic usage)
23
+ *
24
+ * @param obj - Schema object
25
+ * @returns Validated schema object
26
+ * @throws {SchemaValidationError} If the schema is invalid
27
+ */
28
+ export declare function loadSchemaFromObject(obj: unknown): Schema;
29
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/schemas/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIzC;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2ClE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CActD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAGzD"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Schema loader - loads and parses schema files
3
+ */
4
+ import * as fs from 'fs/promises';
5
+ import { validateSchema } from './validator.js';
6
+ import { SchemaValidationError, ErrorCodes } from './errors.js';
7
+ /**
8
+ * Loads a schema from a file path
9
+ *
10
+ * @param filePath - Path to the schema JSON file
11
+ * @returns Validated schema object
12
+ * @throws {SchemaValidationError} If the file cannot be read or schema is invalid
13
+ */
14
+ export async function loadSchema(filePath) {
15
+ try {
16
+ // Check if file exists and is readable
17
+ await fs.access(filePath, fs.constants.R_OK);
18
+ }
19
+ catch (error) {
20
+ throw new SchemaValidationError(`Cannot read schema file: ${filePath}`, ErrorCodes.INVALID_JSON, undefined, { filePath, error: error.message });
21
+ }
22
+ // Read file content
23
+ let content;
24
+ try {
25
+ content = await fs.readFile(filePath, 'utf-8');
26
+ }
27
+ catch (error) {
28
+ throw new SchemaValidationError(`Failed to read schema file: ${error.message}`, ErrorCodes.INVALID_JSON, undefined, { filePath });
29
+ }
30
+ // Parse JSON
31
+ let schema;
32
+ try {
33
+ schema = JSON.parse(content);
34
+ }
35
+ catch (error) {
36
+ throw new SchemaValidationError(`Invalid JSON in schema file: ${error.message}`, ErrorCodes.INVALID_JSON, undefined, { filePath });
37
+ }
38
+ // Validate schema structure
39
+ validateSchema(schema);
40
+ return schema;
41
+ }
42
+ /**
43
+ * Parses a schema from a JSON string
44
+ *
45
+ * @param jsonString - JSON string containing the schema
46
+ * @returns Validated schema object
47
+ * @throws {SchemaValidationError} If the JSON is invalid or schema is malformed
48
+ */
49
+ export function parseSchema(jsonString) {
50
+ let schema;
51
+ try {
52
+ schema = JSON.parse(jsonString);
53
+ }
54
+ catch (error) {
55
+ throw new SchemaValidationError(`Invalid JSON: ${error.message}`, ErrorCodes.INVALID_JSON);
56
+ }
57
+ validateSchema(schema);
58
+ return schema;
59
+ }
60
+ /**
61
+ * Loads a schema from an object (useful for testing or programmatic usage)
62
+ *
63
+ * @param obj - Schema object
64
+ * @returns Validated schema object
65
+ * @throws {SchemaValidationError} If the schema is invalid
66
+ */
67
+ export function loadSchemaFromObject(obj) {
68
+ validateSchema(obj);
69
+ return obj;
70
+ }
71
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/schemas/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACD,uCAAuC;QACvC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,qBAAqB,CAC3B,4BAA4B,QAAQ,EAAE,EACtC,UAAU,CAAC,YAAY,EACvB,SAAS,EACT,EAAE,QAAQ,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAChD,CAAC;IACN,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACD,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,qBAAqB,CAC3B,+BAAgC,KAAe,CAAC,OAAO,EAAE,EACzD,UAAU,CAAC,YAAY,EACvB,SAAS,EACT,EAAE,QAAQ,EAAE,CACf,CAAC;IACN,CAAC;IAED,aAAa;IACb,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,qBAAqB,CAC3B,gCAAiC,KAAe,CAAC,OAAO,EAAE,EAC1D,UAAU,CAAC,YAAY,EACvB,SAAS,EACT,EAAE,QAAQ,EAAE,CACf,CAAC;IACN,CAAC;IAED,4BAA4B;IAC5B,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC1C,IAAI,MAAe,CAAC;IAEpB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,qBAAqB,CAC3B,iBAAkB,KAAe,CAAC,OAAO,EAAE,EAC3C,UAAU,CAAC,YAAY,CAC1B,CAAC;IACN,CAAC;IAED,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC7C,cAAc,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Schema type definitions for Ordis
3
+ *
4
+ * Defines the structure and types used for schema validation.
5
+ */
6
+ /**
7
+ * Supported field types in schema definitions
8
+ */
9
+ export type FieldType = 'string' | 'number' | 'date' | 'enum' | 'boolean';
10
+ /**
11
+ * Field definition within a schema
12
+ */
13
+ export interface FieldDefinition {
14
+ type: FieldType;
15
+ description?: string;
16
+ optional?: boolean;
17
+ enum?: string[];
18
+ min?: number;
19
+ max?: number;
20
+ pattern?: string;
21
+ }
22
+ /**
23
+ * Complete schema definition
24
+ */
25
+ export interface Schema {
26
+ fields: Record<string, FieldDefinition>;
27
+ metadata?: {
28
+ name?: string;
29
+ version?: string;
30
+ description?: string;
31
+ };
32
+ confidence?: {
33
+ threshold: number;
34
+ failOnLowConfidence: boolean;
35
+ };
36
+ prompt?: {
37
+ includeFewShotExamples?: boolean;
38
+ };
39
+ }
40
+ /**
41
+ * Validation error for a specific field
42
+ */
43
+ export interface ValidationError {
44
+ field: string;
45
+ message: string;
46
+ code: string;
47
+ value?: unknown;
48
+ confidence?: number;
49
+ }
50
+ /**
51
+ * Result of schema validation
52
+ */
53
+ export interface ValidationResult {
54
+ valid: boolean;
55
+ errors: ValidationError[];
56
+ confidence?: number;
57
+ confidenceByField?: Record<string, number>;
58
+ }
59
+ /**
60
+ * Result of data extraction
61
+ */
62
+ export interface ExtractionResult {
63
+ success: boolean;
64
+ data?: Record<string, unknown>;
65
+ confidence: number;
66
+ confidenceByField: Record<string, number>;
67
+ errors: ValidationError[];
68
+ meetsThreshold: boolean;
69
+ metadata?: {
70
+ schemaName?: string;
71
+ extractionTimestamp?: string;
72
+ model?: string;
73
+ };
74
+ }
75
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schemas/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,UAAU,CAAC,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,mBAAmB,EAAE,OAAO,CAAC;KAChC,CAAC;IACF,MAAM,CAAC,EAAE;QACL,sBAAsB,CAAC,EAAE,OAAO,CAAC;KACpC,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACL"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Schema type definitions for Ordis
3
+ *
4
+ * Defines the structure and types used for schema validation.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/schemas/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Schema validator - validates schema definitions
3
+ */
4
+ import type { Schema } from './types.js';
5
+ /**
6
+ * Validates a schema definition
7
+ *
8
+ * @param schema - The schema object to validate
9
+ * @throws {SchemaValidationError} If the schema is invalid
10
+ */
11
+ export declare function validateSchema(schema: unknown): asserts schema is Schema;
12
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/schemas/validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAA8B,MAAM,YAAY,CAAC;AAKrE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAmDxE"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Schema validator - validates schema definitions
3
+ */
4
+ import { SchemaValidationError, ErrorCodes } from './errors.js';
5
+ const VALID_FIELD_TYPES = ['string', 'number', 'date', 'enum', 'boolean'];
6
+ /**
7
+ * Validates a schema definition
8
+ *
9
+ * @param schema - The schema object to validate
10
+ * @throws {SchemaValidationError} If the schema is invalid
11
+ */
12
+ export function validateSchema(schema) {
13
+ // Check if schema is an object
14
+ if (!schema || typeof schema !== 'object') {
15
+ throw new SchemaValidationError('Schema must be an object', ErrorCodes.INVALID_JSON);
16
+ }
17
+ const schemaObj = schema;
18
+ // Check for required 'fields' property
19
+ if (!schemaObj.fields) {
20
+ throw new SchemaValidationError("Schema must contain a 'fields' property", ErrorCodes.MISSING_FIELDS);
21
+ }
22
+ if (typeof schemaObj.fields !== 'object' || schemaObj.fields === null) {
23
+ throw new SchemaValidationError("'fields' must be an object", ErrorCodes.MISSING_FIELDS);
24
+ }
25
+ const fields = schemaObj.fields;
26
+ // Check if fields is empty
27
+ if (Object.keys(fields).length === 0) {
28
+ throw new SchemaValidationError('Schema must contain at least one field', ErrorCodes.MISSING_FIELDS);
29
+ }
30
+ // Validate each field definition
31
+ for (const [fieldName, fieldDef] of Object.entries(fields)) {
32
+ validateFieldName(fieldName);
33
+ validateFieldDefinition(fieldName, fieldDef);
34
+ }
35
+ // Validate metadata if present
36
+ if (schemaObj.metadata !== undefined) {
37
+ validateMetadata(schemaObj.metadata);
38
+ }
39
+ // Validate confidence configuration if present
40
+ if (schemaObj.confidence !== undefined) {
41
+ validateConfidenceConfig(schemaObj.confidence);
42
+ }
43
+ }
44
+ /**
45
+ * Validates a field name
46
+ */
47
+ function validateFieldName(fieldName) {
48
+ if (!fieldName || fieldName.trim() === '') {
49
+ throw new SchemaValidationError('Field name cannot be empty', ErrorCodes.INVALID_FIELD_NAME);
50
+ }
51
+ // Field names should be valid identifiers (alphanumeric and underscore)
52
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(fieldName)) {
53
+ throw new SchemaValidationError(`Invalid field name '${fieldName}'. Field names must start with a letter or underscore and contain only alphanumeric characters and underscores`, ErrorCodes.INVALID_FIELD_NAME, fieldName);
54
+ }
55
+ }
56
+ /**
57
+ * Validates a field definition
58
+ */
59
+ function validateFieldDefinition(fieldName, fieldDef) {
60
+ if (!fieldDef || typeof fieldDef !== 'object') {
61
+ throw new SchemaValidationError(`Field '${fieldName}' definition must be an object`, ErrorCodes.INVALID_FIELD_TYPE, fieldName);
62
+ }
63
+ const def = fieldDef;
64
+ // Check for required 'type' property
65
+ if (!def.type) {
66
+ throw new SchemaValidationError(`Field '${fieldName}' is missing required 'type' property`, ErrorCodes.INVALID_FIELD_TYPE, fieldName);
67
+ }
68
+ if (typeof def.type !== 'string') {
69
+ throw new SchemaValidationError(`Field '${fieldName}' type must be a string`, ErrorCodes.INVALID_FIELD_TYPE, fieldName);
70
+ }
71
+ // Validate field type
72
+ if (!VALID_FIELD_TYPES.includes(def.type)) {
73
+ throw new SchemaValidationError(`Field '${fieldName}' has invalid type '${def.type}'. Valid types are: ${VALID_FIELD_TYPES.join(', ')}`, ErrorCodes.INVALID_FIELD_TYPE, fieldName, { validTypes: VALID_FIELD_TYPES, receivedType: def.type });
74
+ }
75
+ // Validate optional property if present
76
+ if (def.optional !== undefined && typeof def.optional !== 'boolean') {
77
+ throw new SchemaValidationError(`Field '${fieldName}' optional property must be a boolean`, ErrorCodes.INVALID_CONSTRAINT, fieldName);
78
+ }
79
+ // Validate description if present
80
+ if (def.description !== undefined && typeof def.description !== 'string') {
81
+ throw new SchemaValidationError(`Field '${fieldName}' description must be a string`, ErrorCodes.INVALID_CONSTRAINT, fieldName);
82
+ }
83
+ // Type-specific validations
84
+ const fieldType = def.type;
85
+ if (fieldType === 'enum') {
86
+ validateEnumField(fieldName, def);
87
+ }
88
+ if (fieldType === 'number') {
89
+ validateNumberField(fieldName, def);
90
+ }
91
+ if (fieldType === 'string') {
92
+ validateStringField(fieldName, def);
93
+ }
94
+ }
95
+ /**
96
+ * Validates enum field constraints
97
+ */
98
+ function validateEnumField(fieldName, def) {
99
+ if (!def.enum) {
100
+ throw new SchemaValidationError(`Field '${fieldName}' with type 'enum' must have an 'enum' property`, ErrorCodes.MISSING_ENUM_VALUES, fieldName);
101
+ }
102
+ if (!Array.isArray(def.enum)) {
103
+ throw new SchemaValidationError(`Field '${fieldName}' enum property must be an array`, ErrorCodes.INVALID_ENUM_VALUE, fieldName);
104
+ }
105
+ if (def.enum.length === 0) {
106
+ throw new SchemaValidationError(`Field '${fieldName}' enum array cannot be empty`, ErrorCodes.EMPTY_ENUM_VALUES, fieldName);
107
+ }
108
+ // Check all enum values are strings
109
+ for (let i = 0; i < def.enum.length; i++) {
110
+ const value = def.enum[i];
111
+ if (typeof value !== 'string') {
112
+ throw new SchemaValidationError(`Field '${fieldName}' enum value at index ${i} must be a string, got ${typeof value}`, ErrorCodes.INVALID_ENUM_VALUE, fieldName, { index: i, value });
113
+ }
114
+ }
115
+ // Check for duplicate values
116
+ const uniqueValues = new Set(def.enum);
117
+ if (uniqueValues.size !== def.enum.length) {
118
+ throw new SchemaValidationError(`Field '${fieldName}' enum contains duplicate values`, ErrorCodes.DUPLICATE_ENUM_VALUE, fieldName);
119
+ }
120
+ }
121
+ /**
122
+ * Validates number field constraints
123
+ */
124
+ function validateNumberField(fieldName, def) {
125
+ if (def.min !== undefined) {
126
+ if (typeof def.min !== 'number') {
127
+ throw new SchemaValidationError(`Field '${fieldName}' min constraint must be a number`, ErrorCodes.INVALID_CONSTRAINT, fieldName);
128
+ }
129
+ }
130
+ if (def.max !== undefined) {
131
+ if (typeof def.max !== 'number') {
132
+ throw new SchemaValidationError(`Field '${fieldName}' max constraint must be a number`, ErrorCodes.INVALID_CONSTRAINT, fieldName);
133
+ }
134
+ }
135
+ if (def.min !== undefined && def.max !== undefined) {
136
+ if (def.min > def.max) {
137
+ throw new SchemaValidationError(`Field '${fieldName}' min value (${def.min}) cannot be greater than max value (${def.max})`, ErrorCodes.CONSTRAINT_MISMATCH, fieldName, { min: def.min, max: def.max });
138
+ }
139
+ }
140
+ // Enum is not valid for number type
141
+ if (def.enum !== undefined) {
142
+ throw new SchemaValidationError(`Field '${fieldName}' with type 'number' cannot have 'enum' property`, ErrorCodes.INVALID_CONSTRAINT, fieldName);
143
+ }
144
+ }
145
+ /**
146
+ * Validates string field constraints
147
+ */
148
+ function validateStringField(fieldName, def) {
149
+ if (def.pattern !== undefined) {
150
+ if (typeof def.pattern !== 'string') {
151
+ throw new SchemaValidationError(`Field '${fieldName}' pattern constraint must be a string`, ErrorCodes.INVALID_CONSTRAINT, fieldName);
152
+ }
153
+ // Validate regex pattern
154
+ try {
155
+ new RegExp(def.pattern);
156
+ }
157
+ catch (error) {
158
+ throw new SchemaValidationError(`Field '${fieldName}' has invalid regex pattern: ${error.message}`, ErrorCodes.INVALID_PATTERN, fieldName, { pattern: def.pattern });
159
+ }
160
+ }
161
+ // min/max not valid for string type (could be added for length later)
162
+ if (def.min !== undefined || def.max !== undefined) {
163
+ throw new SchemaValidationError(`Field '${fieldName}' with type 'string' cannot have 'min' or 'max' properties`, ErrorCodes.INVALID_CONSTRAINT, fieldName);
164
+ }
165
+ }
166
+ /**
167
+ * Validates schema metadata
168
+ */
169
+ function validateMetadata(metadata) {
170
+ if (typeof metadata !== 'object' || metadata === null) {
171
+ throw new SchemaValidationError('Schema metadata must be an object', ErrorCodes.INVALID_JSON);
172
+ }
173
+ const meta = metadata;
174
+ if (meta.name !== undefined && typeof meta.name !== 'string') {
175
+ throw new SchemaValidationError('Schema metadata name must be a string', ErrorCodes.INVALID_JSON);
176
+ }
177
+ if (meta.version !== undefined && typeof meta.version !== 'string') {
178
+ throw new SchemaValidationError('Schema metadata version must be a string', ErrorCodes.INVALID_JSON);
179
+ }
180
+ if (meta.description !== undefined && typeof meta.description !== 'string') {
181
+ throw new SchemaValidationError('Schema metadata description must be a string', ErrorCodes.INVALID_JSON);
182
+ }
183
+ }
184
+ /**
185
+ * Validates confidence configuration
186
+ */
187
+ function validateConfidenceConfig(confidence) {
188
+ if (typeof confidence !== 'object' || confidence === null) {
189
+ throw new SchemaValidationError('Confidence configuration must be an object', ErrorCodes.INVALID_CONFIDENCE_CONFIG);
190
+ }
191
+ const config = confidence;
192
+ // Check for required 'threshold' property
193
+ if (config.threshold === undefined) {
194
+ throw new SchemaValidationError('Confidence configuration must include a threshold value', ErrorCodes.INVALID_CONFIDENCE_CONFIG);
195
+ }
196
+ if (typeof config.threshold !== 'number') {
197
+ throw new SchemaValidationError('Confidence threshold must be a number', ErrorCodes.INVALID_CONFIDENCE_CONFIG, undefined, { received: typeof config.threshold });
198
+ }
199
+ // Validate threshold range (0-100)
200
+ if (config.threshold < 0 || config.threshold > 100) {
201
+ throw new SchemaValidationError(`Confidence threshold must be between 0 and 100, got ${config.threshold}`, ErrorCodes.INVALID_CONFIDENCE_CONFIG, undefined, { threshold: config.threshold });
202
+ }
203
+ // Check for required 'failOnLowConfidence' property
204
+ if (config.failOnLowConfidence === undefined) {
205
+ throw new SchemaValidationError('Confidence configuration must include failOnLowConfidence boolean', ErrorCodes.INVALID_CONFIDENCE_CONFIG);
206
+ }
207
+ if (typeof config.failOnLowConfidence !== 'boolean') {
208
+ throw new SchemaValidationError('failOnLowConfidence must be a boolean', ErrorCodes.INVALID_CONFIDENCE_CONFIG, undefined, { received: typeof config.failOnLowConfidence });
209
+ }
210
+ }
211
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/schemas/validator.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@ordis-dev/ordis",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Schema-first LLM extraction tool that turns unstructured text into validated structured data",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "ordis": "dist/cli.js"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "scripts": {
18
+ "build": "tsc",
19
+ "dev": "tsx src/cli.ts",
20
+ "clean": "rm -rf dist",
21
+ "test": "vitest run",
22
+ "test:watch": "vitest",
23
+ "test:ui": "vitest --ui",
24
+ "benchmark": "tsx benchmarks/runner.ts"
25
+ },
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/ordis-dev/ordis.git"
29
+ },
30
+ "keywords": [
31
+ "llm",
32
+ "extraction",
33
+ "schema",
34
+ "validation",
35
+ "cli",
36
+ "openai",
37
+ "ollama"
38
+ ],
39
+ "author": "Ordis",
40
+ "license": "MIT",
41
+ "bugs": {
42
+ "url": "https://github.com/ordis-dev/ordis/issues"
43
+ },
44
+ "homepage": "https://github.com/ordis-dev/ordis#readme",
45
+ "engines": {
46
+ "node": ">=18.0.0"
47
+ },
48
+ "files": [
49
+ "dist",
50
+ "README.md",
51
+ "LICENSE"
52
+ ],
53
+ "devDependencies": {
54
+ "@types/node": "^24.10.2",
55
+ "@vitest/ui": "^4.0.15",
56
+ "tsx": "^4.21.0",
57
+ "typescript": "^5.9.3",
58
+ "vitest": "^4.0.15"
59
+ }
60
+ }