@glexir/sdk 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +292 -2
  3. package/dist/client.d.ts +61 -0
  4. package/dist/client.js +245 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/core/api-promise.d.ts +31 -0
  7. package/dist/core/api-promise.js +39 -0
  8. package/dist/core/api-promise.js.map +1 -0
  9. package/dist/core/errors.d.ts +70 -0
  10. package/dist/core/errors.js +118 -0
  11. package/dist/core/errors.js.map +1 -0
  12. package/dist/core/multipart.d.ts +16 -0
  13. package/dist/core/multipart.js +68 -0
  14. package/dist/core/multipart.js.map +1 -0
  15. package/dist/core/pagination.d.ts +41 -0
  16. package/dist/core/pagination.js +63 -0
  17. package/dist/core/pagination.js.map +1 -0
  18. package/dist/core/request-options.d.ts +29 -0
  19. package/dist/core/request-options.js +2 -0
  20. package/dist/core/request-options.js.map +1 -0
  21. package/dist/core/resource.d.ts +5 -0
  22. package/dist/core/resource.js +7 -0
  23. package/dist/core/resource.js.map +1 -0
  24. package/dist/core/retry.d.ts +13 -0
  25. package/dist/core/retry.js +65 -0
  26. package/dist/core/retry.js.map +1 -0
  27. package/dist/core/streaming.d.ts +44 -0
  28. package/dist/core/streaming.js +238 -0
  29. package/dist/core/streaming.js.map +1 -0
  30. package/dist/index.d.ts +20 -0
  31. package/dist/index.js +12 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/lib/chat-completion-stream.d.ts +26 -0
  34. package/dist/lib/chat-completion-stream.js +161 -0
  35. package/dist/lib/chat-completion-stream.js.map +1 -0
  36. package/dist/lib/output-text.d.ts +4 -0
  37. package/dist/lib/output-text.js +22 -0
  38. package/dist/lib/output-text.js.map +1 -0
  39. package/dist/lib/response-stream.d.ts +30 -0
  40. package/dist/lib/response-stream.js +122 -0
  41. package/dist/lib/response-stream.js.map +1 -0
  42. package/dist/lib/strict-schema.d.ts +11 -0
  43. package/dist/lib/strict-schema.js +116 -0
  44. package/dist/lib/strict-schema.js.map +1 -0
  45. package/dist/resources/audio.d.ts +46 -0
  46. package/dist/resources/audio.js +24 -0
  47. package/dist/resources/audio.js.map +1 -0
  48. package/dist/resources/batches.d.ts +20 -0
  49. package/dist/resources/batches.js +24 -0
  50. package/dist/resources/batches.js.map +1 -0
  51. package/dist/resources/chat.d.ts +63 -0
  52. package/dist/resources/chat.js +79 -0
  53. package/dist/resources/chat.js.map +1 -0
  54. package/dist/resources/conversations.d.ts +23 -0
  55. package/dist/resources/conversations.js +38 -0
  56. package/dist/resources/conversations.js.map +1 -0
  57. package/dist/resources/embeddings.d.ts +12 -0
  58. package/dist/resources/embeddings.js +34 -0
  59. package/dist/resources/embeddings.js.map +1 -0
  60. package/dist/resources/files.d.ts +15 -0
  61. package/dist/resources/files.js +27 -0
  62. package/dist/resources/files.js.map +1 -0
  63. package/dist/resources/models.d.ts +10 -0
  64. package/dist/resources/models.js +11 -0
  65. package/dist/resources/models.js.map +1 -0
  66. package/dist/resources/responses.d.ts +61 -0
  67. package/dist/resources/responses.js +85 -0
  68. package/dist/resources/responses.js.map +1 -0
  69. package/dist/types/audio.d.ts +172 -0
  70. package/dist/types/audio.js +2 -0
  71. package/dist/types/audio.js.map +1 -0
  72. package/dist/types/chat.d.ts +316 -0
  73. package/dist/types/chat.js +2 -0
  74. package/dist/types/chat.js.map +1 -0
  75. package/dist/types/conversations.d.ts +46 -0
  76. package/dist/types/conversations.js +2 -0
  77. package/dist/types/conversations.js.map +1 -0
  78. package/dist/types/platform.d.ts +151 -0
  79. package/dist/types/platform.js +2 -0
  80. package/dist/types/platform.js.map +1 -0
  81. package/dist/types/responses.d.ts +640 -0
  82. package/dist/types/responses.js +2 -0
  83. package/dist/types/responses.js.map +1 -0
  84. package/dist/types/shared.d.ts +108 -0
  85. package/dist/types/shared.js +2 -0
  86. package/dist/types/shared.js.map +1 -0
  87. package/dist/version.d.ts +1 -0
  88. package/dist/version.js +2 -0
  89. package/dist/version.js.map +1 -0
  90. package/package.json +37 -3
