@retab/node 0.0.0-reserved → 0.0.43

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 (270) hide show
  1. package/README.md +293 -2
  2. package/dist/api/client.d.ts +15 -0
  3. package/dist/api/client.d.ts.map +1 -0
  4. package/dist/api/client.js +16 -0
  5. package/dist/api/consensus/client.d.ts +7 -0
  6. package/dist/api/consensus/client.d.ts.map +1 -0
  7. package/dist/api/consensus/client.js +14 -0
  8. package/dist/api/deployments/client.d.ts +20 -0
  9. package/dist/api/deployments/client.d.ts.map +1 -0
  10. package/dist/api/deployments/client.js +23 -0
  11. package/dist/api/documents/client.d.ts +10 -0
  12. package/dist/api/documents/client.d.ts.map +1 -0
  13. package/dist/api/documents/client.js +35 -0
  14. package/dist/api/models/client.d.ts +17 -0
  15. package/dist/api/models/client.d.ts.map +1 -0
  16. package/dist/api/models/client.js +15 -0
  17. package/dist/api/schemas/client.d.ts +12 -0
  18. package/dist/api/schemas/client.d.ts.map +1 -0
  19. package/dist/api/schemas/client.js +14 -0
  20. package/dist/client.d.ts +50 -0
  21. package/dist/client.d.ts.map +1 -0
  22. package/dist/client.js +135 -0
  23. package/dist/errors.d.ts +34 -0
  24. package/dist/errors.d.ts.map +1 -0
  25. package/dist/errors.js +53 -0
  26. package/dist/generated_types.d.ts +64373 -0
  27. package/dist/generated_types.d.ts.map +1 -0
  28. package/dist/generated_types.js +2267 -0
  29. package/dist/index.d.ts +8 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +9 -0
  32. package/dist/mime.d.ts +5 -0
  33. package/dist/mime.d.ts.map +1 -0
  34. package/dist/mime.js +66 -0
  35. package/dist/resource.d.ts +12 -0
  36. package/dist/resource.d.ts.map +1 -0
  37. package/dist/resource.js +19 -0
  38. package/dist/resources/consensus/completions.d.ts +66 -0
  39. package/dist/resources/consensus/completions.d.ts.map +1 -0
  40. package/dist/resources/consensus/completions.js +84 -0
  41. package/dist/resources/consensus/index.d.ts +72 -0
  42. package/dist/resources/consensus/index.d.ts.map +1 -0
  43. package/dist/resources/consensus/index.js +76 -0
  44. package/dist/resources/consensus/responses.d.ts +69 -0
  45. package/dist/resources/consensus/responses.d.ts.map +1 -0
  46. package/dist/resources/consensus/responses.js +99 -0
  47. package/dist/resources/documents/extractions.d.ts +74 -0
  48. package/dist/resources/documents/extractions.d.ts.map +1 -0
  49. package/dist/resources/documents/extractions.js +196 -0
  50. package/dist/resources/documents/index.d.ts +21 -0
  51. package/dist/resources/documents/index.d.ts.map +1 -0
  52. package/dist/resources/documents/index.js +55 -0
  53. package/dist/resources/evaluations/documents.d.ts +40 -0
  54. package/dist/resources/evaluations/documents.d.ts.map +1 -0
  55. package/dist/resources/evaluations/documents.js +123 -0
  56. package/dist/resources/evaluations/index.d.ts +14 -0
  57. package/dist/resources/evaluations/index.d.ts.map +1 -0
  58. package/dist/resources/evaluations/index.js +17 -0
  59. package/dist/resources/evaluations/iterations.d.ts +50 -0
  60. package/dist/resources/evaluations/iterations.d.ts.map +1 -0
  61. package/dist/resources/evaluations/iterations.js +156 -0
  62. package/dist/resources/files.d.ts +82 -0
  63. package/dist/resources/files.d.ts.map +1 -0
  64. package/dist/resources/files.js +150 -0
  65. package/dist/resources/finetuning.d.ts +105 -0
  66. package/dist/resources/finetuning.d.ts.map +1 -0
  67. package/dist/resources/finetuning.js +181 -0
  68. package/dist/resources/index.d.ts +11 -0
  69. package/dist/resources/index.d.ts.map +1 -0
  70. package/dist/resources/index.js +10 -0
  71. package/dist/resources/models.d.ts +57 -0
  72. package/dist/resources/models.d.ts.map +1 -0
  73. package/dist/resources/models.js +72 -0
  74. package/dist/resources/processors/automations/endpoints.d.ts +90 -0
  75. package/dist/resources/processors/automations/endpoints.d.ts.map +1 -0
  76. package/dist/resources/processors/automations/endpoints.js +145 -0
  77. package/dist/resources/processors/automations/index.d.ts +7 -0
  78. package/dist/resources/processors/automations/index.d.ts.map +1 -0
  79. package/dist/resources/processors/automations/index.js +6 -0
  80. package/dist/resources/processors/automations/links.d.ts +90 -0
  81. package/dist/resources/processors/automations/links.d.ts.map +1 -0
  82. package/dist/resources/processors/automations/links.js +149 -0
  83. package/dist/resources/processors/automations/logs.d.ts +35 -0
  84. package/dist/resources/processors/automations/logs.d.ts.map +1 -0
  85. package/dist/resources/processors/automations/logs.js +60 -0
  86. package/dist/resources/processors/automations/mailboxes.d.ts +102 -0
  87. package/dist/resources/processors/automations/mailboxes.d.ts.map +1 -0
  88. package/dist/resources/processors/automations/mailboxes.js +157 -0
  89. package/dist/resources/processors/automations/outlook.d.ts +114 -0
  90. package/dist/resources/processors/automations/outlook.d.ts.map +1 -0
  91. package/dist/resources/processors/automations/outlook.js +170 -0
  92. package/dist/resources/processors/automations/tests.d.ts +58 -0
  93. package/dist/resources/processors/automations/tests.d.ts.map +1 -0
  94. package/dist/resources/processors/automations/tests.js +90 -0
  95. package/dist/resources/processors/index.d.ts +303 -0
  96. package/dist/resources/processors/index.d.ts.map +1 -0
  97. package/dist/resources/processors/index.js +261 -0
  98. package/dist/resources/schemas.d.ts +63 -0
  99. package/dist/resources/schemas.d.ts.map +1 -0
  100. package/dist/resources/schemas.js +183 -0
  101. package/dist/resources/secrets/external_api_keys.d.ts +61 -0
  102. package/dist/resources/secrets/external_api_keys.d.ts.map +1 -0
  103. package/dist/resources/secrets/external_api_keys.js +120 -0
  104. package/dist/resources/secrets/index.d.ts +14 -0
  105. package/dist/resources/secrets/index.d.ts.map +1 -0
  106. package/dist/resources/secrets/index.js +17 -0
  107. package/dist/resources/secrets/webhooks.d.ts +73 -0
  108. package/dist/resources/secrets/webhooks.d.ts.map +1 -0
  109. package/dist/resources/secrets/webhooks.js +145 -0
  110. package/dist/resources/usage.d.ts +223 -0
  111. package/dist/resources/usage.d.ts.map +1 -0
  112. package/dist/resources/usage.js +310 -0
  113. package/dist/types/ai_models.d.ts +389 -0
  114. package/dist/types/ai_models.d.ts.map +1 -0
  115. package/dist/types/ai_models.js +145 -0
  116. package/dist/types/automations/cron.d.ts +28 -0
  117. package/dist/types/automations/cron.d.ts.map +1 -0
  118. package/dist/types/automations/cron.js +1 -0
  119. package/dist/types/automations/endpoints.d.ts +13 -0
  120. package/dist/types/automations/endpoints.d.ts.map +1 -0
  121. package/dist/types/automations/endpoints.js +1 -0
  122. package/dist/types/automations/index.d.ts +7 -0
  123. package/dist/types/automations/index.d.ts.map +1 -0
  124. package/dist/types/automations/index.js +6 -0
  125. package/dist/types/automations/links.d.ts +15 -0
  126. package/dist/types/automations/links.d.ts.map +1 -0
  127. package/dist/types/automations/links.js +1 -0
  128. package/dist/types/automations/mailboxes.d.ts +18 -0
  129. package/dist/types/automations/mailboxes.d.ts.map +1 -0
  130. package/dist/types/automations/mailboxes.js +1 -0
  131. package/dist/types/automations/outlook.d.ts +37 -0
  132. package/dist/types/automations/outlook.d.ts.map +1 -0
  133. package/dist/types/automations/outlook.js +1 -0
  134. package/dist/types/automations/webhooks.d.ts +13 -0
  135. package/dist/types/automations/webhooks.d.ts.map +1 -0
  136. package/dist/types/automations/webhooks.js +1 -0
  137. package/dist/types/browser_canvas.d.ts +4 -0
  138. package/dist/types/browser_canvas.d.ts.map +1 -0
  139. package/dist/types/browser_canvas.js +2 -0
  140. package/dist/types/chat.d.ts +99 -0
  141. package/dist/types/chat.d.ts.map +1 -0
  142. package/dist/types/chat.js +20 -0
  143. package/dist/types/consensus.d.ts +10 -0
  144. package/dist/types/consensus.d.ts.map +1 -0
  145. package/dist/types/consensus.js +1 -0
  146. package/dist/types/db/annotations.d.ts +108 -0
  147. package/dist/types/db/annotations.d.ts.map +1 -0
  148. package/dist/types/db/annotations.js +6 -0
  149. package/dist/types/db/files.d.ts +133 -0
  150. package/dist/types/db/files.d.ts.map +1 -0
  151. package/dist/types/db/files.js +5 -0
  152. package/dist/types/documents/extractions.d.ts +1849 -0
  153. package/dist/types/documents/extractions.d.ts.map +1 -0
  154. package/dist/types/documents/extractions.js +211 -0
  155. package/dist/types/documents/processing.d.ts +249 -0
  156. package/dist/types/documents/processing.d.ts.map +1 -0
  157. package/dist/types/documents/processing.js +6 -0
  158. package/dist/types/evaluations/iterations.d.ts +41 -0
  159. package/dist/types/evaluations/iterations.d.ts.map +1 -0
  160. package/dist/types/evaluations/iterations.js +1 -0
  161. package/dist/types/jobs/base.d.ts +162 -0
  162. package/dist/types/jobs/base.d.ts.map +1 -0
  163. package/dist/types/jobs/base.js +6 -0
  164. package/dist/types/jobs/specialized.d.ts +200 -0
  165. package/dist/types/jobs/specialized.d.ts.map +1 -0
  166. package/dist/types/jobs/specialized.js +37 -0
  167. package/dist/types/logs.d.ts +92 -0
  168. package/dist/types/logs.d.ts.map +1 -0
  169. package/dist/types/logs.js +1 -0
  170. package/dist/types/mime.d.ts +426 -0
  171. package/dist/types/mime.d.ts.map +1 -0
  172. package/dist/types/mime.js +48 -0
  173. package/dist/types/modalities.d.ts +31 -0
  174. package/dist/types/modalities.d.ts.map +1 -0
  175. package/dist/types/modalities.js +109 -0
  176. package/dist/types/pagination.d.ts +5 -0
  177. package/dist/types/pagination.d.ts.map +1 -0
  178. package/dist/types/pagination.js +1 -0
  179. package/dist/types/schemas/enhancement.d.ts +250 -0
  180. package/dist/types/schemas/enhancement.d.ts.map +1 -0
  181. package/dist/types/schemas/enhancement.js +6 -0
  182. package/dist/types/schemas/generate.d.ts +160 -0
  183. package/dist/types/schemas/generate.d.ts.map +1 -0
  184. package/dist/types/schemas/generate.js +19 -0
  185. package/dist/types/schemas/object.d.ts +116 -0
  186. package/dist/types/schemas/object.d.ts.map +1 -0
  187. package/dist/types/schemas/object.js +861 -0
  188. package/dist/types/secrets/external_api_keys.d.ts +27 -0
  189. package/dist/types/secrets/external_api_keys.d.ts.map +1 -0
  190. package/dist/types/secrets/external_api_keys.js +11 -0
  191. package/dist/types/secrets/index.d.ts +2 -0
  192. package/dist/types/secrets/index.d.ts.map +1 -0
  193. package/dist/types/secrets/index.js +1 -0
  194. package/dist/types/standards.d.ts +37 -0
  195. package/dist/types/standards.d.ts.map +1 -0
  196. package/dist/types/standards.js +1 -0
  197. package/dist/types.d.ts +276 -0
  198. package/dist/types.d.ts.map +1 -0
  199. package/dist/types.js +85 -0
  200. package/dist/utils/ai_models.d.ts +10 -0
  201. package/dist/utils/ai_models.d.ts.map +1 -0
  202. package/dist/utils/ai_models.js +183 -0
  203. package/dist/utils/batch_processing.d.ts +227 -0
  204. package/dist/utils/batch_processing.d.ts.map +1 -0
  205. package/dist/utils/batch_processing.js +268 -0
  206. package/dist/utils/benchmarking.d.ts +115 -0
  207. package/dist/utils/benchmarking.d.ts.map +1 -0
  208. package/dist/utils/benchmarking.js +355 -0
  209. package/dist/utils/chat.d.ts +70 -0
  210. package/dist/utils/chat.d.ts.map +1 -0
  211. package/dist/utils/chat.js +79 -0
  212. package/dist/utils/cost_calculation.d.ts +26 -0
  213. package/dist/utils/cost_calculation.d.ts.map +1 -0
  214. package/dist/utils/cost_calculation.js +99 -0
  215. package/dist/utils/datasets.d.ts +135 -0
  216. package/dist/utils/datasets.d.ts.map +1 -0
  217. package/dist/utils/datasets.js +359 -0
  218. package/dist/utils/display.d.ts +108 -0
  219. package/dist/utils/display.d.ts.map +1 -0
  220. package/dist/utils/display.js +244 -0
  221. package/dist/utils/hash.d.ts +18 -0
  222. package/dist/utils/hash.d.ts.map +1 -0
  223. package/dist/utils/hash.js +31 -0
  224. package/dist/utils/hashing.d.ts +18 -0
  225. package/dist/utils/hashing.d.ts.map +1 -0
  226. package/dist/utils/hashing.js +28 -0
  227. package/dist/utils/index.d.ts +8 -0
  228. package/dist/utils/index.d.ts.map +1 -0
  229. package/dist/utils/index.js +10 -0
  230. package/dist/utils/json_schema.d.ts +18 -0
  231. package/dist/utils/json_schema.d.ts.map +1 -0
  232. package/dist/utils/json_schema.js +334 -0
  233. package/dist/utils/json_schema_utils.d.ts +42 -0
  234. package/dist/utils/json_schema_utils.d.ts.map +1 -0
  235. package/dist/utils/json_schema_utils.js +212 -0
  236. package/dist/utils/jsonl.d.ts +60 -0
  237. package/dist/utils/jsonl.d.ts.map +1 -0
  238. package/dist/utils/jsonl.js +259 -0
  239. package/dist/utils/mime.d.ts +6 -0
  240. package/dist/utils/mime.d.ts.map +1 -0
  241. package/dist/utils/mime.js +129 -0
  242. package/dist/utils/model_cards.d.ts +219 -0
  243. package/dist/utils/model_cards.d.ts.map +1 -0
  244. package/dist/utils/model_cards.js +462 -0
  245. package/dist/utils/prompt_optimization.d.ts +96 -0
  246. package/dist/utils/prompt_optimization.d.ts.map +1 -0
  247. package/dist/utils/prompt_optimization.js +275 -0
  248. package/dist/utils/responses.d.ts +35 -0
  249. package/dist/utils/responses.d.ts.map +1 -0
  250. package/dist/utils/responses.js +37 -0
  251. package/dist/utils/stream.d.ts +13 -0
  252. package/dist/utils/stream.d.ts.map +1 -0
  253. package/dist/utils/stream.js +64 -0
  254. package/dist/utils/stream_context_managers.d.ts +147 -0
  255. package/dist/utils/stream_context_managers.d.ts.map +1 -0
  256. package/dist/utils/stream_context_managers.js +380 -0
  257. package/dist/utils/usage.d.ts +57 -0
  258. package/dist/utils/usage.d.ts.map +1 -0
  259. package/dist/utils/usage.js +97 -0
  260. package/dist/utils/webhook_secrets.d.ts +59 -0
  261. package/dist/utils/webhook_secrets.d.ts.map +1 -0
  262. package/dist/utils/webhook_secrets.js +107 -0
  263. package/dist/utils/zod_to_json_schema.d.ts +11 -0
  264. package/dist/utils/zod_to_json_schema.d.ts.map +1 -0
  265. package/dist/utils/zod_to_json_schema.js +123 -0
  266. package/dist/utils.d.ts +19 -0
  267. package/dist/utils.d.ts.map +1 -0
  268. package/dist/utils.js +1 -0
  269. package/package.json +62 -6
  270. package/index.js +0 -7
