Skip to content

Commit d59db24

Browse files
committed
chore: update datasets API and use runBasicCommand
Signed-off-by: Donnie Adams <[email protected]>
1 parent 6bde16a commit d59db24

File tree

2 files changed

+63
-65
lines changed

2 files changed

+63
-65
lines changed

src/gptscript.ts

+40-41
Original file line numberDiff line numberDiff line change
@@ -388,79 +388,78 @@ export class GPTScript {
388388

389389
// Dataset methods
390390

391-
async listDatasets(workspace: string): Promise<Array<DatasetMeta>> {
392-
if (workspace == "") {
393-
workspace = process.env.GPTSCRIPT_WORKSPACE_DIR ?? ""
391+
async listDatasets(workspaceID: string): Promise<Array<DatasetMeta>> {
392+
if (workspaceID == "") {
393+
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
394394
}
395395

396-
const r: Run = new RunSubcommand("datasets", "", {URL: this.opts.URL, Token: this.opts.Token})
397-
r.request({input: "{}", workspace: workspace, datasetToolRepo: this.opts.DatasetToolRepo ?? ""})
398-
const result = await r.text()
396+
const result = await this.runBasicCommand("datasets", {
397+
workspaceID: workspaceID,
398+
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
399+
env: this.opts.Env
400+
})
399401
return JSON.parse(result) as Array<DatasetMeta>
400402
}
401403

402-
async createDataset(workspace: string, name: string, description: string): Promise<Dataset> {
403-
if (workspace == "") {
404-
workspace = process.env.GPTSCRIPT_WORKSPACE_DIR ?? ""
404+
async createDataset(workspaceID: string, name: string, description: string): Promise<Dataset> {
405+
if (workspaceID == "") {
406+
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
405407
}
406408

407-
const r: Run = new RunSubcommand("datasets/create", "", {URL: this.opts.URL, Token: this.opts.Token})
408-
r.request({
409+
const result = await this.runBasicCommand("datasets/create", {
409410
input: JSON.stringify({datasetName: name, datasetDescription: description}),
410-
workspace: workspace,
411-
datasetToolRepo: this.opts.DatasetToolRepo ?? ""
411+
workspaceID: workspaceID,
412+
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
413+
env: this.opts.Env
412414
})
413-
const result = await r.text()
414415
return JSON.parse(result) as Dataset
415416
}
416417

417-
async addDatasetElement(workspace: string, datasetID: string, elementName: string, elementDescription: string, elementContent: string): Promise<DatasetElementMeta> {
418-
if (workspace == "") {
419-
workspace = process.env.GPTSCRIPT_WORKSPACE_DIR ?? ""
418+
async addDatasetElement(workspaceID: string, datasetID: string, elementName: string, elementDescription: string, elementContent: string): Promise<DatasetElementMeta> {
419+
if (workspaceID == "") {
420+
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
420421
}
421422

422-
const r: Run = new RunSubcommand("datasets/add-element", "", {URL: this.opts.URL, Token: this.opts.Token})
423-
r.request({
423+
const result = await this.runBasicCommand("datasets/add-element", {
424424
input: JSON.stringify({
425425
datasetID,
426-
elementName,
427-
elementDescription,
428-
elementContent
426+
elementName: elementName,
427+
elementDescription: elementDescription,
428+
elementContent: elementContent
429429
}),
430-
workspace: workspace,
431-
datasetToolRepo: this.opts.DatasetToolRepo ?? ""
430+
workspaceID: workspaceID,
431+
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
432+
env: this.opts.Env
432433
})
433-
const result = await r.text()
434434
return JSON.parse(result) as DatasetElementMeta
435435
}
436436

437-
async listDatasetElements(workspace: string, datasetID: string): Promise<Array<DatasetElementMeta>> {
438-
if (workspace == "") {
439-
workspace = process.env.GPTSCRIPT_WORKSPACE_DIR ?? ""
437+
async listDatasetElements(workspaceID: string, datasetID: string): Promise<Array<DatasetElementMeta>> {
438+
if (workspaceID == "") {
439+
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
440440
}
441441

442-
const r: Run = new RunSubcommand("datasets/list-elements", "", {URL: this.opts.URL, Token: this.opts.Token})
443-
r.request({
442+
443+
const result = await this.runBasicCommand("datasets/list-elements", {
444444
input: JSON.stringify({datasetID}),
445-
workspace: workspace,
446-
datasetToolRepo: this.opts.DatasetToolRepo ?? ""
445+
workspaceID: workspaceID,
446+
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
447+
env: this.opts.Env
447448
})
448-
const result = await r.text()
449449
return JSON.parse(result) as Array<DatasetElementMeta>
450450
}
451451

452-
async getDatasetElement(workspace: string, datasetID: string, elementName: string): Promise<DatasetElement> {
453-
if (workspace == "") {
454-
workspace = process.env.GPTSCRIPT_WORKSPACE_DIR ?? ""
452+
async getDatasetElement(workspaceID: string, datasetID: string, elementName: string): Promise<DatasetElement> {
453+
if (workspaceID == "") {
454+
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
455455
}
456456

457-
const r: Run = new RunSubcommand("datasets/get-element", "", {URL: this.opts.URL, Token: this.opts.Token})
458-
r.request({
457+
const result = await this.runBasicCommand("datasets/get-element", {
459458
input: JSON.stringify({datasetID, element: elementName}),
460-
workspace: workspace,
461-
datasetToolRepo: this.opts.DatasetToolRepo ?? ""
459+
workspaceID: workspaceID,
460+
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
461+
env: this.opts.Env
462462
})
463-
const result = await r.text()
464463
return JSON.parse(result) as DatasetElement
465464
}
466465

tests/gptscript.test.ts

+23-24
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import path from "path"
1313
import {fileURLToPath} from "url"
1414
import * as fs from "node:fs"
1515
import {randomBytes} from "node:crypto"
16-
import {tmpdir} from "node:os"
1716

1817
let gFirst: gptscript.GPTScript
1918
let g: gptscript.GPTScript
@@ -889,12 +888,12 @@ describe("gptscript module", () => {
889888

890889
test("dataset operations", async () => {
891890
const datasetName = "test-" + randomBytes(10).toString("hex")
892-
const workspace = fs.mkdtempSync(path.join(tmpdir(), "node-gptscript-"))
891+
const workspaceID = await g.createWorkspace("directory")
893892
let datasetID: string
894893

895894
// Create
896895
try {
897-
const dataset = await g.createDataset(workspace, datasetName, "a test dataset")
896+
const dataset = await g.createDataset(workspaceID, datasetName, "a test dataset")
898897
expect(dataset).toBeDefined()
899898
expect(dataset.name).toEqual(datasetName)
900899
expect(dataset.description).toEqual("a test dataset")
@@ -908,7 +907,7 @@ describe("gptscript module", () => {
908907
// Add elements
909908
try {
910909
const e1 = await g.addDatasetElement(
911-
workspace,
910+
workspaceID,
912911
datasetID,
913912
"element1",
914913
"",
@@ -918,7 +917,7 @@ describe("gptscript module", () => {
918917
expect(e1.description).toEqual("")
919918

920919
const e2 = await g.addDatasetElement(
921-
workspace,
920+
workspaceID,
922921
datasetID,
923922
"element2",
924923
"a description",
@@ -932,12 +931,12 @@ describe("gptscript module", () => {
932931

933932
// Get elements
934933
try {
935-
const e1 = await g.getDatasetElement(workspace, datasetID, "element1")
934+
const e1 = await g.getDatasetElement(workspaceID, datasetID, "element1")
936935
expect(e1.name).toEqual("element1")
937936
expect(e1.description).toBeUndefined()
938937
expect(e1.contents).toEqual("this is element 1 contents")
939938

940-
const e2 = await g.getDatasetElement(workspace, datasetID, "element2")
939+
const e2 = await g.getDatasetElement(workspaceID, datasetID, "element2")
941940
expect(e2.name).toEqual("element2")
942941
expect(e2.description).toEqual("a description")
943942
expect(e2.contents).toEqual("this is element 2 contents")
@@ -947,7 +946,7 @@ describe("gptscript module", () => {
947946

948947
// List the elements in the dataset
949948
try {
950-
const elements = await g.listDatasetElements(workspace, datasetID)
949+
const elements = await g.listDatasetElements(workspaceID, datasetID)
951950
expect(elements.length).toEqual(2)
952951
expect(elements.map(e => e.name)).toContain("element1")
953952
expect(elements.map(e => e.name)).toContain("element2")
@@ -957,7 +956,7 @@ describe("gptscript module", () => {
957956

958957
// List datasets
959958
try {
960-
const datasets = await g.listDatasets(workspace)
959+
const datasets = await g.listDatasets(workspaceID)
961960
expect(datasets.length).toBeGreaterThan(0)
962961
expect(datasets.map(d => d.name)).toContain(datasetName)
963962
} catch (e) {
@@ -966,22 +965,12 @@ describe("gptscript module", () => {
966965
}, 20000)
967966

968967
test("create and delete workspace", async () => {
969-
if (!process.env.AWS_ACCESS_KEY_ID || !process.env.AWS_SECRET_ACCESS_KEY) {
970-
console.log("AWS credentials not set, skipping test")
971-
return
972-
}
973-
974968
const workspaceID = await g.createWorkspace("directory")
975969
expect(workspaceID).toBeDefined()
976970
await g.deleteWorkspace(workspaceID)
977971
})
978972

979973
test("write, read, and delete file", async () => {
980-
if (!process.env.AWS_ACCESS_KEY_ID || !process.env.AWS_SECRET_ACCESS_KEY) {
981-
console.log("AWS credentials not set, skipping test")
982-
return
983-
}
984-
985974
const workspaceID = await g.createWorkspace("directory")
986975
expect(workspaceID).toBeDefined()
987976

@@ -992,11 +981,6 @@ describe("gptscript module", () => {
992981
})
993982

994983
test("test complex ls", async () => {
995-
if (!process.env.AWS_ACCESS_KEY_ID || !process.env.AWS_SECRET_ACCESS_KEY) {
996-
console.log("AWS credentials not set, skipping test")
997-
return
998-
}
999-
1000984
const workspaceID = await g.createWorkspace("directory")
1001985

1002986
// Write files in the workspace
@@ -1028,12 +1012,22 @@ describe("gptscript module", () => {
10281012
})
10291013

10301014
test("create and delete workspace in s3", async () => {
1015+
if (!process.env.AWS_ACCESS_KEY_ID || !process.env.AWS_SECRET_ACCESS_KEY) {
1016+
console.log("AWS credentials not set, skipping test")
1017+
return
1018+
}
1019+
10311020
const workspaceID = await g.createWorkspace("s3")
10321021
expect(workspaceID).toBeDefined()
10331022
await g.deleteWorkspace(workspaceID)
10341023
})
10351024

10361025
test("write, read, and delete file in s3", async () => {
1026+
if (!process.env.AWS_ACCESS_KEY_ID || !process.env.AWS_SECRET_ACCESS_KEY) {
1027+
console.log("AWS credentials not set, skipping test")
1028+
return
1029+
}
1030+
10371031
const workspaceID = await g.createWorkspace("s3")
10381032
expect(workspaceID).toBeDefined()
10391033

@@ -1044,6 +1038,11 @@ describe("gptscript module", () => {
10441038
})
10451039

10461040
test("test complex ls in s3", async () => {
1041+
if (!process.env.AWS_ACCESS_KEY_ID || !process.env.AWS_SECRET_ACCESS_KEY) {
1042+
console.log("AWS credentials not set, skipping test")
1043+
return
1044+
}
1045+
10471046
const workspaceID = await g.createWorkspace("s3")
10481047

10491048
// Write files in the workspace

0 commit comments

Comments
 (0)