From edb854ec5f281ecd23717b39f1f68f37bd61fde8 Mon Sep 17 00:00:00 2001 From: Peter Burns Date: Tue, 12 Nov 2024 15:07:33 -0800 Subject: [PATCH 1/2] Allow Schema types to be written as inline string literals. Declaring SchemaType as an enum means that users must reference the schema type off the enum, like SchemaType.OBJECT. That's useful, but it's also nice to be able to just write 'object', and with TypeScript that's equally type safe, IDEs are equally helpful with autocomplete, etc! This is a backwards compatible change that allows users to write it either way. --- .changeset/lemon-kiwis-knock.md | 5 +++++ common/api-review/generative-ai-server.api.md | 19 +++++++++++-------- common/api-review/generative-ai.api.md | 19 +++++++++++-------- types/function-calling.ts | 19 +++++++++++-------- 4 files changed, 38 insertions(+), 24 deletions(-) create mode 100644 .changeset/lemon-kiwis-knock.md diff --git a/.changeset/lemon-kiwis-knock.md b/.changeset/lemon-kiwis-knock.md new file mode 100644 index 0000000..a269d7a --- /dev/null +++ b/.changeset/lemon-kiwis-knock.md @@ -0,0 +1,5 @@ +--- +"@google/generative-ai": patch +--- + +Schema types can be written as either references to the enum, or as inline string literals, the type checker will now accept either. diff --git a/common/api-review/generative-ai-server.api.md b/common/api-review/generative-ai-server.api.md index 6b335e3..a7b007a 100644 --- a/common/api-review/generative-ai-server.api.md +++ b/common/api-review/generative-ai-server.api.md @@ -482,14 +482,17 @@ export interface RpcStatus { export type Schema = StringSchema | NumberSchema | IntegerSchema | BooleanSchema | ArraySchema | ObjectSchema; // @public -export enum SchemaType { - ARRAY = "array", - BOOLEAN = "boolean", - INTEGER = "integer", - NUMBER = "number", - OBJECT = "object", - STRING = "string" -} +export const SchemaType: { + readonly STRING: "string"; + readonly NUMBER: "number"; + readonly INTEGER: "integer"; + readonly BOOLEAN: "boolean"; + readonly ARRAY: "array"; + readonly OBJECT: "object"; +}; + +// @public (undocumented) +export type SchemaType = typeof SchemaType extends Record ? R : never; // @public export interface SingleRequestOptions extends RequestOptions { diff --git a/common/api-review/generative-ai.api.md b/common/api-review/generative-ai.api.md index 8ab197b..378b790 100644 --- a/common/api-review/generative-ai.api.md +++ b/common/api-review/generative-ai.api.md @@ -789,14 +789,17 @@ export interface SafetySetting { export type Schema = StringSchema | NumberSchema | IntegerSchema | BooleanSchema | ArraySchema | ObjectSchema; // @public -export enum SchemaType { - ARRAY = "array", - BOOLEAN = "boolean", - INTEGER = "integer", - NUMBER = "number", - OBJECT = "object", - STRING = "string" -} +export const SchemaType: { + readonly STRING: "string"; + readonly NUMBER: "number"; + readonly INTEGER: "integer"; + readonly BOOLEAN: "boolean"; + readonly ARRAY: "array"; + readonly OBJECT: "object"; +}; + +// @public (undocumented) +export type SchemaType = typeof SchemaType extends Record ? R : never; // @public export interface SearchEntryPoint { diff --git a/types/function-calling.ts b/types/function-calling.ts index 55fae6d..c19d519 100644 --- a/types/function-calling.ts +++ b/types/function-calling.ts @@ -84,20 +84,23 @@ export declare interface FunctionDeclarationsTool { * as defined by https://swagger.io/docs/specification/data-models/data-types/ * @public */ -export enum SchemaType { +export const SchemaType = { /** String type. */ - STRING = "string", + STRING: "string", /** Number type. */ - NUMBER = "number", + NUMBER: "number", /** Integer type. */ - INTEGER = "integer", + INTEGER: "integer", /** Boolean type. */ - BOOLEAN = "boolean", + BOOLEAN: "boolean", /** Array type. */ - ARRAY = "array", + ARRAY: "array", /** Object type. */ - OBJECT = "object", -} + OBJECT: "object", +} as const; +export type SchemaType = typeof SchemaType extends Record + ? R + : never; /** * Schema is used to define the format of input/output data. From 33f7e004c32957d37385faa5c29af6a6e25c6163 Mon Sep 17 00:00:00 2001 From: Peter Burns Date: Thu, 14 Nov 2024 09:21:45 -0800 Subject: [PATCH 2/2] Update docs --- .../main/generative-ai.arrayschema.md | 2 +- .../main/generative-ai.booleanschema.md | 2 +- .../main/generative-ai.integerschema.md | 2 +- docs/reference/main/generative-ai.md | 3 ++- .../main/generative-ai.numberschema.md | 2 +- .../main/generative-ai.objectschema.md | 2 +- .../main/generative-ai.schematype.md | 23 ++++++++----------- .../main/generative-ai.stringschema.md | 2 +- .../server/generative-ai.arrayschema.md | 2 +- .../server/generative-ai.booleanschema.md | 2 +- .../server/generative-ai.integerschema.md | 2 +- docs/reference/server/generative-ai.md | 8 ++++++- .../server/generative-ai.numberschema.md | 2 +- .../server/generative-ai.objectschema.md | 2 +- .../server/generative-ai.schematype.md | 23 ++++++++----------- .../server/generative-ai.stringschema.md | 2 +- 16 files changed, 39 insertions(+), 42 deletions(-) diff --git a/docs/reference/main/generative-ai.arrayschema.md b/docs/reference/main/generative-ai.arrayschema.md index 56438ad..0454dd8 100644 --- a/docs/reference/main/generative-ai.arrayschema.md +++ b/docs/reference/main/generative-ai.arrayschema.md @@ -20,5 +20,5 @@ export interface ArraySchema extends BaseSchema | [items](./generative-ai.arrayschema.items.md) | | [Schema](./generative-ai.schema.md) | A schema describing the entries in the array. | | [maxItems?](./generative-ai.arrayschema.maxitems.md) | | number | _(Optional)_ The maximum number of items in the array. | | [minItems?](./generative-ai.arrayschema.minitems.md) | | number | _(Optional)_ The minimum number of items in the array. | -| [type](./generative-ai.arrayschema.type.md) | | typeof [SchemaType.ARRAY](./generative-ai.schematype.md) | | +| [type](./generative-ai.arrayschema.type.md) | | typeof SchemaType.ARRAY | | diff --git a/docs/reference/main/generative-ai.booleanschema.md b/docs/reference/main/generative-ai.booleanschema.md index a6035e7..a442b6c 100644 --- a/docs/reference/main/generative-ai.booleanschema.md +++ b/docs/reference/main/generative-ai.booleanschema.md @@ -17,5 +17,5 @@ export interface BooleanSchema extends BaseSchema | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [type](./generative-ai.booleanschema.type.md) | | typeof [SchemaType.BOOLEAN](./generative-ai.schematype.md) | | +| [type](./generative-ai.booleanschema.type.md) | | typeof SchemaType.BOOLEAN | | diff --git a/docs/reference/main/generative-ai.integerschema.md b/docs/reference/main/generative-ai.integerschema.md index c7e1dca..0d1a2b7 100644 --- a/docs/reference/main/generative-ai.integerschema.md +++ b/docs/reference/main/generative-ai.integerschema.md @@ -18,5 +18,5 @@ export interface IntegerSchema extends BaseSchema | Property | Modifiers | Type | Description | | --- | --- | --- | --- | | [format?](./generative-ai.integerschema.format.md) | | "int32" \| "int64" | _(Optional)_ Optional. The format of the number. | -| [type](./generative-ai.integerschema.type.md) | | typeof [SchemaType.INTEGER](./generative-ai.schematype.md) | | +| [type](./generative-ai.integerschema.type.md) | | typeof SchemaType.INTEGER | | diff --git a/docs/reference/main/generative-ai.md b/docs/reference/main/generative-ai.md index be04a51..67b1cef 100644 --- a/docs/reference/main/generative-ai.md +++ b/docs/reference/main/generative-ai.md @@ -29,7 +29,6 @@ | [HarmCategory](./generative-ai.harmcategory.md) | Harm categories that would cause prompts or candidates to be blocked. | | [HarmProbability](./generative-ai.harmprobability.md) | Probability that a prompt or candidate matches a harm category. | | [Outcome](./generative-ai.outcome.md) | Possible outcomes of code execution. | -| [SchemaType](./generative-ai.schematype.md) | Contains the list of OpenAPI data types as defined by https://swagger.io/docs/specification/data-models/data-types/ | | [TaskType](./generative-ai.tasktype.md) | Task type for embedding content. | ## Interfaces @@ -109,6 +108,7 @@ | Variable | Description | | --- | --- | | [POSSIBLE\_ROLES](./generative-ai.possible_roles.md) | Possible roles. | +| [SchemaType](./generative-ai.schematype.md) | Contains the list of OpenAPI data types as defined by https://swagger.io/docs/specification/data-models/data-types/ | ## Type Aliases @@ -118,5 +118,6 @@ | [Part](./generative-ai.part.md) | Content part - includes text or image part types. | | [ResponseSchema](./generative-ai.responseschema.md) | Schema passed to GenerationConfig.responseSchema | | [Schema](./generative-ai.schema.md) | Schema is used to define the format of input/output data. Represents a select subset of an OpenAPI 3.0 schema object. More fields may be added in the future as needed. | +| [SchemaType](./generative-ai.schematype.md) | | | [Tool](./generative-ai.tool.md) | Defines a tool that model can call to access external knowledge. | diff --git a/docs/reference/main/generative-ai.numberschema.md b/docs/reference/main/generative-ai.numberschema.md index 4560de1..6106728 100644 --- a/docs/reference/main/generative-ai.numberschema.md +++ b/docs/reference/main/generative-ai.numberschema.md @@ -18,5 +18,5 @@ export interface NumberSchema extends BaseSchema | Property | Modifiers | Type | Description | | --- | --- | --- | --- | | [format?](./generative-ai.numberschema.format.md) | | "float" \| "double" | _(Optional)_ Optional. The format of the number. | -| [type](./generative-ai.numberschema.type.md) | | typeof [SchemaType.NUMBER](./generative-ai.schematype.md) | | +| [type](./generative-ai.numberschema.type.md) | | typeof SchemaType.NUMBER | | diff --git a/docs/reference/main/generative-ai.objectschema.md b/docs/reference/main/generative-ai.objectschema.md index 5d334ad..8e09457 100644 --- a/docs/reference/main/generative-ai.objectschema.md +++ b/docs/reference/main/generative-ai.objectschema.md @@ -19,5 +19,5 @@ export interface ObjectSchema extends BaseSchema | --- | --- | --- | --- | | [properties](./generative-ai.objectschema.properties.md) | | { \[k: string\]: [Schema](./generative-ai.schema.md); } | Describes the properties of the JSON object. Must not be empty. | | [required?](./generative-ai.objectschema.required.md) | | string\[\] | _(Optional)_ A list of keys declared in the properties object. Required properties will always be present in the generated object. | -| [type](./generative-ai.objectschema.type.md) | | typeof [SchemaType.OBJECT](./generative-ai.schematype.md) | | +| [type](./generative-ai.objectschema.type.md) | | typeof SchemaType.OBJECT | | diff --git a/docs/reference/main/generative-ai.schematype.md b/docs/reference/main/generative-ai.schematype.md index a3e3591..f2e892e 100644 --- a/docs/reference/main/generative-ai.schematype.md +++ b/docs/reference/main/generative-ai.schematype.md @@ -2,24 +2,19 @@ [Home](./index.md) > [@google/generative-ai](./generative-ai.md) > [SchemaType](./generative-ai.schematype.md) -## SchemaType enum +## SchemaType variable Contains the list of OpenAPI data types as defined by https://swagger.io/docs/specification/data-models/data-types/ **Signature:** ```typescript -export declare enum SchemaType +SchemaType: { + readonly STRING: "string"; + readonly NUMBER: "number"; + readonly INTEGER: "integer"; + readonly BOOLEAN: "boolean"; + readonly ARRAY: "array"; + readonly OBJECT: "object"; +} ``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| ARRAY | "array" | Array type. | -| BOOLEAN | "boolean" | Boolean type. | -| INTEGER | "integer" | Integer type. | -| NUMBER | "number" | Number type. | -| OBJECT | "object" | Object type. | -| STRING | "string" | String type. | - diff --git a/docs/reference/main/generative-ai.stringschema.md b/docs/reference/main/generative-ai.stringschema.md index 4f8524c..456bbbd 100644 --- a/docs/reference/main/generative-ai.stringschema.md +++ b/docs/reference/main/generative-ai.stringschema.md @@ -18,5 +18,5 @@ export interface StringSchema extends BaseSchema | Property | Modifiers | Type | Description | | --- | --- | --- | --- | | [enum?](./generative-ai.stringschema.enum.md) | | string\[\] | _(Optional)_ If present, limits the result to one of the given values. | -| [type](./generative-ai.stringschema.type.md) | | typeof [SchemaType.STRING](./generative-ai.schematype.md) | | +| [type](./generative-ai.stringschema.type.md) | | typeof SchemaType.STRING | | diff --git a/docs/reference/server/generative-ai.arrayschema.md b/docs/reference/server/generative-ai.arrayschema.md index 56438ad..0454dd8 100644 --- a/docs/reference/server/generative-ai.arrayschema.md +++ b/docs/reference/server/generative-ai.arrayschema.md @@ -20,5 +20,5 @@ export interface ArraySchema extends BaseSchema | [items](./generative-ai.arrayschema.items.md) | | [Schema](./generative-ai.schema.md) | A schema describing the entries in the array. | | [maxItems?](./generative-ai.arrayschema.maxitems.md) | | number | _(Optional)_ The maximum number of items in the array. | | [minItems?](./generative-ai.arrayschema.minitems.md) | | number | _(Optional)_ The minimum number of items in the array. | -| [type](./generative-ai.arrayschema.type.md) | | typeof [SchemaType.ARRAY](./generative-ai.schematype.md) | | +| [type](./generative-ai.arrayschema.type.md) | | typeof SchemaType.ARRAY | | diff --git a/docs/reference/server/generative-ai.booleanschema.md b/docs/reference/server/generative-ai.booleanschema.md index a6035e7..a442b6c 100644 --- a/docs/reference/server/generative-ai.booleanschema.md +++ b/docs/reference/server/generative-ai.booleanschema.md @@ -17,5 +17,5 @@ export interface BooleanSchema extends BaseSchema | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [type](./generative-ai.booleanschema.type.md) | | typeof [SchemaType.BOOLEAN](./generative-ai.schematype.md) | | +| [type](./generative-ai.booleanschema.type.md) | | typeof SchemaType.BOOLEAN | | diff --git a/docs/reference/server/generative-ai.integerschema.md b/docs/reference/server/generative-ai.integerschema.md index c7e1dca..0d1a2b7 100644 --- a/docs/reference/server/generative-ai.integerschema.md +++ b/docs/reference/server/generative-ai.integerschema.md @@ -18,5 +18,5 @@ export interface IntegerSchema extends BaseSchema | Property | Modifiers | Type | Description | | --- | --- | --- | --- | | [format?](./generative-ai.integerschema.format.md) | | "int32" \| "int64" | _(Optional)_ Optional. The format of the number. | -| [type](./generative-ai.integerschema.type.md) | | typeof [SchemaType.INTEGER](./generative-ai.schematype.md) | | +| [type](./generative-ai.integerschema.type.md) | | typeof SchemaType.INTEGER | | diff --git a/docs/reference/server/generative-ai.md b/docs/reference/server/generative-ai.md index 10d55d3..846245f 100644 --- a/docs/reference/server/generative-ai.md +++ b/docs/reference/server/generative-ai.md @@ -19,7 +19,6 @@ | [FileState](./generative-ai.filestate.md) | Processing state of the File. | | [FunctionCallingMode](./generative-ai.functioncallingmode.md) | | | [Outcome](./generative-ai.outcome.md) | Possible outcomes of code execution. | -| [SchemaType](./generative-ai.schematype.md) | Contains the list of OpenAPI data types as defined by https://swagger.io/docs/specification/data-models/data-types/ | ## Interfaces @@ -68,6 +67,12 @@ | [UploadFileResponse](./generative-ai.uploadfileresponse.md) | Response from calling [GoogleAIFileManager.uploadFile()](./generative-ai.googleaifilemanager.uploadfile.md) | | [VideoMetadata](./generative-ai.videometadata.md) | Metadata populated when video has been processed. | +## Variables + +| Variable | Description | +| --- | --- | +| [SchemaType](./generative-ai.schematype.md) | Contains the list of OpenAPI data types as defined by https://swagger.io/docs/specification/data-models/data-types/ | + ## Type Aliases | Type Alias | Description | @@ -76,5 +81,6 @@ | [Part](./generative-ai.part.md) | Content part - includes text or image part types. | | [ResponseSchema](./generative-ai.responseschema.md) | Schema passed to GenerationConfig.responseSchema | | [Schema](./generative-ai.schema.md) | Schema is used to define the format of input/output data. Represents a select subset of an OpenAPI 3.0 schema object. More fields may be added in the future as needed. | +| [SchemaType](./generative-ai.schematype.md) | | | [Tool](./generative-ai.tool.md) | Defines a tool that model can call to access external knowledge. | diff --git a/docs/reference/server/generative-ai.numberschema.md b/docs/reference/server/generative-ai.numberschema.md index 4560de1..6106728 100644 --- a/docs/reference/server/generative-ai.numberschema.md +++ b/docs/reference/server/generative-ai.numberschema.md @@ -18,5 +18,5 @@ export interface NumberSchema extends BaseSchema | Property | Modifiers | Type | Description | | --- | --- | --- | --- | | [format?](./generative-ai.numberschema.format.md) | | "float" \| "double" | _(Optional)_ Optional. The format of the number. | -| [type](./generative-ai.numberschema.type.md) | | typeof [SchemaType.NUMBER](./generative-ai.schematype.md) | | +| [type](./generative-ai.numberschema.type.md) | | typeof SchemaType.NUMBER | | diff --git a/docs/reference/server/generative-ai.objectschema.md b/docs/reference/server/generative-ai.objectschema.md index 5d334ad..8e09457 100644 --- a/docs/reference/server/generative-ai.objectschema.md +++ b/docs/reference/server/generative-ai.objectschema.md @@ -19,5 +19,5 @@ export interface ObjectSchema extends BaseSchema | --- | --- | --- | --- | | [properties](./generative-ai.objectschema.properties.md) | | { \[k: string\]: [Schema](./generative-ai.schema.md); } | Describes the properties of the JSON object. Must not be empty. | | [required?](./generative-ai.objectschema.required.md) | | string\[\] | _(Optional)_ A list of keys declared in the properties object. Required properties will always be present in the generated object. | -| [type](./generative-ai.objectschema.type.md) | | typeof [SchemaType.OBJECT](./generative-ai.schematype.md) | | +| [type](./generative-ai.objectschema.type.md) | | typeof SchemaType.OBJECT | | diff --git a/docs/reference/server/generative-ai.schematype.md b/docs/reference/server/generative-ai.schematype.md index a3e3591..f2e892e 100644 --- a/docs/reference/server/generative-ai.schematype.md +++ b/docs/reference/server/generative-ai.schematype.md @@ -2,24 +2,19 @@ [Home](./index.md) > [@google/generative-ai](./generative-ai.md) > [SchemaType](./generative-ai.schematype.md) -## SchemaType enum +## SchemaType variable Contains the list of OpenAPI data types as defined by https://swagger.io/docs/specification/data-models/data-types/ **Signature:** ```typescript -export declare enum SchemaType +SchemaType: { + readonly STRING: "string"; + readonly NUMBER: "number"; + readonly INTEGER: "integer"; + readonly BOOLEAN: "boolean"; + readonly ARRAY: "array"; + readonly OBJECT: "object"; +} ``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| ARRAY | "array" | Array type. | -| BOOLEAN | "boolean" | Boolean type. | -| INTEGER | "integer" | Integer type. | -| NUMBER | "number" | Number type. | -| OBJECT | "object" | Object type. | -| STRING | "string" | String type. | - diff --git a/docs/reference/server/generative-ai.stringschema.md b/docs/reference/server/generative-ai.stringschema.md index 4f8524c..456bbbd 100644 --- a/docs/reference/server/generative-ai.stringschema.md +++ b/docs/reference/server/generative-ai.stringschema.md @@ -18,5 +18,5 @@ export interface StringSchema extends BaseSchema | Property | Modifiers | Type | Description | | --- | --- | --- | --- | | [enum?](./generative-ai.stringschema.enum.md) | | string\[\] | _(Optional)_ If present, limits the result to one of the given values. | -| [type](./generative-ai.stringschema.type.md) | | typeof [SchemaType.STRING](./generative-ai.schematype.md) | | +| [type](./generative-ai.stringschema.type.md) | | typeof SchemaType.STRING | |