@apicity/xai 0.4.1 → 0.4.3
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/README.md +34 -5
- package/dist/src/example.d.ts.map +1 -1
- package/dist/src/example.js +25 -18
- package/dist/src/example.js.map +1 -1
- package/dist/src/index.d.ts +5 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/paid-endpoints.d.ts +46 -0
- package/dist/src/paid-endpoints.d.ts.map +1 -0
- package/dist/src/paid-endpoints.js +107 -0
- package/dist/src/paid-endpoints.js.map +1 -0
- package/dist/src/paygate.d.ts +160 -0
- package/dist/src/paygate.d.ts.map +1 -0
- package/dist/src/paygate.js +336 -0
- package/dist/src/paygate.js.map +1 -0
- package/dist/src/types.d.ts +38 -4
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/with-paid-gate.d.ts +27 -0
- package/dist/src/with-paid-gate.d.ts.map +1 -0
- package/dist/src/with-paid-gate.js +91 -0
- package/dist/src/with-paid-gate.js.map +1 -0
- package/dist/src/xai.d.ts +1 -1
- package/dist/src/xai.d.ts.map +1 -1
- package/dist/src/xai.js +147 -6
- package/dist/src/xai.js.map +1 -1
- package/dist/src/zod.d.ts +308 -62
- package/dist/src/zod.d.ts.map +1 -1
- package/dist/src/zod.js +60 -14
- package/dist/src/zod.js.map +1 -1
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
# @apicity/xai
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@apicity/xai)
|
|
4
|
-
[](package.json)
|
|
5
5
|
[](tsconfig.json)
|
|
6
6
|
|
|
7
7
|
X.AI / Grok provider for chat and search.
|
|
8
8
|
|
|
9
9
|
Runtime dependencies:
|
|
10
10
|
|
|
11
|
-
- `@apicity/cost@workspace:*` — OTP pay-gate (`withPaidGate`) for paid endpoints
|
|
12
11
|
- `zod@^3.24.0` — request schemas attached to every POST endpoint as `.schema`
|
|
13
12
|
|
|
14
13
|
## Installation
|
|
@@ -144,7 +143,7 @@ console.log(result.usage);
|
|
|
144
143
|
|
|
145
144
|
## API Reference
|
|
146
145
|
|
|
147
|
-
|
|
146
|
+
47 endpoints across 18 groups. Each method mirrors an upstream URL path.
|
|
148
147
|
|
|
149
148
|
### apiKey
|
|
150
149
|
|
|
@@ -353,6 +352,21 @@ Source: [`packages/provider/xai/src/xai.ts`](src/xai.ts)
|
|
|
353
352
|
|
|
354
353
|
</details>
|
|
355
354
|
|
|
355
|
+
<details>
|
|
356
|
+
<summary><code>GET</code> <b><code>xai.v1.files.content</code></b></summary>
|
|
357
|
+
|
|
358
|
+
<code>GET https://api.x.ai/v1/files/{fileId}/content</code>
|
|
359
|
+
|
|
360
|
+
[Upstream docs ↗](https://docs.x.ai/docs/api-reference)
|
|
361
|
+
|
|
362
|
+
```typescript
|
|
363
|
+
const res = await xai.v1.files.content({ /* ... */ });
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
Source: [`packages/provider/xai/src/xai.ts`](src/xai.ts)
|
|
367
|
+
|
|
368
|
+
</details>
|
|
369
|
+
|
|
356
370
|
<details>
|
|
357
371
|
<summary><code>POST</code> <b><code>xai.v1.files</code></b></summary>
|
|
358
372
|
|
|
@@ -392,7 +406,7 @@ Source: [`packages/provider/xai/src/xai.ts`](src/xai.ts)
|
|
|
392
406
|
|
|
393
407
|
<code>POST https://api.x.ai/v1/images/edits</code>
|
|
394
408
|
|
|
395
|
-
[Upstream docs ↗](https://docs.x.ai/
|
|
409
|
+
[Upstream docs ↗](https://docs.x.ai/developers/rest-api-reference/inference/images)
|
|
396
410
|
|
|
397
411
|
```typescript
|
|
398
412
|
const res = await xai.v1.images.edits({ /* ... */ });
|
|
@@ -407,7 +421,7 @@ Source: [`packages/provider/xai/src/xai.ts`](src/xai.ts)
|
|
|
407
421
|
|
|
408
422
|
<code>POST https://api.x.ai/v1/images/generations</code>
|
|
409
423
|
|
|
410
|
-
[Upstream docs ↗](https://docs.x.ai/
|
|
424
|
+
[Upstream docs ↗](https://docs.x.ai/developers/rest-api-reference/inference/images)
|
|
411
425
|
|
|
412
426
|
```typescript
|
|
413
427
|
const res = await xai.v1.images.generations({ /* ... */ });
|
|
@@ -857,6 +871,21 @@ Source: [`packages/provider/xai/src/xai.ts`](src/xai.ts)
|
|
|
857
871
|
|
|
858
872
|
</details>
|
|
859
873
|
|
|
874
|
+
<details>
|
|
875
|
+
<summary><code>POST</code> <b><code>xai.v1.videos.generations.imageToVideo</code></b></summary>
|
|
876
|
+
|
|
877
|
+
<code>POST https://api.x.ai/v1/videos/generations</code>
|
|
878
|
+
|
|
879
|
+
[Upstream docs ↗](https://docs.x.ai/developers/model-capabilities/video/image-to-video)
|
|
880
|
+
|
|
881
|
+
```typescript
|
|
882
|
+
const res = await xai.v1.videos.generations.imageToVideo({ /* ... */ });
|
|
883
|
+
```
|
|
884
|
+
|
|
885
|
+
Source: [`packages/provider/xai/src/xai.ts`](src/xai.ts)
|
|
886
|
+
|
|
887
|
+
</details>
|
|
888
|
+
|
|
860
889
|
## Middleware
|
|
861
890
|
|
|
862
891
|
```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../src/example.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,QAAA,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../src/example.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,QAAA,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAwJ7C,CAAC;AAEF,eAAe,QAAQ,CAAC;AAOxB,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CA6ChD"}
|
package/dist/src/example.js
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
// hangs the matching entry off each endpoint function as `.example`.
|
|
7
7
|
const EXAMPLES = {
|
|
8
8
|
"POST managementApi.v1.collections": {
|
|
9
|
-
"source": "xai/collections-
|
|
9
|
+
"source": "xai/collections-documents-add",
|
|
10
10
|
"payload": {
|
|
11
|
-
"
|
|
11
|
+
"collection_name": "test-collection-for-docs"
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"POST managementApi.v1.collections.documents": {
|
|
@@ -62,20 +62,24 @@ const EXAMPLES = {
|
|
|
62
62
|
"POST v1.documents.search": {
|
|
63
63
|
"source": "xai/documents-search",
|
|
64
64
|
"payload": {
|
|
65
|
-
"query": "test",
|
|
66
|
-
"
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
"query": "aurora-test-vector",
|
|
66
|
+
"source": {
|
|
67
|
+
"collection_ids": [
|
|
68
|
+
"collection_2afa52a6-f4ce-4f9c-985f-37203c4bbd45"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"limit": 5
|
|
70
72
|
}
|
|
71
73
|
},
|
|
72
74
|
"POST v1.images.edits": {
|
|
73
|
-
"source": "xai/image-
|
|
75
|
+
"source": "xai/image-edit-single",
|
|
74
76
|
"payload": {
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
|
|
77
|
+
"prompt": "Render this as a pencil sketch with detailed shading",
|
|
78
|
+
"model": "grok-imagine-image",
|
|
79
|
+
"image": {
|
|
80
|
+
"url": "<inline image/jpeg data URL — replace with a real URL or upload>",
|
|
81
|
+
"type": "image_url"
|
|
82
|
+
}
|
|
79
83
|
}
|
|
80
84
|
},
|
|
81
85
|
"POST v1.images.generations": {
|
|
@@ -94,10 +98,10 @@ const EXAMPLES = {
|
|
|
94
98
|
}
|
|
95
99
|
},
|
|
96
100
|
"POST v1.responses": {
|
|
97
|
-
"source": "xai/responses-crud",
|
|
101
|
+
"source": "xai/responses-crud-create",
|
|
98
102
|
"payload": {
|
|
99
|
-
"model": "grok-
|
|
100
|
-
"input": "
|
|
103
|
+
"model": "grok-4-fast",
|
|
104
|
+
"input": "Hello!"
|
|
101
105
|
}
|
|
102
106
|
},
|
|
103
107
|
"POST v1.tokenizeText": {
|
|
@@ -137,10 +141,13 @@ const EXAMPLES = {
|
|
|
137
141
|
}
|
|
138
142
|
},
|
|
139
143
|
"POST v1.videos.generations": {
|
|
140
|
-
"source": "xai/video-
|
|
144
|
+
"source": "xai/video-text-to-video",
|
|
141
145
|
"payload": {
|
|
142
|
-
"
|
|
143
|
-
"
|
|
146
|
+
"prompt": "A white cat with heterochromia eyes walking across a rooftop at golden hour, cinematic drone shot",
|
|
147
|
+
"model": "grok-imagine-video",
|
|
148
|
+
"duration": 10,
|
|
149
|
+
"aspect_ratio": "16:9",
|
|
150
|
+
"resolution": "720p"
|
|
144
151
|
}
|
|
145
152
|
},
|
|
146
153
|
"PUT managementApi.v1.collections": {
|
package/dist/src/example.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example.js","sourceRoot":"","sources":["../../src/example.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,qEAAqE;AAOrE,MAAM,QAAQ,GAAoC;IAChD,mCAAmC,EAAE;QACnC,QAAQ,EAAE
|
|
1
|
+
{"version":3,"file":"example.js","sourceRoot":"","sources":["../../src/example.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,qEAAqE;AAOrE,MAAM,QAAQ,GAAoC;IAChD,mCAAmC,EAAE;QACnC,QAAQ,EAAE,+BAA+B;QACzC,SAAS,EAAE;YACT,iBAAiB,EAAE,0BAA0B;SAC9C;KACF;IACD,6CAA6C,EAAE;QAC7C,QAAQ,EAAE,+BAA+B;QACzC,SAAS,EAAE,EAAE;KACd;IACD,iBAAiB,EAAE;QACjB,QAAQ,EAAE,eAAe;QACzB,SAAS,EAAE;YACT,MAAM,EAAE,gBAAgB;SACzB;KACF;IACD,wBAAwB,EAAE;QACxB,QAAQ,EAAE,kBAAkB;QAC5B,SAAS,EAAE,EAAE;KACd;IACD,0BAA0B,EAAE;QAC1B,QAAQ,EAAE,oBAAoB;QAC9B,SAAS,EAAE;YACT,gBAAgB,EAAE;gBAChB;oBACE,kBAAkB,EAAE,YAAY;oBAChC,eAAe,EAAE;wBACf,qBAAqB,EAAE;4BACrB,UAAU,EAAE;gCACV;oCACE,MAAM,EAAE,MAAM;oCACd,SAAS,EAAE,cAAc;iCAC1B;6BACF;4BACD,OAAO,EAAE,QAAQ;yBAClB;qBACF;iBACF;aACF;SACF;KACF;IACD,0BAA0B,EAAE;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,SAAS,EAAE;YACT,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,4BAA4B;iBACxC;aACF;YACD,aAAa,EAAE,CAAC;SACjB;KACF;IACD,0BAA0B,EAAE;QAC1B,QAAQ,EAAE,sBAAsB;QAChC,SAAS,EAAE;YACT,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE;gBACR,gBAAgB,EAAE;oBAChB,iDAAiD;iBAClD;aACF;YACD,OAAO,EAAE,CAAC;SACX;KACF;IACD,sBAAsB,EAAE;QACtB,QAAQ,EAAE,uBAAuB;QACjC,SAAS,EAAE;YACT,QAAQ,EAAE,sDAAsD;YAChE,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE;gBACP,KAAK,EAAE,kEAAkE;gBACzE,MAAM,EAAE,WAAW;aACpB;SACF;KACF;IACD,4BAA4B,EAAE;QAC5B,QAAQ,EAAE,0BAA0B;QACpC,SAAS,EAAE;YACT,QAAQ,EAAE,0CAA0C;YACpD,OAAO,EAAE,oBAAoB;YAC7B,GAAG,EAAE,CAAC;SACP;KACF;IACD,gCAAgC,EAAE;QAChC,QAAQ,EAAE,6BAA6B;QACvC,SAAS,EAAE;YACT,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,MAAM;SAChB;KACF;IACD,mBAAmB,EAAE;QACnB,QAAQ,EAAE,2BAA2B;QACrC,SAAS,EAAE;YACT,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,QAAQ;SAClB;KACF;IACD,sBAAsB,EAAE;QACtB,QAAQ,EAAE,mBAAmB;QAC7B,SAAS,EAAE;YACT,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,cAAc;SACvB;KACF;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,iBAAiB;QAC3B,SAAS,EAAE;YACT,MAAM,EAAE,2CAA2C;YACnD,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,IAAI;SACjB;KACF;IACD,sBAAsB,EAAE;QACtB,QAAQ,EAAE,gBAAgB;QAC1B,SAAS,EAAE;YACT,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,kCAAkC;YAC5C,OAAO,EAAE;gBACP,KAAK,EAAE,4DAA4D;aACpE;SACF;KACF;IACD,2BAA2B,EAAE;QAC3B,QAAQ,EAAE,4BAA4B;QACtC,SAAS,EAAE;YACT,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,sEAAsE;YAChF,OAAO,EAAE;gBACP,KAAK,EAAE,4DAA4D;aACpE;YACD,UAAU,EAAE,CAAC;SACd;KACF;IACD,4BAA4B,EAAE;QAC5B,QAAQ,EAAE,yBAAyB;QACnC,SAAS,EAAE;YACT,QAAQ,EAAE,mGAAmG;YAC7G,OAAO,EAAE,oBAAoB;YAC7B,UAAU,EAAE,EAAE;YACd,cAAc,EAAE,MAAM;YACtB,YAAY,EAAE,MAAM;SACrB;KACF;IACD,kCAAkC,EAAE;QAClC,QAAQ,EAAE,4BAA4B;QACtC,SAAS,EAAE;YACT,iBAAiB,EAAE,yBAAyB;SAC7C;KACF;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC;AAExB,0EAA0E;AAC1E,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,oDAAoD;AACpD,MAAM,UAAU,cAAc,CAAI,QAAW;IAC3C,MAAM,IAAI,GAAG,QAAmC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7E,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,EAAE,GAAG,CAAC;YAAE,SAAS;QACrB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAmB;YACjC,IAAI,CAAC,MAAM,CAAC;YACX,IAAI,CAAC,MAAM,CAAyC,EAAE,GAAG;YAC1D,IAAI;SACL,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,SAAS,GAAI,GAA+B,CAAC,MAAM,CAAC,CAAC;gBAC3D,IAAI,SAAS;oBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/B,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,QAAQ;YAAE,SAAS;QACvB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,SAAS;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,SAAS;YAC9C,MAAM,SAAS,GAAI,GAA+B,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,IAAc;IAC9C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAK,KAAgB,EAAE,CAAC;QAC1E,MAAM,OAAO,GAAG,KAAgD,CAAC;QACjE,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,GAAG,GAAY,KAAK,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnD,MAAM,CAAC,GAAG,OAAO,GAAG,CAAC;QACrB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QACpD,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,OAAO,GAAG,KAAK,UAAU;QAC9B,CAAC,CAAE,GAAuC;QAC1C,CAAC,CAAC,IAAI,CAAC;AACX,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { createXai } from "./xai";
|
|
2
|
-
export { XaiError } from "./types";
|
|
3
|
-
export { withRetry, withFallback, withRateLimit, createRateLimiter, XAI_RATE_LIMITS, } from "./middleware";
|
|
4
|
-
export type { RetryOptions, FallbackOptions, RateLimiterOptions, RateLimiter, RateLimitOptions, } from "./middleware";
|
|
5
|
-
export type { XaiOptions, XaiMessage, XaiToolFunction, XaiTool, XaiToolCall, XaiUsage, XaiChatChoice, XaiChatRequest, XaiChatResponse, XaiDeferredChatCompletionResult, XaiImageGenerateRequest, XaiImageEditRequest, XaiImageReference, XaiGeneratedImage, XaiImageResponse, XaiVideoGenerateRequest, XaiVideoEditRequest, XaiVideoExtendRequest, XaiVideoReference, XaiVideoAsyncResponse, XaiVideoData, XaiVideoResult, XaiFileObject, XaiFileListResponse, XaiBatchState, XaiBatch, XaiBatchCreateRequest, XaiBatchListResponse, XaiBatchListParams, XaiBatchRequestMetadata, XaiBatchRequestListResponse, XaiBatchRequestListParams, XaiBatchRequestItem, XaiBatchAddRequestsBody, XaiBatchResultItem, XaiBatchResultListResponse, XaiBatchResultListParams, XaiChunkConfiguration, XaiFieldDefinition, XaiCollectionCreateRequest, XaiCollection, XaiCollectionListParams, XaiCollectionListResponse, XaiCollectionUpdateRequest, XaiDocumentFileMetadata, XaiDocument, XaiDocumentListParams, XaiDocumentListResponse, XaiDocumentAddRequest, XaiDocumentSearchRequest, XaiDocumentSearchMatch, XaiDocumentSearchResponse, XaiResponseRequest, XaiResponseResponse, XaiResponseInputItem, XaiResponseInputMessage, XaiResponseInputContent, XaiResponseInputTextContent, XaiResponseInputImageContent, XaiResponseFunctionCallOutput, XaiResponseItemReference, XaiResponseTool, XaiResponseFunctionTool, XaiResponseWebSearchTool, XaiResponseFileSearchTool, XaiResponseTextFormat, XaiResponseReasoning, XaiResponseSearchParameters, XaiResponseOutputItem, XaiResponseOutputMessage, XaiResponseOutputContent, XaiResponseOutputText, XaiResponseRefusal, XaiResponseAnnotation, XaiResponseFunctionCallItem, XaiResponseWebSearchCallItem, XaiResponseFileSearchCallItem, XaiResponseUsage, XaiResponseDeleteResponse, XaiModel, XaiModelListResponse, XaiLanguageModel, XaiLanguageModelListResponse, XaiImageGenerationModel, XaiImageGenerationModelListResponse, XaiVideoGenerationModel, XaiVideoGenerationModelListResponse, XaiTokenizeTextRequest, XaiToken, XaiTokenizeTextResponse, XaiRealtimeClientSecretRequest, XaiRealtimeClientSecretResponse, XaiRealtimeTurnDetection, XaiRealtimeAudioFormat, XaiRealtimeAudioConfig, XaiRealtimeFunctionTool, XaiRealtimeWebSearchTool, XaiRealtimeXSearchTool, XaiRealtimeFileSearchTool, XaiRealtimeMcpTool, XaiRealtimeTool, XaiRealtimeSession, XaiRealtimeClientEvent, XaiRealtimeSessionUpdate, XaiRealtimeInputAudioBufferAppend, XaiRealtimeInputAudioBufferCommit, XaiRealtimeConversationItemCreate, XaiRealtimeResponseCreate, XaiRealtimeResponseCancel, XaiRealtimeServerEvent, XaiRealtimeConversationCreated, XaiRealtimeSessionUpdated, XaiRealtimeSpeechStarted, XaiRealtimeSpeechStopped, XaiRealtimeAudioBufferCommitted, XaiRealtimeConversationItemAdded, XaiRealtimeTranscriptionCompleted, XaiRealtimeResponseCreated, XaiRealtimeResponseDone, XaiRealtimeOutputItemAdded, XaiRealtimeOutputItemDone, XaiRealtimeAudioDelta, XaiRealtimeAudioDone, XaiRealtimeAudioTranscriptDelta, XaiRealtimeAudioTranscriptDone, XaiRealtimeTextDelta, XaiRealtimeTextDone, XaiRealtimeFunctionCallDelta, XaiRealtimeFunctionCallDone, XaiRealtimeContentPartAdded, XaiRealtimeContentPartDone, XaiRealtimeError, XaiRealtimeConnectOptions, XaiRealtimeConnection, XaiTtsRequest, XaiSttRequest, XaiSttWord, XaiSttResponse, XaiCustomVoiceCreateRequest, XaiCustomVoice, XaiApiKeyInfo, XaiManagementApiKey, XaiManagementApiKeyListParams, XaiManagementApiKeyListResponse, XaiUsdCents, XaiBillingBalanceChangeOrigin, XaiBillingTopupStatus, XaiBillingPaymentProcessor, XaiBillingPrepaidBalanceChange, XaiBillingPrepaidBalanceResponse, XaiBillingInvoiceLine, XaiBillingPostpaidInvoicePreviewResponse, XaiBillingPostpaidSpendingLimitsResponse, XaiBillingUsageDataPoint, XaiBillingUsageTimeSeries, XaiBillingUsageRequest, XaiBillingUsageResponse, XaiProvider, } from "./types";
|
|
1
|
+
export { createXai } from "./xai.js";
|
|
2
|
+
export { XaiError } from "./types.js";
|
|
3
|
+
export { withRetry, withFallback, withRateLimit, createRateLimiter, XAI_RATE_LIMITS, } from "./middleware.js";
|
|
4
|
+
export type { RetryOptions, FallbackOptions, RateLimiterOptions, RateLimiter, RateLimitOptions, } from "./middleware.js";
|
|
5
|
+
export type { XaiOptions, XaiMessage, XaiToolFunction, XaiTool, XaiToolCall, XaiUsage, XaiChatChoice, XaiChatRequest, XaiChatResponse, XaiDeferredChatCompletionResult, XaiImageGenerateRequest, XaiImageEditRequest, XaiImageReference, XaiImageFileOutput, XaiGeneratedImage, XaiImageUsage, XaiImageResponse, XaiVideoGenerateRequest, XaiGrokImagineVideo15ImageToVideoRequest, XaiGrokImagineVideo15ImageToVideoResponse, XaiVideoEditRequest, XaiVideoExtendRequest, XaiVideoReference, XaiVideoReferenceInput, XaiVideoAsyncResponse, XaiVideoData, XaiVideoUsage, XaiVideoResult, XaiFileObject, XaiFileListResponse, XaiBatchState, XaiBatch, XaiBatchCreateRequest, XaiBatchListResponse, XaiBatchListParams, XaiBatchRequestMetadata, XaiBatchRequestListResponse, XaiBatchRequestListParams, XaiBatchRequestItem, XaiBatchAddRequestsBody, XaiBatchResultItem, XaiBatchResultListResponse, XaiBatchResultListParams, XaiChunkConfiguration, XaiFieldDefinition, XaiCollectionCreateRequest, XaiCollection, XaiCollectionListParams, XaiCollectionListResponse, XaiCollectionUpdateRequest, XaiDocumentFileMetadata, XaiDocument, XaiDocumentListParams, XaiDocumentListResponse, XaiDocumentAddRequest, XaiDocumentSearchRequest, XaiDocumentSearchMatch, XaiDocumentSearchResponse, XaiResponseRequest, XaiResponseResponse, XaiResponseInputItem, XaiResponseInputMessage, XaiResponseInputContent, XaiResponseInputTextContent, XaiResponseInputImageContent, XaiResponseFunctionCallOutput, XaiResponseItemReference, XaiResponseTool, XaiResponseFunctionTool, XaiResponseWebSearchTool, XaiResponseFileSearchTool, XaiResponseTextFormat, XaiResponseReasoning, XaiResponseSearchParameters, XaiResponseOutputItem, XaiResponseOutputMessage, XaiResponseOutputContent, XaiResponseOutputText, XaiResponseRefusal, XaiResponseAnnotation, XaiResponseFunctionCallItem, XaiResponseWebSearchCallItem, XaiResponseFileSearchCallItem, XaiResponseUsage, XaiResponseDeleteResponse, XaiModel, XaiModelListResponse, XaiLanguageModel, XaiLanguageModelListResponse, XaiImageGenerationModel, XaiImageGenerationModelListResponse, XaiVideoGenerationModel, XaiVideoGenerationModelListResponse, XaiTokenizeTextRequest, XaiToken, XaiTokenizeTextResponse, XaiRealtimeClientSecretRequest, XaiRealtimeClientSecretResponse, XaiRealtimeTurnDetection, XaiRealtimeAudioFormat, XaiRealtimeAudioConfig, XaiRealtimeFunctionTool, XaiRealtimeWebSearchTool, XaiRealtimeXSearchTool, XaiRealtimeFileSearchTool, XaiRealtimeMcpTool, XaiRealtimeTool, XaiRealtimeSession, XaiRealtimeClientEvent, XaiRealtimeSessionUpdate, XaiRealtimeInputAudioBufferAppend, XaiRealtimeInputAudioBufferCommit, XaiRealtimeConversationItemCreate, XaiRealtimeResponseCreate, XaiRealtimeResponseCancel, XaiRealtimeServerEvent, XaiRealtimeConversationCreated, XaiRealtimeSessionUpdated, XaiRealtimeSpeechStarted, XaiRealtimeSpeechStopped, XaiRealtimeAudioBufferCommitted, XaiRealtimeConversationItemAdded, XaiRealtimeTranscriptionCompleted, XaiRealtimeResponseCreated, XaiRealtimeResponseDone, XaiRealtimeOutputItemAdded, XaiRealtimeOutputItemDone, XaiRealtimeAudioDelta, XaiRealtimeAudioDone, XaiRealtimeAudioTranscriptDelta, XaiRealtimeAudioTranscriptDone, XaiRealtimeTextDelta, XaiRealtimeTextDone, XaiRealtimeFunctionCallDelta, XaiRealtimeFunctionCallDone, XaiRealtimeContentPartAdded, XaiRealtimeContentPartDone, XaiRealtimeError, XaiRealtimeConnectOptions, XaiRealtimeConnection, XaiTtsRequest, XaiSttRequest, XaiSttWord, XaiSttResponse, XaiCustomVoiceCreateRequest, XaiCustomVoice, XaiApiKeyInfo, XaiManagementApiKey, XaiManagementApiKeyListParams, XaiManagementApiKeyListResponse, XaiUsdCents, XaiBillingBalanceChangeOrigin, XaiBillingTopupStatus, XaiBillingPaymentProcessor, XaiBillingPrepaidBalanceChange, XaiBillingPrepaidBalanceResponse, XaiBillingInvoiceLine, XaiBillingPostpaidInvoicePreviewResponse, XaiBillingPostpaidSpendingLimitsResponse, XaiBillingUsageDataPoint, XaiBillingUsageTimeSeries, XaiBillingUsageRequest, XaiBillingUsageResponse, XaiProvider, } from "./types.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,UAAU,EACV,UAAU,EACV,eAAe,EACf,OAAO,EACP,WAAW,EACX,QAAQ,EACR,aAAa,EACb,cAAc,EACd,eAAe,EACf,+BAA+B,EAC/B,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,wCAAwC,EACxC,yCAAyC,EACzC,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,QAAQ,EACR,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,aAAa,EACb,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,WAAW,EACX,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,2BAA2B,EAC3B,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,gBAAgB,EAChB,yBAAyB,EACzB,QAAQ,EACR,oBAAoB,EACpB,gBAAgB,EAChB,4BAA4B,EAC5B,uBAAuB,EACvB,mCAAmC,EACnC,uBAAuB,EACvB,mCAAmC,EACnC,sBAAsB,EACtB,QAAQ,EACR,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAC/B,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,iCAAiC,EACjC,iCAAiC,EACjC,iCAAiC,EACjC,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,8BAA8B,EAC9B,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,+BAA+B,EAC/B,8BAA8B,EAC9B,oBAAoB,EACpB,mBAAmB,EACnB,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,EAChB,yBAAyB,EACzB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,EAC/B,WAAW,EACX,6BAA6B,EAC7B,qBAAqB,EACrB,0BAA0B,EAC1B,8BAA8B,EAC9B,gCAAgC,EAChC,qBAAqB,EACrB,wCAAwC,EACxC,wCAAwC,EACxC,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,WAAW,GACZ,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exact paid-endpoint registry.
|
|
3
|
+
*
|
|
4
|
+
* Only endpoints listed here are considered paid. All unlisted endpoints
|
|
5
|
+
* are assumed free and must preserve current behavior with no caller changes.
|
|
6
|
+
*
|
|
7
|
+
* Matching is exact: provider + method + dotPath. No regex, prefix,
|
|
8
|
+
* wildcard, path-family, generated broad match, or fallback-by-method logic.
|
|
9
|
+
*/
|
|
10
|
+
export interface PaidEndpointKey {
|
|
11
|
+
provider: string;
|
|
12
|
+
method: string;
|
|
13
|
+
dotPath: string;
|
|
14
|
+
}
|
|
15
|
+
export interface PaidEndpointInfo {
|
|
16
|
+
/** Human-readable reason why this endpoint is paid. */
|
|
17
|
+
reason: string;
|
|
18
|
+
/** Optional estimator identifier for cost computation. */
|
|
19
|
+
estimatorId?: string;
|
|
20
|
+
/** Optional known cost notes (e.g. per-unit billing details). */
|
|
21
|
+
costNotes?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface PaidEndpointEntry {
|
|
24
|
+
key: PaidEndpointKey;
|
|
25
|
+
info: PaidEndpointInfo;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The canonical list of paid endpoints. Add new entries here only after
|
|
29
|
+
* review. Keep the list small and explicit.
|
|
30
|
+
*/
|
|
31
|
+
export declare const PAID_ENDPOINTS: readonly PaidEndpointEntry[];
|
|
32
|
+
/**
|
|
33
|
+
* Look up a paid endpoint by exact key match.
|
|
34
|
+
*
|
|
35
|
+
* Returns `PaidEndpointInfo` only when provider, method, and dotPath all match
|
|
36
|
+
* an entry in `PAID_ENDPOINTS` exactly. Returns `undefined` for every
|
|
37
|
+
* unlisted endpoint, which callers must treat as free.
|
|
38
|
+
*/
|
|
39
|
+
export declare function lookupPaidEndpoint(provider: string, method: string, dotPath: string): PaidEndpointInfo | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Predicate: is this exact endpoint paid?
|
|
42
|
+
*
|
|
43
|
+
* Unlisted endpoints return `false` (assumed free).
|
|
44
|
+
*/
|
|
45
|
+
export declare function isPaidEndpoint(provider: string, method: string, dotPath: string): boolean;
|
|
46
|
+
//# sourceMappingURL=paid-endpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paid-endpoints.d.ts","sourceRoot":"","sources":["../../src/paid-endpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,eAAe,CAAC;IACrB,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,iBAAiB,EAqEtD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,gBAAgB,GAAG,SAAS,CAW9B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAET"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exact paid-endpoint registry.
|
|
3
|
+
*
|
|
4
|
+
* Only endpoints listed here are considered paid. All unlisted endpoints
|
|
5
|
+
* are assumed free and must preserve current behavior with no caller changes.
|
|
6
|
+
*
|
|
7
|
+
* Matching is exact: provider + method + dotPath. No regex, prefix,
|
|
8
|
+
* wildcard, path-family, generated broad match, or fallback-by-method logic.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* The canonical list of paid endpoints. Add new entries here only after
|
|
12
|
+
* review. Keep the list small and explicit.
|
|
13
|
+
*/
|
|
14
|
+
export const PAID_ENDPOINTS = [
|
|
15
|
+
{
|
|
16
|
+
key: {
|
|
17
|
+
provider: "xai",
|
|
18
|
+
method: "POST",
|
|
19
|
+
dotPath: "v1.images.generations",
|
|
20
|
+
},
|
|
21
|
+
info: {
|
|
22
|
+
reason: "Image generation task that incurs direct compute cost",
|
|
23
|
+
costNotes: "Billed per image based on model and resolution",
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
key: {
|
|
28
|
+
provider: "xai",
|
|
29
|
+
method: "POST",
|
|
30
|
+
dotPath: "v1.images.edits",
|
|
31
|
+
},
|
|
32
|
+
info: {
|
|
33
|
+
reason: "Image edit task that incurs direct compute cost",
|
|
34
|
+
costNotes: "Billed per image edit based on model and resolution",
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
key: {
|
|
39
|
+
provider: "xai",
|
|
40
|
+
method: "POST",
|
|
41
|
+
dotPath: "v1.videos.generations",
|
|
42
|
+
},
|
|
43
|
+
info: {
|
|
44
|
+
reason: "Video generation task that incurs direct compute cost",
|
|
45
|
+
costNotes: "Billed per video generation based on duration and model",
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: {
|
|
50
|
+
provider: "xai",
|
|
51
|
+
method: "POST",
|
|
52
|
+
dotPath: "v1.videos.generations.imageToVideo",
|
|
53
|
+
},
|
|
54
|
+
info: {
|
|
55
|
+
reason: "Grok Imagine image-to-video generation incurs direct compute cost",
|
|
56
|
+
costNotes: "Billed per video generation based on duration, resolution, and input image",
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
key: {
|
|
61
|
+
provider: "xai",
|
|
62
|
+
method: "POST",
|
|
63
|
+
dotPath: "v1.videos.edits",
|
|
64
|
+
},
|
|
65
|
+
info: {
|
|
66
|
+
reason: "Video edit task that incurs direct compute cost",
|
|
67
|
+
costNotes: "Billed per video edit based on duration and model",
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
key: {
|
|
72
|
+
provider: "xai",
|
|
73
|
+
method: "POST",
|
|
74
|
+
dotPath: "v1.videos.extensions",
|
|
75
|
+
},
|
|
76
|
+
info: {
|
|
77
|
+
reason: "Video extension task that incurs direct compute cost",
|
|
78
|
+
costNotes: "Billed per video extension based on duration and model",
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
];
|
|
82
|
+
/**
|
|
83
|
+
* Look up a paid endpoint by exact key match.
|
|
84
|
+
*
|
|
85
|
+
* Returns `PaidEndpointInfo` only when provider, method, and dotPath all match
|
|
86
|
+
* an entry in `PAID_ENDPOINTS` exactly. Returns `undefined` for every
|
|
87
|
+
* unlisted endpoint, which callers must treat as free.
|
|
88
|
+
*/
|
|
89
|
+
export function lookupPaidEndpoint(provider, method, dotPath) {
|
|
90
|
+
for (const entry of PAID_ENDPOINTS) {
|
|
91
|
+
if (entry.key.provider === provider &&
|
|
92
|
+
entry.key.method === method &&
|
|
93
|
+
entry.key.dotPath === dotPath) {
|
|
94
|
+
return entry.info;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Predicate: is this exact endpoint paid?
|
|
101
|
+
*
|
|
102
|
+
* Unlisted endpoints return `false` (assumed free).
|
|
103
|
+
*/
|
|
104
|
+
export function isPaidEndpoint(provider, method, dotPath) {
|
|
105
|
+
return lookupPaidEndpoint(provider, method, dotPath) !== undefined;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=paid-endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paid-endpoints.js","sourceRoot":"","sources":["../../src/paid-endpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAsBH;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiC;IAC1D;QACE,GAAG,EAAE;YACH,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,uBAAuB;SACjC;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,uDAAuD;YAC/D,SAAS,EAAE,gDAAgD;SAC5D;KACF;IACD;QACE,GAAG,EAAE;YACH,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,iBAAiB;SAC3B;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,iDAAiD;YACzD,SAAS,EAAE,qDAAqD;SACjE;KACF;IACD;QACE,GAAG,EAAE;YACH,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,uBAAuB;SACjC;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,uDAAuD;YAC/D,SAAS,EAAE,yDAAyD;SACrE;KACF;IACD;QACE,GAAG,EAAE;YACH,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,oCAAoC;SAC9C;QACD,IAAI,EAAE;YACJ,MAAM,EACJ,mEAAmE;YACrE,SAAS,EACP,4EAA4E;SAC/E;KACF;IACD;QACE,GAAG,EAAE;YACH,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,iBAAiB;SAC3B;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,iDAAiD;YACzD,SAAS,EAAE,mDAAmD;SAC/D;KACF;IACD;QACE,GAAG,EAAE;YACH,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,sBAAsB;SAChC;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,sDAAsD;YAC9D,SAAS,EAAE,wDAAwD;SACpE;KACF;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,MAAc,EACd,OAAe;IAEf,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,IACE,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ;YAC/B,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM;YAC3B,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,EAC7B,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,MAAc,EACd,OAAe;IAEf,OAAO,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OTP payload schema. An OTP commits to an exact
|
|
3
|
+
* `(provider, method, dotPath, requestHash)` tuple with an expiry, and is
|
|
4
|
+
* single-use via its `jti`.
|
|
5
|
+
*/
|
|
6
|
+
export interface PayGateOtpPayload {
|
|
7
|
+
v: 1;
|
|
8
|
+
jti: string;
|
|
9
|
+
provider: string;
|
|
10
|
+
method: string;
|
|
11
|
+
dotPath: string;
|
|
12
|
+
requestHash: `sha256:${string}`;
|
|
13
|
+
iat: number;
|
|
14
|
+
exp: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Caller-supplied approval object.
|
|
18
|
+
*/
|
|
19
|
+
export interface PayGateApproval {
|
|
20
|
+
otp: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Single-use replay ledger. The default is an in-process Set scoped to one
|
|
24
|
+
* provider instance (see `createReplayStore`). Pass a custom store for
|
|
25
|
+
* cross-process or persistent replay protection.
|
|
26
|
+
*/
|
|
27
|
+
export interface ReplayStore {
|
|
28
|
+
has(jti: string): boolean;
|
|
29
|
+
add(jti: string): void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Pay-gate configuration supplied by the code client at construction time
|
|
33
|
+
* (never by the autonomous caller). Holds the shared HMAC secret used to mint
|
|
34
|
+
* and verify OTPs. No environment variables, no key files.
|
|
35
|
+
*/
|
|
36
|
+
export interface PayGateConfig {
|
|
37
|
+
/** Shared HMAC secret. The code client holds it; the AI never sees it. */
|
|
38
|
+
secret: string;
|
|
39
|
+
/** Replay ledger. Defaults to an in-process Set, per provider instance. */
|
|
40
|
+
replayStore?: ReplayStore;
|
|
41
|
+
/** Clock injection for testing. Defaults to `Date.now`. */
|
|
42
|
+
now?: () => number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Error thrown when the pay gate blocks a request.
|
|
46
|
+
*/
|
|
47
|
+
export declare class PayGateError extends Error {
|
|
48
|
+
readonly provider: string;
|
|
49
|
+
readonly method: string;
|
|
50
|
+
readonly dotPath: string;
|
|
51
|
+
readonly code: "paygate-not-configured" | "otp-missing" | "otp-malformed" | "otp-invalid-signature" | "otp-expired" | "otp-mismatched-request" | "otp-replayed";
|
|
52
|
+
constructor(provider: string, method: string, dotPath: string, code: PayGateError["code"], message: string);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Verification-only error codes — the subset of PayGateError codes that the
|
|
56
|
+
* pure `verifyOtp` can emit. The shell layer ("paygate-not-configured",
|
|
57
|
+
* "otp-missing") is handled separately in `dispatchWithPaidGate`.
|
|
58
|
+
*/
|
|
59
|
+
export type VerifyFailureCode = "otp-malformed" | "otp-invalid-signature" | "otp-expired" | "otp-mismatched-request" | "otp-replayed";
|
|
60
|
+
/**
|
|
61
|
+
* Tagged-union result from the pure `verifyOtp` function.
|
|
62
|
+
*/
|
|
63
|
+
export type VerifyResult = {
|
|
64
|
+
ok: true;
|
|
65
|
+
jti: string;
|
|
66
|
+
} | {
|
|
67
|
+
ok: false;
|
|
68
|
+
code: VerifyFailureCode;
|
|
69
|
+
message: string;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Pure inputs to `verifyOtp`. Every dependency is explicit — no env vars,
|
|
73
|
+
* no `Date.now()`, no filesystem reads.
|
|
74
|
+
*/
|
|
75
|
+
export interface VerifyOtpInput {
|
|
76
|
+
nowSeconds: number;
|
|
77
|
+
secret: string;
|
|
78
|
+
expected: {
|
|
79
|
+
provider: string;
|
|
80
|
+
method: string;
|
|
81
|
+
dotPath: string;
|
|
82
|
+
};
|
|
83
|
+
payloadHash: `sha256:${string}`;
|
|
84
|
+
otp: string;
|
|
85
|
+
isJtiConsumed: (jti: string) => boolean;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Canonicalize a JSON value by sorting object keys recursively.
|
|
89
|
+
* Arrays preserve order. Non-JSON values (undefined, functions, symbols,
|
|
90
|
+
* circular references) cause a TypeError so the caller can fail closed.
|
|
91
|
+
*/
|
|
92
|
+
export declare function canonicalizeJson(value: unknown): string;
|
|
93
|
+
/**
|
|
94
|
+
* Compute SHA-256 of canonical JSON, prefixed with `sha256:`.
|
|
95
|
+
*/
|
|
96
|
+
export declare function canonicalHash(value: unknown): `sha256:${string}`;
|
|
97
|
+
/**
|
|
98
|
+
* Parse a TTL string like "10m", "1h", "30s", "1d" into seconds.
|
|
99
|
+
*/
|
|
100
|
+
export declare function parseTtl(ttl: string): number;
|
|
101
|
+
/**
|
|
102
|
+
* Parse an OTP envelope: `<base64url(payloadJson)>.<base64url(signature)>`.
|
|
103
|
+
* Returns the payload object and raw signature bytes.
|
|
104
|
+
*/
|
|
105
|
+
export declare function parseOtp(otp: string): {
|
|
106
|
+
payload: PayGateOtpPayload;
|
|
107
|
+
signature: Buffer;
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Create an in-process, single-use replay store backed by a `Set`.
|
|
111
|
+
* Scoped to whatever holds the reference (typically one provider instance).
|
|
112
|
+
*/
|
|
113
|
+
export declare function createReplayStore(): ReplayStore;
|
|
114
|
+
/**
|
|
115
|
+
* The exact endpoint an OTP authorizes, plus the request it is bound to.
|
|
116
|
+
* `provider`/`method` may be omitted when `dotPath` uniquely identifies a
|
|
117
|
+
* single paid endpoint (it is resolved from `PAID_ENDPOINTS`).
|
|
118
|
+
*/
|
|
119
|
+
export interface OtpCall {
|
|
120
|
+
provider?: string;
|
|
121
|
+
method?: string;
|
|
122
|
+
dotPath: string;
|
|
123
|
+
request: Record<string, unknown>;
|
|
124
|
+
/** Time-to-live as seconds or a string like "10m". Defaults to 10m. */
|
|
125
|
+
ttl?: string | number;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Mint an OTP for a specific request, signed with the shared HMAC secret.
|
|
129
|
+
*
|
|
130
|
+
* Pure and env-free: the secret is passed explicitly. The OTP binds to the
|
|
131
|
+
* exact request via its canonical hash, so changing any byte of the request
|
|
132
|
+
* invalidates the token.
|
|
133
|
+
*/
|
|
134
|
+
export declare function mintOtp(secret: string, call: OtpCall): string;
|
|
135
|
+
/**
|
|
136
|
+
* Pure verification of an OTP against expected request context.
|
|
137
|
+
*
|
|
138
|
+
* Returns a tagged-union `VerifyResult` — never throws. The caller is
|
|
139
|
+
* responsible for converting `{ ok: false }` into a `PayGateError` at the
|
|
140
|
+
* boundary.
|
|
141
|
+
*/
|
|
142
|
+
export declare function verifyOtp(input: VerifyOtpInput): VerifyResult;
|
|
143
|
+
/**
|
|
144
|
+
* Wrap a provider network dispatch with the OTP-based paid-endpoint gate.
|
|
145
|
+
*
|
|
146
|
+
* Free/unlisted endpoints return `dispatch()` immediately without OTP or
|
|
147
|
+
* pay-gate configuration.
|
|
148
|
+
*
|
|
149
|
+
* Paid endpoints fail closed: if the pay gate is not configured, or the OTP
|
|
150
|
+
* is missing, invalid, expired, replayed, or mismatched, the call throws
|
|
151
|
+
* before dispatch runs. This is the "no bypass" guarantee — a paid call cannot
|
|
152
|
+
* fire without a configured secret and a valid, human/code-client-minted OTP.
|
|
153
|
+
*
|
|
154
|
+
* The OTP jti is consumed BEFORE dispatch. If dispatch later fails for any
|
|
155
|
+
* reason, the jti remains consumed and the caller must mint a fresh OTP to
|
|
156
|
+
* retry. This is intentional — without it, a hostile caller could replay an
|
|
157
|
+
* OTP on every transient failure.
|
|
158
|
+
*/
|
|
159
|
+
export declare function dispatchWithPaidGate<T>(provider: string, method: string, dotPath: string, payload: Record<string, unknown>, approval: PayGateApproval | undefined, dispatch: () => Promise<T>, config?: PayGateConfig): Promise<T>;
|
|
160
|
+
//# sourceMappingURL=paygate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paygate.d.ts","sourceRoot":"","sources":["../../src/paygate.ts"],"names":[],"mappings":"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"}
|