@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.
- package/LICENSE +21 -0
- package/README.md +192 -0
- package/dist/__tests__/api.test.d.ts +5 -0
- package/dist/__tests__/api.test.d.ts.map +1 -0
- package/dist/__tests__/api.test.js +95 -0
- package/dist/__tests__/api.test.js.map +1 -0
- package/dist/__tests__/cli.test.d.ts +6 -0
- package/dist/__tests__/cli.test.d.ts.map +1 -0
- package/dist/__tests__/cli.test.js +103 -0
- package/dist/__tests__/cli.test.js.map +1 -0
- package/dist/cli/__tests__/cli.test.d.ts +5 -0
- package/dist/cli/__tests__/cli.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli.test.js +13 -0
- package/dist/cli/__tests__/cli.test.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +225 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/__tests__/pipeline.test.d.ts +5 -0
- package/dist/core/__tests__/pipeline.test.d.ts.map +1 -0
- package/dist/core/__tests__/pipeline.test.js +334 -0
- package/dist/core/__tests__/pipeline.test.js.map +1 -0
- package/dist/core/__tests__/validator.test.d.ts +5 -0
- package/dist/core/__tests__/validator.test.d.ts.map +1 -0
- package/dist/core/__tests__/validator.test.js +124 -0
- package/dist/core/__tests__/validator.test.js.map +1 -0
- package/dist/core/errors.d.ts +27 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +35 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/pipeline.d.ts +28 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +212 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/types.d.ts +55 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/validator.d.ts +19 -0
- package/dist/core/validator.d.ts.map +1 -0
- package/dist/core/validator.js +147 -0
- package/dist/core/validator.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/__tests__/client.test.d.ts +5 -0
- package/dist/llm/__tests__/client.test.d.ts.map +1 -0
- package/dist/llm/__tests__/client.test.js +350 -0
- package/dist/llm/__tests__/client.test.js.map +1 -0
- package/dist/llm/__tests__/prompt-builder.test.d.ts +5 -0
- package/dist/llm/__tests__/prompt-builder.test.d.ts.map +1 -0
- package/dist/llm/__tests__/prompt-builder.test.js +171 -0
- package/dist/llm/__tests__/prompt-builder.test.js.map +1 -0
- package/dist/llm/__tests__/retry.test.d.ts +5 -0
- package/dist/llm/__tests__/retry.test.d.ts.map +1 -0
- package/dist/llm/__tests__/retry.test.js +350 -0
- package/dist/llm/__tests__/retry.test.js.map +1 -0
- package/dist/llm/__tests__/token-counter.test.d.ts +5 -0
- package/dist/llm/__tests__/token-counter.test.d.ts.map +1 -0
- package/dist/llm/__tests__/token-counter.test.js +166 -0
- package/dist/llm/__tests__/token-counter.test.js.map +1 -0
- package/dist/llm/client.d.ts +56 -0
- package/dist/llm/client.d.ts.map +1 -0
- package/dist/llm/client.js +266 -0
- package/dist/llm/client.js.map +1 -0
- package/dist/llm/errors.d.ts +27 -0
- package/dist/llm/errors.d.ts.map +1 -0
- package/dist/llm/errors.js +35 -0
- package/dist/llm/errors.js.map +1 -0
- package/dist/llm/index.d.ts +10 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +8 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/prompt-builder.d.ts +13 -0
- package/dist/llm/prompt-builder.d.ts.map +1 -0
- package/dist/llm/prompt-builder.js +107 -0
- package/dist/llm/prompt-builder.js.map +1 -0
- package/dist/llm/token-counter.d.ts +82 -0
- package/dist/llm/token-counter.d.ts.map +1 -0
- package/dist/llm/token-counter.js +109 -0
- package/dist/llm/token-counter.js.map +1 -0
- package/dist/llm/types.d.ts +96 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +5 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/schemas/__tests__/integration.test.d.ts +5 -0
- package/dist/schemas/__tests__/integration.test.d.ts.map +1 -0
- package/dist/schemas/__tests__/integration.test.js +366 -0
- package/dist/schemas/__tests__/integration.test.js.map +1 -0
- package/dist/schemas/__tests__/loader.test.d.ts +5 -0
- package/dist/schemas/__tests__/loader.test.d.ts.map +1 -0
- package/dist/schemas/__tests__/loader.test.js +271 -0
- package/dist/schemas/__tests__/loader.test.js.map +1 -0
- package/dist/schemas/__tests__/validator.test.d.ts +5 -0
- package/dist/schemas/__tests__/validator.test.d.ts.map +1 -0
- package/dist/schemas/__tests__/validator.test.js +592 -0
- package/dist/schemas/__tests__/validator.test.js.map +1 -0
- package/dist/schemas/errors.d.ts +38 -0
- package/dist/schemas/errors.d.ts.map +1 -0
- package/dist/schemas/errors.js +49 -0
- package/dist/schemas/errors.js.map +1 -0
- package/dist/schemas/index.d.ts +8 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +7 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/loader.d.ts +29 -0
- package/dist/schemas/loader.d.ts.map +1 -0
- package/dist/schemas/loader.js +71 -0
- package/dist/schemas/loader.js.map +1 -0
- package/dist/schemas/types.d.ts +75 -0
- package/dist/schemas/types.d.ts.map +1 -0
- package/dist/schemas/types.js +7 -0
- package/dist/schemas/types.js.map +1 -0
- package/dist/schemas/validator.d.ts +12 -0
- package/dist/schemas/validator.d.ts.map +1 -0
- package/dist/schemas/validator.js +211 -0
- package/dist/schemas/validator.js.map +1 -0
- package/package.json +60 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Ordis
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Ordis
|
|
2
|
+
|
|
3
|
+
Ordis is a local-first tool and library that turns messy, unstructured text into clean, structured data using a schema-driven extraction pipeline powered by LLMs. You give it a schema that describes the fields you expect, point it at some raw text, and choose any OpenAI-compatible model. Ordis builds the prompt, calls the model, validates the output, and returns either a correct structured record or a clear error.
|
|
4
|
+
|
|
5
|
+
**Ordis does for LLM extraction what Prisma does for databases: strict schemas, predictable output and no more glue code.**
|
|
6
|
+
|
|
7
|
+
## Status
|
|
8
|
+
|
|
9
|
+
**✅ CLI functional** - Core extraction pipeline working with real LLMs. Ready for testing and feedback.
|
|
10
|
+
|
|
11
|
+
**✅ Programmatic API** - Can be used as an npm package in Node.js applications.
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- **Local-first extraction**: Supports Ollama, LM Studio, or any OpenAI-compatible endpoint
|
|
16
|
+
- **Schema-first workflow**: Define your data structure upfront
|
|
17
|
+
- **Deterministic output**: Returns validated records or structured failures
|
|
18
|
+
- **Token budget awareness**: Automatic token counting with warnings and limits
|
|
19
|
+
- **Dual-purpose**: Use as a CLI or import as a library
|
|
20
|
+
- **TypeScript support**: Full type definitions included
|
|
21
|
+
|
|
22
|
+
## Example
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
ordis extract \
|
|
26
|
+
--schema examples/invoice.schema.json \
|
|
27
|
+
--input examples/invoice.txt \
|
|
28
|
+
--base http://localhost:11434/v1 \
|
|
29
|
+
--model llama3.1:8b \
|
|
30
|
+
--debug
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Sample schema** (`invoice.schema.json`):
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"fields": {
|
|
38
|
+
"invoice_id": { "type": "string" },
|
|
39
|
+
"amount": { "type": "number" },
|
|
40
|
+
"currency": { "type": "string", "enum": ["USD", "SGD", "EUR"] },
|
|
41
|
+
"date": { "type": "date", "optional": true }
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Model Compatibility
|
|
47
|
+
|
|
48
|
+
Works with any service exposing an OpenAI-compatible API:
|
|
49
|
+
|
|
50
|
+
- Ollama
|
|
51
|
+
- LM Studio
|
|
52
|
+
- OpenRouter
|
|
53
|
+
- Mistral
|
|
54
|
+
- Groq
|
|
55
|
+
- OpenAI
|
|
56
|
+
- vLLM servers
|
|
57
|
+
|
|
58
|
+
## Installation
|
|
59
|
+
|
|
60
|
+
### From npm (recommended)
|
|
61
|
+
|
|
62
|
+
Install globally to use the CLI anywhere:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm install -g @ordis-dev/ordis
|
|
66
|
+
ordis --help
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Or install locally in your project:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npm install @ordis-dev/ordis
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### From Source
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
git clone https://github.com/ordis-dev/ordis
|
|
79
|
+
cd ordis
|
|
80
|
+
npm install
|
|
81
|
+
npm run build
|
|
82
|
+
node dist/cli.js --help
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Usage
|
|
86
|
+
|
|
87
|
+
### CLI Usage
|
|
88
|
+
|
|
89
|
+
Extract data from text using a schema:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
ordis extract \
|
|
93
|
+
--schema examples/invoice.schema.json \
|
|
94
|
+
--input examples/invoice.txt \
|
|
95
|
+
--base http://localhost:11434/v1 \
|
|
96
|
+
--model llama3.1:8b \
|
|
97
|
+
--debug
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Programmatic Usage
|
|
101
|
+
|
|
102
|
+
Use ordis as a library in your Node.js application:
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
import { extract, loadSchema, LLMClient } from '@ordis-dev/ordis';
|
|
106
|
+
|
|
107
|
+
// Load schema from file
|
|
108
|
+
const schema = await loadSchema('./invoice.schema.json');
|
|
109
|
+
|
|
110
|
+
// Or create schema from object
|
|
111
|
+
import { loadSchemaFromObject } from 'ordis-cli';
|
|
112
|
+
const schema = loadSchemaFromObject({
|
|
113
|
+
fields: {
|
|
114
|
+
invoice_id: { type: 'string' },
|
|
115
|
+
amount: { type: 'number' },
|
|
116
|
+
currency: { type: 'string', enum: ['USD', 'EUR', 'SGD'] }
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// Configure LLM
|
|
121
|
+
const llmConfig = {
|
|
122
|
+
baseURL: 'http://localhost:11434/v1',
|
|
123
|
+
model: 'llama3.2:3b'
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
// Extract data
|
|
127
|
+
const result = await extract({
|
|
128
|
+
input: 'Invoice #INV-2024-0042 for $1,250.00 USD',
|
|
129
|
+
schema,
|
|
130
|
+
llmConfig
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
if (result.success) {
|
|
134
|
+
console.log(result.data);
|
|
135
|
+
// { invoice_id: 'INV-2024-0042', amount: 1250, currency: 'USD' }
|
|
136
|
+
console.log('Confidence:', result.confidence);
|
|
137
|
+
} else {
|
|
138
|
+
console.error('Extraction failed:', result.errors);
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Using LLM Presets:**
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
import { extract, loadSchema, LLMPresets } from '@ordis-dev/ordis';
|
|
146
|
+
|
|
147
|
+
const schema = await loadSchema('./schema.json');
|
|
148
|
+
|
|
149
|
+
// Use preset configurations
|
|
150
|
+
const result = await extract({
|
|
151
|
+
input: text,
|
|
152
|
+
schema,
|
|
153
|
+
llmConfig: LLMPresets.ollama('llama3.2:3b')
|
|
154
|
+
// Or: LLMPresets.openai(apiKey, 'gpt-4o-mini')
|
|
155
|
+
// Or: LLMPresets.lmStudio('local-model')
|
|
156
|
+
});
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## What Works
|
|
160
|
+
|
|
161
|
+
- ✅ Schema loader and validator
|
|
162
|
+
- ✅ Prompt builder with confidence scoring
|
|
163
|
+
- ✅ Universal LLM client (OpenAI-compatible APIs)
|
|
164
|
+
- ✅ Token budget awareness with warnings and errors
|
|
165
|
+
- ✅ Structured error system
|
|
166
|
+
- ✅ CLI extraction command
|
|
167
|
+
- ✅ Programmatic API for library usage
|
|
168
|
+
- ✅ Field-level confidence tracking
|
|
169
|
+
- ✅ TypeScript type definitions
|
|
170
|
+
- ✅ Performance benchmarks
|
|
171
|
+
|
|
172
|
+
## Performance
|
|
173
|
+
|
|
174
|
+
Pipeline overhead is negligible (~1-2ms). LLM calls dominate execution time (1-10s depending on model). See [benchmarks/README.md](benchmarks/README.md) for detailed metrics.
|
|
175
|
+
|
|
176
|
+
Run benchmarks:
|
|
177
|
+
```bash
|
|
178
|
+
npm run benchmark
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Roadmap
|
|
182
|
+
Smart input truncation ([#40](https://github.com/ordis-dev/ordis/issues/40))
|
|
183
|
+
- [ ] Multi-pass extraction for large inputs ([#41](https://github.com/ordis-dev/ordis/issues/41))
|
|
184
|
+
- [ ]
|
|
185
|
+
- [ ] Config file support ([#16](https://github.com/ordis-dev/ordis/issues/16))
|
|
186
|
+
- [ ] Output formatting options ([#14](https://github.com/ordis-dev/ordis/issues/14))
|
|
187
|
+
- [ ] Batch extraction ([#19](https://github.com/ordis-dev/ordis/issues/19))
|
|
188
|
+
- [ ] More example schemas ([#13](https://github.com/ordis-dev/ordis/issues/13))
|
|
189
|
+
|
|
190
|
+
## Contributing
|
|
191
|
+
|
|
192
|
+
Contributions are welcome!
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/api.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for programmatic API imports
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from 'vitest';
|
|
5
|
+
describe('Programmatic API', () => {
|
|
6
|
+
describe('Core exports', () => {
|
|
7
|
+
it('should export extract function', async () => {
|
|
8
|
+
const { extract } = await import('../index.js');
|
|
9
|
+
expect(extract).toBeDefined();
|
|
10
|
+
expect(typeof extract).toBe('function');
|
|
11
|
+
});
|
|
12
|
+
it('should export ExtractionPipeline class', async () => {
|
|
13
|
+
const { ExtractionPipeline } = await import('../index.js');
|
|
14
|
+
expect(ExtractionPipeline).toBeDefined();
|
|
15
|
+
expect(typeof ExtractionPipeline).toBe('function');
|
|
16
|
+
});
|
|
17
|
+
it('should export validateExtractedData', async () => {
|
|
18
|
+
const { validateExtractedData } = await import('../index.js');
|
|
19
|
+
expect(validateExtractedData).toBeDefined();
|
|
20
|
+
expect(typeof validateExtractedData).toBe('function');
|
|
21
|
+
});
|
|
22
|
+
it('should export PipelineError', async () => {
|
|
23
|
+
const { PipelineError, PipelineErrorCodes } = await import('../index.js');
|
|
24
|
+
expect(PipelineError).toBeDefined();
|
|
25
|
+
expect(PipelineErrorCodes).toBeDefined();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('Schema exports', () => {
|
|
29
|
+
it('should export loadSchema function', async () => {
|
|
30
|
+
const { loadSchema } = await import('../index.js');
|
|
31
|
+
expect(loadSchema).toBeDefined();
|
|
32
|
+
expect(typeof loadSchema).toBe('function');
|
|
33
|
+
});
|
|
34
|
+
it('should export parseSchema function', async () => {
|
|
35
|
+
const { parseSchema } = await import('../index.js');
|
|
36
|
+
expect(parseSchema).toBeDefined();
|
|
37
|
+
expect(typeof parseSchema).toBe('function');
|
|
38
|
+
});
|
|
39
|
+
it('should export validateSchema function', async () => {
|
|
40
|
+
const { validateSchema } = await import('../index.js');
|
|
41
|
+
expect(validateSchema).toBeDefined();
|
|
42
|
+
expect(typeof validateSchema).toBe('function');
|
|
43
|
+
});
|
|
44
|
+
it('should export SchemaValidationError', async () => {
|
|
45
|
+
const { SchemaValidationError, SchemaErrorCodes } = await import('../index.js');
|
|
46
|
+
expect(SchemaValidationError).toBeDefined();
|
|
47
|
+
expect(SchemaErrorCodes).toBeDefined();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe('LLM exports', () => {
|
|
51
|
+
it('should export LLMClient class', async () => {
|
|
52
|
+
const { LLMClient } = await import('../index.js');
|
|
53
|
+
expect(LLMClient).toBeDefined();
|
|
54
|
+
expect(typeof LLMClient).toBe('function');
|
|
55
|
+
});
|
|
56
|
+
it('should export createLLMClient function', async () => {
|
|
57
|
+
const { createLLMClient } = await import('../index.js');
|
|
58
|
+
expect(createLLMClient).toBeDefined();
|
|
59
|
+
expect(typeof createLLMClient).toBe('function');
|
|
60
|
+
});
|
|
61
|
+
it('should export LLMPresets', async () => {
|
|
62
|
+
const { LLMPresets } = await import('../index.js');
|
|
63
|
+
expect(LLMPresets).toBeDefined();
|
|
64
|
+
expect(LLMPresets.ollama).toBeDefined();
|
|
65
|
+
expect(LLMPresets.lmStudio).toBeDefined();
|
|
66
|
+
expect(LLMPresets.openai).toBeDefined();
|
|
67
|
+
});
|
|
68
|
+
it('should export buildSystemPrompt function', async () => {
|
|
69
|
+
const { buildSystemPrompt } = await import('../index.js');
|
|
70
|
+
expect(buildSystemPrompt).toBeDefined();
|
|
71
|
+
expect(typeof buildSystemPrompt).toBe('function');
|
|
72
|
+
});
|
|
73
|
+
it('should export LLMError', async () => {
|
|
74
|
+
const { LLMError, LLMErrorCodes } = await import('../index.js');
|
|
75
|
+
expect(LLMError).toBeDefined();
|
|
76
|
+
expect(LLMErrorCodes).toBeDefined();
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe('End-to-end library usage', () => {
|
|
80
|
+
it('should support basic extraction workflow', async () => {
|
|
81
|
+
const { loadSchemaFromObject, extract } = await import('../index.js');
|
|
82
|
+
const schema = loadSchemaFromObject({
|
|
83
|
+
fields: {
|
|
84
|
+
name: { type: 'string' },
|
|
85
|
+
amount: { type: 'number' }
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
expect(schema).toBeDefined();
|
|
89
|
+
expect(schema.fields).toBeDefined();
|
|
90
|
+
expect(schema.fields.name).toBeDefined();
|
|
91
|
+
expect(schema.fields.amount).toBeDefined();
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=api.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../src/__tests__/api.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/cli.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for CLI entrypoint
|
|
3
|
+
* Note: Full end-to-end tests require running the CLI process
|
|
4
|
+
*/
|
|
5
|
+
import { describe, it, expect } from 'vitest';
|
|
6
|
+
import { exec } from 'child_process';
|
|
7
|
+
import { promisify } from 'util';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
const execAsync = promisify(exec);
|
|
10
|
+
const CLI_PATH = path.join(process.cwd(), 'dist/cli.js');
|
|
11
|
+
describe('CLI', () => {
|
|
12
|
+
describe('help command', () => {
|
|
13
|
+
it('should display help with --help flag', async () => {
|
|
14
|
+
const { stdout } = await execAsync(`node ${CLI_PATH} --help`);
|
|
15
|
+
expect(stdout).toContain('Ordis');
|
|
16
|
+
expect(stdout).toContain('USAGE:');
|
|
17
|
+
expect(stdout).toContain('ordis extract');
|
|
18
|
+
expect(stdout).toContain('--schema');
|
|
19
|
+
expect(stdout).toContain('--input');
|
|
20
|
+
expect(stdout).toContain('--base');
|
|
21
|
+
expect(stdout).toContain('--model');
|
|
22
|
+
});
|
|
23
|
+
it('should display help with -h flag', async () => {
|
|
24
|
+
const { stdout } = await execAsync(`node ${CLI_PATH} -h`);
|
|
25
|
+
expect(stdout).toContain('Ordis');
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('version command', () => {
|
|
29
|
+
it('should display version with --version flag', async () => {
|
|
30
|
+
const { stdout } = await execAsync(`node ${CLI_PATH} --version`);
|
|
31
|
+
expect(stdout).toContain('ordis v');
|
|
32
|
+
expect(stdout).toMatch(/v\d+\.\d+\.\d+/);
|
|
33
|
+
});
|
|
34
|
+
it('should display version with -v flag', async () => {
|
|
35
|
+
const { stdout } = await execAsync(`node ${CLI_PATH} -v`);
|
|
36
|
+
expect(stdout).toContain('ordis v');
|
|
37
|
+
expect(stdout).toMatch(/v\d+\.\d+\.\d+/);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe('error handling', () => {
|
|
41
|
+
it('should error when no command specified', async () => {
|
|
42
|
+
try {
|
|
43
|
+
await execAsync(`node ${CLI_PATH}`);
|
|
44
|
+
expect.fail('Should have thrown an error');
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
expect(error.code).toBe(1);
|
|
48
|
+
expect(error.stderr).toContain('No command specified');
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
it('should error when unknown command specified', async () => {
|
|
52
|
+
try {
|
|
53
|
+
await execAsync(`node ${CLI_PATH} unknown`);
|
|
54
|
+
expect.fail('Should have thrown an error');
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
expect(error.code).toBe(1);
|
|
58
|
+
expect(error.stderr).toContain('Unknown command');
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
it('should error when --schema is missing', async () => {
|
|
62
|
+
try {
|
|
63
|
+
await execAsync(`node ${CLI_PATH} extract --input test.txt --base http://localhost --model test`);
|
|
64
|
+
expect.fail('Should have thrown an error');
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
expect(error.code).toBe(1);
|
|
68
|
+
expect(error.stderr).toContain('--schema is required');
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
it('should error when --input is missing', async () => {
|
|
72
|
+
try {
|
|
73
|
+
await execAsync(`node ${CLI_PATH} extract --schema test.json --base http://localhost --model test`);
|
|
74
|
+
expect.fail('Should have thrown an error');
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
expect(error.code).toBe(1);
|
|
78
|
+
expect(error.stderr).toContain('--input is required');
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
it('should error when --base is missing', async () => {
|
|
82
|
+
try {
|
|
83
|
+
await execAsync(`node ${CLI_PATH} extract --schema test.json --input test.txt --model test`);
|
|
84
|
+
expect.fail('Should have thrown an error');
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
expect(error.code).toBe(1);
|
|
88
|
+
expect(error.stderr).toContain('--base is required');
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
it('should error when --model is missing', async () => {
|
|
92
|
+
try {
|
|
93
|
+
await execAsync(`node ${CLI_PATH} extract --schema test.json --input test.txt --base http://localhost`);
|
|
94
|
+
expect.fail('Should have thrown an error');
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
expect(error.code).toBe(1);
|
|
98
|
+
expect(error.stderr).toContain('--model is required');
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=cli.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../../src/__tests__/cli.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.test.d.ts","sourceRoot":"","sources":["../../../src/cli/__tests__/cli.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tests for CLI interface
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const vitest_1 = require("vitest");
|
|
7
|
+
(0, vitest_1.describe)('CLI', () => {
|
|
8
|
+
(0, vitest_1.it)('should export main entry point', () => {
|
|
9
|
+
// Simple smoke test to ensure CLI module compiles
|
|
10
|
+
(0, vitest_1.expect)(true).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=cli.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/cli.test.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,mCAA8C;AAE9C,IAAA,iBAAQ,EAAC,KAAK,EAAE,GAAG,EAAE;IACjB,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,kDAAkD;QAClD,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|