diff --git a/.prettierignore b/.prettierignore index d796a054..d7c804d0 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,3 @@ # autogenerated file -packages/api-client/src/openapi.d.ts +packages/types/src/openapi.d.ts packages/apps/gateway/src/worker.d.ts diff --git a/packages/cli/src/commands/list.ts b/packages/cli/src/commands/list.ts index 41a6ba0b..f666b7fa 100644 --- a/packages/cli/src/commands/list.ts +++ b/packages/cli/src/commands/list.ts @@ -1,4 +1,4 @@ -import type { Deployment } from '@agentic/platform-api-client' +import type { Deployment } from '@agentic/platform-types' import { parseFaasIdentifier } from '@agentic/platform-validators' import { Command } from 'commander' import { oraPromise } from 'ora' diff --git a/packages/cli/src/lib/resolve-deployment.ts b/packages/cli/src/lib/resolve-deployment.ts index 45413d6a..9131c012 100644 --- a/packages/cli/src/lib/resolve-deployment.ts +++ b/packages/cli/src/lib/resolve-deployment.ts @@ -1,4 +1,5 @@ -import type { AgenticApiClient, Deployment } from '@agentic/platform-api-client' +import type { AgenticApiClient } from '@agentic/platform-api-client' +import type { Deployment } from '@agentic/platform-types' import { AuthStore } from './auth-store' import { loadAgenticConfig } from './load-agentic-config' diff --git a/packages/cli/src/lib/utils.ts b/packages/cli/src/lib/utils.ts index 18771334..317fa29e 100644 --- a/packages/cli/src/lib/utils.ts +++ b/packages/cli/src/lib/utils.ts @@ -1,4 +1,4 @@ -import type { Deployment } from '@agentic/platform-api-client' +import type { Deployment } from '@agentic/platform-types' export function pruneDeployment( deployment: Deployment, @@ -13,6 +13,7 @@ export function pruneDeployment( if (d.originAdapter?.type === 'openapi') { d.originAdapter.spec = '' + d.originAdapter.toolToOperationMap = '' as any } return d diff --git a/packages/platform/src/parse-agentic-project-config.ts b/packages/platform/src/parse-agentic-project-config.ts index a819952c..32d051eb 100644 --- a/packages/platform/src/parse-agentic-project-config.ts +++ b/packages/platform/src/parse-agentic-project-config.ts @@ -2,7 +2,9 @@ import type { z, ZodTypeDef } from 'zod' import { parseZodSchema } from '@agentic/platform-core' import { type AgenticProjectConfig, - agenticProjectConfigSchema + agenticProjectConfigSchema, + type ResolvedAgenticProjectConfig, + resolvedAgenticProjectConfigSchema } from '@agentic/platform-types' /** @@ -29,3 +31,28 @@ export function parseAgenticProjectConfig( inputConfig ) as AgenticProjectConfig } + +/** + * @internal + */ +export function parseResolvedAgenticProjectConfig( + inputConfig: unknown, + { strip = false, strict = false }: { strip?: boolean; strict?: boolean } = {} +): ResolvedAgenticProjectConfig { + // NOTE: The extra typing and cast here are necessary because we're + // overriding the default zod types for some fields (e.g. `pricingPlans`) in + // order to get stricter TypeScript types than what zod v3 allows (nested + // discrimianted unions). This should be removed once we upgrade to zod v4. + return parseZodSchema< + z.infer, + ZodTypeDef, + z.input + >( + strip + ? resolvedAgenticProjectConfigSchema.strip() + : strict + ? resolvedAgenticProjectConfigSchema.strict() + : resolvedAgenticProjectConfigSchema, + inputConfig + ) as ResolvedAgenticProjectConfig +} diff --git a/packages/platform/src/resolve-agentic-project-config.ts b/packages/platform/src/resolve-agentic-project-config.ts index a6f59c1d..0b722576 100644 --- a/packages/platform/src/resolve-agentic-project-config.ts +++ b/packages/platform/src/resolve-agentic-project-config.ts @@ -1,11 +1,13 @@ -import { type Logger, parseZodSchema } from '@agentic/platform-core' -import { - type AgenticProjectConfig, - agenticProjectConfigSchema, - type ResolvedAgenticProjectConfig, - resolvedAgenticProjectConfigSchema +import type { Logger } from '@agentic/platform-core' +import type { + AgenticProjectConfig, + ResolvedAgenticProjectConfig } from '@agentic/platform-types' +import { + parseAgenticProjectConfig, + parseResolvedAgenticProjectConfig +} from './parse-agentic-project-config' import { resolveMetadata } from './resolve-metadata' import { resolveOriginAdapter } from './resolve-origin-adapter' import { validatePricing } from './validate-pricing' @@ -15,7 +17,7 @@ export async function resolveAgenticProjectConfig( inputConfig: AgenticProjectConfig, opts: { logger?: Logger; cwd?: URL; label?: string } = {} ): Promise { - const config = parseZodSchema(agenticProjectConfigSchema.strip(), inputConfig) + const config = parseAgenticProjectConfig(inputConfig) const { name, version } = resolveMetadata(config) validatePricing(config) @@ -29,7 +31,7 @@ export async function resolveAgenticProjectConfig( originAdapter: config.originAdapter }) - const resolvedConfig = parseZodSchema(resolvedAgenticProjectConfigSchema, { + const resolvedConfig = parseResolvedAgenticProjectConfig({ ...config, name, version,