Skip to content

Commit c0fc41a

Browse files
committed
chore: update for dataset rewrite
Signed-off-by: Grant Linville <[email protected]>
1 parent 56135fa commit c0fc41a

File tree

2 files changed

+58
-153
lines changed

2 files changed

+58
-153
lines changed

src/gptscript.ts

+27-86
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export interface GlobalOpts {
1212
BaseURL?: string
1313
DefaultModel?: string
1414
DefaultModelProvider?: string
15-
DatasetToolRepo?: string
15+
DatasetTool?: string
1616
WorkspaceTool?: string
1717
Env?: string[]
1818
}
@@ -386,106 +386,61 @@ export class GPTScript {
386386
})
387387
}
388388

389-
// Dataset methods
390-
391-
async listDatasets(workspaceID: string): Promise<Array<DatasetMeta>> {
392-
if (workspaceID == "") {
393-
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
394-
}
395-
389+
// returns an array of dataset IDs
390+
async listDatasets(): Promise<Array<string>> {
396391
const result = await this.runBasicCommand("datasets", {
397-
workspaceID: workspaceID,
398-
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
399-
env: this.opts.Env
400-
})
401-
return JSON.parse(result) as Array<DatasetMeta>
402-
}
403-
404-
async createDataset(workspaceID: string, name: string, description: string): Promise<Dataset> {
405-
if (workspaceID == "") {
406-
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
407-
}
408-
409-
const result = await this.runBasicCommand("datasets/create", {
410-
input: JSON.stringify({datasetName: name, datasetDescription: description}),
411-
workspaceID: workspaceID,
412-
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
392+
input: JSON.stringify({"workspaceID": process.env.GPTSCRIPT_WORKSPACE_ID}),
393+
datasetTool: this.opts.DatasetTool ?? "",
413394
env: this.opts.Env
414395
})
415-
return JSON.parse(result) as Dataset
396+
return JSON.parse(result) as Array<string>
416397
}
417398

418-
async addDatasetElement(workspaceID: string, datasetID: string, elementName: string, elementDescription: string, elementContent: ArrayBuffer): Promise<DatasetElementMeta> {
419-
if (workspaceID == "") {
420-
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
421-
}
422-
423-
const result = await this.runBasicCommand("datasets/add-element", {
424-
input: JSON.stringify({
425-
datasetID,
426-
elementName: elementName,
427-
elementDescription: elementDescription,
428-
elementContent: Buffer.from(elementContent).toString("base64")
429-
}),
430-
workspaceID: workspaceID,
431-
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
432-
env: this.opts.Env
433-
})
434-
return JSON.parse(result) as DatasetElementMeta
435-
}
436-
437-
async addDatasetElements(workspaceID: string, datasetID: string, elements: Array<DatasetElement>) {
438-
if (workspaceID === "") {
439-
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
440-
}
441-
399+
async addDatasetElements(elements: Array<DatasetElement>, datasetID?: string) {
442400
const serializableElements = elements.map(e => {
443401
return {
444402
name: e.name,
445403
description: e.description,
446-
contents: Buffer.from(e.contents).toString("base64")
404+
contents: e.contents,
405+
binaryContents: Buffer.from(e.binaryContents ?? Buffer.from("")).toString("base64")
447406
}
448407
})
449408

450409
return await this.runBasicCommand("datasets/add-elements", {
451-
input: JSON.stringify({datasetID, elements: serializableElements}),
452-
workspaceID: workspaceID,
453-
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
410+
input: JSON.stringify({
411+
workspaceID: process.env.GPTSCRIPT_WORKSPACE_ID,
412+
datasetID: datasetID ?? "",
413+
elements: serializableElements
414+
}),
415+
datasetTool: this.opts.DatasetTool ?? "",
454416
env: this.opts.Env,
455417
})
456418
}
457419

458-
async listDatasetElements(workspaceID: string, datasetID: string): Promise<Array<DatasetElementMeta>> {
459-
if (workspaceID == "") {
460-
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
461-
}
462-
420+
async listDatasetElements(datasetID: string): Promise<Array<DatasetElementMeta>> {
463421
const result = await this.runBasicCommand("datasets/list-elements", {
464-
input: JSON.stringify({datasetID}),
465-
workspaceID: workspaceID,
466-
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
422+
input: JSON.stringify({workspaceID: process.env.GPTSCRIPT_WORKSPACE_ID, datasetID}),
423+
datasetTool: this.opts.DatasetTool ?? "",
467424
env: this.opts.Env
468425
})
469426
return JSON.parse(result) as Array<DatasetElementMeta>
470427
}
471428

472-
async getDatasetElement(workspaceID: string, datasetID: string, elementName: string): Promise<DatasetElement> {
473-
if (workspaceID == "") {
474-
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
475-
}
476-
429+
async getDatasetElement(datasetID: string, elementName: string): Promise<DatasetElement> {
477430
const result = await this.runBasicCommand("datasets/get-element", {
478-
input: JSON.stringify({datasetID, element: elementName}),
479-
workspaceID: workspaceID,
480-
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
431+
input: JSON.stringify({workspaceID: process.env.GPTSCRIPT_WORKSPACE_ID, datasetID, name: elementName}),
432+
datasetTool: this.opts.DatasetTool ?? "",
481433
env: this.opts.Env
482434
})
483435

436+
console.log(result)
437+
484438
const element = JSON.parse(result)
485439
return {
486440
name: element.name,
487441
description: element.description,
488-
contents: Buffer.from(element.contents, "base64")
442+
contents: element.contents,
443+
binaryContents: Buffer.from(element.binaryContents, "base64")
489444
}
490445
}
491446

@@ -1312,8 +1267,6 @@ function jsonToCredential(cred: string): Credential {
13121267
}
13131268
}
13141269

1315-
// Dataset types
1316-
13171270
export interface DatasetElementMeta {
13181271
name: string
13191272
description: string
@@ -1322,18 +1275,6 @@ export interface DatasetElementMeta {
13221275
export interface DatasetElement {
13231276
name: string
13241277
description: string
1325-
contents: ArrayBuffer
1326-
}
1327-
1328-
export interface DatasetMeta {
1329-
id: string
1330-
name: string
1331-
description: string
1332-
}
1333-
1334-
export interface Dataset {
1335-
id: string
1336-
name: string
1337-
description: string
1338-
elements: Record<string, DatasetElementMeta>
1278+
contents?: string
1279+
binaryContents?: ArrayBuffer
13391280
}

tests/gptscript.test.ts

+31-67
Original file line numberDiff line numberDiff line change
@@ -887,112 +887,76 @@ describe("gptscript module", () => {
887887
}, 20000)
888888

889889
test("dataset operations", async () => {
890-
const datasetName = "test-" + randomBytes(10).toString("hex")
891-
const workspaceID = await g.createWorkspace("directory")
890+
process.env.GPTSCRIPT_WORKSPACE_ID = await g.createWorkspace("directory")
892891
let datasetID: string
893892

894-
// Create
893+
// Create and add two elements
895894
try {
896-
const dataset = await g.createDataset(workspaceID, datasetName, "a test dataset")
897-
expect(dataset).toBeDefined()
898-
expect(dataset.name).toEqual(datasetName)
899-
expect(dataset.description).toEqual("a test dataset")
900-
expect(dataset.id.length).toBeGreaterThan(0)
901-
expect(dataset.elements).toEqual({})
902-
datasetID = dataset.id
895+
datasetID = await g.addDatasetElements([
896+
{
897+
name: "element1",
898+
description: "",
899+
contents: "this is element 1 contents"
900+
},
901+
{
902+
name: "element2",
903+
description: "a description",
904+
binaryContents: Buffer.from("this is element 2 contents")
905+
}
906+
])
903907
} catch (e) {
904908
throw new Error("failed to create dataset: " + e)
905909
}
906910

907-
// Add elements
908-
try {
909-
const e1 = await g.addDatasetElement(
910-
workspaceID,
911-
datasetID,
912-
"element1",
913-
"",
914-
Buffer.from("this is element 1 contents")
915-
)
916-
expect(e1.name).toEqual("element1")
917-
expect(e1.description).toEqual("")
918-
919-
const e2 = await g.addDatasetElement(
920-
workspaceID,
921-
datasetID,
922-
"element2",
923-
"a description",
924-
Buffer.from("this is element 2 contents")
925-
)
926-
expect(e2.name).toEqual("element2")
927-
expect(e2.description).toEqual("a description")
928-
} catch (e) {
929-
throw new Error("failed to add elements: " + e)
930-
}
931-
932-
// Add two elements at once.
911+
// Add another element
933912
try {
934-
await g.addDatasetElements(
935-
workspaceID,
936-
datasetID,
937-
[
938-
{
939-
name: "element3",
940-
description: "a description",
941-
contents: Buffer.from("this is element 3 contents")
942-
},
913+
await g.addDatasetElements([
943914
{
944-
name: "element4",
945-
description: "a description",
946-
contents: Buffer.from("this is element 4 contents")
915+
name: "element3",
916+
description: "a description",
917+
contents: "this is element 3 contents"
947918
}
948-
]
949-
)
919+
], datasetID)
950920
} catch (e) {
951921
throw new Error("failed to add elements: " + e)
952922
}
953923

954924
// Get elements
955925
try {
956-
const e1 = await g.getDatasetElement(workspaceID, datasetID, "element1")
926+
const e1 = await g.getDatasetElement(datasetID, "element1")
957927
expect(e1.name).toEqual("element1")
958-
expect(e1.description).toBeUndefined()
959-
expect(e1.contents).toEqual(Buffer.from("this is element 1 contents"))
928+
expect(e1.description).toEqual("")
929+
expect(e1.contents).toEqual("this is element 1 contents")
960930

961-
const e2 = await g.getDatasetElement(workspaceID, datasetID, "element2")
931+
const e2 = await g.getDatasetElement(datasetID, "element2")
962932
expect(e2.name).toEqual("element2")
963933
expect(e2.description).toEqual("a description")
964-
expect(e2.contents).toEqual(Buffer.from("this is element 2 contents"))
934+
expect(e2.binaryContents).toEqual(Buffer.from("this is element 2 contents"))
965935

966-
const e3 = await g.getDatasetElement(workspaceID, datasetID, "element3")
936+
const e3 = await g.getDatasetElement(datasetID, "element3")
967937
expect(e3.name).toEqual("element3")
968938
expect(e3.description).toEqual("a description")
969-
expect(e3.contents).toEqual(Buffer.from("this is element 3 contents"))
970-
971-
const e4 = await g.getDatasetElement(workspaceID, datasetID, "element4")
972-
expect(e4.name).toEqual("element4")
973-
expect(e4.description).toEqual("a description")
974-
expect(e4.contents).toEqual(Buffer.from("this is element 4 contents"))
939+
expect(e3.contents).toEqual("this is element 3 contents")
975940
} catch (e) {
976941
throw new Error("failed to get elements: " + e)
977942
}
978943

979944
// List the elements in the dataset
980945
try {
981-
const elements = await g.listDatasetElements(workspaceID, datasetID)
982-
expect(elements.length).toEqual(4)
946+
const elements = await g.listDatasetElements(datasetID)
947+
expect(elements.length).toEqual(3)
983948
expect(elements.map(e => e.name)).toContain("element1")
984949
expect(elements.map(e => e.name)).toContain("element2")
985950
expect(elements.map(e => e.name)).toContain("element3")
986-
expect(elements.map(e => e.name)).toContain("element4")
987951
} catch (e) {
988952
throw new Error("failed to list elements: " + e)
989953
}
990954

991955
// List datasets
992956
try {
993-
const datasets = await g.listDatasets(workspaceID)
957+
const datasets = await g.listDatasets()
994958
expect(datasets.length).toBeGreaterThan(0)
995-
expect(datasets.map(d => d.name)).toContain(datasetName)
959+
expect(datasets).toContain(datasetID)
996960
} catch (e) {
997961
throw new Error("failed to list datasets: " + e)
998962
}

0 commit comments

Comments
 (0)