package/README.md CHANGED
@@ -1,2 +1,293 @@
1
- # uiform-node
2
- Node.js library for the UiForm API.
1
+ # Retab Node.js SDK
2
+
3
+ Official Node.js SDK for the Retab API - extract structured data from documents using AI.
4
+
5
+ ## Installation
6
+
7
+ ### From npm Registry
8
+
9
+ ```bash
10
+ npm install @retab/node
11
+ ```
12
+
13
+ ### For Local Development
14
+
15
+ To install and test the SDK locally using npm link:
16
+
17
+ ```bash
18
+ # From the SDK directory
19
+ cd open-source/sdk/clients/node
20
+ npm install
21
+ npm run build
22
+ npm link
23
+
24
+ # From your project directory
25
+ npm link @retab/node
26
+ ```
27
+
28
+ ## Quick Start
29
+
30
+ ```typescript
31
+ import { Retab } from '@retab/node';
32
+
33
+ // Initialize the client
34
+ const retab = new Retab({
35
+ apiKey: 'your-api-key', // Or set RETAB_API_KEY environment variable
36
+ });
37
+
38
+ // Extract data from a document
39
+ const extraction = await retab.documents.extract({
40
+ document: 'path/to/invoice.pdf',
41
+ schema: {
42
+ json_schema: {
43
+ type: 'object',
44
+ properties: {
45
+ invoice_number: { type: 'string' },
46
+ total_amount: { type: 'number' },
47
+ due_date: { type: 'string', format: 'date' }
48
+ }
49
+ }
50
+ }
51
+ });
52
+
53
+ console.log(extraction.extracted_data);
54
+ ```
55
+
56
+ ## Key Features
57
+
58
+ ### Document Processing
59
+ Extract structured data from various document formats:
60
+
61
+ ```typescript
62
+ // From file path
63
+ const result = await retab.documents.extract({
64
+ document: 'path/to/document.pdf',
65
+ schema: mySchema
66
+ });
67
+
68
+ // From buffer
69
+ const buffer = fs.readFileSync('document.pdf');
70
+ const result = await retab.documents.extract({
71
+ document: buffer,
72
+ schema: mySchema
73
+ });
74
+
75
+ // With specific AI model
76
+ const result = await retab.documents.extract({
77
+ document: 'document.pdf',
78
+ schema: mySchema,
79
+ model: 'gpt-4.1'
80
+ });
81
+ ```
82
+
83
+ ### Schema Management
84
+ Generate and enhance JSON schemas for your documents:
85
+
86
+ ```typescript
87
+ // Generate schema from sample documents
88
+ const schema = await retab.schemas.generate({
89
+ documents: ['invoice1.pdf', 'invoice2.pdf'],
90
+ instructions: 'Extract invoice data including line items'
91
+ });
92
+
93
+ // Enhance existing schema with ground truth data
94
+ const enhanced = await retab.schemas.enhance({
95
+ schema_id: 'existing-schema-id',
96
+ documents: ['sample.pdf'],
97
+ ground_truths: [{ invoice_total: 150.00 }]
98
+ });
99
+ ```
100
+
101
+ ### Multi-Provider AI Support
102
+ Use different AI providers by passing API keys via headers:
103
+
104
+ ```typescript
105
+ const retab = new Retab({
106
+ apiKey: 'your-retab-api-key',
107
+ defaultHeaders: {
108
+ 'X-OpenAI-Api-Key': 'your-openai-key',
109
+ 'X-Anthropic-Api-Key': 'your-anthropic-key',
110
+ 'X-xAI-Api-Key': 'your-xai-key',
111
+ 'X-Gemini-Api-Key': 'your-gemini-key'
112
+ }
113
+ });
114
+ ```
115
+
116
+ ### Consensus Extraction
117
+ Get multiple AI opinions for higher accuracy:
118
+
119
+ ```typescript
120
+ const consensus = await retab.consensus.extract({
121
+ document: 'contract.pdf',
122
+ schema: contractSchema,
123
+ num_extractions: 3,
124
+ models: ['gpt-4o', 'claude-3-5-sonnet-latest', 'grok-2-latest']
125
+ });
126
+ ```
127
+
128
+ ### Automation & Webhooks
129
+ Set up automated document processing:
130
+
131
+ ```typescript
132
+ // Create webhook endpoint
133
+ const automation = await retab.processors.endpoints.create({
134
+ name: 'Invoice Processor',
135
+ processor_id: 'proc_9dfnjkf2912',
136
+ webhook_url: 'https://your-app.com/webhook'
137
+ });
138
+
139
+ ```
140
+
141
+ ### Schema Types
142
+ The SDK supports multiple schema formats:
143
+
144
+ ```typescript
145
+ import { Schema } from '@retab/node';
146
+
147
+ // From JSON Schema
148
+ const schema = Schema.from_json_schema({
149
+ type: 'object',
150
+ properties: {
151
+ name: { type: 'string' }
152
+ }
153
+ });
154
+
155
+ // From Pydantic model (as JSON)
156
+ const schema = Schema.from_pydantic_json({
157
+ type: 'object',
158
+ properties: { /* ... */ }
159
+ });
160
+
161
+ // From Zod schema (as JSON)
162
+ const schema = Schema.from_zod_json({
163
+ /* zod schema JSON representation */
164
+ });
165
+ ```
166
+
167
+ ### Streaming Responses
168
+ For real-time updates:
169
+
170
+ ```typescript
171
+ const stream = await retab.documents.extract({
172
+ document: 'large-document.pdf',
173
+ schema: mySchema,
174
+ stream: true
175
+ });
176
+
177
+ for await (const chunk of stream) {
178
+ console.log('Progress:', chunk);
179
+ }
180
+ ```
181
+
182
+ ### Idempotency
183
+ Ensure requests are processed only once:
184
+
185
+ ```typescript
186
+ const result = await retab.documents.extract({
187
+ document: 'invoice.pdf',
188
+ schema: mySchema
189
+ }, {
190
+ headers: {
191
+ 'Idempotency-Key': 'unique-request-id'
192
+ }
193
+ });
194
+ ```
195
+
196
+ ## Configuration
197
+
198
+ ### Client Options
199
+
200
+ ```typescript
201
+ const retab = new Retab({
202
+ apiKey: 'your-api-key', // Required
203
+ baseUrl: 'https://api.retab.com', // Optional, defaults to production
204
+ timeout: 240000, // Optional, request timeout in ms
205
+ maxRetries: 3, // Optional, retry count
206
+ defaultHeaders: { // Optional, additional headers
207
+ 'X-Custom-Header': 'value'
208
+ }
209
+ });
210
+ ```
211
+
212
+ ### Environment Variables
213
+
214
+ - `RETAB_API_KEY`: Your Retab API key
215
+ - `RETAB_API_BASE_URL`: Override the default API base URL
216
+ - `OPENAI_API_KEY`: OpenAI API key (if not using headers)
217
+ - `ANTHROPIC_API_KEY`: Anthropic API key (if not using headers)
218
+ - `XAI_API_KEY`: xAI API key (if not using headers)
219
+ - `GEMINI_API_KEY`: Gemini API key (if not using headers)
220
+
221
+ ## TypeScript Support
222
+
223
+ The SDK is written in TypeScript and provides comprehensive type definitions:
224
+
225
+ ```typescript
226
+ import type {
227
+ Document,
228
+ Schema,
229
+ ExtractionResult,
230
+ Model,
231
+ BrowserCanvasSize
232
+ } from '@retab/node';
233
+ ```
234
+
235
+ ## Error Handling
236
+
237
+ The SDK provides detailed error types:
238
+
239
+ ```typescript
240
+ import { RetabError } from '@retab/node';
241
+
242
+ try {
243
+ const result = await retab.documents.extract({
244
+ document: 'file.pdf',
245
+ schema: mySchema
246
+ });
247
+ } catch (error) {
248
+ if (error instanceof RetabError) {
249
+ console.error('API Error:', error.message);
250
+ console.error('Status:', error.status);
251
+ console.error('Details:', error.details);
252
+ }
253
+ }
254
+ ```
255
+
256
+ ## Development
257
+
258
+ ### Building from Source
259
+
260
+ ```bash
261
+ npm install
262
+ npm run build
263
+ ```
264
+
265
+ ### Running Tests
266
+
267
+ ```bash
268
+ npm test # Run all tests
269
+ npm run test:watch # Watch mode
270
+ npm run test:coverage # With coverage
271
+ ```
272
+
273
+ ### Linting and Formatting
274
+
275
+ ```bash
276
+ npm run lint # Check for linting errors
277
+ npm run format # Format code with Prettier
278
+ ```
279
+
280
+ ## Requirements
281
+
282
+ - Node.js >= 16.0.0
283
+ - TypeScript >= 5.0.0 (for development)
284
+
285
+ ## License
286
+
287
+ MIT
288
+
289
+ ## Support
290
+
291
+ - Documentation: https://docs.retab.com
292
+ - Issues: https://github.com/retab-inc/retab/issues
293
+ - Discord: https://discord.gg/retab
@@ -0,0 +1,15 @@
1
+ import { AbstractClient, CompositionClient } from "@/client";
2
+ import APIModels from "./models/client";
3
+ import APIConsensus from "./consensus/client";
4
+ import APIDocuments from "./documents/client";
5
+ import APISchemas from "./schemas/client";
6
+ import APIDeployments from "./deployments/client";
7
+ export default class APIV1 extends CompositionClient {
8
+ constructor(client: AbstractClient);
9
+ models: APIModels;
10
+ consensus: APIConsensus;
11
+ documents: APIDocuments;
12
+ schemas: APISchemas;
13
+ deployments: APIDeployments;
14
+ }
15
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,iBAAiB;gBACpC,MAAM,EAAE,cAAc;IAIlC,MAAM,YAAuB;IAC7B,SAAS,eAA0B;IACnC,SAAS,eAA0B;IACnC,OAAO,aAAwB;IAC/B,WAAW,iBAA4B;CAC1C"}
@@ -0,0 +1,16 @@
1
+ import { CompositionClient } from "@/client";
2
+ import APIModels from "./models/client";
3
+ import APIConsensus from "./consensus/client";
4
+ import APIDocuments from "./documents/client";
5
+ import APISchemas from "./schemas/client";
6
+ import APIDeployments from "./deployments/client";
7
+ export default class APIV1 extends CompositionClient {
8
+ constructor(client) {
9
+ super(client);
10
+ this.models = new APIModels(this);
11
+ this.consensus = new APIConsensus(this);
12
+ this.documents = new APIDocuments(this);
13
+ this.schemas = new APISchemas(this);
14
+ this.deployments = new APIDeployments(this);
15
+ }
16
+ }
@@ -0,0 +1,7 @@
1
+ import { CompositionClient } from "@/client";
2
+ import { ReconciliationRequest, ReconciliationResponse } from "@/types";
3
+ export default class APIConsensus extends CompositionClient {
4
+ constructor(client: CompositionClient);
5
+ reconcile(params: ReconciliationRequest): Promise<ReconciliationResponse>;
6
+ }
7
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/consensus/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAmD,MAAM,SAAS,CAAC;AAEzH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,iBAAiB;gBAC3C,MAAM,EAAE,iBAAiB;IAG/B,SAAS,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAOlF"}
@@ -0,0 +1,14 @@
1
+ import { CompositionClient } from "@/client";
2
+ import { ZReconciliationRequest, ZReconciliationResponse } from "@/types";
3
+ export default class APIConsensus extends CompositionClient {
4
+ constructor(client) {
5
+ super(client);
6
+ }
7
+ async reconcile(params) {
8
+ return await this._fetchJson(ZReconciliationResponse, {
9
+ url: "/v1/consensus/reconcile",
10
+ method: "POST",
11
+ body: ZReconciliationRequest.parse(params),
12
+ });
13
+ }
14
+ }
@@ -0,0 +1,20 @@
1
+ import { CompositionClient } from "@/client";
2
+ import { MIMEDataInput } from "@/types";
3
+ export default class APIDeployments extends CompositionClient {
4
+ constructor(client: CompositionClient);
5
+ extract({ project_id, iteration_id, document, documents, temperature, seed, store }: {
6
+ project_id: string;
7
+ iteration_id: string;
8
+ document?: MIMEDataInput;
9
+ documents?: MIMEDataInput[];
10
+ temperature?: number;
11
+ seed?: number;
12
+ store?: boolean;
13
+ }): Promise<{
14
+ object: "schema";
15
+ strict: boolean;
16
+ json_schema: Record<string, any>;
17
+ created_at: string;
18
+ }>;
19
+ }
20
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/deployments/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAsB,MAAM,SAAS,CAAC;AAE5D,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,iBAAiB;gBAC7C,MAAM,EAAE,iBAAiB;IAI/B,OAAO,CAAC,EACV,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,IAAI,EACJ,KAAK,EACR,EAAE;QACC,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,OAAO,CAAC;KACnB;;;;;;CAeJ"}
@@ -0,0 +1,23 @@
1
+ import { CompositionClient } from "@/client";
2
+ import { mimeToBlob } from "@/mime";
3
+ import { ZMIMEData, ZSchema } from "@/types";
4
+ export default class APIDeployments extends CompositionClient {
5
+ constructor(client) {
6
+ super(client);
7
+ }
8
+ async extract({ project_id, iteration_id, document, documents, temperature, seed, store }) {
9
+ if (!document && (!documents || documents.length === 0)) {
10
+ throw new Error("Either 'document' or 'documents' must be provided.");
11
+ }
12
+ let url = `/v1/deployments/extract/${project_id}/${iteration_id}`;
13
+ return await this._fetchJson(ZSchema, {
14
+ url,
15
+ method: "POST",
16
+ body: {
17
+ temperature, seed, store,
18
+ documents: (await ZMIMEData.array().parseAsync([...document ? [document] : [], documents || []])).map(mimeToBlob)
19
+ },
20
+ bodyMime: "multipart/form-data",
21
+ });
22
+ }
23
+ }
@@ -0,0 +1,10 @@
1
+ import { CompositionClient } from "@/client";
2
+ import { DocumentExtractRequest, RetabParsedChatCompletion, ParseRequest, ParseResult, DocumentCreateMessageRequest, DocumentMessage, DocumentCreateInputRequest } from "@/types";
3
+ export default class APIDocuments extends CompositionClient {
4
+ constructor(client: CompositionClient);
5
+ extract(params: DocumentExtractRequest): Promise<RetabParsedChatCompletion>;
6
+ parse(params: ParseRequest): Promise<ParseResult>;
7
+ createMessages(params: DocumentCreateMessageRequest): Promise<DocumentMessage>;
8
+ createInputs(params: DocumentCreateInputRequest): Promise<DocumentMessage>;
9
+ }
10
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/documents/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAA2B,sBAAsB,EAAE,yBAAyB,EAA8B,YAAY,EAAE,WAAW,EAA+B,4BAA4B,EAAE,eAAe,EAAmD,0BAA0B,EAA+B,MAAM,SAAS,CAAC;AAGlV,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,iBAAiB;gBAC3C,MAAM,EAAE,iBAAiB;IAG/B,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAO3E,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAOjD,cAAc,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,eAAe,CAAC;IAO9E,YAAY,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,eAAe,CAAC;CAOnF"}
@@ -0,0 +1,35 @@
1
+ import { CompositionClient } from "@/client";
2
+ import { ZDocumentExtractRequest, ZRetabParsedChatCompletion, ZParseResult, ZParseRequest, ZDocumentMessage, ZDocumentCreateMessageRequest, ZDocumentCreateInputRequest } from "@/types";
3
+ export default class APIDocuments extends CompositionClient {
4
+ constructor(client) {
5
+ super(client);
6
+ }
7
+ async extract(params) {
8
+ return await this._fetchJson(ZRetabParsedChatCompletion, {
9
+ url: "/v1/documents/extract",
10
+ method: "POST",
11
+ body: await ZDocumentExtractRequest.parseAsync(params),
12
+ });
13
+ }
14
+ async parse(params) {
15
+ return await this._fetchJson(ZParseResult, {
16
+ url: "/v1/documents/parse",
17
+ method: "POST",
18
+ body: await ZParseRequest.parseAsync(params),
19
+ });
20
+ }
21
+ async createMessages(params) {
22
+ return await this._fetchJson(ZDocumentMessage, {
23
+ url: "/v1/documents/create_messages",
24
+ method: "POST",
25
+ body: await ZDocumentCreateMessageRequest.parseAsync(params),
26
+ });
27
+ }
28
+ async createInputs(params) {
29
+ return await this._fetchJson(ZDocumentMessage, {
30
+ url: "/v1/documents/create_inputs",
31
+ method: "POST",
32
+ body: await ZDocumentCreateInputRequest.parseAsync(params),
33
+ });
34
+ }
35
+ }
@@ -0,0 +1,17 @@
1
+ import { CompositionClient } from "@/client";
2
+ export default class APIModels extends CompositionClient {
3
+ constructor(client: CompositionClient);
4
+ list(params?: {
5
+ supports_finetuning?: boolean;
6
+ supports_image?: boolean;
7
+ include_finetuned_models?: boolean;
8
+ }): Promise<{
9
+ data: {
10
+ object: "model";
11
+ id: string;
12
+ created: number;
13
+ owned_by: string;
14
+ }[];
15
+ }>;
16
+ }
17
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/models/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,iBAAiB;gBACxC,MAAM,EAAE,iBAAiB;IAI/B,IAAI,CAAC,MAAM,CAAC,EAAE;QAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;KACtC;;;;;;;;CAOJ"}
@@ -0,0 +1,15 @@
1
+ import { CompositionClient } from "@/client";
2
+ import { ZModel } from "@/types";
3
+ import * as z from "zod";
4
+ export default class APIModels extends CompositionClient {
5
+ constructor(client) {
6
+ super(client);
7
+ }
8
+ async list(params) {
9
+ return await this._fetchJson(z.object({ data: z.array(ZModel) }), {
10
+ url: "/v1/models",
11
+ method: "GET",
12
+ params: params,
13
+ });
14
+ }
15
+ }
@@ -0,0 +1,12 @@
1
+ import { CompositionClient } from "@/client";
2
+ import { GenerateSchemaRequest } from "@/types";
3
+ export default class APISchemas extends CompositionClient {
4
+ constructor(client: CompositionClient);
5
+ generate(params: GenerateSchemaRequest): Promise<{
6
+ object: "schema";
7
+ strict: boolean;
8
+ json_schema: Record<string, any>;
9
+ created_at: string;
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/schemas/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAmC,MAAM,SAAS,CAAC;AAEjF,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,iBAAiB;gBACzC,MAAM,EAAE,iBAAiB;IAI/B,QAAQ,CAAC,MAAM,EAAE,qBAAqB;;;;;;CAO/C"}
@@ -0,0 +1,14 @@
1
+ import { CompositionClient } from "@/client";
2
+ import { ZGenerateSchemaRequest, ZSchema } from "@/types";
3
+ export default class APISchemas extends CompositionClient {
4
+ constructor(client) {
5
+ super(client);
6
+ }
7
+ async generate(params) {
8
+ return await this._fetchJson(ZSchema, {
9
+ url: "/v1/schemas/generate",
10
+ method: "POST",
11
+ body: await ZGenerateSchemaRequest.parseAsync(params),
12
+ });
13
+ }
14
+ }
@@ -0,0 +1,50 @@
1
+ import * as z from "zod";
2
+ type FetchParams = {
3
+ url: string;
4
+ method: string;
5
+ params?: Record<string, any>;
6
+ headers?: Record<string, any>;
7
+ bodyMime?: "application/json" | "multipart/form-data";
8
+ body?: Record<string, any>;
9
+ auth?: string[];
10
+ };
11
+ export declare class AbstractClient {
12
+ protected _fetch(_: FetchParams): Promise<Response>;
13
+ protected _fetchJson<ZodSchema extends z.ZodType<any, any, any>>(bodyType: ZodSchema, params: FetchParams): Promise<z.output<ZodSchema>>;
14
+ }
15
+ export declare class CompositionClient extends AbstractClient {
16
+ protected _client: AbstractClient;
17
+ constructor(client: AbstractClient);
18
+ protected _fetch(params: FetchParams): Promise<Response>;
19
+ }
20
+ export declare class APIError extends Error {
21
+ status: number;
22
+ info: string;
23
+ constructor(status: number, info: string);
24
+ }
25
+ export declare function streamResponse<ZodSchema extends z.ZodType<any, any, any>>(response: Response, schema: ZodSchema): AsyncGenerator<z.output<ZodSchema>>;
26
+ export declare const DateOrISO: z.ZodUnion<[z.ZodDate, z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Date, string>]>;
27
+ type AuthTypes = {
28
+ "bearer": string;
29
+ } | {
30
+ "masterKey": string;
31
+ } | {
32
+ "apiKey": string;
33
+ } | {};
34
+ export type ClientOptions = {
35
+ baseUrl?: string;
36
+ } & AuthTypes;
37
+ export declare class FetcherClient extends AbstractClient {
38
+ options: ClientOptions;
39
+ constructor(options?: ClientOptions);
40
+ _fetch(params: {
41
+ url: string;
42
+ method: string;
43
+ params?: Record<string, any>;
44
+ headers?: Record<string, any>;
45
+ bodyMime?: "application/json" | "multipart/form-data";
46
+ body?: Record<string, any>;
47
+ }): Promise<Response>;
48
+ }
49
+ export {};
50
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,kBAAkB,GAAG,qBAAqB,CAAC;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AACF,qBAAa,cAAc;IACzB,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;cAGnC,UAAU,CAAC,SAAS,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;CAQ/I;AAED,qBAAa,iBAAkB,SAAQ,cAAc;IACnD,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC;gBACtB,MAAM,EAAE,cAAc;IAIlC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;CAGzD;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;gBACD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAKzC;AAED,wBAAuB,cAAc,CAAC,SAAS,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAsC5J;AAED,eAAO,MAAM,SAAS,gGAKpB,CAAC;AAEH,KAAK,SAAS,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,EAAE,CAAC;AAC5F,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,SAAS,CAAC;AAEd,qBAAa,aAAc,SAAQ,cAAc;IAC/C,OAAO,EAAE,aAAa,CAAC;gBACX,OAAO,CAAC,EAAE,aAAa;IAK7B,MAAM,CAAC,MAAM,EAAE;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,QAAQ,CAAC,EAAE,kBAAkB,GAAG,qBAAqB,CAAC;QACtD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC5B,GAAG,OAAO,CAAC,QAAQ,CAAC;CAmDtB"}