Skip to content

Commit b30db3c

Browse files
authored
enhance: use ArrayBuffer for dataset element contents (#100)
Signed-off-by: Grant Linville <[email protected]>
1 parent ea42fed commit b30db3c

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

src/gptscript.ts

+19-6
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ export class GPTScript {
415415
return JSON.parse(result) as Dataset
416416
}
417417

418-
async addDatasetElement(workspaceID: string, datasetID: string, elementName: string, elementDescription: string, elementContent: string): Promise<DatasetElementMeta> {
418+
async addDatasetElement(workspaceID: string, datasetID: string, elementName: string, elementDescription: string, elementContent: ArrayBuffer): Promise<DatasetElementMeta> {
419419
if (workspaceID == "") {
420420
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
421421
}
@@ -425,7 +425,7 @@ export class GPTScript {
425425
datasetID,
426426
elementName: elementName,
427427
elementDescription: elementDescription,
428-
elementContent: elementContent
428+
elementContent: Buffer.from(elementContent).toString("base64")
429429
}),
430430
workspaceID: workspaceID,
431431
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
@@ -439,8 +439,16 @@ export class GPTScript {
439439
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
440440
}
441441

442+
const serializableElements = elements.map(e => {
443+
return {
444+
name: e.name,
445+
description: e.description,
446+
contents: Buffer.from(e.contents).toString("base64")
447+
}
448+
})
449+
442450
return await this.runBasicCommand("datasets/add-elements", {
443-
input: JSON.stringify({datasetID, elements}),
451+
input: JSON.stringify({datasetID, elements: serializableElements}),
444452
workspaceID: workspaceID,
445453
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
446454
env: this.opts.Env,
@@ -452,7 +460,6 @@ export class GPTScript {
452460
workspaceID = process.env.GPTSCRIPT_WORKSPACE_ID ?? ""
453461
}
454462

455-
456463
const result = await this.runBasicCommand("datasets/list-elements", {
457464
input: JSON.stringify({datasetID}),
458465
workspaceID: workspaceID,
@@ -473,7 +480,13 @@ export class GPTScript {
473480
datasetToolRepo: this.opts.DatasetToolRepo ?? "",
474481
env: this.opts.Env
475482
})
476-
return JSON.parse(result) as DatasetElement
483+
484+
const element = JSON.parse(result)
485+
return {
486+
name: element.name,
487+
description: element.description,
488+
contents: Buffer.from(element.contents, "base64")
489+
}
477490
}
478491

479492
async createWorkspace(providerType: string, ...fromWorkspaces: string[]): Promise<string> {
@@ -1309,7 +1322,7 @@ export interface DatasetElementMeta {
13091322
export interface DatasetElement {
13101323
name: string
13111324
description: string
1312-
contents: string
1325+
contents: ArrayBuffer
13131326
}
13141327

13151328
export interface DatasetMeta {

tests/gptscript.test.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -911,7 +911,7 @@ describe("gptscript module", () => {
911911
datasetID,
912912
"element1",
913913
"",
914-
"this is element 1 contents"
914+
Buffer.from("this is element 1 contents")
915915
)
916916
expect(e1.name).toEqual("element1")
917917
expect(e1.description).toEqual("")
@@ -921,7 +921,7 @@ describe("gptscript module", () => {
921921
datasetID,
922922
"element2",
923923
"a description",
924-
"this is element 2 contents"
924+
Buffer.from("this is element 2 contents")
925925
)
926926
expect(e2.name).toEqual("element2")
927927
expect(e2.description).toEqual("a description")
@@ -938,12 +938,12 @@ describe("gptscript module", () => {
938938
{
939939
name: "element3",
940940
description: "a description",
941-
contents: "this is element 3 contents"
941+
contents: Buffer.from("this is element 3 contents")
942942
},
943943
{
944944
name: "element4",
945945
description: "a description",
946-
contents: "this is element 4 contents"
946+
contents: Buffer.from("this is element 4 contents")
947947
}
948948
]
949949
)
@@ -956,22 +956,22 @@ describe("gptscript module", () => {
956956
const e1 = await g.getDatasetElement(workspaceID, datasetID, "element1")
957957
expect(e1.name).toEqual("element1")
958958
expect(e1.description).toBeUndefined()
959-
expect(e1.contents).toEqual("this is element 1 contents")
959+
expect(e1.contents).toEqual(Buffer.from("this is element 1 contents"))
960960

961961
const e2 = await g.getDatasetElement(workspaceID, datasetID, "element2")
962962
expect(e2.name).toEqual("element2")
963963
expect(e2.description).toEqual("a description")
964-
expect(e2.contents).toEqual("this is element 2 contents")
964+
expect(e2.contents).toEqual(Buffer.from("this is element 2 contents"))
965965

966966
const e3 = await g.getDatasetElement(workspaceID, datasetID, "element3")
967967
expect(e3.name).toEqual("element3")
968968
expect(e3.description).toEqual("a description")
969-
expect(e3.contents).toEqual("this is element 3 contents")
969+
expect(e3.contents).toEqual(Buffer.from("this is element 3 contents"))
970970

971971
const e4 = await g.getDatasetElement(workspaceID, datasetID, "element4")
972972
expect(e4.name).toEqual("element4")
973973
expect(e4.description).toEqual("a description")
974-
expect(e4.contents).toEqual("this is element 4 contents")
974+
expect(e4.contents).toEqual(Buffer.from("this is element 4 contents"))
975975
} catch (e) {
976976
throw new Error("failed to get elements: " + e)
977977
}

0 commit comments

Comments
 (0)