@azure/openai-assistants
Version:
An isomorphic client library for Azure OpenAI Assistants.
1,013 lines (1,005 loc) • 65.2 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var coreAuth = require('@azure/core-auth');
var tslib = require('tslib');
var coreClient = require('@azure-rest/core-client');
var logger$1 = require('@azure/logger');
var coreRestPipeline = require('@azure/core-rest-pipeline');
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
/**
* THIS IS AN AUTO-GENERATED FILE - DO NOT EDIT!
*
* Any changes you make here may be lost.
*
* If you need to make changes, please do so in the original source file, \{project-root\}/sources/custom
*/
const logger = logger$1.createClientLogger("openai-assistants");
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
/**
* THIS IS AN AUTO-GENERATED FILE - DO NOT EDIT!
*
* Any changes you make here may be lost.
*
* If you need to make changes, please do so in the original source file, \{project-root\}/sources/custom
*/
/**
* Initialize a new instance of `AssistantsContext`
* @param endpoint - An OpenAI endpoint supporting assistants functionality.
* @param credentials - uniquely identify client credential
* @param options - the parameter for all optional parameters
*/
function createClient(endpoint, credentials, options = {}) {
var _a, _b, _c, _d, _e, _f, _g, _h;
const baseUrl = (_a = options.baseUrl) !== null && _a !== void 0 ? _a : `${endpoint}/openai`;
options.apiVersion = (_b = options.apiVersion) !== null && _b !== void 0 ? _b : "2024-02-15-preview";
const userAgentInfo = `azsdk-js-openai-assistants-rest/1.0.0-beta.6`;
const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix
? `${options.userAgentOptions.userAgentPrefix} ${userAgentInfo}`
: `${userAgentInfo}`;
options = Object.assign(Object.assign({}, options), { userAgentOptions: {
userAgentPrefix,
}, loggingOptions: {
logger: (_d = (_c = options.loggingOptions) === null || _c === void 0 ? void 0 : _c.logger) !== null && _d !== void 0 ? _d : logger.info,
}, credentials: {
scopes: (_f = (_e = options.credentials) === null || _e === void 0 ? void 0 : _e.scopes) !== null && _f !== void 0 ? _f : ["https://cognitiveservices.azure.com/.default"],
apiKeyHeaderName: (_h = (_g = options.credentials) === null || _g === void 0 ? void 0 : _g.apiKeyHeaderName) !== null && _h !== void 0 ? _h : "api-key",
} });
return coreClient.getClient(baseUrl, credentials, options);
}
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
/** Azure OpenAI APIs for Assistants. */
function createAssistants(endpoint, credential, options = {}) {
const clientContext = createClient(endpoint, credential, options);
return clientContext;
}
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
function camelCaseKeys(obj) {
if (typeof obj !== "object" || !obj)
return obj;
if (Array.isArray(obj)) {
return obj.map((v) => camelCaseKeys(v));
}
else {
for (const key of Object.keys(obj)) {
const value = obj[key];
const newKey = tocamelCase(key);
if (newKey !== key) {
delete obj[key];
}
obj[newKey] =
typeof obj[newKey] === "object" ? camelCaseKeys(value) : value;
}
return obj;
}
}
function tocamelCase(str) {
return str
.toLowerCase()
.replace(/([_][a-z])/g, (group) => group.toUpperCase().replace("_", ""));
}
function unixToDate(unix) {
return new Date(unix * 1000);
}
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
function parseRequiredToolCallOutput(requiredToolCallOutput) {
return {
type: "function",
id: requiredToolCallOutput.id,
function: requiredToolCallOutput.function,
};
}
function parseToolCallOutput(toolCallOutput) {
const { id, type } = toolCallOutput;
switch (type) {
case "function":
return { type, id, function: toolCallOutput.function };
case "retrieval":
return { type, id, retrieval: toolCallOutput.retrieval };
case "code_interpreter":
return {
type,
id,
codeInterpreter: parseCodeInterpreterToolCallDetailsOutput(toolCallOutput.code_interpreter),
};
default:
throw new Error(`Unknown tool call type: ${type}`);
}
}
function parseCodeInterpreterToolCallDetailsOutput(codeInterpreterToolCallDetailsOutput) {
const rest = tslib.__rest(codeInterpreterToolCallDetailsOutput, []);
return Object.assign({}, camelCaseKeys(rest));
}
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
function _createAssistantSend(context, body, options = { requestOptions: {} }) {
return context.path("/assistants").post(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { body: {
model: body["model"],
name: body["name"],
description: body["description"],
instructions: body["instructions"],
tools: body["tools"],
file_ids: body["fileIds"],
metadata: body["metadata"],
} }));
}
async function _createAssistantDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
name: result.body["name"],
description: result.body["description"],
model: result.body["model"],
instructions: result.body["instructions"],
tools: result.body["tools"],
fileIds: result.body["file_ids"],
metadata: result.body["metadata"],
};
}
/** Creates a new assistant. */
async function createAssistant(context, body, options = { requestOptions: {} }) {
const result = await _createAssistantSend(context, body, options);
return _createAssistantDeserialize(result);
}
function _listAssistantsSend(context, options = { requestOptions: {} }) {
return context.path("/assistants").get(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { queryParameters: {
limit: options === null || options === void 0 ? void 0 : options.limit,
order: options === null || options === void 0 ? void 0 : options.order,
after: options === null || options === void 0 ? void 0 : options.after,
before: options === null || options === void 0 ? void 0 : options.before,
} }));
}
function _getAssistantSend(context, assistantId, options = { requestOptions: {} }) {
return context
.path("/assistants/{assistantId}", assistantId)
.get(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
async function _getAssistantDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
name: result.body["name"],
description: result.body["description"],
model: result.body["model"],
instructions: result.body["instructions"],
tools: result.body["tools"],
fileIds: result.body["file_ids"],
metadata: result.body["metadata"],
};
}
/** Retrieves an existing assistant. */
async function getAssistant(context, assistantId, options = { requestOptions: {} }) {
const result = await _getAssistantSend(context, assistantId, options);
return _getAssistantDeserialize(result);
}
function _updateAssistantSend(context, assistantId, body, options = { requestOptions: {} }) {
return context.path("/assistants/{assistantId}", assistantId).post(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { body: {
model: body["model"],
name: body["name"],
description: body["description"],
instructions: body["instructions"],
tools: body["tools"],
file_ids: body["fileIds"],
metadata: body["metadata"],
} }));
}
async function _updateAssistantDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
name: result.body["name"],
description: result.body["description"],
model: result.body["model"],
instructions: result.body["instructions"],
tools: result.body["tools"],
fileIds: result.body["file_ids"],
metadata: result.body["metadata"],
};
}
/** Modifies an existing assistant. */
async function updateAssistant(context, assistantId, body, options = { requestOptions: {} }) {
const result = await _updateAssistantSend(context, assistantId, body, options);
return _updateAssistantDeserialize(result);
}
function _deleteAssistantSend(context, assistantId, options = { requestOptions: {} }) {
return context
.path("/assistants/{assistantId}", assistantId)
.delete(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
async function _deleteAssistantDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
deleted: result.body["deleted"],
};
}
/** Deletes an assistant. */
async function deleteAssistant(context, assistantId, options = { requestOptions: {} }) {
const result = await _deleteAssistantSend(context, assistantId, options);
return _deleteAssistantDeserialize(result);
}
function _createAssistantFileSend(context, assistantId, fileId, options = { requestOptions: {} }) {
return context.path("/assistants/{assistantId}/files", assistantId).post(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { body: { file_id: fileId } }));
}
async function _createAssistantFileDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
assistantId: result.body["assistant_id"],
};
}
/** Attaches a previously uploaded file to an assistant for use by tools that can read files. */
async function createAssistantFile(context, assistantId, fileId, options = { requestOptions: {} }) {
const result = await _createAssistantFileSend(context, assistantId, fileId, options);
return _createAssistantFileDeserialize(result);
}
function _listAssistantFilesSend(context, assistantId, options = { requestOptions: {} }) {
return context.path("/assistants/{assistantId}/files", assistantId).get(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { queryParameters: {
limit: options === null || options === void 0 ? void 0 : options.limit,
order: options === null || options === void 0 ? void 0 : options.order,
after: options === null || options === void 0 ? void 0 : options.after,
before: options === null || options === void 0 ? void 0 : options.before,
} }));
}
function _getAssistantFileSend(context, assistantId, fileId, options = { requestOptions: {} }) {
return context
.path("/assistants/{assistantId}/files/{fileId}", assistantId, fileId)
.get(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
async function _getAssistantFileDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
assistantId: result.body["assistant_id"],
};
}
/** Retrieves a file attached to an assistant. */
async function getAssistantFile(context, assistantId, fileId, options = { requestOptions: {} }) {
const result = await _getAssistantFileSend(context, assistantId, fileId, options);
return _getAssistantFileDeserialize(result);
}
function _deleteAssistantFileSend(context, assistantId, fileId, options = { requestOptions: {} }) {
return context
.path("/assistants/{assistantId}/files/{fileId}", assistantId, fileId)
.delete(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
async function _deleteAssistantFileDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
deleted: result.body["deleted"],
};
}
/**
* Unlinks a previously attached file from an assistant, rendering it unavailable for use by tools that can read
* files.
*/
async function deleteAssistantFile(context, assistantId, fileId, options = { requestOptions: {} }) {
const result = await _deleteAssistantFileSend(context, assistantId, fileId, options);
return _deleteAssistantFileDeserialize(result);
}
async function _createThreadDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
metadata: result.body["metadata"],
};
}
/** Creates a new thread. Threads contain messages and can be run by assistants. */
async function createThread(context, body, options = { requestOptions: {} }) {
const result = await _createThreadSend(context, body, options);
return _createThreadDeserialize(result);
}
function _getThreadSend(context, threadId, options = { requestOptions: {} }) {
return context
.path("/threads/{threadId}", threadId)
.get(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
async function _getThreadDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
metadata: result.body["metadata"],
};
}
/** Gets information about an existing thread. */
async function getThread(context, threadId, options = { requestOptions: {} }) {
const result = await _getThreadSend(context, threadId, options);
return _getThreadDeserialize(result);
}
function _updateThreadSend(context, threadId, options = { requestOptions: {} }) {
return context.path("/threads/{threadId}", threadId).post(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { body: { metadata: options === null || options === void 0 ? void 0 : options.metadata } }));
}
async function _updateThreadDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
metadata: result.body["metadata"],
};
}
/** Modifies an existing thread. */
async function updateThread(context, threadId, options = { requestOptions: {} }) {
const result = await _updateThreadSend(context, threadId, options);
return _updateThreadDeserialize(result);
}
function _deleteThreadSend(context, threadId, options = { requestOptions: {} }) {
return context
.path("/threads/{threadId}", threadId)
.delete(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
async function _deleteThreadDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
deleted: result.body["deleted"],
};
}
/** Deletes an existing thread. */
async function deleteThread(context, threadId, options = { requestOptions: {} }) {
const result = await _deleteThreadSend(context, threadId, options);
return _deleteThreadDeserialize(result);
}
function _createMessageSend(context, threadId, role, content, options = { requestOptions: {} }) {
return context.path("/threads/{threadId}/messages", threadId).post(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { body: {
role: role,
content: content,
file_ids: options === null || options === void 0 ? void 0 : options.fileIds,
metadata: options === null || options === void 0 ? void 0 : options.metadata,
} }));
}
/** Creates a new message on a specified thread. */
async function createMessage(context, threadId, role, content, options = { requestOptions: {} }) {
const result = await _createMessageSend(context, threadId, role, content, options);
return _createMessageDeserialize(result);
}
function _listMessagesSend(context, threadId, options = { requestOptions: {} }) {
return context.path("/threads/{threadId}/messages", threadId).get(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { queryParameters: {
limit: options === null || options === void 0 ? void 0 : options.limit,
order: options === null || options === void 0 ? void 0 : options.order,
after: options === null || options === void 0 ? void 0 : options.after,
before: options === null || options === void 0 ? void 0 : options.before,
} }));
}
function _updateMessageSend(context, threadId, messageId, options = { requestOptions: {} }) {
return context.path("/threads/{threadId}/messages/{messageId}", threadId, messageId).post(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { body: { metadata: options === null || options === void 0 ? void 0 : options.metadata } }));
}
/** Modifies an existing message on an existing thread. */
async function updateMessage(context, threadId, messageId, options = { requestOptions: {} }) {
const result = await _updateMessageSend(context, threadId, messageId, options);
return _updateMessageDeserialize(result);
}
function _listMessageFilesSend(context, threadId, messageId, options = { requestOptions: {} }) {
return context.path("/threads/{threadId}/messages/{messageId}/files", threadId, messageId).get(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { queryParameters: {
limit: options === null || options === void 0 ? void 0 : options.limit,
order: options === null || options === void 0 ? void 0 : options.order,
after: options === null || options === void 0 ? void 0 : options.after,
before: options === null || options === void 0 ? void 0 : options.before,
} }));
}
function _getMessageFileSend(context, threadId, messageId, fileId, options = { requestOptions: {} }) {
return context
.path("/threads/{threadId}/messages/{messageId}/files/{fileId}", threadId, messageId, fileId)
.get(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
async function _getMessageFileDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
messageId: result.body["message_id"],
};
}
/** Gets information about a file attachment to a message within a thread. */
async function getMessageFile(context, threadId, messageId, fileId, options = { requestOptions: {} }) {
const result = await _getMessageFileSend(context, threadId, messageId, fileId, options);
return _getMessageFileDeserialize(result);
}
function _createRunSend(context, threadId, createRunOptions, options = { requestOptions: {} }) {
return context.path("/threads/{threadId}/runs", threadId).post(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { body: {
assistant_id: createRunOptions["assistantId"],
model: createRunOptions["model"],
instructions: createRunOptions["instructions"],
additional_instructions: createRunOptions["additionalInstructions"],
tools: createRunOptions["tools"],
metadata: createRunOptions["metadata"],
} }));
}
/** Creates a new run for an assistant thread. */
async function createRun(context, threadId, createRunOptions, options = { requestOptions: {} }) {
const result = await _createRunSend(context, threadId, createRunOptions, options);
return _createRunDeserialize(result);
}
function _listRunsSend(context, threadId, options = { requestOptions: {} }) {
return context.path("/threads/{threadId}/runs", threadId).get(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { queryParameters: {
limit: options === null || options === void 0 ? void 0 : options.limit,
order: options === null || options === void 0 ? void 0 : options.order,
after: options === null || options === void 0 ? void 0 : options.after,
before: options === null || options === void 0 ? void 0 : options.before,
} }));
}
function _getRunSend(context, threadId, runId, options = { requestOptions: {} }) {
return context
.path("/threads/{threadId}/runs/{runId}", threadId, runId)
.get(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
/** Gets an existing run from an existing thread. */
async function getRun(context, threadId, runId, options = { requestOptions: {} }) {
const result = await _getRunSend(context, threadId, runId, options);
return _getRunDeserialize(result);
}
function _updateRunSend(context, threadId, runId, options = { requestOptions: {} }) {
return context.path("/threads/{threadId}/runs/{runId}", threadId, runId).post(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { body: { metadata: options === null || options === void 0 ? void 0 : options.metadata } }));
}
async function _updateRunDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
threadId: result.body["thread_id"],
assistantId: result.body["assistant_id"],
status: result.body["status"],
requiredAction: result.body.required_action,
lastError: result.body.last_error,
model: result.body["model"],
instructions: result.body["instructions"],
tools: result.body["tools"],
fileIds: result.body["file_ids"],
createdAt: unixToDate(result.body["created_at"]),
expiresAt: result.body["expires_at"] === null ? null : unixToDate(Number(result.body["expires_at"])),
startedAt: result.body["started_at"] === null ? null : unixToDate(Number(result.body["started_at"])),
completedAt: result.body["completed_at"] === null ? null : unixToDate(Number(result.body["completed_at"])),
cancelledAt: result.body["cancelled_at"] === null ? null : unixToDate(Number(result.body["cancelled_at"])),
failedAt: result.body["failed_at"] === null ? null : unixToDate(Number(result.body["failed_at"])),
metadata: result.body["metadata"],
};
}
/** Modifies an existing thread run. */
async function updateRun(context, threadId, runId, options = { requestOptions: {} }) {
const result = await _updateRunSend(context, threadId, runId, options);
return _updateRunDeserialize(result);
}
function _submitToolOutputsToRunSend(context, threadId, runId, toolOutputs, options = { requestOptions: {} }) {
return context
.path("/threads/{threadId}/runs/{runId}/submit_tool_outputs", threadId, runId)
.post(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { body: {
tool_outputs: toolOutputs.map((p) => ({
tool_call_id: p["toolCallId"],
output: p["output"],
})),
} }));
}
/** Submits outputs from tools as requested by tool calls in a run. Runs that need submitted tool outputs will have a status of 'requires_action' with a required_action.type of 'submit_tool_outputs'. */
async function submitToolOutputsToRun(context, threadId, runId, toolOutputs, options = { requestOptions: {} }) {
const result = await _submitToolOutputsToRunSend(context, threadId, runId, toolOutputs, options);
return _submitToolOutputsToRunDeserialize(result);
}
function _cancelRunSend(context, threadId, runId, options = { requestOptions: {} }) {
return context
.path("/threads/{threadId}/runs/{runId}/cancel", threadId, runId)
.post(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
/** Cancels a run of an in progress thread. */
async function cancelRun(context, threadId, runId, options = { requestOptions: {} }) {
const result = await _cancelRunSend(context, threadId, runId, options);
return _cancelRunDeserialize(result);
}
/** Creates a new assistant thread and immediately starts a run using that new thread. */
async function createThreadAndRun(context, body, options = { requestOptions: {} }) {
const result = await _createThreadAndRunSend(context, body, options);
return _createThreadAndRunDeserialize(result);
}
function _getRunStepSend(context, threadId, runId, stepId, options = { requestOptions: {} }) {
return context
.path("/threads/{threadId}/runs/{runId}/steps/{stepId}", threadId, runId, stepId)
.get(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
/** Gets a single run step from a thread run. */
async function getRunStep(context, threadId, runId, stepId, options = { requestOptions: {} }) {
const result = await _getRunStepSend(context, threadId, runId, stepId, options);
return _getRunStepDeserialize(result);
}
function _listRunStepsSend(context, threadId, runId, options = { requestOptions: {} }) {
return context.path("/threads/{threadId}/runs/{runId}/steps", threadId, runId).get(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { queryParameters: {
limit: options === null || options === void 0 ? void 0 : options.limit,
order: options === null || options === void 0 ? void 0 : options.order,
after: options === null || options === void 0 ? void 0 : options.after,
before: options === null || options === void 0 ? void 0 : options.before,
} }));
}
function _listFilesSend(context, options = { requestOptions: {} }) {
return context.path("/files").get(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { queryParameters: { purpose: options === null || options === void 0 ? void 0 : options.purpose } }));
}
async function _listFilesDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
data: result.body["data"].map((p) => ({
id: p["id"],
bytes: p["bytes"],
filename: p["filename"],
createdAt: unixToDate(p["created_at"]),
purpose: p["purpose"],
})),
};
}
/** Gets a list of previously uploaded files. */
async function listFiles(context, options = { requestOptions: {} }) {
const result = await _listFilesSend(context, options);
return _listFilesDeserialize(result);
}
/** Uploads a file for use by other operations. */
async function uploadFile(context, file, purpose, options = { requestOptions: {} }) {
const result = await _uploadFileSend(context, file, purpose, options);
return _uploadFileDeserialize(result);
}
function _deleteFileSend(context, fileId, options = { requestOptions: {} }) {
return context
.path("/files/{fileId}", fileId)
.delete(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
async function _deleteFileDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
deleted: result.body["deleted"],
};
}
/** Delete a previously uploaded file. */
async function deleteFile(context, fileId, options = { requestOptions: {} }) {
const result = await _deleteFileSend(context, fileId, options);
return _deleteFileDeserialize(result);
}
function _getFileSend(context, fileId, options = { requestOptions: {} }) {
return context
.path("/files/{fileId}", fileId)
.get(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
/** Returns information about a specific file. Does not retrieve file content. */
async function getFile(context, fileId, options = { requestOptions: {} }) {
const result = await _getFileSend(context, fileId, options);
return _getFileDeserialize(result);
}
async function _createRunDeserialize(result) {
var _a, _b, _c;
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
const _d = result.body, { required_action, last_error, created_at, expires_at, started_at, completed_at, cancelled_at, failed_at } = _d, rest = tslib.__rest(_d, ["required_action", "last_error", "created_at", "expires_at", "started_at", "completed_at", "cancelled_at", "failed_at"]);
return Object.assign(Object.assign({}, camelCaseKeys(rest)), { requiredAction: !required_action
? undefined
: {
type: required_action === null || required_action === void 0 ? void 0 : required_action["type"],
submitToolOutputs: !((_a = required_action === null || required_action === void 0 ? void 0 : required_action.submit_tool_outputs) === null || _a === void 0 ? void 0 : _a["tool_calls"])
? undefined
: {
toolCalls: (_c = (_b = required_action === null || required_action === void 0 ? void 0 : required_action.submit_tool_outputs) === null || _b === void 0 ? void 0 : _b.tool_calls) === null || _c === void 0 ? void 0 : _c.map(parseRequiredToolCallOutput),
},
}, lastError: !last_error
? undefined
: {
code: last_error === null || last_error === void 0 ? void 0 : last_error["code"],
message: last_error === null || last_error === void 0 ? void 0 : last_error["message"],
}, createdAt: unixToDate(created_at), expiresAt: expires_at === null ? null : unixToDate(Number(expires_at)), startedAt: started_at === null ? null : unixToDate(Number(started_at)), completedAt: completed_at === null ? null : unixToDate(Number(completed_at)), cancelledAt: cancelled_at === null ? null : unixToDate(Number(cancelled_at)), failedAt: failed_at === null ? null : unixToDate(Number(failed_at)) });
}
async function _listRunsDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
data: result.body["data"].map((p) => {
var _a, _b, _c;
return ({
id: p["id"],
threadId: p["thread_id"],
assistantId: p["assistant_id"],
status: p["status"],
requiredAction: !p.required_action ? undefined : { type: (_a = p.required_action) === null || _a === void 0 ? void 0 : _a["type"] },
lastError: !p.last_error
? undefined
: { code: (_b = p.last_error) === null || _b === void 0 ? void 0 : _b["code"], message: (_c = p.last_error) === null || _c === void 0 ? void 0 : _c["message"] },
model: p["model"],
instructions: p["instructions"],
tools: p["tools"],
fileIds: p["file_ids"],
metadata: p["metadata"],
createdAt: unixToDate(p["created_at"]),
expiresAt: p["expires_at"] === null ? null : unixToDate(Number(p["expires_at"])),
startedAt: p["started_at"] === null ? null : unixToDate(Number(p["started_at"])),
completedAt: p["completed_at"] === null ? null : unixToDate(Number(p["completed_at"])),
cancelledAt: p["cancelled_at"] === null ? null : unixToDate(Number(p["cancelled_at"])),
failedAt: p["failed_at"] === null ? null : unixToDate(Number(p["failed_at"])),
});
}),
firstId: result.body["first_id"],
lastId: result.body["last_id"],
hasMore: result.body["has_more"],
};
}
function _createThreadAndRunSend(context, body, options = { requestOptions: {} }) {
var _a, _b, _c, _d;
return context.path("/threads/runs").post(Object.assign(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)), { body: {
assistant_id: body["assistantId"],
thread: !body.thread
? undefined
: {
messages: !((_a = body.thread) === null || _a === void 0 ? void 0 : _a["messages"])
? (_b = body.thread) === null || _b === void 0 ? void 0 : _b["messages"]
: (_c = body.thread) === null || _c === void 0 ? void 0 : _c["messages"].map((p) => ({
role: p["role"],
content: p["content"],
})),
metadata: (_d = body.thread) === null || _d === void 0 ? void 0 : _d["metadata"],
},
model: body["model"],
instructions: body["instructions"],
tools: body["tools"],
metadata: body["metadata"],
} }));
}
/** Returns a list of runs associated with an assistant thread. */
async function listRuns(context, threadId, options = { requestOptions: {} }) {
const result = await _listRunsSend(context, threadId, options);
return _listRunsDeserialize(result);
}
async function _getRunDeserialize(result) {
var _a, _b, _c, _d, _e, _f, _g, _h;
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
threadId: result.body["thread_id"],
assistantId: result.body["assistant_id"],
status: result.body["status"],
requiredAction: !result.body.required_action
? undefined
: {
type: (_a = result.body.required_action) === null || _a === void 0 ? void 0 : _a["type"],
submitToolOutputs: !((_c = (_b = result.body.required_action) === null || _b === void 0 ? void 0 : _b.submit_tool_outputs) === null || _c === void 0 ? void 0 : _c["tool_calls"])
? undefined
: {
toolCalls: (_f = (_e = (_d = result.body.required_action) === null || _d === void 0 ? void 0 : _d.submit_tool_outputs) === null || _e === void 0 ? void 0 : _e.tool_calls) === null || _f === void 0 ? void 0 : _f.map(parseRequiredToolCallOutput),
},
},
lastError: !result.body.last_error
? undefined
: {
code: (_g = result.body.last_error) === null || _g === void 0 ? void 0 : _g["code"],
message: (_h = result.body.last_error) === null || _h === void 0 ? void 0 : _h["message"],
},
model: result.body["model"],
instructions: result.body["instructions"],
tools: result.body["tools"],
fileIds: result.body["file_ids"],
metadata: result.body["metadata"],
createdAt: unixToDate(result.body["created_at"]),
expiresAt: result.body["expires_at"] === null ? null : unixToDate(Number(result.body["expires_at"])),
startedAt: result.body["started_at"] === null ? null : unixToDate(Number(result.body["started_at"])),
completedAt: result.body["completed_at"] === null ? null : unixToDate(Number(result.body["completed_at"])),
cancelledAt: result.body["cancelled_at"] === null ? null : unixToDate(Number(result.body["cancelled_at"])),
failedAt: result.body["failed_at"] === null ? null : unixToDate(Number(result.body["failed_at"])),
};
}
async function _submitToolOutputsToRunDeserialize(result) {
var _a, _b, _c, _d, _e, _f, _g, _h;
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
threadId: result.body["thread_id"],
assistantId: result.body["assistant_id"],
status: result.body["status"],
requiredAction: !result.body.required_action
? undefined
: {
type: (_a = result.body.required_action) === null || _a === void 0 ? void 0 : _a["type"],
submitToolOutputs: !((_c = (_b = result.body.required_action) === null || _b === void 0 ? void 0 : _b.submit_tool_outputs) === null || _c === void 0 ? void 0 : _c["tool_calls"])
? undefined
: {
toolCalls: (_f = (_e = (_d = result.body.required_action) === null || _d === void 0 ? void 0 : _d.submit_tool_outputs) === null || _e === void 0 ? void 0 : _e.tool_calls) === null || _f === void 0 ? void 0 : _f.map(parseRequiredToolCallOutput),
},
},
lastError: !result.body.last_error
? undefined
: {
code: (_g = result.body.last_error) === null || _g === void 0 ? void 0 : _g["code"],
message: (_h = result.body.last_error) === null || _h === void 0 ? void 0 : _h["message"],
},
model: result.body["model"],
instructions: result.body["instructions"],
tools: result.body["tools"],
fileIds: result.body["file_ids"],
metadata: result.body["metadata"],
createdAt: unixToDate(result.body["created_at"]),
expiresAt: result.body["expires_at"] === null ? null : unixToDate(Number(result.body["expires_at"])),
startedAt: result.body["started_at"] === null ? null : unixToDate(Number(result.body["started_at"])),
completedAt: result.body["completed_at"] === null ? null : unixToDate(Number(result.body["completed_at"])),
cancelledAt: result.body["cancelled_at"] === null ? null : unixToDate(Number(result.body["cancelled_at"])),
failedAt: result.body["failed_at"] === null ? null : unixToDate(Number(result.body["failed_at"])),
};
}
async function _createThreadAndRunDeserialize(result) {
var _a, _b, _c, _d, _e, _f, _g, _h;
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
threadId: result.body["thread_id"],
assistantId: result.body["assistant_id"],
status: result.body["status"],
requiredAction: !result.body.required_action
? undefined
: {
type: (_a = result.body.required_action) === null || _a === void 0 ? void 0 : _a["type"],
submitToolOutputs: !((_c = (_b = result.body.required_action) === null || _b === void 0 ? void 0 : _b.submit_tool_outputs) === null || _c === void 0 ? void 0 : _c["tool_calls"])
? undefined
: {
toolCalls: (_f = (_e = (_d = result.body.required_action) === null || _d === void 0 ? void 0 : _d.submit_tool_outputs) === null || _e === void 0 ? void 0 : _e.tool_calls) === null || _f === void 0 ? void 0 : _f.map(parseRequiredToolCallOutput),
},
},
lastError: !result.body.last_error
? undefined
: {
code: (_g = result.body.last_error) === null || _g === void 0 ? void 0 : _g["code"],
message: (_h = result.body.last_error) === null || _h === void 0 ? void 0 : _h["message"],
},
model: result.body["model"],
instructions: result.body["instructions"],
tools: result.body["tools"],
fileIds: result.body["file_ids"],
metadata: result.body["metadata"],
createdAt: unixToDate(result.body["created_at"]),
expiresAt: result.body["expires_at"] === null ? null : unixToDate(Number(result.body["expires_at"])),
startedAt: result.body["started_at"] === null ? null : unixToDate(Number(result.body["started_at"])),
completedAt: result.body["completed_at"] === null ? null : unixToDate(Number(result.body["completed_at"])),
cancelledAt: result.body["cancelled_at"] === null ? null : unixToDate(Number(result.body["cancelled_at"])),
failedAt: result.body["failed_at"] === null ? null : unixToDate(Number(result.body["failed_at"])),
};
}
async function _cancelRunDeserialize(result) {
var _a, _b, _c, _d, _e, _f;
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
threadId: result.body["thread_id"],
assistantId: result.body["assistant_id"],
status: result.body["status"],
requiredAction: !result.body.required_action
? undefined
: {
type: (_a = result.body.required_action) === null || _a === void 0 ? void 0 : _a["type"],
submitToolOutputs: !((_c = (_b = result.body.required_action) === null || _b === void 0 ? void 0 : _b.submit_tool_outputs) === null || _c === void 0 ? void 0 : _c["tool_calls"])
? undefined
: {
toolCalls: (_f = (_e = (_d = result.body.required_action) === null || _d === void 0 ? void 0 : _d.submit_tool_outputs) === null || _e === void 0 ? void 0 : _e.tool_calls) === null || _f === void 0 ? void 0 : _f.map(parseRequiredToolCallOutput),
},
},
lastError: !result.body.last_error
? undefined
: {
code: result.body.last_error["code"],
message: result.body.last_error["message"],
},
model: result.body["model"],
instructions: result.body["instructions"],
tools: result.body["tools"],
fileIds: result.body["file_ids"],
createdAt: unixToDate(result.body["created_at"]),
expiresAt: result.body["expires_at"] === null ? null : unixToDate(Number(result.body["expires_at"])),
startedAt: result.body["started_at"] === null ? null : unixToDate(Number(result.body["started_at"])),
completedAt: result.body["completed_at"] === null ? null : unixToDate(Number(result.body["completed_at"])),
cancelledAt: result.body["cancelled_at"] === null ? null : unixToDate(Number(result.body["cancelled_at"])),
failedAt: result.body["failed_at"] === null ? null : unixToDate(Number(result.body["failed_at"])),
metadata: result.body["metadata"],
};
}
async function listMessages(context, threadId, options = { requestOptions: {} }) {
const result = await _listMessagesSend(context, threadId, options);
return _listMessagesDeserialize(result);
}
function _getMessageSend(context, threadId, messageId, options = { requestOptions: {} }) {
return context
.path("/threads/{threadId}/messages/{messageId}", threadId, messageId)
.get(Object.assign({}, coreClient.operationOptionsToRequestParameters(options)));
}
/** Retrieves a message associated with a thread. */
async function getMessage(context, threadId, messageId, options = { requestOptions: {} }) {
const result = await _getMessageSend(context, threadId, messageId, options);
return _getMessageDeserialize(result);
}
async function _listMessageFilesDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
data: result.body["data"].map((p) => ({
id: p["id"],
createdAt: unixToDate(p["created_at"]),
messageId: p["message_id"],
})),
firstId: result.body["first_id"],
lastId: result.body["last_id"],
hasMore: result.body["has_more"],
};
}
/** Returns a list of files associated with a message from a thread. */
async function listMessageFiles(context, threadId, messageId, options = { requestOptions: {} }) {
const result = await _listMessageFilesSend(context, threadId, messageId, options);
return _listMessageFilesDeserialize(result);
}
async function _createMessageDeserialize(result) {
var _a;
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
threadId: result.body["thread_id"],
role: result.body["role"],
content: ((_a = result.body["content"]) !== null && _a !== void 0 ? _a : []).map(parseMessageContentOutput),
assistantId: result.body["assistant_id"],
runId: result.body["run_id"],
fileIds: result.body["file_ids"],
metadata: result.body["metadata"],
};
}
async function _listMessagesDeserialize(result) {
var _a;
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
data: ((_a = result.body["data"]) !== null && _a !== void 0 ? _a : []).map((p) => {
var _a;
return ({
id: p["id"],
createdAt: unixToDate(p["created_at"]),
threadId: p["thread_id"],
role: p["role"],
content: ((_a = p["content"]) !== null && _a !== void 0 ? _a : []).map(parseMessageContentOutput),
assistantId: p["assistant_id"],
runId: p["run_id"],
metadata: p["metadata"],
});
}),
firstId: result.body["first_id"],
lastId: result.body["last_id"],
hasMore: result.body["has_more"],
};
}
async function _getMessageDeserialize(result) {
var _a;
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
threadId: result.body["thread_id"],
role: result.body["role"],
content: ((_a = result.body["content"]) !== null && _a !== void 0 ? _a : []).map(parseMessageContentOutput),
assistantId: result.body["assistant_id"],
runId: result.body["run_id"],
metadata: result.body["metadata"],
};
}
async function _updateMessageDeserialize(result) {
var _a;
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
id: result.body["id"],
createdAt: unixToDate(result.body["created_at"]),
threadId: result.body["thread_id"],
role: result.body["role"],
content: ((_a = result.body["content"]) !== null && _a !== void 0 ? _a : []).map(parseMessageContentOutput),
assistantId: result.body["assistant_id"],
runId: result.body["run_id"],
metadata: result.body["metadata"],
};
}
async function _listRunStepsDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
data: result.body["data"].map(parseRunStepOutput),
firstId: result.body["first_id"],
lastId: result.body["last_id"],
hasMore: result.body["has_more"],
};
}
async function _getRunStepDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
const _a = result.body, { step_details, last_error, created_at, expired_at, completed_at, cancelled_at, failed_at } = _a, rest = tslib.__rest(_a, ["step_details", "last_error", "created_at", "expired_at", "completed_at", "cancelled_at", "failed_at"]);
return Object.assign(Object.assign({}, camelCaseKeys(rest)), { stepDetails: parseRunStepDetails(step_details), lastError: last_error === null
? null
: {
code: last_error["code"],
message: last_error["message"],
}, createdAt: unixToDate(created_at), expiredAt: expired_at === null ? null : unixToDate(Number(expired_at)), completedAt: completed_at === null ? null : unixToDate(Number(completed_at)), cancelledAt: cancelled_at === null ? null : unixToDate(Number(cancelled_at)), failedAt: failed_at === null ? null : unixToDate(Number(failed_at)) });
}
/** Returns a list of run steps associated an assistant thread run. */
async function listRunSteps(context, threadId, runId, options = { requestOptions: {} }) {
const result = await _listRunStepsSend(context, threadId, runId, options);
return _listRunStepsDeserialize(result);
}
async function _listAssistantsDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
return {
data: result.body["data"].map((p) => ({
id: p["id"],
createdAt: unixToDate(p["created_at"]),
name: p["name"],
description: p["description"],
model: p["model"],
instructions: p["instructions"],
tools: p["tools"],
fileIds: p["file_ids"],
metadata: p["metadata"],
})),
firstId: result.body["first_id"],
lastId: result.body["last_id"],
hasMore: result.body["has_more"],
};
}
/** Returns a list of assistants. */
async function listAssistants(context, options = { requestOptions: {} }) {
const result = await _listAssistantsSend(context, options);
return _listAssistantsDeserialize(result);
}
async function _listAssistantFilesDeserialize(result) {
if (result.status !== "200") {
throw coreClient.createRestError(result);
}
re