@@ -0,0 +1,122 @@
1
+ import { GlexirError } from '../core/errors.js';
2
+ import { addOutputText } from './output-text.js';
3
+ /**
4
+ * Wraps a Responses SSE stream. Iterate it for typed events while it accumulates a
5
+ * snapshot, or just `await stream.finalResponse()`.
6
+ */
7
+ export class ResponseStream {
8
+ streamPromise;
9
+ snapshot;
10
+ final;
11
+ text = '';
12
+ started = false;
13
+ done;
14
+ resolveDone;
15
+ rejectDone;
16
+ stream;
17
+ constructor(streamPromise) {
18
+ this.streamPromise = streamPromise;
19
+ this.done = new Promise((resolve, reject) => {
20
+ this.resolveDone = resolve;
21
+ this.rejectDone = reject;
22
+ });
23
+ // Avoid unhandled-rejection noise when the caller only iterates.
24
+ this.done.catch(() => { });
25
+ }
26
+ /** Text accumulated from `response.output_text.delta` events so far. */
27
+ get outputText() {
28
+ return this.text;
29
+ }
30
+ /** The latest accumulated response snapshot (undefined before `response.created`). */
31
+ currentResponse() {
32
+ return this.final ?? this.snapshot;
33
+ }
34
+ /** Stops the stream and cancels the HTTP request. */
35
+ abort() {
36
+ this.stream?.controller.abort();
37
+ }
38
+ async *[Symbol.asyncIterator]() {
39
+ if (this.started)
40
+ throw new GlexirError('A ResponseStream can only be iterated once.');
41
+ this.started = true;
42
+ try {
43
+ this.stream = await this.streamPromise;
44
+ for await (const event of this.stream) {
45
+ this.accumulate(event);
46
+ yield event;
47
+ }
48
+ const result = this.final ?? this.snapshot;
49
+ if (!result)
50
+ throw new GlexirError('Stream ended before a response was received.');
51
+ this.resolveDone(addOutputText(result));
52
+ }
53
+ catch (err) {
54
+ this.rejectDone(err);
55
+ throw err;
56
+ }
57
+ }
58
+ /** Waits for the stream to finish and returns the final response (consuming it if nobody else is). */
59
+ async finalResponse() {
60
+ if (!this.started) {
61
+ for await (const _ of this) {
62
+ // drain
63
+ }
64
+ }
65
+ return this.done;
66
+ }
67
+ /** Waits for the stream to finish and returns the concatenated output text. */
68
+ async finalText() {
69
+ return (await this.finalResponse()).output_text;
70
+ }
71
+ accumulate(event) {
72
+ switch (event.type) {
73
+ case 'response.created':
74
+ case 'response.queued':
75
+ case 'response.in_progress':
76
+ this.snapshot = { ...event.response, output: [...(event.response.output ?? [])] };
77
+ return;
78
+ case 'response.completed':
79
+ case 'response.incomplete':
80
+ case 'response.failed':
81
+ this.final = event.response;
82
+ return;
83
+ }
84
+ const snapshot = this.snapshot;
85
+ if (!snapshot)
86
+ return;
87
+ switch (event.type) {
88
+ case 'response.output_item.added':
89
+ case 'response.output_item.done':
90
+ snapshot.output[event.output_index] = structuredClone(event.item);
91
+ return;
92
+ case 'response.content_part.added': {
93
+ const item = snapshot.output[event.output_index];
94
+ if (item?.type === 'message' && (event.part.type === 'output_text' || event.part.type === 'refusal')) {
95
+ item.content[event.content_index] = { ...event.part };
96
+ }
97
+ return;
98
+ }
99
+ case 'response.output_text.delta': {
100
+ this.text += event.delta;
101
+ const item = snapshot.output[event.output_index];
102
+ const part = item?.type === 'message' ? item.content[event.content_index] : undefined;
103
+ if (part?.type === 'output_text')
104
+ part.text += event.delta;
105
+ return;
106
+ }
107
+ case 'response.function_call_arguments.delta': {
108
+ const item = snapshot.output[event.output_index];
109
+ if (item?.type === 'function_call')
110
+ item.arguments += event.delta;
111
+ return;
112
+ }
113
+ case 'response.custom_tool_call_input.delta': {
114
+ const item = snapshot.output[event.output_index];
115
+ if (item?.type === 'custom_tool_call')
116
+ item.input += event.delta;
117
+ return;
118
+ }
119
+ }
120
+ }
121
+ }
122
+ //# sourceMappingURL=response-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-stream.js","sourceRoot":"","sources":["../../src/lib/response-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { GlexirError } from '../core/errors.js';
2
+ type JSONSchema = Record<string, unknown>;
3
+ export declare class StrictSchemaError extends GlexirError {
4
+ }
5
+ /**
6
+ * Converts a JSON Schema to the subset OpenAI's Structured Outputs strict mode accepts:
7
+ * the root must be an object (not `anyOf`), every object gets `additionalProperties: false`,
8
+ * every property becomes required (optional ones must be nullable), and unsupported keywords throw.
9
+ */
10
+ export declare function toStrictJsonSchema(schema: JSONSchema): JSONSchema;
11
+ export {};
@@ -0,0 +1,116 @@
1
+ import { GlexirError } from '../core/errors.js';
2
+ /** Keywords strict mode rejects (mirrors OpenAI's own SDK, which is stricter than the docs). */
3
+ const UNSUPPORTED_KEYWORDS = new Set([
4
+ '$anchor',
5
+ '$dynamicAnchor',
6
+ '$dynamicRef',
7
+ '$recursiveAnchor',
8
+ '$recursiveRef',
9
+ 'contains',
10
+ 'contentEncoding',
11
+ 'contentMediaType',
12
+ 'contentSchema',
13
+ 'dependentRequired',
14
+ 'dependentSchemas',
15
+ 'dependencies',
16
+ 'else',
17
+ 'if',
18
+ 'then',
19
+ 'not',
20
+ 'oneOf',
21
+ 'maxContains',
22
+ 'minContains',
23
+ 'maxProperties',
24
+ 'minProperties',
25
+ 'patternProperties',
26
+ 'prefixItems',
27
+ 'propertyNames',
28
+ 'unevaluatedItems',
29
+ 'unevaluatedProperties',
30
+ 'uniqueItems',
31
+ ]);
32
+ export class StrictSchemaError extends GlexirError {
33
+ }
34
+ const isObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
35
+ function allowsNull(schema) {
36
+ const type = schema.type;
37
+ if (type === 'null')
38
+ return true;
39
+ if (Array.isArray(type) && type.includes('null'))
40
+ return true;
41
+ if (Array.isArray(schema.anyOf))
42
+ return schema.anyOf.some((s) => isObject(s) && allowsNull(s));
43
+ if (Array.isArray(schema.enum))
44
+ return schema.enum.includes(null);
45
+ return false;
46
+ }
47
+ function strictify(schema, path) {
48
+ if (!isObject(schema)) {
49
+ throw new StrictSchemaError(`Schema at ${path} must be an object, got ${JSON.stringify(schema)}`);
50
+ }
51
+ let node = { ...schema };
52
+ for (const keyword of Object.keys(node)) {
53
+ if (UNSUPPORTED_KEYWORDS.has(keyword)) {
54
+ throw new StrictSchemaError(`Strict mode does not support "${keyword}" (at ${path})`);
55
+ }
56
+ }
57
+ // A single-branch allOf is just the branch; anything larger is unsupported.
58
+ if (Array.isArray(node.allOf)) {
59
+ if (node.allOf.length !== 1)
60
+ throw new StrictSchemaError(`Strict mode does not support "allOf" (at ${path})`);
61
+ const { allOf, ...rest } = node;
62
+ node = { ...strictify(allOf[0], `${path}/allOf/0`), ...rest };
63
+ }
64
+ const isObjectType = node.type === 'object' || (Array.isArray(node.type) && node.type.includes('object')) || isObject(node.properties);
65
+ if (isObjectType) {
66
+ if (node.additionalProperties !== undefined && node.additionalProperties !== false) {
67
+ throw new StrictSchemaError(`Strict mode requires additionalProperties: false (at ${path})`);
68
+ }
69
+ node.additionalProperties = false;
70
+ const properties = isObject(node.properties) ? node.properties : {};
71
+ const originallyRequired = new Set(Array.isArray(node.required) ? node.required : []);
72
+ const strictProps = {};
73
+ for (const [key, value] of Object.entries(properties)) {
74
+ const child = strictify(value, `${path}/properties/${key}`);
75
+ if (!originallyRequired.has(key) && !allowsNull(child)) {
76
+ throw new StrictSchemaError(`Property "${key}" at ${path} is optional. Strict mode requires every property; make it nullable instead (e.g. "type": ["string", "null"]).`);
77
+ }
78
+ strictProps[key] = child;
79
+ }
80
+ node.properties = strictProps;
81
+ node.required = Object.keys(strictProps);
82
+ }
83
+ if (node.type === 'array' || (Array.isArray(node.type) && node.type.includes('array'))) {
84
+ if (Array.isArray(node.items))
85
+ throw new StrictSchemaError(`Strict mode does not support tuple "items" (at ${path})`);
86
+ if (node.items === undefined)
87
+ throw new StrictSchemaError(`Arrays must declare "items" in strict mode (at ${path})`);
88
+ }
89
+ if (node.items !== undefined)
90
+ node.items = strictify(node.items, `${path}/items`);
91
+ if (Array.isArray(node.anyOf)) {
92
+ node.anyOf = node.anyOf.map((branch, i) => strictify(branch, `${path}/anyOf/${i}`));
93
+ }
94
+ for (const defsKey of ['$defs', 'definitions']) {
95
+ if (isObject(node[defsKey])) {
96
+ node[defsKey] = Object.fromEntries(Object.entries(node[defsKey]).map(([name, def]) => [name, strictify(def, `${path}/${defsKey}/${name}`)]));
97
+ }
98
+ }
99
+ return node;
100
+ }
101
+ /**
102
+ * Converts a JSON Schema to the subset OpenAI's Structured Outputs strict mode accepts:
103
+ * the root must be an object (not `anyOf`), every object gets `additionalProperties: false`,
104
+ * every property becomes required (optional ones must be nullable), and unsupported keywords throw.
105
+ */
106
+ export function toStrictJsonSchema(schema) {
107
+ if (Array.isArray(schema.anyOf) && schema.type === undefined) {
108
+ throw new StrictSchemaError('The root schema must be an object, not "anyOf".');
109
+ }
110
+ const result = strictify(schema, '#');
111
+ if (result.type !== 'object') {
112
+ throw new StrictSchemaError('The root schema must have "type": "object".');
113
+ }
114
+ return result;
115
+ }
116
+ //# sourceMappingURL=strict-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-schema.js","sourceRoot":"","sources":["../../src/lib/strict-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,gGAAgG;AAChG,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,SAAS;IACT,gBAAgB;IAChB,aAAa;IACb,kBAAkB;IAClB,eAAe;IACf,UAAU;IACV,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,kBAAkB;IAClB,cAAc;IACd,MAAM;IACN,IAAI;IACJ,MAAM;IACN,KAAK;IACL,OAAO;IACP,aAAa;IACb,aAAa;IACb,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,aAAa;IACb,eAAe;IACf,kBAAkB;IAClB,uBAAuB;IACvB,aAAa;CACd,CAAC,CAAC;AAEH,MAAM,OAAO,iBAAkB,SAAQ,WAAW;CAAG;AAErD,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAuB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE/H,SAAS,UAAU,CAAC,MAAkB;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,MAAe,EAAE,IAAY;IAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,iBAAiB,CAAC,aAAa,IAAI,2BAA2B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,IAAI,GAAe,EAAE,GAAG,MAAM,EAAE,CAAC;IAErC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,iBAAiB,CAAC,iCAAiC,OAAO,SAAS,IAAI,GAAG,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,4CAA4C,IAAI,GAAG,CAAC,CAAC;QAC9G,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAChC,IAAI,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvI,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,IAAI,IAAI,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YACnF,MAAM,IAAI,iBAAiB,CAAC,wDAAwD,IAAI,GAAG,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,QAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpG,MAAM,WAAW,GAAe,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,IAAI,eAAe,GAAG,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,iBAAiB,CACzB,aAAa,GAAG,QAAQ,IAAI,gHAAgH,CAC7I,CAAC;YACJ,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACvF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,iBAAiB,CAAC,kDAAkD,IAAI,GAAG,CAAC,CAAC;QACtH,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,iBAAiB,CAAC,kDAAkD,IAAI,GAAG,CAAC,CAAC;IACvH,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;IAElF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,CAAU,EAAE,CAAC;QACxD,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CACzG,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB;IACnD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7D,MAAM,IAAI,iBAAiB,CAAC,iDAAiD,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,iBAAiB,CAAC,6CAA6C,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { APIPromise } from '../core/api-promise.js';
2
+ import type { RequestOptions } from '../core/request-options.js';
3
+ import { APIResource } from '../core/resource.js';
4
+ import type { Stream } from '../core/streaming.js';
5
+ import type { Transcription, TranscriptionCreateParamsBase, TranscriptionDiarized, TranscriptionStreamEvent, TranscriptionVerbose, Translation, TranslationCreateParams, TranslationVerbose } from '../types/audio.js';
6
+ type NonStreaming = {
7
+ stream?: false | null;
8
+ };
9
+ export declare class Transcriptions extends APIResource {
10
+ create(body: TranscriptionCreateParamsBase & NonStreaming & {
11
+ response_format?: 'json';
12
+ }, options?: RequestOptions): APIPromise<Transcription>;
13
+ create(body: TranscriptionCreateParamsBase & NonStreaming & {
14
+ response_format: 'verbose_json';
15
+ }, options?: RequestOptions): APIPromise<TranscriptionVerbose>;
16
+ create(body: TranscriptionCreateParamsBase & NonStreaming & {
17
+ response_format: 'diarized_json';
18
+ }, options?: RequestOptions): APIPromise<TranscriptionDiarized>;
19
+ create(body: TranscriptionCreateParamsBase & NonStreaming & {
20
+ response_format: 'text' | 'srt' | 'vtt';
21
+ }, options?: RequestOptions): APIPromise<string>;
22
+ create(body: TranscriptionCreateParamsBase & {
23
+ stream: true;
24
+ }, options?: RequestOptions): APIPromise<Stream<TranscriptionStreamEvent>>;
25
+ create(body: TranscriptionCreateParamsBase, options?: RequestOptions): APIPromise<Transcription | TranscriptionVerbose | TranscriptionDiarized | string | Stream<TranscriptionStreamEvent>>;
26
+ }
27
+ /** @deprecated `/audio/translations` (whisper-1 only) shuts down on 2027-02-26. */
28
+ export declare class Translations extends APIResource {
29
+ create(body: TranslationCreateParams & {
30
+ response_format?: 'json';
31
+ }, options?: RequestOptions): APIPromise<Translation>;
32
+ create(body: TranslationCreateParams & {
33
+ response_format: 'verbose_json';
34
+ }, options?: RequestOptions): APIPromise<TranslationVerbose>;
35
+ create(body: TranslationCreateParams & {
36
+ response_format: 'text' | 'srt' | 'vtt';
37
+ }, options?: RequestOptions): APIPromise<string>;
38
+ create(body: TranslationCreateParams, options?: RequestOptions): APIPromise<Translation | TranslationVerbose | string>;
39
+ }
40
+ /** Speech-to-text. Text-to-speech and realtime voice are not part of Glexir. */
41
+ export declare class Audio extends APIResource {
42
+ readonly transcriptions: Transcriptions;
43
+ /** @deprecated Shuts down on 2027-02-26. */
44
+ readonly translations: Translations;
45
+ }
46
+ export {};
@@ -0,0 +1,24 @@
1
+ import { APIResource } from '../core/resource.js';
2
+ export class Transcriptions extends APIResource {
3
+ /**
4
+ * Transcribes an audio file (≤25 MB). `json`, `verbose_json` and `diarized_json` return objects;
5
+ * `text`, `srt` and `vtt` return a string; `stream: true` returns transcript events.
6
+ */
7
+ create(body, options) {
8
+ return this.client.post('/audio/transcriptions', { ...options, body, multipart: true, stream: body.stream === true });
9
+ }
10
+ }
11
+ /** @deprecated `/audio/translations` (whisper-1 only) shuts down on 2027-02-26. */
12
+ export class Translations extends APIResource {
13
+ /** @deprecated Shuts down on 2027-02-26. Translates audio into English text. */
14
+ create(body, options) {
15
+ return this.client.post('/audio/translations', { ...options, body, multipart: true });
16
+ }
17
+ }
18
+ /** Speech-to-text. Text-to-speech and realtime voice are not part of Glexir. */
19
+ export class Audio extends APIResource {
20
+ transcriptions = new Transcriptions(this.client);
21
+ /** @deprecated Shuts down on 2027-02-26. */
22
+ translations = new Translations(this.client);
23
+ }
24
+ //# sourceMappingURL=audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/resources/audio.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAelD,MAAM,OAAO,cAAe,SAAQ,WAAW;IAsB7C;;;OAGG;IACH,MAAM,CACJ,IAAmC,EACnC,OAAwB;QAExB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IACxH,CAAC;CACF;AAED,mFAAmF;AACnF,MAAM,OAAO,YAAa,SAAQ,WAAW;IAK3C,gFAAgF;IAChF,MAAM,CAAC,IAA6B,EAAE,OAAwB;QAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,OAAO,KAAM,SAAQ,WAAW;IAC3B,cAAc,GAAmB,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1E,4CAA4C;IACnC,YAAY,GAAiB,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACrE"}
@@ -0,0 +1,20 @@
1
+ import type { APIPromise } from '../core/api-promise.js';
2
+ import type { PagePromise } from '../core/pagination.js';
3
+ import type { RequestOptions } from '../core/request-options.js';
4
+ import { APIResource } from '../core/resource.js';
5
+ import type { Batch, BatchCreateParams, BatchListParams } from '../types/platform.js';
6
+ /** Asynchronous batch jobs: 50% cheaper, results within 24 hours. */
7
+ export declare class Batches extends APIResource {
8
+ create(body: BatchCreateParams, options?: RequestOptions): APIPromise<Batch>;
9
+ retrieve(batchId: string, options?: RequestOptions): APIPromise<Batch>;
10
+ list(query?: BatchListParams, options?: RequestOptions): PagePromise<Batch>;
11
+ /** Cancels a batch. It stays `cancelling` for up to 10 minutes; completed requests are still billed. */
12
+ cancel(batchId: string, options?: RequestOptions): APIPromise<Batch>;
13
+ }
14
+ /** Serializes request lines into a batch input file (`.jsonl`) ready for `files.create({ purpose: "batch" })`. */
15
+ export declare function toBatchJSONL(lines: Array<{
16
+ custom_id: string;
17
+ method?: 'POST';
18
+ url: string;
19
+ body: unknown;
20
+ }>): File;
@@ -0,0 +1,24 @@
1
+ import { APIResource } from '../core/resource.js';
2
+ const encode = encodeURIComponent;
3
+ /** Asynchronous batch jobs: 50% cheaper, results within 24 hours. */
4
+ export class Batches extends APIResource {
5
+ create(body, options) {
6
+ return this.client.post('/batches', { ...options, body });
7
+ }
8
+ retrieve(batchId, options) {
9
+ return this.client.get(`/batches/${encode(batchId)}`, options);
10
+ }
11
+ list(query = {}, options) {
12
+ return this.client.requestAPIList({ ...options, method: 'get', path: '/batches', query: { ...query } }, 'last-item-id');
13
+ }
14
+ /** Cancels a batch. It stays `cancelling` for up to 10 minutes; completed requests are still billed. */
15
+ cancel(batchId, options) {
16
+ return this.client.post(`/batches/${encode(batchId)}/cancel`, options);
17
+ }
18
+ }
19
+ /** Serializes request lines into a batch input file (`.jsonl`) ready for `files.create({ purpose: "batch" })`. */
20
+ export function toBatchJSONL(lines) {
21
+ const text = lines.map((line) => JSON.stringify({ method: 'POST', ...line })).join('\n') + '\n';
22
+ return new File([text], 'batch.jsonl', { type: 'application/jsonl' });
23
+ }
24
+ //# sourceMappingURL=batches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batches.js","sourceRoot":"","sources":["../../src/resources/batches.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,MAAM,MAAM,GAAG,kBAAkB,CAAC;AAElC,qEAAqE;AACrE,MAAM,OAAO,OAAQ,SAAQ,WAAW;IACtC,MAAM,CAAC,IAAuB,EAAE,OAAwB;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,QAAQ,CAAC,OAAe,EAAE,OAAwB;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,QAAyB,EAAE,EAAE,OAAwB;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAQ,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;IACjI,CAAC;IAED,wGAAwG;IACxG,MAAM,CAAC,OAAe,EAAE,OAAwB;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;AAED,kHAAkH;AAClH,MAAM,UAAU,YAAY,CAAC,KAAgF;IAC3G,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChG,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,63 @@
1
+ import type { APIPromise } from '../core/api-promise.js';
2
+ import type { PagePromise } from '../core/pagination.js';
3
+ import type { RequestOptions } from '../core/request-options.js';
4
+ import { APIResource } from '../core/resource.js';
5
+ import type { Stream } from '../core/streaming.js';
6
+ import { ChatCompletionStream } from '../lib/chat-completion-stream.js';
7
+ import type { ChatCompletion, ChatCompletionChunk, ChatCompletionCreateParams, ChatCompletionCreateParamsBase, ChatCompletionCreateParamsNonStreaming, ChatCompletionCreateParamsStreaming, ChatCompletionDeleted, ChatCompletionListParams, ChatCompletionMessage, ChatCompletionMessageToolCall, ChatCompletionStoreMessage, ChatCompletionUpdateParams, MessageListParams } from '../types/chat.js';
8
+ import type { ParseOptions } from './responses.js';
9
+ export interface ParsedFunctionToolCall {
10
+ id: string;
11
+ type: 'function';
12
+ function: {
13
+ name: string;
14
+ arguments: string;
15
+ parsed_arguments: unknown;
16
+ };
17
+ }
18
+ export interface ParsedChatCompletionMessage<T> extends Omit<ChatCompletionMessage, 'tool_calls'> {
19
+ /** Structured output, or `null` when the model refused. */
20
+ parsed: T | null;
21
+ tool_calls?: Array<ParsedFunctionToolCall | Exclude<ChatCompletionMessageToolCall, {
22
+ type: 'function';
23
+ }>>;
24
+ }
25
+ export interface ParsedChatCompletion<T> extends Omit<ChatCompletion, 'choices'> {
26
+ choices: Array<Omit<ChatCompletion['choices'][number], 'message'> & {
27
+ message: ParsedChatCompletionMessage<T>;
28
+ }>;
29
+ }
30
+ export declare class ChatCompletionMessages extends APIResource {
31
+ /** Messages of a stored completion. */
32
+ list(completionId: string, query?: MessageListParams, options?: RequestOptions): PagePromise<ChatCompletionStoreMessage>;
33
+ }
34
+ /**
35
+ * Chat Completions. Supported for compatibility; the Responses API is recommended for new work,
36
+ * and is required for tool calling on gpt-6-astra and gpt-6.1-sol.
37
+ */
38
+ export declare class Completions extends APIResource {
39
+ readonly messages: ChatCompletionMessages;
40
+ create(body: ChatCompletionCreateParamsNonStreaming, options?: RequestOptions): APIPromise<ChatCompletion>;
41
+ create(body: ChatCompletionCreateParamsStreaming, options?: RequestOptions): APIPromise<Stream<ChatCompletionChunk>>;
42
+ create(body: ChatCompletionCreateParams, options?: RequestOptions): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>>;
43
+ /** Streams a completion and accumulates chunks (including tool-call fragments) into a final completion. */
44
+ stream(body: ChatCompletionCreateParamsBase & {
45
+ stream?: true;
46
+ }, options?: RequestOptions): ChatCompletionStream;
47
+ /**
48
+ * Creates a completion and parses `message.content` when `response_format` is `json_schema`
49
+ * (or `json_object`), plus the arguments of strict function tools. Throws on truncated or filtered output.
50
+ */
51
+ parse<T = unknown>(body: ChatCompletionCreateParamsNonStreaming, options?: ParseOptions<T>): Promise<ParsedChatCompletion<T>>;
52
+ /** Retrieves a completion created with `store: true`. */
53
+ retrieve(completionId: string, options?: RequestOptions): APIPromise<ChatCompletion>;
54
+ /** Updates the metadata of a stored completion (the only supported change). */
55
+ update(completionId: string, body: ChatCompletionUpdateParams, options?: RequestOptions): APIPromise<ChatCompletion>;
56
+ /** Lists stored completions. */
57
+ list(query?: ChatCompletionListParams, options?: RequestOptions): PagePromise<ChatCompletion>;
58
+ delete(completionId: string, options?: RequestOptions): APIPromise<ChatCompletionDeleted>;
59
+ }
60
+ export declare class Chat extends APIResource {
61
+ readonly completions: Completions;
62
+ }
63
+ export declare function parseChatCompletion<T>(completion: ChatCompletion, body: Pick<ChatCompletionCreateParamsNonStreaming, 'response_format' | 'tools'>, validate?: (value: unknown) => T): ParsedChatCompletion<T>;
@@ -0,0 +1,79 @@
1
+ import { ContentFilterFinishReasonError, LengthFinishReasonError } from '../core/errors.js';
2
+ import { APIResource } from '../core/resource.js';
3
+ import { ChatCompletionStream } from '../lib/chat-completion-stream.js';
4
+ const encode = encodeURIComponent;
5
+ export class ChatCompletionMessages extends APIResource {
6
+ /** Messages of a stored completion. */
7
+ list(completionId, query = {}, options) {
8
+ return this.client.requestAPIList({ ...options, method: 'get', path: `/chat/completions/${encode(completionId)}/messages`, query: { ...query } }, 'last-item-id');
9
+ }
10
+ }
11
+ /**
12
+ * Chat Completions. Supported for compatibility; the Responses API is recommended for new work,
13
+ * and is required for tool calling on gpt-6-astra and gpt-6.1-sol.
14
+ */
15
+ export class Completions extends APIResource {
16
+ messages = new ChatCompletionMessages(this.client);
17
+ create(body, options) {
18
+ return this.client.post('/chat/completions', { ...options, body, stream: body.stream ?? false });
19
+ }
20
+ /** Streams a completion and accumulates chunks (including tool-call fragments) into a final completion. */
21
+ stream(body, options) {
22
+ return new ChatCompletionStream(this.create({ ...body, stream: true }, options));
23
+ }
24
+ /**
25
+ * Creates a completion and parses `message.content` when `response_format` is `json_schema`
26
+ * (or `json_object`), plus the arguments of strict function tools. Throws on truncated or filtered output.
27
+ */
28
+ async parse(body, options = {}) {
29
+ const { validate, ...requestOptions } = options;
30
+ const completion = await this.create(body, requestOptions);
31
+ return parseChatCompletion(completion, body, validate);
32
+ }
33
+ /** Retrieves a completion created with `store: true`. */
34
+ retrieve(completionId, options) {
35
+ return this.client.get(`/chat/completions/${encode(completionId)}`, options);
36
+ }
37
+ /** Updates the metadata of a stored completion (the only supported change). */
38
+ update(completionId, body, options) {
39
+ return this.client.post(`/chat/completions/${encode(completionId)}`, { ...options, body });
40
+ }
41
+ /** Lists stored completions. */
42
+ list(query = {}, options) {
43
+ return this.client.requestAPIList({ ...options, method: 'get', path: '/chat/completions', query: { ...query } }, 'last-item-id');
44
+ }
45
+ delete(completionId, options) {
46
+ return this.client.delete(`/chat/completions/${encode(completionId)}`, options);
47
+ }
48
+ }
49
+ export class Chat extends APIResource {
50
+ completions = new Completions(this.client);
51
+ }
52
+ export function parseChatCompletion(completion, body, validate) {
53
+ const format = body.response_format?.type;
54
+ const strictTools = new Set((body.tools ?? []).flatMap((tool) => (tool.type === 'function' && tool.function.strict ? [tool.function.name] : [])));
55
+ const choices = completion.choices.map((choice) => {
56
+ if (choice.finish_reason === 'length')
57
+ throw new LengthFinishReasonError();
58
+ if (choice.finish_reason === 'content_filter')
59
+ throw new ContentFilterFinishReasonError();
60
+ const { message } = choice;
61
+ let parsed = null;
62
+ if (!message.refusal && message.content && (format === 'json_schema' || format === 'json_object')) {
63
+ const value = JSON.parse(message.content);
64
+ parsed = validate ? validate(value) : value;
65
+ }
66
+ const toolCalls = message.tool_calls?.map((call) => call.type === 'function'
67
+ ? {
68
+ ...call,
69
+ function: {
70
+ ...call.function,
71
+ parsed_arguments: strictTools.has(call.function.name) ? JSON.parse(call.function.arguments || '{}') : null,
72
+ },
73
+ }
74
+ : call);
75
+ return { ...choice, message: { ...message, parsed, ...(toolCalls && { tool_calls: toolCalls }) } };
76
+ });
77
+ return Object.assign(completion, { choices });
78
+ }
79
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/resources/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { APIPromise } from '../core/api-promise.js';
2
+ import type { PagePromise } from '../core/pagination.js';
3
+ import type { RequestOptions } from '../core/request-options.js';
4
+ import { APIResource } from '../core/resource.js';
5
+ import type { Conversation, ConversationCreateParams, ConversationDeleted, ConversationItem, ConversationItemList, ConversationUpdateParams, ItemCreateParams, ItemListParams, ItemRetrieveParams } from '../types/conversations.js';
6
+ export declare class ConversationItems extends APIResource {
7
+ /** Adds up to 20 items to a conversation. */
8
+ create(conversationId: string, params: ItemCreateParams, options?: RequestOptions): APIPromise<ConversationItemList>;
9
+ retrieve(conversationId: string, itemId: string, query?: ItemRetrieveParams, options?: RequestOptions): APIPromise<ConversationItem>;
10
+ /** Lists items, newest first by default. Iterate with `for await` to page through all of them. */
11
+ list(conversationId: string, query?: ItemListParams, options?: RequestOptions): PagePromise<ConversationItem>;
12
+ /** Deletes an item and returns the updated conversation. */
13
+ delete(conversationId: string, itemId: string, options?: RequestOptions): APIPromise<Conversation>;
14
+ }
15
+ /** Durable conversation state for the Responses API (pass `conversation: id` to `responses.create`). */
16
+ export declare class Conversations extends APIResource {
17
+ readonly items: ConversationItems;
18
+ create(body?: ConversationCreateParams, options?: RequestOptions): APIPromise<Conversation>;
19
+ retrieve(conversationId: string, options?: RequestOptions): APIPromise<Conversation>;
20
+ update(conversationId: string, body: ConversationUpdateParams, options?: RequestOptions): APIPromise<Conversation>;
21
+ /** Deletes the conversation. Its items are not deleted. */
22
+ delete(conversationId: string, options?: RequestOptions): APIPromise<ConversationDeleted>;
23
+ }
@@ -0,0 +1,38 @@
1
+ import { APIResource } from '../core/resource.js';
2
+ const encode = encodeURIComponent;
3
+ export class ConversationItems extends APIResource {
4
+ /** Adds up to 20 items to a conversation. */
5
+ create(conversationId, params, options) {
6
+ const { include, ...body } = params;
7
+ return this.client.post(`/conversations/${encode(conversationId)}/items`, { ...options, body, query: { include } });
8
+ }
9
+ retrieve(conversationId, itemId, query = {}, options) {
10
+ return this.client.get(`/conversations/${encode(conversationId)}/items/${encode(itemId)}`, { ...options, query: { ...query } });
11
+ }
12
+ /** Lists items, newest first by default. Iterate with `for await` to page through all of them. */
13
+ list(conversationId, query = {}, options) {
14
+ return this.client.requestAPIList({ ...options, method: 'get', path: `/conversations/${encode(conversationId)}/items`, query: { ...query } }, 'last_id');
15
+ }
16
+ /** Deletes an item and returns the updated conversation. */
17
+ delete(conversationId, itemId, options) {
18
+ return this.client.delete(`/conversations/${encode(conversationId)}/items/${encode(itemId)}`, options);
19
+ }
20
+ }
21
+ /** Durable conversation state for the Responses API (pass `conversation: id` to `responses.create`). */
22
+ export class Conversations extends APIResource {
23
+ items = new ConversationItems(this.client);
24
+ create(body = {}, options) {
25
+ return this.client.post('/conversations', { ...options, body });
26
+ }
27
+ retrieve(conversationId, options) {
28
+ return this.client.get(`/conversations/${encode(conversationId)}`, options);
29
+ }
30
+ update(conversationId, body, options) {
31
+ return this.client.post(`/conversations/${encode(conversationId)}`, { ...options, body });
32
+ }
33
+ /** Deletes the conversation. Its items are not deleted. */
34
+ delete(conversationId, options) {
35
+ return this.client.delete(`/conversations/${encode(conversationId)}`, options);
36
+ }
37
+ }
38
+ //# sourceMappingURL=conversations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/resources/conversations.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAalD,MAAM,MAAM,GAAG,kBAAkB,CAAC;AAElC,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAChD,6CAA6C;IAC7C,MAAM,CAAC,cAAsB,EAAE,MAAwB,EAAE,OAAwB;QAC/E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACtH,CAAC;IAED,QAAQ,CAAC,cAAsB,EAAE,MAAc,EAAE,QAA4B,EAAE,EAAE,OAAwB;QACvG,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,cAAc,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;IAClI,CAAC;IAED,kGAAkG;IAClG,IAAI,CAAC,cAAsB,EAAE,QAAwB,EAAE,EAAE,OAAwB;QAC/E,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAC/B,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAC1G,SAAS,CACV,CAAC;IACJ,CAAC;IAED,4DAA4D;IAC5D,MAAM,CAAC,cAAsB,EAAE,MAAc,EAAE,OAAwB;QACrE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,MAAM,CAAC,cAAc,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACzG,CAAC;CACF;AAED,wGAAwG;AACxG,MAAM,OAAO,aAAc,SAAQ,WAAW;IACnC,KAAK,GAAsB,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEvE,MAAM,CAAC,OAAiC,EAAE,EAAE,OAAwB;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,QAAQ,CAAC,cAAsB,EAAE,OAAwB;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,CAAC,cAAsB,EAAE,IAA8B,EAAE,OAAwB;QACrF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,2DAA2D;IAC3D,MAAM,CAAC,cAAsB,EAAE,OAAwB;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import type { APIPromise } from '../core/api-promise.js';
2
+ import type { RequestOptions } from '../core/request-options.js';
3
+ import { APIResource } from '../core/resource.js';
4
+ import type { CreateEmbeddingResponse, EmbeddingCreateParams } from '../types/platform.js';
5
+ /** Decodes a base64 little-endian float32 vector. */
6
+ export declare function decodeBase64Embedding(base64: string): number[];
7
+ export declare class Embeddings extends APIResource {
8
+ create(body: EmbeddingCreateParams & {
9
+ encoding_format: 'base64';
10
+ }, options?: RequestOptions): APIPromise<CreateEmbeddingResponse<string>>;
11
+ create(body: EmbeddingCreateParams, options?: RequestOptions): APIPromise<CreateEmbeddingResponse>;
12
+ }