From 21ba044570bcd2d272b759de56c8a2be33ec80db Mon Sep 17 00:00:00 2001
From: Allan Bunch <4503640+allanbunch@users.noreply.github.com>
Date: Wed, 28 May 2025 18:01:22 -0400
Subject: [PATCH 1/5] Fixes #34 vector store method call failures.
---
lib.js | 40 +++++++++---------------
node.html | 29 +++++------------
src/vector-store-file-batches/methods.js | 10 +++---
src/vector-store-files/methods.js | 14 +++------
src/vector-stores/methods.js | 16 +++-------
src/vector-stores/template.html | 29 +++++------------
6 files changed, 42 insertions(+), 96 deletions(-)
diff --git a/lib.js b/lib.js
index 909fdbd..936752b 100644
--- a/lib.js
+++ b/lib.js
@@ -16530,7 +16530,7 @@ var require_methods18 = __commonJS({
async function createVectorStoreFileBatch(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, ...params } = parameters.payload;
- const response = await openai.beta.vectorStores.fileBatches.create(
+ const response = await openai.vectorStores.fileBatches.create(
vector_store_id,
params
);
@@ -16539,7 +16539,7 @@ var require_methods18 = __commonJS({
async function retrieveVectorStoreFileBatch(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, batch_id, ...params } = parameters.payload;
- const response = await openai.beta.vectorStores.fileBatches.retrieve(
+ const response = await openai.vectorStores.fileBatches.retrieve(
vector_store_id,
batch_id,
params
@@ -16549,7 +16549,7 @@ var require_methods18 = __commonJS({
async function cancelVectorStoreFileBatch(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, batch_id, ...params } = parameters.payload;
- const response = await openai.beta.vectorStores.fileBatches.retrieve(
+ const response = await openai.vectorStores.fileBatches.retrieve(
vector_store_id,
batch_id,
params
@@ -16559,7 +16559,7 @@ var require_methods18 = __commonJS({
async function listVectorStoreBatchFiles(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, batch_id, ...params } = parameters.payload;
- const list = await openai.beta.vectorStores.fileBatches.listFiles(
+ const list = await openai.vectorStores.fileBatches.listFiles(
vector_store_id,
batch_id,
params
@@ -16579,7 +16579,7 @@ var require_methods18 = __commonJS({
}
});
const fileStreams = files2.map((path) => fs.createReadStream(path));
- const response = await openai.beta.vectorStores.fileBatches.uploadAndPoll(
+ const response = await openai.vectorStores.fileBatches.uploadAndPoll(
vector_store_id,
{ files: fileStreams, fileIds: file_ids },
params
@@ -16603,7 +16603,7 @@ var require_methods19 = __commonJS({
async function createVectorStoreFile(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, ...params } = parameters.payload;
- const response = await openai.beta.vectorStores.files.create(
+ const response = await openai.vectorStores.files.create(
vector_store_id,
params
);
@@ -16612,25 +16612,19 @@ var require_methods19 = __commonJS({
async function listVectorStoreFiles(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, ...params } = parameters.payload;
- const list = await openai.beta.vectorStores.files.list(
- vector_store_id,
- params
- );
+ const list = await openai.vectorStores.files.list(vector_store_id, params);
return [...list.data];
}
async function retrieveVectorStoreFile(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, file_id } = parameters.payload;
- const response = openai.beta.vectorStores.files.retrieve(
- vector_store_id,
- file_id
- );
+ const response = openai.vectorStores.files.retrieve(vector_store_id, file_id);
return response;
}
async function deleteVectorStoreFile(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, file_id, ...params } = parameters.payload;
- const response = openai.beta.vectorStores.files.del(
+ const response = openai.vectorStores.files.del(
vector_store_id,
file_id,
params
@@ -16652,37 +16646,31 @@ var require_methods20 = __commonJS({
var OpenAI = require_openai().OpenAI;
async function createVectorStore(parameters) {
const openai = new OpenAI(this.clientParams);
- const response = await openai.beta.vectorStores.create(parameters.payload);
+ const response = await openai.vectorStores.create(parameters.payload);
return response;
}
async function listVectorStores(parameters) {
const openai = new OpenAI(this.clientParams);
- const list = await openai.beta.vectorStores.list(parameters.payload);
+ const list = await openai.vectorStores.list(parameters.payload);
const vectorStores2 = [...list.data];
return vectorStores2;
}
async function retrieveVectorStore(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, ...params } = parameters.payload;
- const response = await openai.beta.vectorStores.retrieve(
- vector_store_id,
- params
- );
+ const response = await openai.vectorStores.retrieve(vector_store_id, params);
return response;
}
async function modifyVectorStore(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, ...params } = parameters.payload;
- const response = await openai.beta.vectorStores.update(
- vector_store_id,
- params
- );
+ const response = await openai.vectorStores.update(vector_store_id, params);
return response;
}
async function deleteVectorStore(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, ...params } = parameters.payload;
- const response = await openai.beta.vectorStores.del(vector_store_id, params);
+ const response = await openai.vectorStores.del(vector_store_id, params);
return response;
}
module2.exports = {
diff --git a/node.html b/node.html
index 9bae2c8..eafc085 100644
--- a/node.html
+++ b/node.html
@@ -394,28 +394,13 @@
data-i18n="OpenaiApi.parameters.cancelUpload"
>
-
-
-
-
-
-
-
+
+
+
+
+
+
+
fs.createReadStream(path));
- const response = await openai.beta.vectorStores.fileBatches.uploadAndPoll(
+ const response = await openai.vectorStores.fileBatches.uploadAndPoll(
vector_store_id,
{ files: fileStreams, fileIds: file_ids },
params
diff --git a/src/vector-store-files/methods.js b/src/vector-store-files/methods.js
index 5b48c18..7ac5fdd 100644
--- a/src/vector-store-files/methods.js
+++ b/src/vector-store-files/methods.js
@@ -3,7 +3,7 @@ const OpenAI = require("openai").OpenAI;
async function createVectorStoreFile(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, ...params } = parameters.payload;
- const response = await openai.beta.vectorStores.files.create(
+ const response = await openai.vectorStores.files.create(
vector_store_id,
params
);
@@ -16,10 +16,7 @@ async function listVectorStoreFiles(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, ...params } = parameters.payload;
- const list = await openai.beta.vectorStores.files.list(
- vector_store_id,
- params
- );
+ const list = await openai.vectorStores.files.list(vector_store_id, params);
return [...list.data];
}
@@ -29,10 +26,7 @@ async function retrieveVectorStoreFile(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, file_id } = parameters.payload;
- const response = openai.beta.vectorStores.files.retrieve(
- vector_store_id,
- file_id
- );
+ const response = openai.vectorStores.files.retrieve(vector_store_id, file_id);
return response;
}
@@ -42,7 +36,7 @@ async function deleteVectorStoreFile(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, file_id, ...params } = parameters.payload;
- const response = openai.beta.vectorStores.files.del(
+ const response = openai.vectorStores.files.del(
vector_store_id,
file_id,
params
diff --git a/src/vector-stores/methods.js b/src/vector-stores/methods.js
index 09fbdfe..f500c1a 100644
--- a/src/vector-stores/methods.js
+++ b/src/vector-stores/methods.js
@@ -2,14 +2,14 @@ const OpenAI = require("openai").OpenAI;
async function createVectorStore(parameters) {
const openai = new OpenAI(this.clientParams);
- const response = await openai.beta.vectorStores.create(parameters.payload);
+ const response = await openai.vectorStores.create(parameters.payload);
return response;
}
async function listVectorStores(parameters) {
const openai = new OpenAI(this.clientParams);
- const list = await openai.beta.vectorStores.list(parameters.payload);
+ const list = await openai.vectorStores.list(parameters.payload);
const vectorStores = [...list.data];
return vectorStores;
@@ -18,10 +18,7 @@ async function listVectorStores(parameters) {
async function retrieveVectorStore(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, ...params } = parameters.payload;
- const response = await openai.beta.vectorStores.retrieve(
- vector_store_id,
- params
- );
+ const response = await openai.vectorStores.retrieve(vector_store_id, params);
return response;
}
@@ -29,10 +26,7 @@ async function retrieveVectorStore(parameters) {
async function modifyVectorStore(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, ...params } = parameters.payload;
- const response = await openai.beta.vectorStores.update(
- vector_store_id,
- params
- );
+ const response = await openai.vectorStores.update(vector_store_id, params);
return response;
}
@@ -40,7 +34,7 @@ async function modifyVectorStore(parameters) {
async function deleteVectorStore(parameters) {
const openai = new OpenAI(this.clientParams);
const { vector_store_id, ...params } = parameters.payload;
- const response = await openai.beta.vectorStores.del(vector_store_id, params);
+ const response = await openai.vectorStores.del(vector_store_id, params);
return response;
}
diff --git a/src/vector-stores/template.html b/src/vector-stores/template.html
index 2f833fd..7262bc9 100644
--- a/src/vector-stores/template.html
+++ b/src/vector-stores/template.html
@@ -1,22 +1,7 @@
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
\ No newline at end of file
From d692eb17ac588e35d85cdff6ded23623b718c574 Mon Sep 17 00:00:00 2001
From: Allan Bunch <4503640+allanbunch@users.noreply.github.com>
Date: Wed, 28 May 2025 18:40:27 -0400
Subject: [PATCH 2/5] Fixed missing `messages` methods ref.
---
lib.js | 83 ++++++++++++++++++++++++++++++++++++++++++------------
src/lib.js | 2 ++
2 files changed, 67 insertions(+), 18 deletions(-)
diff --git a/lib.js b/lib.js
index 936752b..a674254 100644
--- a/lib.js
+++ b/lib.js
@@ -16148,8 +16148,53 @@ var require_methods11 = __commonJS({
}
});
-// src/models/methods.js
+// src/messages/methods.js
var require_methods12 = __commonJS({
+ "src/messages/methods.js"(exports2, module2) {
+ var OpenAI = require_openai().OpenAI;
+ async function listMessages(parameters) {
+ const openai = new OpenAI(this.clientParams);
+ const { thread_id, ...params } = parameters.payload;
+ const list = await openai.beta.threads.messages.list(thread_id, params);
+ return [...list.data];
+ }
+ async function createMessage(parameters) {
+ const openai = new OpenAI(this.clientParams);
+ const { thread_id, ...params } = parameters.payload;
+ const response = await openai.beta.threads.messages.create(thread_id, params);
+ return response;
+ }
+ async function getMessage(parameters) {
+ const openai = new OpenAI(this.clientParams);
+ const { thread_id, message_id, ...params } = parameters.payload;
+ const response = await openai.beta.threads.messages.retrieve(
+ thread_id,
+ message_id,
+ params
+ );
+ return response;
+ }
+ async function modifyMessage(parameters) {
+ const openai = new OpenAI(this.clientParams);
+ const { thread_id, message_id, ...params } = parameters.payload;
+ const response = await openai.beta.threads.messages.update(
+ thread_id,
+ message_id,
+ params
+ );
+ return response;
+ }
+ module2.exports = {
+ listMessages,
+ createMessage,
+ getMessage,
+ modifyMessage
+ };
+ }
+});
+
+// src/models/methods.js
+var require_methods13 = __commonJS({
"src/models/methods.js"(exports2, module2) {
var OpenAI = require_openai().OpenAI;
async function listModels(parameters) {
@@ -16178,7 +16223,7 @@ var require_methods12 = __commonJS({
});
// src/moderations/methods.js
-var require_methods13 = __commonJS({
+var require_methods14 = __commonJS({
"src/moderations/methods.js"(exports2, module2) {
var OpenAI = require_openai().OpenAI;
async function createModeration(parameters) {
@@ -16193,7 +16238,7 @@ var require_methods13 = __commonJS({
});
// src/responses/methods.js
-var require_methods14 = __commonJS({
+var require_methods15 = __commonJS({
"src/responses/methods.js"(exports2, module2) {
var OpenAI = require_openai().OpenAI;
async function createModelResponse(parameters) {
@@ -16245,7 +16290,7 @@ var require_methods14 = __commonJS({
});
// src/runs/methods.js
-var require_methods15 = __commonJS({
+var require_methods16 = __commonJS({
"src/runs/methods.js"(exports2, module2) {
var OpenAI = require_openai().OpenAI;
async function createThreadAndRun(parameters) {
@@ -16389,7 +16434,7 @@ var require_methods15 = __commonJS({
});
// src/threads/methods.js
-var require_methods16 = __commonJS({
+var require_methods17 = __commonJS({
"src/threads/methods.js"(exports2, module2) {
var OpenAI = require_openai().OpenAI;
async function createThread(parameters) {
@@ -16425,7 +16470,7 @@ var require_methods16 = __commonJS({
});
// src/uploads/methods.js
-var require_methods17 = __commonJS({
+var require_methods18 = __commonJS({
"src/uploads/methods.js"(exports2, module2) {
var OpenAI = require_openai().OpenAI;
async function createUpload(parameters) {
@@ -16523,7 +16568,7 @@ var require_methods17 = __commonJS({
});
// src/vector-store-file-batches/methods.js
-var require_methods18 = __commonJS({
+var require_methods19 = __commonJS({
"src/vector-store-file-batches/methods.js"(exports2, module2) {
var OpenAI = require_openai().OpenAI;
var fs = require("fs");
@@ -16597,7 +16642,7 @@ var require_methods18 = __commonJS({
});
// src/vector-store-files/methods.js
-var require_methods19 = __commonJS({
+var require_methods20 = __commonJS({
"src/vector-store-files/methods.js"(exports2, module2) {
var OpenAI = require_openai().OpenAI;
async function createVectorStoreFile(parameters) {
@@ -16641,7 +16686,7 @@ var require_methods19 = __commonJS({
});
// src/vector-stores/methods.js
-var require_methods20 = __commonJS({
+var require_methods21 = __commonJS({
"src/vector-stores/methods.js"(exports2, module2) {
var OpenAI = require_openai().OpenAI;
async function createVectorStore(parameters) {
@@ -16694,15 +16739,16 @@ var embeddings = require_methods8();
var files = require_methods9();
var fine_tuning = require_methods10();
var images = require_methods11();
-var models = require_methods12();
-var moderations = require_methods13();
-var responses = require_methods14();
-var runs = require_methods15();
-var threads = require_methods16();
-var uploads = require_methods17();
-var vectorStoreFileBatches = require_methods18();
-var vectorStoreFiles = require_methods19();
-var vectorStores = require_methods20();
+var messages = require_methods12();
+var models = require_methods13();
+var moderations = require_methods14();
+var responses = require_methods15();
+var runs = require_methods16();
+var threads = require_methods17();
+var uploads = require_methods18();
+var vectorStoreFileBatches = require_methods19();
+var vectorStoreFiles = require_methods20();
+var vectorStores = require_methods21();
var OpenaiApi = class {
constructor(apiKey, baseURL, organization) {
this.clientParams = {
@@ -16724,6 +16770,7 @@ Object.assign(
files,
fine_tuning,
images,
+ messages,
models,
moderations,
responses,
diff --git a/src/lib.js b/src/lib.js
index 1d4d758..7e7301f 100644
--- a/src/lib.js
+++ b/src/lib.js
@@ -10,6 +10,7 @@ const embeddings = require("./embeddings/methods.js");
const files = require("./files/methods.js");
const fine_tuning = require("./fine-tuning/methods.js");
const images = require("./images/methods.js");
+const messages = require("./messages/methods.js");
const models = require("./models/methods.js");
const moderations = require("./moderations/methods.js");
const responses = require("./responses/methods.js");
@@ -43,6 +44,7 @@ Object.assign(
files,
fine_tuning,
images,
+ messages,
models,
moderations,
responses,
From c774918a535182d6243540a61941404aab892ad6 Mon Sep 17 00:00:00 2001
From: Allan Bunch <4503640+allanbunch@users.noreply.github.com>
Date: Wed, 28 May 2025 18:51:52 -0400
Subject: [PATCH 3/5] Bumped patch version
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 7b5e59b..e38ba93 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@inductiv/node-red-openai-api",
- "version": "1.103.0",
+ "version": "1.103.0-patch.1",
"description": "Enhance your Node-RED projects with advanced AI capabilities.",
"main": "node.js",
"engines": {
From e7990e4be133b4e76c4a2b0ff6692988e728fc42 Mon Sep 17 00:00:00 2001
From: Allan Bunch <4503640+allanbunch@users.noreply.github.com>
Date: Wed, 28 May 2025 19:18:56 -0400
Subject: [PATCH 4/5] Added `delete message` method to `messages` interface
---
lib.js | 13 +++++++++-
locales/en-US/node.json | 1 +
node.html | 49 ++++++++++++++++++++++----------------
src/messages/help.html | 24 +++++++++++++++++--
src/messages/methods.js | 13 ++++++++++
src/messages/template.html | 25 ++++++-------------
6 files changed, 84 insertions(+), 41 deletions(-)
diff --git a/lib.js b/lib.js
index a674254..997882b 100644
--- a/lib.js
+++ b/lib.js
@@ -16184,11 +16184,22 @@ var require_methods12 = __commonJS({
);
return response;
}
+ async function deleteMessage(parameters) {
+ const openai = new OpenAI(this.clientParams);
+ const { thread_id, message_id, ...params } = parameters.payload;
+ const response = await openai.beta.threads.messages.del(
+ thread_id,
+ message_id,
+ params
+ );
+ return response;
+ }
module2.exports = {
listMessages,
createMessage,
getMessage,
- modifyMessage
+ modifyMessage,
+ deleteMessage
};
}
});
diff --git a/locales/en-US/node.json b/locales/en-US/node.json
index 5ac57fe..2f4b03b 100644
--- a/locales/en-US/node.json
+++ b/locales/en-US/node.json
@@ -130,6 +130,7 @@
"getMessage": "retrieve message",
"message_id": "message id",
"modifyMessage": "modify message",
+ "deleteMessage": "delete message",
"createUpload": "create upload",
"addUploadPart": "add upload part",
"completeUpload": "complete upload",
diff --git a/node.html b/node.html
index eafc085..c68f79e 100644
--- a/node.html
+++ b/node.html
@@ -260,24 +260,13 @@
data-i18n="OpenaiApi.parameters.createImageVariation"
>
-
-
-
-
-
-
+
+
+
+
+
+
+
msg.payload Properties
The ID of the message to retrieve.
+ ⋙ Delete Message
+ Delete a message.
+
+ msg.payload Properties
+
+
+ thread_id
+
+ string
+
+ The ID of the thread to which this message belongs.
+
+
+ message_id
+
+ string
+
+ The ID of the thread to which this message belongs.
+
+
⋙ Modify Message
Modifies a message.
@@ -2498,8 +2509,6 @@ msg.payload Properties
Set of 16 key-value pairs that can be attached to an object.
-
-
diff --git a/src/messages/help.html b/src/messages/help.html
index 8ec0005..ebf326e 100644
--- a/src/messages/help.html
+++ b/src/messages/help.html
@@ -141,6 +141,28 @@ msg.payload Properties
The ID of the message to retrieve.
+ ⋙ Delete Message
+ Delete a message.
+
+ msg.payload Properties
+
+
+ thread_id
+
+ string
+
+ The ID of the thread to which this message belongs.
+
+
+ message_id
+
+ string
+
+ The ID of the thread to which this message belongs.
+
+
⋙ Modify Message
Modifies a message.
@@ -168,7 +190,5 @@ msg.payload Properties
Set of 16 key-value pairs that can be attached to an object.
-
-
\ No newline at end of file
diff --git a/src/messages/methods.js b/src/messages/methods.js
index 1e7cc50..5eb463e 100644
--- a/src/messages/methods.js
+++ b/src/messages/methods.js
@@ -40,9 +40,22 @@ async function modifyMessage(parameters) {
return response;
}
+async function deleteMessage(parameters) {
+ const openai = new OpenAI(this.clientParams);
+ const { thread_id, message_id, ...params } = parameters.payload;
+ const response = await openai.beta.threads.messages.del(
+ thread_id,
+ message_id,
+ params
+ );
+
+ return response;
+}
+
module.exports = {
listMessages,
createMessage,
getMessage,
modifyMessage,
+ deleteMessage,
};
diff --git a/src/messages/template.html b/src/messages/template.html
index d42d5ab..7cad9cf 100644
--- a/src/messages/template.html
+++ b/src/messages/template.html
@@ -1,18 +1,7 @@
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
\ No newline at end of file
From 9cd1072daf5954399d9cf5f62066454663ac538b Mon Sep 17 00:00:00 2001
From: Allan Bunch <4503640+allanbunch@users.noreply.github.com>
Date: Wed, 28 May 2025 19:24:45 -0400
Subject: [PATCH 5/5] Updated README
---
README.md | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 3d245c0..ce8012a 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,11 @@ After installation, find your node in the **AI** palette category labeled "OpenA
- **Configurable and Flexible**: Adapt to a wide range of project requirements, making it easy to integrate AI into your IoT solutions.
- **Powerful Combinations**: Utilize Node-RED's diverse nodes to build complex, AI-driven IoT workflows with ease.
-## Release Notes (v1.103.0)
+## Release Notes (v1.103.0-patch.1)
+
+### Fixed Issues
+
+- Reaolves issue [#34](https://github.com/allanbunch/node-red-openai-api/issues/34)
### Ehancements
@@ -48,6 +52,7 @@ After installation, find your node in the **AI** palette category labeled "OpenA
### Notable Features & Changes
+- Added missing `delete` method to the `messages` API.
- Full Model Context Protocol (MCP) tool support for the `responses` API.
- Added support for the new `container` endpoint.
- Added support for the new `containerFiles` endpoint.