@@ -12,6 +12,7 @@ export interface GlobalOpts {
1212 BaseURL ?: string
1313 DefaultModel ?: string
1414 DefaultModelProvider ?: string
15+ DatasetToolRepo ?: string
1516 Env ?: string [ ]
1617}
1718
@@ -390,6 +391,84 @@ export class GPTScript {
390391 await r . text ( )
391392 }
392393
394+ // Dataset methods
395+
396+ async listDatasets ( workspace : string ) : Promise < Array < DatasetMeta > > {
397+ if ( workspace == "" ) {
398+ workspace = process . env . GPTSCRIPT_WORKSPACE_DIR ?? ""
399+ }
400+
401+ const r : Run = new RunSubcommand ( "datasets" , "" , { URL : this . opts . URL , Token : this . opts . Token } )
402+ r . request ( { input : "{}" , workspace : workspace , datasetToolRepo : this . opts . DatasetToolRepo ?? "" } )
403+ const result = await r . text ( )
404+ return JSON . parse ( result ) as Array < DatasetMeta >
405+ }
406+
407+ async createDataset ( workspace : string , name : string , description : string ) : Promise < Dataset > {
408+ if ( workspace == "" ) {
409+ workspace = process . env . GPTSCRIPT_WORKSPACE_DIR ?? ""
410+ }
411+
412+ const r : Run = new RunSubcommand ( "datasets/create" , "" , { URL : this . opts . URL , Token : this . opts . Token } )
413+ r . request ( {
414+ input : JSON . stringify ( { datasetName : name , datasetDescription : description } ) ,
415+ workspace : workspace ,
416+ datasetToolRepo : this . opts . DatasetToolRepo ?? ""
417+ } )
418+ const result = await r . text ( )
419+ return JSON . parse ( result ) as Dataset
420+ }
421+
422+ async addDatasetElement ( workspace : string , datasetID : string , elementName : string , elementDescription : string , elementContent : string ) : Promise < DatasetElementMeta > {
423+ if ( workspace == "" ) {
424+ workspace = process . env . GPTSCRIPT_WORKSPACE_DIR ?? ""
425+ }
426+
427+ const r : Run = new RunSubcommand ( "datasets/add-element" , "" , { URL : this . opts . URL , Token : this . opts . Token } )
428+ r . request ( {
429+ input : JSON . stringify ( {
430+ datasetID,
431+ elementName,
432+ elementDescription,
433+ elementContent
434+ } ) ,
435+ workspace : workspace ,
436+ datasetToolRepo : this . opts . DatasetToolRepo ?? ""
437+ } )
438+ const result = await r . text ( )
439+ return JSON . parse ( result ) as DatasetElementMeta
440+ }
441+
442+ async listDatasetElements ( workspace : string , datasetID : string ) : Promise < Array < DatasetElementMeta > > {
443+ if ( workspace == "" ) {
444+ workspace = process . env . GPTSCRIPT_WORKSPACE_DIR ?? ""
445+ }
446+
447+ const r : Run = new RunSubcommand ( "datasets/list-elements" , "" , { URL : this . opts . URL , Token : this . opts . Token } )
448+ r . request ( {
449+ input : JSON . stringify ( { datasetID} ) ,
450+ workspace : workspace ,
451+ datasetToolRepo : this . opts . DatasetToolRepo ?? ""
452+ } )
453+ const result = await r . text ( )
454+ return JSON . parse ( result ) as Array < DatasetElementMeta >
455+ }
456+
457+ async getDatasetElement ( workspace : string , datasetID : string , elementName : string ) : Promise < DatasetElement > {
458+ if ( workspace == "" ) {
459+ workspace = process . env . GPTSCRIPT_WORKSPACE_DIR ?? ""
460+ }
461+
462+ const r : Run = new RunSubcommand ( "datasets/get-element" , "" , { URL : this . opts . URL , Token : this . opts . Token } )
463+ r . request ( {
464+ input : JSON . stringify ( { datasetID, element : elementName } ) ,
465+ workspace : workspace ,
466+ datasetToolRepo : this . opts . DatasetToolRepo ?? ""
467+ } )
468+ const result = await r . text ( )
469+ return JSON . parse ( result ) as DatasetElement
470+ }
471+
393472 /**
394473 * Helper method to handle the common logic for loading.
395474 *
@@ -1103,3 +1182,29 @@ function jsonToCredential(cred: string): Credential {
11031182 refreshToken : c . refreshToken
11041183 }
11051184}
1185+
1186+ // Dataset types
1187+
1188+ export interface DatasetElementMeta {
1189+ name : string
1190+ description : string
1191+ }
1192+
1193+ export interface DatasetElement {
1194+ name : string
1195+ description : string
1196+ contents : string
1197+ }
1198+
1199+ export interface DatasetMeta {
1200+ id : string
1201+ name : string
1202+ description : string
1203+ }
1204+
1205+ export interface Dataset {
1206+ id : string
1207+ name : string
1208+ description : string
1209+ elements : Record < string , DatasetElementMeta >
1210+ }
0 commit comments