From 3f430ecbd123d3414098c17893335c6594ef514b Mon Sep 17 00:00:00 2001 From: Aditya Hegde Date: Tue, 7 Jul 2026 18:54:22 +0530 Subject: [PATCH] refac: move profiling queries to proto messages --- .../column-types/NumericProfile.svelte | 21 +- .../column-types/TimestampProfile.svelte | 11 +- .../column-types/details/TopK.svelte | 5 +- .../src/features/column-profile/queries.ts | 39 +- web-common/src/lib/proto-utils.ts | 42 + .../src/runtime-client/gen/index.schemas.ts | 988 +----------------- .../v2/codegen/generator.spec.ts | 45 +- .../runtime-client/v2/codegen/generator.ts | 67 +- .../v2/gen/connector-service.ts | 52 +- .../runtime-client/v2/gen/query-service.ts | 535 ++++------ .../runtime-client/v2/gen/runtime-service.ts | 400 ++----- 11 files changed, 488 insertions(+), 1717 deletions(-) create mode 100644 web-common/src/lib/proto-utils.ts diff --git a/web-common/src/features/column-profile/column-types/NumericProfile.svelte b/web-common/src/features/column-profile/column-types/NumericProfile.svelte index 9f82fd90df1f..c44ee1cebb6f 100644 --- a/web-common/src/features/column-profile/column-types/NumericProfile.svelte +++ b/web-common/src/features/column-profile/column-types/NumericProfile.svelte @@ -5,12 +5,11 @@ INTERVALS, isFloat, } from "@rilldata/web-common/lib/duckdb-data-types"; - import { QueryServiceColumnNumericHistogramHistogramMethod } from "@rilldata/web-common/runtime-client"; - import { useRuntimeClient } from "@rilldata/web-common/runtime-client/v2"; import { createQueryServiceColumnDescriptiveStatistics, createQueryServiceColumnRugHistogram, } from "@rilldata/web-common/runtime-client"; + import { useRuntimeClient } from "@rilldata/web-common/runtime-client/v2"; import { getPriorityForColumn } from "@rilldata/web-common/runtime-client/v2/request-priorities"; import { derived } from "svelte/store"; import ColumnProfileIcon from "../ColumnProfileIcon.svelte"; @@ -25,6 +24,8 @@ import NumericPlot from "./details/NumericPlot.svelte"; import NullPercentageSpark from "./sparks/NullPercentageSpark.svelte"; import NumericSpark from "./sparks/NumericSpark.svelte"; + import { HistogramMethod } from "@rilldata/web-common/proto/gen/rill/runtime/v1/queries_pb.ts"; + import { getOneofValue } from "@rilldata/web-common/lib/proto-utils.ts"; export let connector: string; export let database: string; @@ -61,7 +62,7 @@ databaseSchema, objectName, columnName, - QueryServiceColumnNumericHistogramHistogramMethod.HISTOGRAM_METHOD_DIAGNOSTIC, + HistogramMethod.DIAGNOSTIC, enableProfiling, ); let fdHistogram; @@ -73,7 +74,7 @@ databaseSchema, objectName, columnName, - QueryServiceColumnNumericHistogramHistogramMethod.HISTOGRAM_METHOD_FD, + HistogramMethod.FD, enableProfiling, ); } @@ -104,7 +105,11 @@ { query: { select($query) { - return $query?.numericSummary?.numericOutliers?.outliers; + return getOneofValue( + $query?.numericSummary, + "case", + "numericOutliers", + )?.outliers; }, enabled: enableProfiling, }, @@ -138,7 +143,11 @@ }, ), ($query) => { - return $query?.data?.numericSummary?.numericStatistics; + return getOneofValue( + $query?.data?.numericSummary, + "case", + "numericStatistics", + ); }, ); diff --git a/web-common/src/features/column-profile/column-types/TimestampProfile.svelte b/web-common/src/features/column-profile/column-types/TimestampProfile.svelte index 710c29918972..3d635eddb24d 100644 --- a/web-common/src/features/column-profile/column-types/TimestampProfile.svelte +++ b/web-common/src/features/column-profile/column-types/TimestampProfile.svelte @@ -12,6 +12,8 @@ isFetching, } from "../queries"; import NullPercentageSpark from "./sparks/NullPercentageSpark.svelte"; + import { FromProtoTimeGrainMap } from "@rilldata/web-common/features/dashboards/proto-state/enum-maps.ts"; + import { TimeGrain } from "@rilldata/web-common/proto/gen/rill/runtime/v1/time_grain_pb.ts"; export let connector: string; export let database: string; @@ -110,8 +112,13 @@ height={timestampDetailHeight} {data} {spark} - rollupTimeGrain={$timeSeries?.estimatedRollupInterval?.interval} - estimatedSmallestTimeGrain={$timeSeries?.smallestTimegrain} + rollupTimeGrain={FromProtoTimeGrainMap[ + $timeSeries?.estimatedRollupInterval?.interval ?? + TimeGrain.UNSPECIFIED + ]} + estimatedSmallestTimeGrain={FromProtoTimeGrainMap[ + $timeSeries?.smallestTimegrain ?? TimeGrain.UNSPECIFIED + ]} /> {/if} diff --git a/web-common/src/features/column-profile/column-types/details/TopK.svelte b/web-common/src/features/column-profile/column-types/details/TopK.svelte index 21a3e6496238..3fa3bd07e6bd 100644 --- a/web-common/src/features/column-profile/column-types/details/TopK.svelte +++ b/web-common/src/features/column-profile/column-types/details/TopK.svelte @@ -49,6 +49,7 @@ // Since the topk query is in a reactive statement with `enable`, `topK` can be undefined. // This leads to unexpected issues when paired with transition $: topKCopy = topK ?? topKCopy; + $: topKNormalised = topKCopy?.map((k) => k.toJSON()); function ensureSpaces(str: string, n = 6) { const sanitized = DOMPurify.sanitize(str, { ALLOWED_TAGS: [] }); @@ -77,9 +78,9 @@ /** handle LISTs and STRUCTs */ -{#if topKCopy && totalRows} +{#if topKNormalised && totalRows}
- {#each topKCopy.slice(0, k) as item (item.value)} + {#each topKNormalised.slice(0, k) as item (item.value)} {@const negligiblePercentage = item.count / totalRows < 0.0002} {@const percentage = negligiblePercentage ? "<.01%" diff --git a/web-common/src/features/column-profile/queries.ts b/web-common/src/features/column-profile/queries.ts index 6f4ab2b81dfb..c619f584aa95 100644 --- a/web-common/src/features/column-profile/queries.ts +++ b/web-common/src/features/column-profile/queries.ts @@ -7,10 +7,8 @@ import { createQueryServiceColumnTimeSeries, createQueryServiceColumnTopK, createQueryServiceTableCardinality, - QueryServiceColumnNumericHistogramHistogramMethod, type V1ProfileColumn, type V1TableColumnsResponse, - type V1TimeSeriesValue, } from "@rilldata/web-common/runtime-client"; import type { RuntimeClient } from "@rilldata/web-common/runtime-client/v2"; import { getPriorityForColumn } from "@rilldata/web-common/runtime-client/v2/request-priorities"; @@ -19,6 +17,14 @@ import { type QueryObserverResult, } from "@tanstack/query-core"; import { derived, type Readable, writable } from "svelte/store"; +import { + getOneofValue, + valueAsNumber, +} from "@rilldata/web-common/lib/proto-utils.ts"; +import type { + HistogramMethod, + TimeSeriesValue, +} from "@rilldata/web-common/proto/gen/rill/runtime/v1/queries_pb.ts"; export function isFetching(...queries) { return queries.some((query) => query?.isFetching); @@ -81,7 +87,11 @@ export function getSummaries( return { ...col, nullCount: nullValues?.data?.count, - cardinality: cardinality?.data?.categoricalSummary?.cardinality, + cardinality: getOneofValue( + cardinality?.data?.categoricalSummary, + "case", + "cardinality", + ), isFetching: profileColumnResponse.isFetching || nullValues?.isFetching || @@ -181,7 +191,11 @@ export function getCountDistinct( [cardinalityQuery, totalRowsQuery], ([cardinality, totalRows]) => { return { - cardinality: cardinality?.data?.categoricalSummary?.cardinality, + cardinality: getOneofValue( + cardinality?.data?.categoricalSummary, + "case", + "cardinality", + ), // SAFETY: if the V1TableCardinalityResponse exists in `totalRows`, // then `.cardinality` should presumably always exist in the // cardinality query response, so we should be able to cast it to @@ -222,15 +236,16 @@ export function getTopK( }, ); return derived(topKQuery, ($topKQuery) => { - return $topKQuery?.data?.categoricalSummary?.topK?.entries; + return getOneofValue($topKQuery?.data?.categoricalSummary, "case", "topK") + ?.entries; }); } -function convertPoint(point: V1TimeSeriesValue) { +function convertPoint(point: TimeSeriesValue) { const next = { ...point, - count: point?.records?.count as number, - ts: point.ts ? new Date(point.ts) : new Date(0), + count: valueAsNumber(point?.records?.fields?.count), + ts: point.ts?.toDate() ?? new Date(0), }; if (next.count == null || !isFinite(next.count)) { next.count = 0; @@ -329,7 +344,7 @@ export function getNumericHistogram( databaseSchema: string, objectName: string, columnName: string, - histogramMethod: QueryServiceColumnNumericHistogramHistogramMethod, + histogramMethod: HistogramMethod, enabled = true, ) { return createQueryServiceColumnNumericHistogram( @@ -346,7 +361,11 @@ export function getNumericHistogram( { query: { select(query) { - return query?.numericSummary?.numericHistogramBins?.bins; + return getOneofValue( + query?.numericSummary, + "case", + "numericHistogramBins", + )?.bins; }, enabled, }, diff --git a/web-common/src/lib/proto-utils.ts b/web-common/src/lib/proto-utils.ts new file mode 100644 index 000000000000..ba7049e2c197 --- /dev/null +++ b/web-common/src/lib/proto-utils.ts @@ -0,0 +1,42 @@ +import type { Value } from "node_modules/@bufbuild/protobuf/dist/esm/google/protobuf/struct_pb"; + +/** A protobuf-es oneof field as generated for a `case` selector. */ +type OneofSelector = + | { case: string; value: unknown } + | { case: undefined; value?: undefined }; +/** Keys of `M` whose value is a protobuf-es oneof selector. */ +type OneofKeys = { + [K in keyof M]: NonNullable extends OneofSelector ? K : never; +}[keyof M]; +/** The set of case names available on the oneof selector `O`. */ +type OneofCase = O extends { case: infer C extends string } ? C : never; +/** The value type carried by the `C` case of the oneof selector `O`. */ +type OneofValueForCase = O extends { case: C; value: infer V } + ? V + : never; + +/** + * Returns the value of a protobuf-es oneof field for the requested case, or + * undefined if the oneof is unset or set to a different case. `oneofKey` selects + * the oneof field (e.g. "case" on a CategoricalSummary, "resource" on a + * Resource) and the return type is narrowed to the value type of that case. + */ +export function getOneofValue< + M extends object, + K extends OneofKeys, + C extends OneofCase>, +>( + message: M | undefined, + oneofKey: K, + caseName: C, +): OneofValueForCase, C> | undefined { + const oneof = message?.[oneofKey] as OneofSelector | undefined; + if (oneof?.case !== caseName) { + return undefined; + } + return oneof.value as OneofValueForCase, C>; +} + +export function valueAsNumber(val: Value | undefined) { + return getOneofValue(val, "kind", "numberValue") ?? 0; +} diff --git a/web-common/src/runtime-client/gen/index.schemas.ts b/web-common/src/runtime-client/gen/index.schemas.ts index 4058c76cc057..c161ae96feb1 100644 --- a/web-common/src/runtime-client/gen/index.schemas.ts +++ b/web-common/src/runtime-client/gen/index.schemas.ts @@ -1,3 +1,10 @@ +import { + ColumnCardinalityRequest, + ColumnDescriptiveStatisticsRequest, + ColumnNullCountRequest, + ColumnNumericHistogramRequest, type ColumnRollupIntervalRequest, + ColumnRugHistogramRequest, ColumnTimeGrainRequest, ColumnTimeRangeRequest, ColumnTimeSeriesRequest, ColumnTopKRequest } from "@rilldata/web-common/proto/gen/rill/runtime/v1/queries_pb.ts"; + /** * Runtime API type definitions. * @@ -12,12 +19,6 @@ * file instead. * - Once all consumers of a V1* type have migrated, delete the type from this file. */ -export interface ColumnTimeSeriesRequestBasicMeasure { - id?: string; - expression?: string; - sqlName?: string; -} - export interface ConnectorDriverProperty { key?: string; type?: ConnectorDriverPropertyType; @@ -198,22 +199,6 @@ export interface ProtobufAny { [key: string]: unknown; } -/** - * `NullValue` is a singleton enumeration to represent the null value for the -`Value` type union. - -The JSON representation for `NullValue` is JSON `null`. - - - NULL_VALUE: Null value. - */ -export type ProtobufNullValue = - (typeof ProtobufNullValue)[keyof typeof ProtobufNullValue]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const ProtobufNullValue = { - NULL_VALUE: "NULL_VALUE", -} as const; - export interface RpcStatus { code?: number; message?: string; @@ -511,11 +496,6 @@ This may be empty if the data refresh time is not known, e.g. if the metrics vie dataRefreshedOn?: string; } -export interface V1CategoricalSummary { - topK?: V1TopK; - cardinality?: number; -} - export interface V1CharLocation { line?: number; } @@ -527,156 +507,6 @@ export interface V1Color { alpha?: number; } -export interface V1ColumnCardinalityRequest { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - tableName?: string; - columnName?: string; - priority?: number; -} - -export interface V1ColumnCardinalityResponse { - categoricalSummary?: V1CategoricalSummary; -} - -export interface V1ColumnDescriptiveStatisticsRequest { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - tableName?: string; - columnName?: string; - priority?: number; -} - -export interface V1ColumnDescriptiveStatisticsResponse { - numericSummary?: V1NumericSummary; -} - -export interface V1ColumnNullCountRequest { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - tableName?: string; - columnName?: string; - priority?: number; -} - -export interface V1ColumnNullCountResponse { - count?: number; -} - -export interface V1ColumnNumericHistogramRequest { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - tableName?: string; - columnName?: string; - histogramMethod?: V1HistogramMethod; - priority?: number; -} - -export interface V1ColumnNumericHistogramResponse { - numericSummary?: V1NumericSummary; -} - -export interface V1ColumnRollupIntervalRequest { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - tableName?: string; - columnName?: string; - priority?: number; -} - -export interface V1ColumnRollupIntervalResponse { - start?: string; - end?: string; - interval?: V1TimeGrain; -} - -export interface V1ColumnRugHistogramRequest { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - tableName?: string; - columnName?: string; - priority?: number; -} - -export interface V1ColumnRugHistogramResponse { - numericSummary?: V1NumericSummary; -} - -export interface V1ColumnTimeGrainRequest { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - tableName?: string; - columnName?: string; - priority?: number; -} - -export interface V1ColumnTimeGrainResponse { - timeGrain?: V1TimeGrain; -} - -export interface V1ColumnTimeRangeRequest { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - tableName?: string; - columnName?: string; - priority?: number; -} - -export interface V1ColumnTimeRangeResponse { - timeRangeSummary?: V1TimeRangeSummary; -} - -export interface V1ColumnTimeSeriesRequest { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - tableName?: string; - measures?: ColumnTimeSeriesRequestBasicMeasure[]; - timestampColumnName?: string; - timeRange?: V1TimeSeriesTimeRange; - pixels?: number; - sampleSize?: number; - priority?: number; - timeZone?: string; -} - -export interface V1ColumnTimeSeriesResponse { - rollup?: V1TimeSeriesResponse; -} - -export interface V1ColumnTopKRequest { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - tableName?: string; - columnName?: string; - agg?: string; - k?: number; - priority?: number; -} - -export interface V1ColumnTopKResponse { - categoricalSummary?: V1CategoricalSummary; -} - export interface V1CompleteResponse { conversationId?: string; messages?: V1Message[]; @@ -806,30 +636,6 @@ export interface V1CreateDirectoryResponse { [key: string]: unknown; } -export type V1CreateInstanceRequestVariables = { [key: string]: string }; - -export type V1CreateInstanceRequestAnnotations = { [key: string]: string }; - -/** - * Request message for RuntimeService.CreateInstance. -See message Instance for field descriptions. - */ -export interface V1CreateInstanceRequest { - instanceId?: string; - environment?: string; - olapConnector?: string; - repoConnector?: string; - adminConnector?: string; - aiConnector?: string; - connectors?: V1Connector[]; - variables?: V1CreateInstanceRequestVariables; - annotations?: V1CreateInstanceRequestAnnotations; - frontendUrl?: string; -} - -export interface V1CreateInstanceResponse { - instance?: V1Instance; -} export interface V1CreateTriggerResponse { [key: string]: unknown; @@ -848,9 +654,6 @@ export interface V1DeleteFileResponse { [key: string]: unknown; } -export interface V1DeleteInstanceResponse { - [key: string]: unknown; -} /** * Context for prompts handled by the developer_agent. @@ -869,9 +672,6 @@ export interface V1DirEntry { isDir?: boolean; } -export interface V1EditInstanceResponse { - instance?: V1Instance; -} /** * Example contains metadata about an example project that is available for unpacking. @@ -1104,23 +904,6 @@ export interface V1GenerateMetricsViewFileResponse { aiSucceeded?: boolean; } -export type V1GenerateRendererResponseRendererProperties = { - [key: string]: unknown; -}; - -export interface V1GenerateRendererResponse { - renderer?: string; - rendererProperties?: V1GenerateRendererResponseRendererProperties; -} - -export type V1GenerateResolverResponseResolverProperties = { - [key: string]: unknown; -}; - -export interface V1GenerateResolverResponse { - resolver?: string; - resolverProperties?: V1GenerateResolverResponseResolverProperties; -} export interface V1GetAIMessageResponse { message?: V1Message; @@ -1233,16 +1016,6 @@ export interface V1HealthResponse { instancesHealth?: V1HealthResponseInstancesHealth; } -export type V1HistogramMethod = - (typeof V1HistogramMethod)[keyof typeof V1HistogramMethod]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const V1HistogramMethod = { - HISTOGRAM_METHOD_UNSPECIFIED: "HISTOGRAM_METHOD_UNSPECIFIED", - HISTOGRAM_METHOD_FD: "HISTOGRAM_METHOD_FD", - HISTOGRAM_METHOD_DIAGNOSTIC: "HISTOGRAM_METHOD_DIAGNOSTIC", -} as const; - export type V1InstanceVariables = { [key: string]: string }; export type V1InstanceProjectVariables = { [key: string]: string }; @@ -2021,14 +1794,6 @@ export interface V1Notifier { properties?: V1NotifierProperties; } -export interface V1NumericHistogramBins { - bins?: NumericHistogramBinsBin[]; -} - -export interface V1NumericOutliers { - outliers?: NumericOutliersOutlier[]; -} - export interface V1NumericStatistics { min?: number; max?: number; @@ -2039,12 +1804,6 @@ export interface V1NumericStatistics { sd?: number; } -export interface V1NumericSummary { - numericHistogramBins?: V1NumericHistogramBins; - numericStatistics?: V1NumericStatistics; - numericOutliers?: V1NumericOutliers; -} - export type V1OLAPGetTableResponseUnsupportedColumns = { [key: string]: string; }; @@ -2146,27 +1905,21 @@ export interface V1Query { metricsViewTimeSeriesRequest?: V1MetricsViewTimeSeriesRequest; metricsViewTotalsRequest?: V1MetricsViewTotalsRequest; metricsViewRowsRequest?: V1MetricsViewRowsRequest; - columnRollupIntervalRequest?: V1ColumnRollupIntervalRequest; - columnTopKRequest?: V1ColumnTopKRequest; - columnNullCountRequest?: V1ColumnNullCountRequest; - columnDescriptiveStatisticsRequest?: V1ColumnDescriptiveStatisticsRequest; - columnTimeGrainRequest?: V1ColumnTimeGrainRequest; - columnNumericHistogramRequest?: V1ColumnNumericHistogramRequest; - columnRugHistogramRequest?: V1ColumnRugHistogramRequest; - columnTimeRangeRequest?: V1ColumnTimeRangeRequest; - columnCardinalityRequest?: V1ColumnCardinalityRequest; - columnTimeSeriesRequest?: V1ColumnTimeSeriesRequest; + columnRollupIntervalRequest?: ColumnRollupIntervalRequest; + columnTopKRequest?: ColumnTopKRequest; + columnNullCountRequest?: ColumnNullCountRequest; + columnDescriptiveStatisticsRequest?: ColumnDescriptiveStatisticsRequest; + columnTimeGrainRequest?: ColumnTimeGrainRequest; + columnNumericHistogramRequest?: ColumnNumericHistogramRequest; + columnRugHistogramRequest?: ColumnRugHistogramRequest; + columnTimeRangeRequest?: ColumnTimeRangeRequest; + columnCardinalityRequest?: ColumnCardinalityRequest; + columnTimeSeriesRequest?: ColumnTimeSeriesRequest; tableCardinalityRequest?: V1TableCardinalityRequest; tableColumnsRequest?: V1TableColumnsRequest; tableRowsRequest?: V1TableRowsRequest; } -export interface V1QueryBatchResponse { - index?: number; - result?: V1QueryResult; - error?: string; -} - export type V1QueryResolverResponseMeta = { [key: string]: unknown }; export type V1QueryResolverResponseDataItem = { [key: string]: unknown }; @@ -2184,27 +1937,6 @@ export interface V1QueryResponse { data?: V1QueryResponseDataItem[]; } -export interface V1QueryResult { - metricsViewAggregationResponse?: V1MetricsViewAggregationResponse; - metricsViewToplistResponse?: V1MetricsViewToplistResponse; - metricsViewComparisonResponse?: V1MetricsViewComparisonResponse; - metricsViewTimeSeriesResponse?: V1MetricsViewTimeSeriesResponse; - metricsViewTotalsResponse?: V1MetricsViewTotalsResponse; - metricsViewRowsResponse?: V1MetricsViewRowsResponse; - columnRollupIntervalResponse?: V1ColumnRollupIntervalResponse; - columnTopKResponse?: V1ColumnTopKResponse; - columnNullCountResponse?: V1ColumnNullCountResponse; - columnDescriptiveStatisticsResponse?: V1ColumnDescriptiveStatisticsResponse; - columnTimeGrainResponse?: V1ColumnTimeGrainResponse; - columnNumericHistogramResponse?: V1ColumnNumericHistogramResponse; - columnRugHistogramResponse?: V1ColumnRugHistogramResponse; - columnTimeRangeResponse?: V1ColumnTimeRangeResponse; - columnCardinalityResponse?: V1ColumnCardinalityResponse; - columnTimeSeriesResponse?: V1ColumnTimeSeriesResponse; - tableCardinalityResponse?: V1TableCardinalityResponse; - tableColumnsResponse?: V1TableColumnsResponse; - tableRowsResponse?: V1TableRowsResponse; -} export type V1ReconcileStatus = (typeof V1ReconcileStatus)[keyof typeof V1ReconcileStatus]; @@ -2648,18 +2380,6 @@ export interface V1TimeRangeSummary { watermark?: string; } -export interface V1TimeSeriesResponse { - results?: V1TimeSeriesValue[]; - spark?: V1TimeSeriesValue[]; - sampleSize?: number; -} - -export interface V1TimeSeriesTimeRange { - start?: string; - end?: string; - interval?: V1TimeGrain; -} - export type V1TimeSeriesValueRecords = { [key: string]: unknown }; export interface V1TimeSeriesValue { @@ -2693,10 +2413,6 @@ export interface V1ToolResult { isError?: boolean; } -export interface V1TopK { - entries?: TopKEntry[]; -} - /** * Trace contains trace spans captured during request execution. Used both in successful responses and as gRPC error details when trace=true and the request fails. */ @@ -2728,62 +2444,6 @@ export interface V1WatchResourcesResponse { resource?: V1Resource; } -export type ConnectorServiceListDatabaseSchemasParams = { - instanceId?: string; - connector?: string; - pageSize?: number; - pageToken?: string; -}; - -export type ConnectorServiceOLAPGetTableParams = { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - table?: string; -}; - -export type ConnectorServiceGetTableParams = { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - table?: string; -}; - -export type ConnectorServiceListTablesParams = { - instanceId?: string; - connector?: string; - database?: string; - databaseSchema?: string; - pageSize?: number; - pageToken?: string; -}; - -export type RuntimeServiceListInstancesParams = { - pageSize?: number; - pageToken?: string; -}; - -export type RuntimeServiceGetInstanceParams = { - sensitive?: boolean; -}; - -export type RuntimeServiceDeleteInstanceBody = { [key: string]: unknown }; - -/** - * Request message for RuntimeService.EditInstance. -See message Instance for field descriptions. - */ -export type RuntimeServiceEditInstanceBody = { - environment?: string; - olapConnector?: string; - repoConnector?: string; - adminConnector?: string; - aiConnector?: string; - connectors?: V1Connector[]; -}; - export type RuntimeServiceCompleteBody = { /** Conversation ID to continue. If empty, a new conversation is created. */ conversationId?: string; @@ -2797,76 +2457,6 @@ If not set, it will infer an agent based on the prompt and conversation history. feedbackAgentContext?: V1FeedbackAgentContext; }; -export type RuntimeServiceCompleteStreamingBody = { - /** Conversation ID to continue. If empty, a new conversation is created. */ - conversationId?: string; - /** The prompt to complete. */ - prompt?: string; - /** Optional agent to use for the completion. -If not set, it will infer an agent based on the prompt and conversation history. */ - agent?: string; - analystAgentContext?: V1AnalystAgentContext; - developerAgentContext?: V1DeveloperAgentContext; - feedbackAgentContext?: V1FeedbackAgentContext; -}; - -export type RuntimeServiceCompleteStreaming200 = { - result?: V1CompleteStreamingResponse; - error?: RpcStatus; -}; - -export type RuntimeServiceListConversationsParams = { - /** - * Optional search pattern for filtering by user agent. - */ - userAgentPattern?: string; -}; - -export type RuntimeServiceForkConversationBody = { [key: string]: unknown }; - -export type RuntimeServiceShareConversationBody = { - /** optional message ID up to which to share otherwise share all current messages -only valid conversation having last message of "result" type from "router" agent till until this message ID will be shared.npm -It supports a special value of "none" to unshare the conversation. */ - untilMessageId?: string; -}; - -export type ConnectorServiceListBucketsParams = { - pageSize?: number; - pageToken?: string; -}; - -export type ConnectorServiceListObjectsParams = { - /** - * Lists objects within a folder-like level (using path prefix and delimiter). Cannot be used if `glob` is passed. - */ - path?: string; - delimiter?: string; - /** - * Lists objects matching the glob pattern. Cannot be used if `path` or `delimiter` is passed. - */ - glob?: string; - pageSize?: number; - pageToken?: string; -}; - -export type RuntimeServiceListFilesParams = { - glob?: string; -}; - -export type RuntimeServiceCreateDirectoryBody = { - path?: string; -}; - -export type RuntimeServiceGetFileParams = { - path?: string; -}; - -export type RuntimeServiceDeleteFileParams = { - path?: string; - force?: boolean; -}; - export type RuntimeServicePutFileBody = { path?: string; blob?: string; @@ -2876,16 +2466,6 @@ It should only be set when create = true. */ createOnly?: boolean; }; -export type RuntimeServiceGenerateCanvasFileBody = { - /** Metrics view name to base the canvas on. */ - metricsViewName?: string; - /** Path to save the canvas file to. */ - path?: string; - /** If true, the AI will be used to generate the canvas file. -Otherwise, it falls back to a simpler heuristic approach. */ - useAi?: boolean; -}; - export type RuntimeServiceGenerateMetricsViewFileBody = { /** Model to base the metrics view on. If you set this, do NOT set connector, database, database_schema or table. */ @@ -2911,193 +2491,7 @@ Otherwise, it falls back to a simpler heuristic approach. */ prompt?: string; }; -export type RuntimeServiceRenameFileBody = { - fromPath?: string; - toPath?: string; -}; - -export type RuntimeServiceUnpackEmptyBody = { - displayName?: string; - olap?: string; - force?: boolean; -}; - -export type RuntimeServiceUnpackExampleBody = { - name?: string; - force?: boolean; -}; - -export type RuntimeServiceWatchFilesParams = { - replay?: boolean; -}; - -export type RuntimeServiceWatchFiles200 = { - result?: V1WatchFilesResponse; - error?: RpcStatus; -}; - -export type RuntimeServiceGenerateRendererBodyResolverProperties = { - [key: string]: unknown; -}; - -export type RuntimeServiceGenerateRendererBody = { - prompt?: string; - resolver?: string; - resolverProperties?: RuntimeServiceGenerateRendererBodyResolverProperties; -}; - -export type RuntimeServiceGenerateResolverBody = { - prompt?: string; - /** Both connector and table must be specified if metrics_view is not. */ - connector?: string; - table?: string; - /** table and connector should not be provided if metrics_view is provided. */ - metricsView?: string; -}; - -export type RuntimeServiceGitSwitchBranchBody = { - branch?: string; - create?: boolean; - ignoreLocalChanges?: boolean; -}; - -export type RuntimeServiceGitCommitBody = { - commitMessage?: string; -}; - -export type RuntimeServiceListGitCommitsParams = { - pageSize?: number; - pageToken?: string; -}; - -export type RuntimeServiceGitMergeToBranchBody = { - branch?: string; - /** In case of merge conflicts, prefer current changes. */ - force?: boolean; -}; - -export type RuntimeServiceGitPullBody = { - discardLocal?: boolean; -}; - -export type RuntimeServiceGitPushBody = { - commitMessage?: string; - force?: boolean; -}; - -export type RuntimeServiceRestoreGitCommitBody = { [key: string]: unknown }; - -export type RuntimeServiceGetLogsParams = { - ascending?: boolean; - limit?: number; - level?: RuntimeServiceGetLogsLevel; -}; - -export type RuntimeServiceGetLogsLevel = - (typeof RuntimeServiceGetLogsLevel)[keyof typeof RuntimeServiceGetLogsLevel]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const RuntimeServiceGetLogsLevel = { - LOG_LEVEL_UNSPECIFIED: "LOG_LEVEL_UNSPECIFIED", - LOG_LEVEL_DEBUG: "LOG_LEVEL_DEBUG", - LOG_LEVEL_INFO: "LOG_LEVEL_INFO", - LOG_LEVEL_WARN: "LOG_LEVEL_WARN", - LOG_LEVEL_ERROR: "LOG_LEVEL_ERROR", - LOG_LEVEL_FATAL: "LOG_LEVEL_FATAL", -} as const; - -export type RuntimeServiceWatchLogsParams = { - replay?: boolean; - replayLimit?: number; - level?: RuntimeServiceWatchLogsLevel; -}; - -export type RuntimeServiceWatchLogsLevel = - (typeof RuntimeServiceWatchLogsLevel)[keyof typeof RuntimeServiceWatchLogsLevel]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const RuntimeServiceWatchLogsLevel = { - LOG_LEVEL_UNSPECIFIED: "LOG_LEVEL_UNSPECIFIED", - LOG_LEVEL_DEBUG: "LOG_LEVEL_DEBUG", - LOG_LEVEL_INFO: "LOG_LEVEL_INFO", - LOG_LEVEL_WARN: "LOG_LEVEL_WARN", - LOG_LEVEL_ERROR: "LOG_LEVEL_ERROR", - LOG_LEVEL_FATAL: "LOG_LEVEL_FATAL", -} as const; - -export type RuntimeServiceWatchLogs200 = { - result?: V1WatchLogsResponse; - error?: RpcStatus; -}; - -export type RuntimeServiceGetModelPartitionsParams = { - pending?: boolean; - errored?: boolean; - pageSize?: number; - pageToken?: string; -}; - -export type QueryServiceResolveCanvasBodyArgs = { [key: string]: unknown }; - -export type QueryServiceResolveCanvasBody = { - args?: QueryServiceResolveCanvasBodyArgs; -}; - -export type QueryServiceColumnCardinalityParams = { - connector?: string; - database?: string; - databaseSchema?: string; - /** - * Required - */ - columnName?: string; - priority?: number; -}; - -export type QueryServiceTableColumnsParams = { - connector?: string; - database?: string; - databaseSchema?: string; - priority?: number; -}; - -export type QueryServiceResolveComponentBodyArgs = { [key: string]: unknown }; - -export type QueryServiceResolveComponentBody = { - args?: QueryServiceResolveComponentBodyArgs; -}; -export type QueryServiceColumnDescriptiveStatisticsParams = { - connector?: string; - database?: string; - databaseSchema?: string; - /** - * Required - */ - columnName?: string; - priority?: number; -}; - -export type QueryServiceExportBody = { - /** Optional limit on the number of rows to export. It is applied in addition to any limit specified in the query. */ - limit?: string; - format?: V1ExportFormat; - query?: V1Query; - /** Deprecated. Use query instead. */ - bakedQuery?: string; - /** If true, the export will include header comments with metadata about the export. */ - includeHeader?: boolean; - originDashboard?: V1ResourceName; - /** Optional UI URL that the export originates from. -Only used if include_header is true. */ - originUrl?: string; - /** Optional Execution to attach to the underlying query. Used to resolve rill-time expressions. */ - executionTime?: string; -}; - -export type QueryServiceConvertExpressionToMetricsSQLBody = { - expression?: V1Expression; -}; export type QueryServiceMetricsViewAggregationBody = { dimensions?: V1MetricsViewAggregationDimension[]; @@ -3126,169 +2520,6 @@ export type QueryServiceMetricsViewAggregationBody = { trace?: boolean; }; -export type QueryServiceMetricsViewAnnotationsBody = { - measures?: string[]; - priority?: number; - timeRange?: V1TimeRange; - timeGrain?: V1TimeGrain; - timeZone?: string; - limit?: string; - offset?: string; - /** Optional. If true, the response will include traces of spans captured during execution. */ - trace?: boolean; -}; - -export type QueryServiceMetricsViewComparisonBody = { - dimension?: V1MetricsViewAggregationDimension; - measures?: V1MetricsViewAggregationMeasure[]; - comparisonMeasures?: string[]; - sort?: V1MetricsViewComparisonSort[]; - timeRange?: V1TimeRange; - comparisonTimeRange?: V1TimeRange; - where?: V1Expression; - /** Optional. If both where and where_sql are set, both will be applied with an AND between them. */ - whereSql?: string; - having?: V1Expression; - /** Optional. If both having and having_sql are set, both will be applied with an AND between them. */ - havingSql?: string; - aliases?: V1MetricsViewComparisonMeasureAlias[]; - limit?: string; - offset?: string; - priority?: number; - exact?: boolean; - filter?: V1MetricsViewFilter; - /** Optional. If true, the response will include traces of spans captured during execution. */ - trace?: boolean; -}; - -export type QueryServiceMetricsViewRowsBody = { - timeStart?: string; - timeEnd?: string; - timeGranularity?: V1TimeGrain; - where?: V1Expression; - sort?: V1MetricsViewSort[]; - limit?: number; - offset?: string; - priority?: number; - timeZone?: string; - filter?: V1MetricsViewFilter; - timeDimension?: string; - /** Optional. If true, the response will include traces of spans captured during execution. */ - trace?: boolean; -}; - -export type QueryServiceMetricsViewSchemaParams = { - priority?: number; - /** - * Optional. If true, the response will include traces of spans captured during execution. - */ - trace?: boolean; -}; - -export type QueryServiceMetricsViewSearchBody = { - dimensions?: string[]; - search?: string; - timeRange?: V1TimeRange; - where?: V1Expression; - having?: V1Expression; - limit?: number; - priority?: number; - /** Optional. If true, the response will include traces of spans captured during execution. */ - trace?: boolean; -}; - -export type QueryServiceMetricsViewTimeRangeBody = { - priority?: number; - timeDimension?: string; - /** Optional. If true, the response will include traces of spans captured during execution. */ - trace?: boolean; -}; - -export type QueryServiceMetricsViewTimeRangesBody = { - /** Optional time range expressions to resolve (uses the rilltime expression syntax). */ - expressions?: string[]; - /** Optional query priority. */ - priority?: number; - /** Optional time zone that overrides the time zones used when resolving the time range expressions. */ - timeZone?: string; - /** Optional time dimension to return time ranges for. If not specified, it uses the metrics view's default time dimension. */ - timeDimension?: string; - /** Optional execution time against which the time ranges needs to be resolved. Watermark, latest and now are all replaced with this if provided. */ - executionTime?: string; - /** Optional. If true, the response will include traces of spans captured during execution. */ - trace?: boolean; -}; - -export type QueryServiceMetricsViewTimeSeriesBody = { - measureNames?: string[]; - timeStart?: string; - timeEnd?: string; - timeGranularity?: V1TimeGrain; - where?: V1Expression; - /** Optional. If both where and where_sql are set, both will be applied with an AND between them. */ - whereSql?: string; - having?: V1Expression; - /** Optional. If both having and having_sql are set, both will be applied with an AND between them. */ - havingSql?: string; - timeZone?: string; - priority?: number; - filter?: V1MetricsViewFilter; - timeDimension?: string; - /** Optional. If true, the response will include traces of spans captured during execution. */ - trace?: boolean; -}; - -export type QueryServiceMetricsViewToplistBody = { - dimensionName?: string; - measureNames?: string[]; - timeStart?: string; - timeEnd?: string; - limit?: string; - offset?: string; - sort?: V1MetricsViewSort[]; - where?: V1Expression; - whereSql?: string; - having?: V1Expression; - havingSql?: string; - priority?: number; - filter?: V1MetricsViewFilter; - /** Optional. If true, the response will include traces of spans captured during execution. */ - trace?: boolean; -}; - -export type QueryServiceMetricsViewTotalsBody = { - measureNames?: string[]; - timeStart?: string; - timeEnd?: string; - where?: V1Expression; - /** Optional. If both where and where_sql are set, both will be applied with an AND between them. */ - whereSql?: string; - priority?: number; - filter?: V1MetricsViewFilter; - timeDimension?: string; - /** Optional. If true, the response will include traces of spans captured during execution. */ - trace?: boolean; -}; - -export type QueryServiceColumnNullCountParams = { - connector?: string; - database?: string; - databaseSchema?: string; - /** - * Required - */ - columnName?: string; - priority?: number; -}; - -export type QueryServiceColumnNumericHistogramParams = { - connector?: string; - database?: string; - databaseSchema?: string; - columnName?: string; - histogramMethod?: QueryServiceColumnNumericHistogramHistogramMethod; - priority?: number; -}; export type QueryServiceColumnNumericHistogramHistogramMethod = (typeof QueryServiceColumnNumericHistogramHistogramMethod)[keyof typeof QueryServiceColumnNumericHistogramHistogramMethod]; @@ -3310,188 +2541,3 @@ export type QueryServiceResolveTemplatedStringBody = { additionalWhereByMetricsView?: QueryServiceResolveTemplatedStringBodyAdditionalWhereByMetricsView; additionalTimeRange?: V1TimeRange; }; - -export type QueryServiceColumnRollupIntervalBody = { - connector?: string; - database?: string; - databaseSchema?: string; - columnName?: string; - priority?: number; -}; - -export type QueryServiceTableRowsParams = { - connector?: string; - database?: string; - databaseSchema?: string; - limit?: number; - priority?: number; -}; - -export type QueryServiceColumnRugHistogramParams = { - connector?: string; - database?: string; - databaseSchema?: string; - columnName?: string; - priority?: number; -}; - -export type QueryServiceColumnTimeGrainParams = { - connector?: string; - database?: string; - databaseSchema?: string; - /** - * Required - */ - columnName?: string; - priority?: number; -}; - -export type QueryServiceTableCardinalityParams = { - connector?: string; - database?: string; - databaseSchema?: string; - priority?: number; -}; - -export type QueryServiceColumnTimeRangeParams = { - connector?: string; - database?: string; - databaseSchema?: string; - columnName?: string; - priority?: number; -}; - -export type QueryServiceColumnTimeSeriesBody = { - connector?: string; - database?: string; - databaseSchema?: string; - measures?: ColumnTimeSeriesRequestBasicMeasure[]; - timestampColumnName?: string; - timeRange?: V1TimeSeriesTimeRange; - pixels?: number; - sampleSize?: number; - priority?: number; - timeZone?: string; -}; - -export type QueryServiceColumnTopKBody = { - connector?: string; - database?: string; - databaseSchema?: string; - columnName?: string; - agg?: string; - k?: number; - priority?: number; -}; - -export type QueryServiceQueryBody = { - connector?: string; - sql?: string; - args?: unknown[]; - priority?: number; - dryRun?: boolean; - limit?: number; -}; - -export type QueryServiceQueryBatchBody = { - queries?: V1Query[]; -}; - -export type QueryServiceQueryBatch200 = { - result?: V1QueryBatchResponse; - error?: RpcStatus; -}; - -export type RuntimeServiceQueryResolverBodyResolverProperties = { - [key: string]: unknown; -}; - -export type RuntimeServiceQueryResolverBodyResolverArgs = { - [key: string]: unknown; -}; - -export type RuntimeServiceQueryResolverBody = { - resolver?: string; - resolverProperties?: RuntimeServiceQueryResolverBodyResolverProperties; - resolverArgs?: RuntimeServiceQueryResolverBodyResolverArgs; - limit?: number; -}; - -export type RuntimeServiceReloadConfigBody = { [key: string]: unknown }; - -export type QueryServiceExportReportBody = { - /** The execution time to evaluate the report relative to. -This is provided by the report implementation when sending a report. */ - executionTime?: string; - /** Contextual information about the base URL of the UI that initiated the export. -This is used to generate header comments in the exported file when include_header is true in the report spec. */ - originBaseUrl?: string; -}; - -export type RuntimeServiceGetResourceParams = { - "name.kind"?: string; - "name.name"?: string; - skipSecurityChecks?: boolean; -}; - -export type RuntimeServiceListResourcesParams = { - /** - * Filter by resource kind (optional). - */ - kind?: string; - /** - * Filter by resource path (optional). - */ - path?: string; - /** - * Skip security checks - */ - skipSecurityChecks?: boolean; -}; - -export type RuntimeServiceWatchResourcesParams = { - kind?: string; - replay?: boolean; -}; - -export type RuntimeServiceWatchResources200 = { - result?: V1WatchResourcesResponse; - error?: RpcStatus; -}; - -export type RuntimeServiceGetExploreParams = { - name?: string; -}; - -export type RuntimeServiceCreateTriggerBody = { - /** Resources to trigger. See RefreshTriggerSpec for details. */ - resources?: V1ResourceName[]; - /** Models to trigger. Unlike resources, this supports advanced configuration of the refresh trigger. */ - models?: V1RefreshModelTrigger[]; - /** Parser is a convenience flag to trigger the global project parser. -Triggering the project parser ensures a pull of the repository and a full parse of all files. */ - parser?: boolean; - /** Convenience flag to trigger all resources. -Note: Despite the name, it does not currently trigger alerts and reports. */ - all?: boolean; - /** Convenience flag to trigger all resources with full refreshes for resources that support it. -Currently, only models support full refreshes. It's equivalent to passing RefreshModelTrigger.full for those models. -Note: Despite the name, it does not currently trigger alerts and reports. */ - allFull?: boolean; -}; - -export type ConnectorServiceOLAPListTablesParams = { - instanceId?: string; - /** - * Connector to list tables from. - */ - connector?: string; - /** - * Optional search pattern to filter tables by. -Has the same syntax and behavior as ILIKE in SQL. -If the connector supports schema/database names, it searches against both the plain table name and the fully qualified table name. - */ - searchPattern?: string; - pageSize?: number; - pageToken?: string; -}; diff --git a/web-common/src/runtime-client/v2/codegen/generator.spec.ts b/web-common/src/runtime-client/v2/codegen/generator.spec.ts index 3446d90686e6..bad35236103f 100644 --- a/web-common/src/runtime-client/v2/codegen/generator.spec.ts +++ b/web-common/src/runtime-client/v2/codegen/generator.spec.ts @@ -186,9 +186,14 @@ describe("requestTypes", () => { expect(responseType).toBe("V1FakeResponse"); }); - it("falls back to PartialMessage when no Orval type", () => { + it("uses the bare proto Message type for responses when no Orval type", () => { const { responseType } = requestTypes(makeCtx()); - expect(responseType).toContain("PartialMessage"); + expect(responseType).toBe("FakeResponse"); + }); + + it("falls back to PartialMessage for requests when no Orval type", () => { + const { requestType } = requestTypes(makeCtx()); + expect(requestType).toContain("PartialMessage"); }); }); @@ -198,6 +203,25 @@ describe("generateRawFunction", () => { const code = lines.join("\n"); expect(code).toContain("export async function runtimeServiceGetFoo("); expect(code).toContain("signal?: AbortSignal"); + }); + + it("passes proto requests directly and returns the message instance", () => { + // No Orval types: skip the JSON bridge entirely. + const code = generateRawFunction(makeCtx()).join("\n"); + expect(code).not.toContain("fromJson"); + expect(code).not.toContain("toJson"); + expect(code).toContain("{ instanceId: client.instanceId, ...request }"); + expect(code).toContain("return r;"); + }); + + it("bridges to and from JSON for Orval-typed methods", () => { + const ctx = makeCtx({ + orvalTypes: new Set([ + "V1FakeRequestWithInstanceId", + "V1FakeResponse", + ]), + }); + const code = generateRawFunction(ctx).join("\n"); expect(code).toContain("fromJson(stripUndefined("); expect(code).toContain("toJson({ emitDefaultValues: true })"); }); @@ -308,8 +332,17 @@ describe("generateServiceFile", () => { expect(output).toMatch(/^\/\/ Generated by codegen\/run\.ts/); }); - it("imports stripUndefined", () => { - expect(output).toContain( + it("imports stripUndefined only for Orval-typed requests", () => { + // mockService has no Orval types, so the JSON bridge is not needed. + expect(output).not.toContain( + 'import { stripUndefined } from "../strip-undefined"', + ); + + const { code } = generateServiceFile( + mockService, + new Set(["V1FakeRequestWithInstanceId"]), + ); + expect(code).toContain( 'import { stripUndefined } from "../strip-undefined"', ); }); @@ -400,8 +433,8 @@ describe("generateServiceFile", () => { }); it("imports proto response types when no Orval counterpart exists", () => { - // With no Orval types, response types must be imported from _pb.ts - // so PartialMessage resolves in TypeScript + // With no Orval types, response types are the proto Message types and + // must be imported from _pb.ts; requests use PartialMessage. expect(output).toContain("FakeResponse,"); expect(output).toContain("FakePaginatedResponse,"); expect(output).toContain("PartialMessage"); diff --git a/web-common/src/runtime-client/v2/codegen/generator.ts b/web-common/src/runtime-client/v2/codegen/generator.ts index d702d9aa65c5..9db6368072a2 100644 --- a/web-common/src/runtime-client/v2/codegen/generator.ts +++ b/web-common/src/runtime-client/v2/codegen/generator.ts @@ -109,7 +109,10 @@ function hasOrvalType( return availableOrvalTypes.has(orvalTypeName(protoTypeName)); } -/** Get the public-facing type for a request or response */ +/** + * Get the public-facing type for a request. Falls back to `PartialMessage` for + * proto types so callers can pass plain partial objects. + */ function publicType( availableOrvalTypes: Set, protoTypeName: string, @@ -119,6 +122,20 @@ function publicType( : `PartialMessage<${protoTypeName}>`; } +/** + * Get the public-facing type for a response. Falls back to the proto Message + * type (not `PartialMessage`) so callers receive a fully-typed message instance + * with its runtime helpers (e.g. `Timestamp.toDate()`, oneof selectors). + */ +function publicResponseType( + availableOrvalTypes: Set, + protoTypeName: string, +): string { + return hasOrvalType(availableOrvalTypes, protoTypeName) + ? orvalTypeName(protoTypeName) + : protoTypeName; +} + // --- Method extraction --- function extractMethods(service: ServiceDef): MethodInfo[] { @@ -195,15 +212,28 @@ function requestTypes(ctx: MethodContext) { const requestSpread = m.hasInstanceId ? `{ instanceId: client.instanceId, ...request }` : `request`; - const responseType = publicType(orvalTypes, m.outputType); + const responseType = publicResponseType(orvalTypes, m.outputType); return { requestType, requestSpread, responseType }; } function generateRawFunction(ctx: MethodContext): string[] { - const { serviceName, serviceClientProp, m } = ctx; + const { serviceName, serviceClientProp, m, orvalTypes } = ctx; const { rawFn } = methodNames(ctx); const { requestType, requestSpread, responseType } = requestTypes(ctx); + // Orval request types are JSON, so they must be parsed via fromJson (with + // undefined stripped, which fromJson rejects). Proto request types are + // PartialMessage and can be passed to the ConnectRPC client directly. + const requestArg = hasOrvalType(orvalTypes, m.inputType) + ? `${m.inputType}.fromJson(stripUndefined(${requestSpread}) as unknown as JsonValue)` + : requestSpread; + + // Orval callers expect the JSON representation; proto callers get the message + // instance directly (retaining its runtime helpers). + const returnStmt = hasOrvalType(orvalTypes, m.outputType) + ? ` return r.toJson({ emitDefaultValues: true }) as unknown as ${responseType};` + : ` return r;`; + return [ `/**`, ` * Raw RPC call: ${serviceName}.${m.methodName}`, @@ -214,10 +244,10 @@ function generateRawFunction(ctx: MethodContext): string[] { ` options?: { signal?: AbortSignal },`, `): Promise<${responseType}> {`, ` const r = await client.${serviceClientProp}.${m.methodKey}(`, - ` ${m.inputType}.fromJson(stripUndefined(${requestSpread}) as unknown as JsonValue),`, + ` ${requestArg},`, ` { signal: options?.signal },`, ` );`, - ` return r.toJson({ emitDefaultValues: true }) as unknown as ${responseType};`, + returnStmt, `}`, ``, ]; @@ -385,17 +415,23 @@ function generateServiceFile( // --- Package imports --- // @bufbuild/protobuf + // PartialMessage is used for proto request types; JsonValue is only needed + // for the fromJson bridge on Orval-typed requests. const needsPartialMessage = methods.some( - (m) => - !hasOrvalType(availableOrvalTypes, m.inputType) || - !hasOrvalType(availableOrvalTypes, m.outputType), + (m) => !hasOrvalType(availableOrvalTypes, m.inputType), ); - const bufSpecs: string[] = ["JsonValue"]; + const needsJsonBridge = methods.some((m) => + hasOrvalType(availableOrvalTypes, m.inputType), + ); + const bufSpecs: string[] = []; + if (needsJsonBridge) bufSpecs.push("JsonValue"); if (needsPartialMessage) bufSpecs.push("PartialMessage"); bufSpecs.sort(); - lines.push( - `import type { ${bufSpecs.join(", ")} } from "@bufbuild/protobuf";`, - ); + if (bufSpecs.length > 0) { + lines.push( + `import type { ${bufSpecs.join(", ")} } from "@bufbuild/protobuf";`, + ); + } // @connectrpc/connect lines.push(`import type { ConnectError } from "@connectrpc/connect";`); @@ -480,8 +516,11 @@ function generateServiceFile( lines.push(`import type { RuntimeClient } from "../runtime-client";`); // stripUndefined (proto fromJson rejects undefined values; - // Orval's HTTP client silently omitted them) - lines.push(`import { stripUndefined } from "../strip-undefined";`); + // Orval's HTTP client silently omitted them). Only needed for the fromJson + // bridge on Orval-typed requests. + if (needsJsonBridge) { + lines.push(`import { stripUndefined } from "../strip-undefined";`); + } lines.push(``); diff --git a/web-common/src/runtime-client/v2/gen/connector-service.ts b/web-common/src/runtime-client/v2/gen/connector-service.ts index 9ca2741b96e8..28bb9cf8542e 100644 --- a/web-common/src/runtime-client/v2/gen/connector-service.ts +++ b/web-common/src/runtime-client/v2/gen/connector-service.ts @@ -1,6 +1,6 @@ // Generated by codegen/run.ts — DO NOT EDIT -import type { JsonValue, PartialMessage } from "@bufbuild/protobuf"; +import type { PartialMessage } from "@bufbuild/protobuf"; import type { ConnectError } from "@connectrpc/connect"; import { createInfiniteQuery, @@ -33,7 +33,6 @@ import type { V1OLAPListTablesResponse, } from "../../gen/index.schemas"; import type { RuntimeClient } from "../runtime-client"; -import { stripUndefined } from "../strip-undefined"; /** * Raw RPC call: ConnectorService.ListBuckets @@ -44,12 +43,7 @@ export async function connectorServiceListBuckets( options?: { signal?: AbortSignal }, ): Promise { const r = await client.connectorService.listBuckets( - ListBucketsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -127,12 +121,7 @@ export async function connectorServiceListObjects( options?: { signal?: AbortSignal }, ): Promise { const r = await client.connectorService.listObjects( - ListObjectsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -210,12 +199,7 @@ export async function connectorServiceOLAPListTables( options?: { signal?: AbortSignal }, ): Promise { const r = await client.connectorService.oLAPListTables( - OLAPListTablesRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -293,12 +277,7 @@ export async function connectorServiceOLAPGetTable( options?: { signal?: AbortSignal }, ): Promise { const r = await client.connectorService.oLAPGetTable( - OLAPGetTableRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -376,12 +355,7 @@ export async function connectorServiceListDatabaseSchemas( options?: { signal?: AbortSignal }, ): Promise { const r = await client.connectorService.listDatabaseSchemas( - ListDatabaseSchemasRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -461,12 +435,7 @@ export async function connectorServiceListTables( options?: { signal?: AbortSignal }, ): Promise { const r = await client.connectorService.listTables( - ListTablesRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -537,12 +506,7 @@ export async function connectorServiceGetTable( options?: { signal?: AbortSignal }, ): Promise { const r = await client.connectorService.getTable( - GetTableRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ emitDefaultValues: true }) as unknown as V1GetTableResponse; diff --git a/web-common/src/runtime-client/v2/gen/query-service.ts b/web-common/src/runtime-client/v2/gen/query-service.ts index f5da8d9108f3..304365f4af24 100644 --- a/web-common/src/runtime-client/v2/gen/query-service.ts +++ b/web-common/src/runtime-client/v2/gen/query-service.ts @@ -15,15 +15,25 @@ import { } from "@tanstack/svelte-query"; import { ColumnCardinalityRequest, + ColumnCardinalityResponse, ColumnDescriptiveStatisticsRequest, + ColumnDescriptiveStatisticsResponse, ColumnNullCountRequest, + ColumnNullCountResponse, ColumnNumericHistogramRequest, + ColumnNumericHistogramResponse, ColumnRollupIntervalRequest, + ColumnRollupIntervalResponse, ColumnRugHistogramRequest, + ColumnRugHistogramResponse, ColumnTimeGrainRequest, + ColumnTimeGrainResponse, ColumnTimeRangeRequest, + ColumnTimeRangeResponse, ColumnTimeSeriesRequest, + ColumnTimeSeriesResponse, ColumnTopKRequest, + ColumnTopKResponse, ConvertExpressionToMetricsSQLRequest, ExportReportRequest, ExportRequest, @@ -49,26 +59,6 @@ import { TableRowsRequest, } from "../../../proto/gen/rill/runtime/v1/queries_pb"; import type { - V1ColumnCardinalityRequest, - V1ColumnCardinalityResponse, - V1ColumnDescriptiveStatisticsRequest, - V1ColumnDescriptiveStatisticsResponse, - V1ColumnNullCountRequest, - V1ColumnNullCountResponse, - V1ColumnNumericHistogramRequest, - V1ColumnNumericHistogramResponse, - V1ColumnRollupIntervalRequest, - V1ColumnRollupIntervalResponse, - V1ColumnRugHistogramRequest, - V1ColumnRugHistogramResponse, - V1ColumnTimeGrainRequest, - V1ColumnTimeGrainResponse, - V1ColumnTimeRangeRequest, - V1ColumnTimeRangeResponse, - V1ColumnTimeSeriesRequest, - V1ColumnTimeSeriesResponse, - V1ColumnTopKRequest, - V1ColumnTopKResponse, V1ConvertExpressionToMetricsSQLResponse, V1ExportReportResponse, V1ExportResponse, @@ -110,19 +100,12 @@ export async function queryServiceProjectStorage( client: RuntimeClient, request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise> { +): Promise { const r = await client.queryService.projectStorage( - ProjectStorageRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as PartialMessage; + return r; } export function getQueryServiceProjectStorageQueryKey( @@ -133,55 +116,42 @@ export function getQueryServiceProjectStorageQueryKey( } export function getQueryServiceProjectStorageQueryOptions< - TData = PartialMessage, + TData = ProjectStorageResponse, >( client: RuntimeClient, request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions< - PartialMessage, - ConnectError, - TData - > + CreateQueryOptions >; }, -): CreateQueryOptions< - PartialMessage, - ConnectError, - TData -> & { queryKey: QueryKey } { +): CreateQueryOptions & { + queryKey: QueryKey; +} { const queryKey = getQueryServiceProjectStorageQueryKey( client.instanceId, request, ); - const queryFn: QueryFunction> = ({ - signal, - }) => queryServiceProjectStorage(client, request, { signal }); + const queryFn: QueryFunction = ({ signal }) => + queryServiceProjectStorage(client, request, { signal }); return { queryKey, queryFn, enabled: !!client.instanceId, ...options?.query, - } as CreateQueryOptions< - PartialMessage, - ConnectError, - TData - > & { queryKey: QueryKey }; + } as CreateQueryOptions & { + queryKey: QueryKey; + }; } export function createQueryServiceProjectStorage< - TData = PartialMessage, + TData = ProjectStorageResponse, >( client: RuntimeClient, request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions< - PartialMessage, - ConnectError, - TData - > + CreateQueryOptions >; }, queryClient?: QueryClient, @@ -710,12 +680,7 @@ export async function queryServiceMetricsViewTimeRange( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.metricsViewTimeRange( - MetricsViewTimeRangeRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -795,12 +760,7 @@ export async function queryServiceMetricsViewSchema( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.metricsViewSchema( - MetricsViewSchemaRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -878,12 +838,7 @@ export async function queryServiceMetricsViewSearch( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.metricsViewSearch( - MetricsViewSearchRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -961,12 +916,7 @@ export async function queryServiceMetricsViewTimeRanges( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.metricsViewTimeRanges( - MetricsViewTimeRangesRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1047,12 +997,7 @@ export async function queryServiceMetricsViewAnnotations( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.metricsViewAnnotations( - MetricsViewAnnotationsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1136,12 +1081,7 @@ export async function queryServiceConvertExpressionToMetricsSQL( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.convertExpressionToMetricsSQL( - ConvertExpressionToMetricsSQLRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1241,12 +1181,7 @@ export async function queryServiceResolveCanvas( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.resolveCanvas( - ResolveCanvasRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1319,12 +1254,7 @@ export async function queryServiceResolveComponent( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.resolveComponent( - ResolveComponentRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1402,12 +1332,7 @@ export async function queryServiceResolveTemplatedString( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.resolveTemplatedString( - ResolveTemplatedStringRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1484,26 +1409,19 @@ export function createQueryServiceResolveTemplatedString< */ export async function queryServiceColumnRollupInterval( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise { +): Promise { const r = await client.queryService.columnRollupInterval( - ColumnRollupIntervalRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as V1ColumnRollupIntervalResponse; + return r; } export function getQueryServiceColumnRollupIntervalQueryKey( instanceId: string, - request?: Omit, + request?: Omit, "instanceId">, ): QueryKey { return [ "QueryService", @@ -1514,44 +1432,42 @@ export function getQueryServiceColumnRollupIntervalQueryKey( } export function getQueryServiceColumnRollupIntervalQueryOptions< - TData = V1ColumnRollupIntervalResponse, + TData = ColumnRollupIntervalResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, -): CreateQueryOptions & { +): CreateQueryOptions & { queryKey: QueryKey; } { const queryKey = getQueryServiceColumnRollupIntervalQueryKey( client.instanceId, request, ); - const queryFn: QueryFunction = ({ signal }) => + const queryFn: QueryFunction = ({ signal }) => queryServiceColumnRollupInterval(client, request, { signal }); return { queryKey, queryFn, enabled: !!client.instanceId, ...options?.query, - } as CreateQueryOptions< - V1ColumnRollupIntervalResponse, - ConnectError, - TData - > & { queryKey: QueryKey }; + } as CreateQueryOptions & { + queryKey: QueryKey; + }; } export function createQueryServiceColumnRollupInterval< - TData = V1ColumnRollupIntervalResponse, + TData = ColumnRollupIntervalResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, queryClient?: QueryClient, @@ -1569,65 +1485,58 @@ export function createQueryServiceColumnRollupInterval< */ export async function queryServiceColumnTopK( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise { +): Promise { const r = await client.queryService.columnTopK( - ColumnTopKRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as V1ColumnTopKResponse; + return r; } export function getQueryServiceColumnTopKQueryKey( instanceId: string, - request?: Omit, + request?: Omit, "instanceId">, ): QueryKey { return ["QueryService", "columnTopK", instanceId, request ?? {}] as const; } export function getQueryServiceColumnTopKQueryOptions< - TData = V1ColumnTopKResponse, + TData = ColumnTopKResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, -): CreateQueryOptions & { +): CreateQueryOptions & { queryKey: QueryKey; } { const queryKey = getQueryServiceColumnTopKQueryKey( client.instanceId, request, ); - const queryFn: QueryFunction = ({ signal }) => + const queryFn: QueryFunction = ({ signal }) => queryServiceColumnTopK(client, request, { signal }); return { queryKey, queryFn, enabled: !!client.instanceId, ...options?.query, - } as CreateQueryOptions & { + } as CreateQueryOptions & { queryKey: QueryKey; }; } -export function createQueryServiceColumnTopK( +export function createQueryServiceColumnTopK( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, queryClient?: QueryClient, @@ -1645,26 +1554,19 @@ export function createQueryServiceColumnTopK( */ export async function queryServiceColumnNullCount( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise { +): Promise { const r = await client.queryService.columnNullCount( - ColumnNullCountRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as V1ColumnNullCountResponse; + return r; } export function getQueryServiceColumnNullCountQueryKey( instanceId: string, - request?: Omit, + request?: Omit, "instanceId">, ): QueryKey { return [ "QueryService", @@ -1675,42 +1577,42 @@ export function getQueryServiceColumnNullCountQueryKey( } export function getQueryServiceColumnNullCountQueryOptions< - TData = V1ColumnNullCountResponse, + TData = ColumnNullCountResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, -): CreateQueryOptions & { +): CreateQueryOptions & { queryKey: QueryKey; } { const queryKey = getQueryServiceColumnNullCountQueryKey( client.instanceId, request, ); - const queryFn: QueryFunction = ({ signal }) => + const queryFn: QueryFunction = ({ signal }) => queryServiceColumnNullCount(client, request, { signal }); return { queryKey, queryFn, enabled: !!client.instanceId, ...options?.query, - } as CreateQueryOptions & { + } as CreateQueryOptions & { queryKey: QueryKey; }; } export function createQueryServiceColumnNullCount< - TData = V1ColumnNullCountResponse, + TData = ColumnNullCountResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, queryClient?: QueryClient, @@ -1728,26 +1630,25 @@ export function createQueryServiceColumnNullCount< */ export async function queryServiceColumnDescriptiveStatistics( client: RuntimeClient, - request: Omit, + request: Omit< + PartialMessage, + "instanceId" + >, options?: { signal?: AbortSignal }, -): Promise { +): Promise { const r = await client.queryService.columnDescriptiveStatistics( - ColumnDescriptiveStatisticsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as V1ColumnDescriptiveStatisticsResponse; + return r; } export function getQueryServiceColumnDescriptiveStatisticsQueryKey( instanceId: string, - request?: Omit, + request?: Omit< + PartialMessage, + "instanceId" + >, ): QueryKey { return [ "QueryService", @@ -1758,21 +1659,24 @@ export function getQueryServiceColumnDescriptiveStatisticsQueryKey( } export function getQueryServiceColumnDescriptiveStatisticsQueryOptions< - TData = V1ColumnDescriptiveStatisticsResponse, + TData = ColumnDescriptiveStatisticsResponse, >( client: RuntimeClient, - request: Omit, + request: Omit< + PartialMessage, + "instanceId" + >, options?: { query?: Partial< CreateQueryOptions< - V1ColumnDescriptiveStatisticsResponse, + ColumnDescriptiveStatisticsResponse, ConnectError, TData > >; }, ): CreateQueryOptions< - V1ColumnDescriptiveStatisticsResponse, + ColumnDescriptiveStatisticsResponse, ConnectError, TData > & { queryKey: QueryKey } { @@ -1780,7 +1684,7 @@ export function getQueryServiceColumnDescriptiveStatisticsQueryOptions< client.instanceId, request, ); - const queryFn: QueryFunction = ({ + const queryFn: QueryFunction = ({ signal, }) => queryServiceColumnDescriptiveStatistics(client, request, { signal }); return { @@ -1789,21 +1693,24 @@ export function getQueryServiceColumnDescriptiveStatisticsQueryOptions< enabled: !!client.instanceId, ...options?.query, } as CreateQueryOptions< - V1ColumnDescriptiveStatisticsResponse, + ColumnDescriptiveStatisticsResponse, ConnectError, TData > & { queryKey: QueryKey }; } export function createQueryServiceColumnDescriptiveStatistics< - TData = V1ColumnDescriptiveStatisticsResponse, + TData = ColumnDescriptiveStatisticsResponse, >( client: RuntimeClient, - request: Omit, + request: Omit< + PartialMessage, + "instanceId" + >, options?: { query?: Partial< CreateQueryOptions< - V1ColumnDescriptiveStatisticsResponse, + ColumnDescriptiveStatisticsResponse, ConnectError, TData > @@ -1824,26 +1731,19 @@ export function createQueryServiceColumnDescriptiveStatistics< */ export async function queryServiceColumnTimeGrain( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise { +): Promise { const r = await client.queryService.columnTimeGrain( - ColumnTimeGrainRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as V1ColumnTimeGrainResponse; + return r; } export function getQueryServiceColumnTimeGrainQueryKey( instanceId: string, - request?: Omit, + request?: Omit, "instanceId">, ): QueryKey { return [ "QueryService", @@ -1854,42 +1754,42 @@ export function getQueryServiceColumnTimeGrainQueryKey( } export function getQueryServiceColumnTimeGrainQueryOptions< - TData = V1ColumnTimeGrainResponse, + TData = ColumnTimeGrainResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, -): CreateQueryOptions & { +): CreateQueryOptions & { queryKey: QueryKey; } { const queryKey = getQueryServiceColumnTimeGrainQueryKey( client.instanceId, request, ); - const queryFn: QueryFunction = ({ signal }) => + const queryFn: QueryFunction = ({ signal }) => queryServiceColumnTimeGrain(client, request, { signal }); return { queryKey, queryFn, enabled: !!client.instanceId, ...options?.query, - } as CreateQueryOptions & { + } as CreateQueryOptions & { queryKey: QueryKey; }; } export function createQueryServiceColumnTimeGrain< - TData = V1ColumnTimeGrainResponse, + TData = ColumnTimeGrainResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, queryClient?: QueryClient, @@ -1907,26 +1807,19 @@ export function createQueryServiceColumnTimeGrain< */ export async function queryServiceColumnNumericHistogram( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise { +): Promise { const r = await client.queryService.columnNumericHistogram( - ColumnNumericHistogramRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as V1ColumnNumericHistogramResponse; + return r; } export function getQueryServiceColumnNumericHistogramQueryKey( instanceId: string, - request?: Omit, + request?: Omit, "instanceId">, ): QueryKey { return [ "QueryService", @@ -1937,45 +1830,44 @@ export function getQueryServiceColumnNumericHistogramQueryKey( } export function getQueryServiceColumnNumericHistogramQueryOptions< - TData = V1ColumnNumericHistogramResponse, + TData = ColumnNumericHistogramResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, -): CreateQueryOptions & { +): CreateQueryOptions & { queryKey: QueryKey; } { const queryKey = getQueryServiceColumnNumericHistogramQueryKey( client.instanceId, request, ); - const queryFn: QueryFunction = ({ - signal, - }) => queryServiceColumnNumericHistogram(client, request, { signal }); + const queryFn: QueryFunction = ({ signal }) => + queryServiceColumnNumericHistogram(client, request, { signal }); return { queryKey, queryFn, enabled: !!client.instanceId, ...options?.query, } as CreateQueryOptions< - V1ColumnNumericHistogramResponse, + ColumnNumericHistogramResponse, ConnectError, TData > & { queryKey: QueryKey }; } export function createQueryServiceColumnNumericHistogram< - TData = V1ColumnNumericHistogramResponse, + TData = ColumnNumericHistogramResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, queryClient?: QueryClient, @@ -1993,26 +1885,19 @@ export function createQueryServiceColumnNumericHistogram< */ export async function queryServiceColumnRugHistogram( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise { +): Promise { const r = await client.queryService.columnRugHistogram( - ColumnRugHistogramRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as V1ColumnRugHistogramResponse; + return r; } export function getQueryServiceColumnRugHistogramQueryKey( instanceId: string, - request?: Omit, + request?: Omit, "instanceId">, ): QueryKey { return [ "QueryService", @@ -2023,42 +1908,42 @@ export function getQueryServiceColumnRugHistogramQueryKey( } export function getQueryServiceColumnRugHistogramQueryOptions< - TData = V1ColumnRugHistogramResponse, + TData = ColumnRugHistogramResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, -): CreateQueryOptions & { +): CreateQueryOptions & { queryKey: QueryKey; } { const queryKey = getQueryServiceColumnRugHistogramQueryKey( client.instanceId, request, ); - const queryFn: QueryFunction = ({ signal }) => + const queryFn: QueryFunction = ({ signal }) => queryServiceColumnRugHistogram(client, request, { signal }); return { queryKey, queryFn, enabled: !!client.instanceId, ...options?.query, - } as CreateQueryOptions & { + } as CreateQueryOptions & { queryKey: QueryKey; }; } export function createQueryServiceColumnRugHistogram< - TData = V1ColumnRugHistogramResponse, + TData = ColumnRugHistogramResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, queryClient?: QueryClient, @@ -2076,26 +1961,19 @@ export function createQueryServiceColumnRugHistogram< */ export async function queryServiceColumnTimeRange( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise { +): Promise { const r = await client.queryService.columnTimeRange( - ColumnTimeRangeRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as V1ColumnTimeRangeResponse; + return r; } export function getQueryServiceColumnTimeRangeQueryKey( instanceId: string, - request?: Omit, + request?: Omit, "instanceId">, ): QueryKey { return [ "QueryService", @@ -2106,42 +1984,42 @@ export function getQueryServiceColumnTimeRangeQueryKey( } export function getQueryServiceColumnTimeRangeQueryOptions< - TData = V1ColumnTimeRangeResponse, + TData = ColumnTimeRangeResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, -): CreateQueryOptions & { +): CreateQueryOptions & { queryKey: QueryKey; } { const queryKey = getQueryServiceColumnTimeRangeQueryKey( client.instanceId, request, ); - const queryFn: QueryFunction = ({ signal }) => + const queryFn: QueryFunction = ({ signal }) => queryServiceColumnTimeRange(client, request, { signal }); return { queryKey, queryFn, enabled: !!client.instanceId, ...options?.query, - } as CreateQueryOptions & { + } as CreateQueryOptions & { queryKey: QueryKey; }; } export function createQueryServiceColumnTimeRange< - TData = V1ColumnTimeRangeResponse, + TData = ColumnTimeRangeResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, queryClient?: QueryClient, @@ -2159,26 +2037,19 @@ export function createQueryServiceColumnTimeRange< */ export async function queryServiceColumnCardinality( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise { +): Promise { const r = await client.queryService.columnCardinality( - ColumnCardinalityRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as V1ColumnCardinalityResponse; + return r; } export function getQueryServiceColumnCardinalityQueryKey( instanceId: string, - request?: Omit, + request?: Omit, "instanceId">, ): QueryKey { return [ "QueryService", @@ -2189,42 +2060,42 @@ export function getQueryServiceColumnCardinalityQueryKey( } export function getQueryServiceColumnCardinalityQueryOptions< - TData = V1ColumnCardinalityResponse, + TData = ColumnCardinalityResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, -): CreateQueryOptions & { +): CreateQueryOptions & { queryKey: QueryKey; } { const queryKey = getQueryServiceColumnCardinalityQueryKey( client.instanceId, request, ); - const queryFn: QueryFunction = ({ signal }) => + const queryFn: QueryFunction = ({ signal }) => queryServiceColumnCardinality(client, request, { signal }); return { queryKey, queryFn, enabled: !!client.instanceId, ...options?.query, - } as CreateQueryOptions & { + } as CreateQueryOptions & { queryKey: QueryKey; }; } export function createQueryServiceColumnCardinality< - TData = V1ColumnCardinalityResponse, + TData = ColumnCardinalityResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, queryClient?: QueryClient, @@ -2242,26 +2113,19 @@ export function createQueryServiceColumnCardinality< */ export async function queryServiceColumnTimeSeries( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise { +): Promise { const r = await client.queryService.columnTimeSeries( - ColumnTimeSeriesRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as V1ColumnTimeSeriesResponse; + return r; } export function getQueryServiceColumnTimeSeriesQueryKey( instanceId: string, - request?: Omit, + request?: Omit, "instanceId">, ): QueryKey { return [ "QueryService", @@ -2272,42 +2136,42 @@ export function getQueryServiceColumnTimeSeriesQueryKey( } export function getQueryServiceColumnTimeSeriesQueryOptions< - TData = V1ColumnTimeSeriesResponse, + TData = ColumnTimeSeriesResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, -): CreateQueryOptions & { +): CreateQueryOptions & { queryKey: QueryKey; } { const queryKey = getQueryServiceColumnTimeSeriesQueryKey( client.instanceId, request, ); - const queryFn: QueryFunction = ({ signal }) => + const queryFn: QueryFunction = ({ signal }) => queryServiceColumnTimeSeries(client, request, { signal }); return { queryKey, queryFn, enabled: !!client.instanceId, ...options?.query, - } as CreateQueryOptions & { + } as CreateQueryOptions & { queryKey: QueryKey; }; } export function createQueryServiceColumnTimeSeries< - TData = V1ColumnTimeSeriesResponse, + TData = ColumnTimeSeriesResponse, >( client: RuntimeClient, - request: Omit, + request: Omit, "instanceId">, options?: { query?: Partial< - CreateQueryOptions + CreateQueryOptions >; }, queryClient?: QueryClient, @@ -2561,12 +2425,7 @@ export async function queryServiceQuery( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.query( - QueryRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ emitDefaultValues: true }) as unknown as V1QueryResponse; @@ -2620,12 +2479,7 @@ export async function queryServiceExport( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.export( - ExportRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ emitDefaultValues: true }) as unknown as V1ExportResponse; @@ -2679,12 +2533,7 @@ export async function queryServiceExportReport( options?: { signal?: AbortSignal }, ): Promise { const r = await client.queryService.exportReport( - ExportReportRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ diff --git a/web-common/src/runtime-client/v2/gen/runtime-service.ts b/web-common/src/runtime-client/v2/gen/runtime-service.ts index e76af338fc69..0101a1a062a0 100644 --- a/web-common/src/runtime-client/v2/gen/runtime-service.ts +++ b/web-common/src/runtime-client/v2/gen/runtime-service.ts @@ -129,10 +129,9 @@ export async function runtimeServicePing( request: PartialMessage, options?: { signal?: AbortSignal }, ): Promise { - const r = await client.runtimeService.ping( - PingRequest.fromJson(stripUndefined(request) as unknown as JsonValue), - { signal: options?.signal }, - ); + const r = await client.runtimeService.ping(request, { + signal: options?.signal, + }); return r.toJson({ emitDefaultValues: true }) as unknown as V1PingResponse; } @@ -189,10 +188,9 @@ export async function runtimeServiceHealth( request: PartialMessage, options?: { signal?: AbortSignal }, ): Promise { - const r = await client.runtimeService.health( - HealthRequest.fromJson(stripUndefined(request) as unknown as JsonValue), - { signal: options?.signal }, - ); + const r = await client.runtimeService.health(request, { + signal: options?.signal, + }); return r.toJson({ emitDefaultValues: true }) as unknown as V1HealthResponse; } @@ -250,12 +248,7 @@ export async function runtimeServiceInstanceHealth( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.instanceHealth( - InstanceHealthRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -332,12 +325,9 @@ export async function runtimeServiceListInstances( request: PartialMessage, options?: { signal?: AbortSignal }, ): Promise { - const r = await client.runtimeService.listInstances( - ListInstancesRequest.fromJson( - stripUndefined(request) as unknown as JsonValue, - ), - { signal: options?.signal }, - ); + const r = await client.runtimeService.listInstances(request, { + signal: options?.signal, + }); return r.toJson({ emitDefaultValues: true, }) as unknown as V1ListInstancesResponse; @@ -413,12 +403,7 @@ export async function runtimeServiceGetInstance( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.getInstance( - GetInstanceRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -489,12 +474,7 @@ export async function runtimeServiceListFiles( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.listFiles( - ListFilesRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -565,12 +545,7 @@ export async function runtimeServiceGetFile( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.getFile( - GetFileRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ emitDefaultValues: true }) as unknown as V1GetFileResponse; @@ -629,12 +604,9 @@ export async function runtimeServiceListExamples( request: PartialMessage, options?: { signal?: AbortSignal }, ): Promise { - const r = await client.runtimeService.listExamples( - ListExamplesRequest.fromJson( - stripUndefined(request) as unknown as JsonValue, - ), - { signal: options?.signal }, - ); + const r = await client.runtimeService.listExamples(request, { + signal: options?.signal, + }); return r.toJson({ emitDefaultValues: true, }) as unknown as V1ListExamplesResponse; @@ -705,12 +677,7 @@ export async function runtimeServiceQueryResolver( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.queryResolver( - QueryResolverRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -788,12 +755,7 @@ export async function runtimeServiceGetLogs( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.getLogs( - GetLogsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ emitDefaultValues: true }) as unknown as V1GetLogsResponse; @@ -853,12 +815,7 @@ export async function runtimeServiceListResources( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.listResources( - ListResourcesRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -936,12 +893,7 @@ export async function runtimeServiceGetResource( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.getResource( - GetResourceRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1012,12 +964,7 @@ export async function runtimeServiceGetExplore( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.getExplore( - GetExploreRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1088,12 +1035,7 @@ export async function runtimeServiceGetModelPartitions( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.getModelPartitions( - GetModelPartitionsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1170,12 +1112,9 @@ export async function runtimeServiceListConnectorDrivers( request: PartialMessage, options?: { signal?: AbortSignal }, ): Promise { - const r = await client.runtimeService.listConnectorDrivers( - ListConnectorDriversRequest.fromJson( - stripUndefined(request) as unknown as JsonValue, - ), - { signal: options?.signal }, - ); + const r = await client.runtimeService.listConnectorDrivers(request, { + signal: options?.signal, + }); return r.toJson({ emitDefaultValues: true, }) as unknown as V1ListConnectorDriversResponse; @@ -1253,12 +1192,7 @@ export async function runtimeServiceAnalyzeConnectors( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.analyzeConnectors( - AnalyzeConnectorsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1336,12 +1270,7 @@ export async function runtimeServiceListNotifierConnectors( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.listNotifierConnectors( - ListNotifierConnectorsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1422,12 +1351,7 @@ export async function runtimeServiceListConversations( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.listConversations( - ListConversationsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1505,12 +1429,7 @@ export async function runtimeServiceGetConversation( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.getConversation( - GetConversationRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1588,12 +1507,7 @@ export async function runtimeServiceListTools( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.listTools( - ListToolsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1664,12 +1578,7 @@ export async function runtimeServiceGetAIMessage( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.getAIMessage( - GetAIMessageRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1815,12 +1724,7 @@ export async function runtimeServiceAnalyzeVariables( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.analyzeVariables( - AnalyzeVariablesRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1898,12 +1802,7 @@ export async function runtimeServiceListGitCommits( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.listGitCommits( - ListGitCommitsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -1981,12 +1880,7 @@ export async function runtimeServiceGitStatus( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.gitStatus( - GitStatusRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -2055,19 +1949,12 @@ export async function runtimeServiceGitDiff( client: RuntimeClient, request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise> { +): Promise { const r = await client.runtimeService.gitDiff( - GitDiffRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as PartialMessage; + return r; } export function getRuntimeServiceGitDiffQueryKey( @@ -2077,44 +1964,33 @@ export function getRuntimeServiceGitDiffQueryKey( return ["RuntimeService", "gitDiff", instanceId, request ?? {}] as const; } -export function getRuntimeServiceGitDiffQueryOptions< - TData = PartialMessage, ->( +export function getRuntimeServiceGitDiffQueryOptions( client: RuntimeClient, request: Omit, "instanceId">, options?: { - query?: Partial< - CreateQueryOptions, ConnectError, TData> - >; + query?: Partial>; }, -): CreateQueryOptions, ConnectError, TData> & { +): CreateQueryOptions & { queryKey: QueryKey; } { const queryKey = getRuntimeServiceGitDiffQueryKey(client.instanceId, request); - const queryFn: QueryFunction> = ({ - signal, - }) => runtimeServiceGitDiff(client, request, { signal }); + const queryFn: QueryFunction = ({ signal }) => + runtimeServiceGitDiff(client, request, { signal }); return { queryKey, queryFn, enabled: !!client.instanceId, ...options?.query, - } as CreateQueryOptions< - PartialMessage, - ConnectError, - TData - > & { queryKey: QueryKey }; + } as CreateQueryOptions & { + queryKey: QueryKey; + }; } -export function createRuntimeServiceGitDiff< - TData = PartialMessage, ->( +export function createRuntimeServiceGitDiff( client: RuntimeClient, request: Omit, "instanceId">, options?: { - query?: Partial< - CreateQueryOptions, ConnectError, TData> - >; + query?: Partial>; }, queryClient?: QueryClient, ): CreateQueryResult { @@ -2135,12 +2011,7 @@ export async function runtimeServiceListGitBranches( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.listGitBranches( - ListGitBranchesRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -2482,12 +2353,7 @@ export async function runtimeServiceReloadConfig( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.reloadConfig( - ReloadConfigRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -2546,12 +2412,7 @@ export async function runtimeServicePutFile( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.putFile( - PutFileRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ emitDefaultValues: true }) as unknown as V1PutFileResponse; @@ -2608,12 +2469,7 @@ export async function runtimeServiceCreateDirectory( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.createDirectory( - CreateDirectoryRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -2672,12 +2528,7 @@ export async function runtimeServiceDeleteFile( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.deleteFile( - DeleteFileRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -2736,12 +2587,7 @@ export async function runtimeServiceRenameFile( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.renameFile( - RenameFileRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -2800,12 +2646,7 @@ export async function runtimeServiceUnpackExample( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.unpackExample( - UnpackExampleRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -2864,12 +2705,7 @@ export async function runtimeServiceUnpackEmpty( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.unpackEmpty( - UnpackEmptyRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -2928,12 +2764,7 @@ export async function runtimeServiceGenerateMetricsViewFile( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.generateMetricsViewFile( - GenerateMetricsViewFileRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -2991,12 +2822,7 @@ export async function runtimeServiceGenerateCanvasFile( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.generateCanvasFile( - GenerateCanvasFileRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -3053,32 +2879,25 @@ export async function runtimeServiceSkipModelPartitions( client: RuntimeClient, request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise> { +): Promise { const r = await client.runtimeService.skipModelPartitions( - SkipModelPartitionsRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as PartialMessage; + return r; } export function getRuntimeServiceSkipModelPartitionsMutationOptions( client: RuntimeClient, options?: Partial< CreateMutationOptions< - PartialMessage, + SkipModelPartitionsResponse, unknown, Omit, "instanceId"> > >, ): CreateMutationOptions< - PartialMessage, + SkipModelPartitionsResponse, unknown, Omit, "instanceId"> > { @@ -3092,14 +2911,14 @@ export function createRuntimeServiceSkipModelPartitionsMutation( client: RuntimeClient, options?: Partial< CreateMutationOptions< - PartialMessage, + SkipModelPartitionsResponse, unknown, Omit, "instanceId"> > >, queryClient?: QueryClient, ): CreateMutationResult< - PartialMessage, + SkipModelPartitionsResponse, unknown, Omit, "instanceId"> > { @@ -3119,12 +2938,7 @@ export async function runtimeServiceCreateTrigger( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.createTrigger( - CreateTriggerRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -3183,12 +2997,7 @@ export async function runtimeServiceShareConversation( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.shareConversation( - ShareConversationRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -3247,12 +3056,7 @@ export async function runtimeServiceForkConversation( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.forkConversation( - ForkConversationRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -3311,12 +3115,7 @@ export async function runtimeServiceComplete( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.complete( - CompleteRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ emitDefaultValues: true }) as unknown as V1CompleteResponse; @@ -3373,12 +3172,7 @@ export async function runtimeServiceGitCommit( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.gitCommit( - GitCommitRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -3437,12 +3231,7 @@ export async function runtimeServiceRestoreGitCommit( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.restoreGitCommit( - RestoreGitCommitRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -3501,12 +3290,7 @@ export async function runtimeServiceGitMergeToBranch( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.gitMergeToBranch( - GitMergeToBranchRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -3565,12 +3349,7 @@ export async function runtimeServiceGitSwitchBranch( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.gitSwitchBranch( - GitSwitchBranchRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ @@ -3629,12 +3408,7 @@ export async function runtimeServiceGitPull( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.gitPull( - GitPullRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ emitDefaultValues: true }) as unknown as V1GitPullResponse; @@ -3691,12 +3465,7 @@ export async function runtimeServiceGitPush( options?: { signal?: AbortSignal }, ): Promise { const r = await client.runtimeService.gitPush( - GitPushRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); return r.toJson({ emitDefaultValues: true }) as unknown as V1GitPushResponse; @@ -3751,32 +3520,25 @@ export async function runtimeServicePushEnv( client: RuntimeClient, request: Omit, "instanceId">, options?: { signal?: AbortSignal }, -): Promise> { +): Promise { const r = await client.runtimeService.pushEnv( - PushEnvRequest.fromJson( - stripUndefined({ - instanceId: client.instanceId, - ...request, - }) as unknown as JsonValue, - ), + { instanceId: client.instanceId, ...request }, { signal: options?.signal }, ); - return r.toJson({ - emitDefaultValues: true, - }) as unknown as PartialMessage; + return r; } export function getRuntimeServicePushEnvMutationOptions( client: RuntimeClient, options?: Partial< CreateMutationOptions< - PartialMessage, + PushEnvResponse, unknown, Omit, "instanceId"> > >, ): CreateMutationOptions< - PartialMessage, + PushEnvResponse, unknown, Omit, "instanceId"> > { @@ -3790,14 +3552,14 @@ export function createRuntimeServicePushEnvMutation( client: RuntimeClient, options?: Partial< CreateMutationOptions< - PartialMessage, + PushEnvResponse, unknown, Omit, "instanceId"> > >, queryClient?: QueryClient, ): CreateMutationResult< - PartialMessage, + PushEnvResponse, unknown, Omit, "instanceId"> > {