@leaflow/sdk 0.141.0 → 0.142.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canopy/v1/generated/functions.d.ts +66 -1
- package/dist/canopy/v1/generated/functions.js +67 -0
- package/dist/canopy/v1/generated/models.d.ts +141 -9
- package/dist/canopy/v1/generated/models.js +24 -0
- package/dist/canopy/v1/generated/schemas.zod.d.ts +27 -0
- package/dist/canopy/v1/generated/schemas.zod.js +18 -0
- package/dist/canopy/v1/generated/validators/cursorPageRequestResource.zod.d.ts +9 -0
- package/dist/canopy/v1/generated/validators/endpointCapabilities.zod.d.ts +50 -0
- package/dist/canopy/v1/generated/validators/endpointCapabilities.zod.js +39 -0
- package/dist/canopy/v1/generated/validators/modality.zod.d.ts +43 -0
- package/dist/canopy/v1/generated/validators/modality.zod.js +34 -0
- package/dist/canopy/v1/generated/validators/model.zod.d.ts +44 -4
- package/dist/canopy/v1/generated/validators/model.zod.js +19 -4
- package/dist/canopy/v1/generated/validators/modelCapabilities.zod.d.ts +50 -0
- package/dist/canopy/v1/generated/validators/modelCapabilities.zod.js +37 -0
- package/dist/canopy/v1/generated/validators/modelEndpoint.zod.d.ts +46 -0
- package/dist/canopy/v1/generated/validators/modelEndpoint.zod.js +44 -0
- package/dist/canopy/v1/generated/validators/modelList.zod.d.ts +44 -4
- package/dist/canopy/v1/generated/validators/modelListResponseBody.zod.d.ts +44 -4
- package/dist/canopy/v1/generated/validators/modelResource.zod.d.ts +44 -4
- package/dist/canopy/v1/generated/validators/modelResource.zod.js +19 -6
- package/dist/canopy/v1/generated/validators/reasoningCapabilities.zod.d.ts +48 -0
- package/dist/canopy/v1/generated/validators/reasoningCapabilities.zod.js +51 -0
- package/dist/canopy/v1/generated/validators/reasoningDiagnostics.zod.d.ts +44 -0
- package/dist/canopy/v1/generated/validators/reasoningDiagnostics.zod.js +38 -0
- package/dist/canopy/v1/generated/validators/requestResource.zod.d.ts +9 -0
- package/dist/canopy/v1/generated/validators/requestResource.zod.js +2 -0
- package/dist/canopy/v1/generated/validators/responseCreate.zod.d.ts +48 -0
- package/dist/canopy/v1/generated/validators/responseCreate.zod.js +48 -0
- package/dist/canopy/v1/generated/validators/responseDeleted.zod.d.ts +40 -0
- package/dist/canopy/v1/generated/validators/responseDeleted.zod.js +38 -0
- package/dist/canopy/v1/generated/validators/responseResource.zod.d.ts +36 -0
- package/dist/canopy/v1/generated/validators/responseResource.zod.js +34 -0
- package/dist/routes.d.ts +24 -0
- package/dist/routes.js +27 -0
- package/package.json +1 -1
|
@@ -39,10 +39,50 @@ export declare const Model: zod.ZodObject<{
|
|
|
39
39
|
display_name: zod.ZodString;
|
|
40
40
|
context_length: zod.ZodInt;
|
|
41
41
|
max_output_tokens: zod.ZodInt;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
developer: zod.ZodString;
|
|
43
|
+
description: zod.ZodString;
|
|
44
|
+
input_modalities: zod.ZodNullable<zod.ZodArray<zod.ZodEnum<{
|
|
45
|
+
file: "file";
|
|
46
|
+
text: "text";
|
|
47
|
+
image: "image";
|
|
48
|
+
audio: "audio";
|
|
49
|
+
video: "video";
|
|
50
|
+
embedding: "embedding";
|
|
51
|
+
}>>>;
|
|
52
|
+
output_modalities: zod.ZodNullable<zod.ZodArray<zod.ZodEnum<{
|
|
53
|
+
file: "file";
|
|
54
|
+
text: "text";
|
|
55
|
+
image: "image";
|
|
56
|
+
audio: "audio";
|
|
57
|
+
video: "video";
|
|
58
|
+
embedding: "embedding";
|
|
59
|
+
}>>>;
|
|
60
|
+
capabilities: zod.ZodRecord<zod.ZodString, zod.ZodObject<{
|
|
61
|
+
function_calling: zod.ZodNullable<zod.ZodBoolean>;
|
|
62
|
+
structured_output: zod.ZodNullable<zod.ZodBoolean>;
|
|
63
|
+
reasoning: zod.ZodUnion<readonly [zod.ZodObject<{
|
|
64
|
+
supported: zod.ZodBoolean;
|
|
65
|
+
effort_levels: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
66
|
+
default_effort: zod.ZodNullable<zod.ZodString>;
|
|
67
|
+
modes: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
68
|
+
budget_tokens: zod.ZodNullable<zod.ZodObject<{
|
|
69
|
+
min: zod.ZodInt;
|
|
70
|
+
max: zod.ZodInt;
|
|
71
|
+
}, zod.z.core.$strict>>;
|
|
72
|
+
summary: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
73
|
+
}, zod.z.core.$strict>, zod.ZodNull]>;
|
|
74
|
+
}, zod.z.core.$strict>>;
|
|
75
|
+
supported_endpoints: zod.ZodArray<zod.ZodEnum<{
|
|
76
|
+
"/v1/chat/completions": "/v1/chat/completions";
|
|
77
|
+
"/v1/responses": "/v1/responses";
|
|
78
|
+
"/v1/embeddings": "/v1/embeddings";
|
|
79
|
+
"/v1/images/generations": "/v1/images/generations";
|
|
80
|
+
"/v1/images/edits": "/v1/images/edits";
|
|
81
|
+
"/v1/audio/transcriptions": "/v1/audio/transcriptions";
|
|
82
|
+
"/v1/audio/translations": "/v1/audio/translations";
|
|
83
|
+
"/v1/audio/speech": "/v1/audio/speech";
|
|
84
|
+
"/v1/realtime": "/v1/realtime";
|
|
85
|
+
}>>;
|
|
46
86
|
}, zod.z.core.$strict>;
|
|
47
87
|
export type Model = zod.input<typeof Model>;
|
|
48
88
|
export type ModelOutput = zod.output<typeof Model>;
|
|
@@ -31,6 +31,9 @@
|
|
|
31
31
|
* OpenAPI spec version: 1.0.0
|
|
32
32
|
*/
|
|
33
33
|
import * as zod from "zod";
|
|
34
|
+
import { Modality } from "./modality.zod.js";
|
|
35
|
+
import { ModelCapabilities } from "./modelCapabilities.zod.js";
|
|
36
|
+
import { ModelEndpoint } from "./modelEndpoint.zod.js";
|
|
34
37
|
export const Model = zod.strictObject({
|
|
35
38
|
id: zod.string(),
|
|
36
39
|
object: zod.literal("model"),
|
|
@@ -39,8 +42,20 @@ export const Model = zod.strictObject({
|
|
|
39
42
|
display_name: zod.string(),
|
|
40
43
|
context_length: zod.int(),
|
|
41
44
|
max_output_tokens: zod.int(),
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
developer: zod
|
|
46
|
+
.string()
|
|
47
|
+
.describe("The model developer; not the upstream provider or model family."),
|
|
48
|
+
description: zod.string(),
|
|
49
|
+
input_modalities: zod
|
|
50
|
+
.array(Modality)
|
|
51
|
+
.nullable()
|
|
52
|
+
.describe("Accepted input modalities. Null means unknown."),
|
|
53
|
+
output_modalities: zod
|
|
54
|
+
.array(Modality)
|
|
55
|
+
.nullable()
|
|
56
|
+
.describe("Produced output modalities. Image input does not imply image generation."),
|
|
57
|
+
capabilities: ModelCapabilities,
|
|
58
|
+
supported_endpoints: zod
|
|
59
|
+
.array(ModelEndpoint)
|
|
60
|
+
.describe("Explicitly supported API endpoints. Requests to any other endpoint are rejected before upstream admission."),
|
|
46
61
|
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow Canopy API
|
|
5
|
+
* Canopy model inference, API keys, model catalogue, service enablement and recorded usage.
|
|
6
|
+
*
|
|
7
|
+
* OpenAI-compatible project inference is served on this host at `/v1/chat/completions`,
|
|
8
|
+
* `/v1/embeddings`, `/v1/models` and `/v1/models/{model}`. Use `https://canopy.leaflow.cloud/v1`
|
|
9
|
+
* as the OpenAI SDK base URL. Chat completions support `stream=true` SSE.
|
|
10
|
+
*
|
|
11
|
+
* Management operations use `/api/v1`. The management model catalogue includes pricing;
|
|
12
|
+
* `/v1/models` returns the OpenAI model format with Canopy capabilities and parameter limits.
|
|
13
|
+
*
|
|
14
|
+
* ## Authentication
|
|
15
|
+
*
|
|
16
|
+
* Every request carries a scoped token; see the `bearerAuth` security scheme.
|
|
17
|
+
*
|
|
18
|
+
* Management and project inference accept the same verified IAM scoped token. The token is the
|
|
19
|
+
* sole billing project authority; `OpenAI-Project` and historical identity headers cannot
|
|
20
|
+
* override it. These endpoints do not accept a Canopy API key. The separate API-key gateway
|
|
21
|
+
* accepts Canopy API keys and supports OpenAI, Anthropic and Gemini request formats.
|
|
22
|
+
*
|
|
23
|
+
* ## Conventions
|
|
24
|
+
*
|
|
25
|
+
* - **The plaintext of an API key is returned once.** The `secret` appears in the response that issues it and is returned by no other endpoint. A key that has been lost has to be revoked and reissued.
|
|
26
|
+
* - **Disabling and revoking are distinct.** A disabled key may be enabled again at any time, while a revocation is irreversible and is intended for a key that has been exposed. Neither removes the record, and the usage the key accrued remains readable.
|
|
27
|
+
* - **A usage query must carry a time range**, spanning no more than 31 days. `from` and `to` carry a timezone offset, which the server does not infer.
|
|
28
|
+
* - **The request and response bodies do not appear in the ledger.** They are not recorded. Quote the `upstream_request_id` from the response when reporting a problem.
|
|
29
|
+
* - **Usage may be estimated.** The upstream provider does not report usage on every request. Where it does not, `usage_source` is `estimated` and the figures are derived from the character classes of the payload, to within roughly fifteen per cent.
|
|
30
|
+
* - **The service is enabled before use.** A project enables the model platform once, through `create-service`; the forwarding endpoints refuse its requests until the service is `active`. Requests are then billed under the service's subscription by the tokens they use, at the rates stated in each model's `pricing`.
|
|
31
|
+
* OpenAPI spec version: 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
import * as zod from "zod";
|
|
34
|
+
export declare const ModelCapabilities: zod.ZodRecord<zod.ZodString, zod.ZodObject<{
|
|
35
|
+
function_calling: zod.ZodNullable<zod.ZodBoolean>;
|
|
36
|
+
structured_output: zod.ZodNullable<zod.ZodBoolean>;
|
|
37
|
+
reasoning: zod.ZodUnion<readonly [zod.ZodObject<{
|
|
38
|
+
supported: zod.ZodBoolean;
|
|
39
|
+
effort_levels: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
40
|
+
default_effort: zod.ZodNullable<zod.ZodString>;
|
|
41
|
+
modes: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
42
|
+
budget_tokens: zod.ZodNullable<zod.ZodObject<{
|
|
43
|
+
min: zod.ZodInt;
|
|
44
|
+
max: zod.ZodInt;
|
|
45
|
+
}, zod.z.core.$strict>>;
|
|
46
|
+
summary: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
47
|
+
}, zod.z.core.$strict>, zod.ZodNull]>;
|
|
48
|
+
}, zod.z.core.$strict>>;
|
|
49
|
+
export type ModelCapabilities = zod.input<typeof ModelCapabilities>;
|
|
50
|
+
export type ModelCapabilitiesOutput = zod.output<typeof ModelCapabilities>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow Canopy API
|
|
5
|
+
* Canopy model inference, API keys, model catalogue, service enablement and recorded usage.
|
|
6
|
+
*
|
|
7
|
+
* OpenAI-compatible project inference is served on this host at `/v1/chat/completions`,
|
|
8
|
+
* `/v1/embeddings`, `/v1/models` and `/v1/models/{model}`. Use `https://canopy.leaflow.cloud/v1`
|
|
9
|
+
* as the OpenAI SDK base URL. Chat completions support `stream=true` SSE.
|
|
10
|
+
*
|
|
11
|
+
* Management operations use `/api/v1`. The management model catalogue includes pricing;
|
|
12
|
+
* `/v1/models` returns the OpenAI model format with Canopy capabilities and parameter limits.
|
|
13
|
+
*
|
|
14
|
+
* ## Authentication
|
|
15
|
+
*
|
|
16
|
+
* Every request carries a scoped token; see the `bearerAuth` security scheme.
|
|
17
|
+
*
|
|
18
|
+
* Management and project inference accept the same verified IAM scoped token. The token is the
|
|
19
|
+
* sole billing project authority; `OpenAI-Project` and historical identity headers cannot
|
|
20
|
+
* override it. These endpoints do not accept a Canopy API key. The separate API-key gateway
|
|
21
|
+
* accepts Canopy API keys and supports OpenAI, Anthropic and Gemini request formats.
|
|
22
|
+
*
|
|
23
|
+
* ## Conventions
|
|
24
|
+
*
|
|
25
|
+
* - **The plaintext of an API key is returned once.** The `secret` appears in the response that issues it and is returned by no other endpoint. A key that has been lost has to be revoked and reissued.
|
|
26
|
+
* - **Disabling and revoking are distinct.** A disabled key may be enabled again at any time, while a revocation is irreversible and is intended for a key that has been exposed. Neither removes the record, and the usage the key accrued remains readable.
|
|
27
|
+
* - **A usage query must carry a time range**, spanning no more than 31 days. `from` and `to` carry a timezone offset, which the server does not infer.
|
|
28
|
+
* - **The request and response bodies do not appear in the ledger.** They are not recorded. Quote the `upstream_request_id` from the response when reporting a problem.
|
|
29
|
+
* - **Usage may be estimated.** The upstream provider does not report usage on every request. Where it does not, `usage_source` is `estimated` and the figures are derived from the character classes of the payload, to within roughly fifteen per cent.
|
|
30
|
+
* - **The service is enabled before use.** A project enables the model platform once, through `create-service`; the forwarding endpoints refuse its requests until the service is `active`. Requests are then billed under the service's subscription by the tokens they use, at the rates stated in each model's `pricing`.
|
|
31
|
+
* OpenAPI spec version: 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
import * as zod from "zod";
|
|
34
|
+
import { EndpointCapabilities } from "./endpointCapabilities.zod.js";
|
|
35
|
+
export const ModelCapabilities = zod
|
|
36
|
+
.record(zod.string(), EndpointCapabilities)
|
|
37
|
+
.describe("Verified capabilities keyed by API endpoint, for example /v1/chat/completions or /v1/responses. Missing keys and null values mean unknown. Current route availability is separate.");
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow Canopy API
|
|
5
|
+
* Canopy model inference, API keys, model catalogue, service enablement and recorded usage.
|
|
6
|
+
*
|
|
7
|
+
* OpenAI-compatible project inference is served on this host at `/v1/chat/completions`,
|
|
8
|
+
* `/v1/embeddings`, `/v1/models` and `/v1/models/{model}`. Use `https://canopy.leaflow.cloud/v1`
|
|
9
|
+
* as the OpenAI SDK base URL. Chat completions support `stream=true` SSE.
|
|
10
|
+
*
|
|
11
|
+
* Management operations use `/api/v1`. The management model catalogue includes pricing;
|
|
12
|
+
* `/v1/models` returns the OpenAI model format with Canopy capabilities and parameter limits.
|
|
13
|
+
*
|
|
14
|
+
* ## Authentication
|
|
15
|
+
*
|
|
16
|
+
* Every request carries a scoped token; see the `bearerAuth` security scheme.
|
|
17
|
+
*
|
|
18
|
+
* Management and project inference accept the same verified IAM scoped token. The token is the
|
|
19
|
+
* sole billing project authority; `OpenAI-Project` and historical identity headers cannot
|
|
20
|
+
* override it. These endpoints do not accept a Canopy API key. The separate API-key gateway
|
|
21
|
+
* accepts Canopy API keys and supports OpenAI, Anthropic and Gemini request formats.
|
|
22
|
+
*
|
|
23
|
+
* ## Conventions
|
|
24
|
+
*
|
|
25
|
+
* - **The plaintext of an API key is returned once.** The `secret` appears in the response that issues it and is returned by no other endpoint. A key that has been lost has to be revoked and reissued.
|
|
26
|
+
* - **Disabling and revoking are distinct.** A disabled key may be enabled again at any time, while a revocation is irreversible and is intended for a key that has been exposed. Neither removes the record, and the usage the key accrued remains readable.
|
|
27
|
+
* - **A usage query must carry a time range**, spanning no more than 31 days. `from` and `to` carry a timezone offset, which the server does not infer.
|
|
28
|
+
* - **The request and response bodies do not appear in the ledger.** They are not recorded. Quote the `upstream_request_id` from the response when reporting a problem.
|
|
29
|
+
* - **Usage may be estimated.** The upstream provider does not report usage on every request. Where it does not, `usage_source` is `estimated` and the figures are derived from the character classes of the payload, to within roughly fifteen per cent.
|
|
30
|
+
* - **The service is enabled before use.** A project enables the model platform once, through `create-service`; the forwarding endpoints refuse its requests until the service is `active`. Requests are then billed under the service's subscription by the tokens they use, at the rates stated in each model's `pricing`.
|
|
31
|
+
* OpenAPI spec version: 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
import * as zod from "zod";
|
|
34
|
+
export declare const ModelEndpoint: zod.ZodEnum<{
|
|
35
|
+
"/v1/chat/completions": "/v1/chat/completions";
|
|
36
|
+
"/v1/responses": "/v1/responses";
|
|
37
|
+
"/v1/embeddings": "/v1/embeddings";
|
|
38
|
+
"/v1/images/generations": "/v1/images/generations";
|
|
39
|
+
"/v1/images/edits": "/v1/images/edits";
|
|
40
|
+
"/v1/audio/transcriptions": "/v1/audio/transcriptions";
|
|
41
|
+
"/v1/audio/translations": "/v1/audio/translations";
|
|
42
|
+
"/v1/audio/speech": "/v1/audio/speech";
|
|
43
|
+
"/v1/realtime": "/v1/realtime";
|
|
44
|
+
}>;
|
|
45
|
+
export type ModelEndpoint = zod.input<typeof ModelEndpoint>;
|
|
46
|
+
export type ModelEndpointOutput = zod.output<typeof ModelEndpoint>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow Canopy API
|
|
5
|
+
* Canopy model inference, API keys, model catalogue, service enablement and recorded usage.
|
|
6
|
+
*
|
|
7
|
+
* OpenAI-compatible project inference is served on this host at `/v1/chat/completions`,
|
|
8
|
+
* `/v1/embeddings`, `/v1/models` and `/v1/models/{model}`. Use `https://canopy.leaflow.cloud/v1`
|
|
9
|
+
* as the OpenAI SDK base URL. Chat completions support `stream=true` SSE.
|
|
10
|
+
*
|
|
11
|
+
* Management operations use `/api/v1`. The management model catalogue includes pricing;
|
|
12
|
+
* `/v1/models` returns the OpenAI model format with Canopy capabilities and parameter limits.
|
|
13
|
+
*
|
|
14
|
+
* ## Authentication
|
|
15
|
+
*
|
|
16
|
+
* Every request carries a scoped token; see the `bearerAuth` security scheme.
|
|
17
|
+
*
|
|
18
|
+
* Management and project inference accept the same verified IAM scoped token. The token is the
|
|
19
|
+
* sole billing project authority; `OpenAI-Project` and historical identity headers cannot
|
|
20
|
+
* override it. These endpoints do not accept a Canopy API key. The separate API-key gateway
|
|
21
|
+
* accepts Canopy API keys and supports OpenAI, Anthropic and Gemini request formats.
|
|
22
|
+
*
|
|
23
|
+
* ## Conventions
|
|
24
|
+
*
|
|
25
|
+
* - **The plaintext of an API key is returned once.** The `secret` appears in the response that issues it and is returned by no other endpoint. A key that has been lost has to be revoked and reissued.
|
|
26
|
+
* - **Disabling and revoking are distinct.** A disabled key may be enabled again at any time, while a revocation is irreversible and is intended for a key that has been exposed. Neither removes the record, and the usage the key accrued remains readable.
|
|
27
|
+
* - **A usage query must carry a time range**, spanning no more than 31 days. `from` and `to` carry a timezone offset, which the server does not infer.
|
|
28
|
+
* - **The request and response bodies do not appear in the ledger.** They are not recorded. Quote the `upstream_request_id` from the response when reporting a problem.
|
|
29
|
+
* - **Usage may be estimated.** The upstream provider does not report usage on every request. Where it does not, `usage_source` is `estimated` and the figures are derived from the character classes of the payload, to within roughly fifteen per cent.
|
|
30
|
+
* - **The service is enabled before use.** A project enables the model platform once, through `create-service`; the forwarding endpoints refuse its requests until the service is `active`. Requests are then billed under the service's subscription by the tokens they use, at the rates stated in each model's `pricing`.
|
|
31
|
+
* OpenAPI spec version: 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
import * as zod from "zod";
|
|
34
|
+
export const ModelEndpoint = zod.enum([
|
|
35
|
+
"/v1/chat/completions",
|
|
36
|
+
"/v1/responses",
|
|
37
|
+
"/v1/embeddings",
|
|
38
|
+
"/v1/images/generations",
|
|
39
|
+
"/v1/images/edits",
|
|
40
|
+
"/v1/audio/transcriptions",
|
|
41
|
+
"/v1/audio/translations",
|
|
42
|
+
"/v1/audio/speech",
|
|
43
|
+
"/v1/realtime",
|
|
44
|
+
]);
|
|
@@ -41,10 +41,50 @@ export declare const ModelList: zod.ZodObject<{
|
|
|
41
41
|
display_name: zod.ZodString;
|
|
42
42
|
context_length: zod.ZodInt;
|
|
43
43
|
max_output_tokens: zod.ZodInt;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
developer: zod.ZodString;
|
|
45
|
+
description: zod.ZodString;
|
|
46
|
+
input_modalities: zod.ZodNullable<zod.ZodArray<zod.ZodEnum<{
|
|
47
|
+
file: "file";
|
|
48
|
+
text: "text";
|
|
49
|
+
image: "image";
|
|
50
|
+
audio: "audio";
|
|
51
|
+
video: "video";
|
|
52
|
+
embedding: "embedding";
|
|
53
|
+
}>>>;
|
|
54
|
+
output_modalities: zod.ZodNullable<zod.ZodArray<zod.ZodEnum<{
|
|
55
|
+
file: "file";
|
|
56
|
+
text: "text";
|
|
57
|
+
image: "image";
|
|
58
|
+
audio: "audio";
|
|
59
|
+
video: "video";
|
|
60
|
+
embedding: "embedding";
|
|
61
|
+
}>>>;
|
|
62
|
+
capabilities: zod.ZodRecord<zod.ZodString, zod.ZodObject<{
|
|
63
|
+
function_calling: zod.ZodNullable<zod.ZodBoolean>;
|
|
64
|
+
structured_output: zod.ZodNullable<zod.ZodBoolean>;
|
|
65
|
+
reasoning: zod.ZodUnion<readonly [zod.ZodObject<{
|
|
66
|
+
supported: zod.ZodBoolean;
|
|
67
|
+
effort_levels: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
68
|
+
default_effort: zod.ZodNullable<zod.ZodString>;
|
|
69
|
+
modes: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
70
|
+
budget_tokens: zod.ZodNullable<zod.ZodObject<{
|
|
71
|
+
min: zod.ZodInt;
|
|
72
|
+
max: zod.ZodInt;
|
|
73
|
+
}, zod.z.core.$strict>>;
|
|
74
|
+
summary: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
75
|
+
}, zod.z.core.$strict>, zod.ZodNull]>;
|
|
76
|
+
}, zod.z.core.$strict>>;
|
|
77
|
+
supported_endpoints: zod.ZodArray<zod.ZodEnum<{
|
|
78
|
+
"/v1/chat/completions": "/v1/chat/completions";
|
|
79
|
+
"/v1/responses": "/v1/responses";
|
|
80
|
+
"/v1/embeddings": "/v1/embeddings";
|
|
81
|
+
"/v1/images/generations": "/v1/images/generations";
|
|
82
|
+
"/v1/images/edits": "/v1/images/edits";
|
|
83
|
+
"/v1/audio/transcriptions": "/v1/audio/transcriptions";
|
|
84
|
+
"/v1/audio/translations": "/v1/audio/translations";
|
|
85
|
+
"/v1/audio/speech": "/v1/audio/speech";
|
|
86
|
+
"/v1/realtime": "/v1/realtime";
|
|
87
|
+
}>>;
|
|
48
88
|
}, zod.z.core.$strict>>;
|
|
49
89
|
}, zod.z.core.$strict>;
|
|
50
90
|
export type ModelList = zod.input<typeof ModelList>;
|
|
@@ -52,15 +52,55 @@ export declare const ModelListResponseBody: zod.ZodObject<{
|
|
|
52
52
|
unit_quantity: zod.ZodNullable<zod.ZodString>;
|
|
53
53
|
}, zod.z.core.$strict>>;
|
|
54
54
|
}, zod.z.core.$strict>, zod.ZodNull]>;
|
|
55
|
-
reasoning_tiers: zod.ZodArray<zod.ZodString>;
|
|
56
55
|
status: zod.ZodEnum<{
|
|
57
56
|
available: "available";
|
|
58
57
|
draining: "draining";
|
|
59
58
|
retired: "retired";
|
|
60
59
|
}>;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
developer: zod.ZodString;
|
|
61
|
+
description: zod.ZodString;
|
|
62
|
+
input_modalities: zod.ZodNullable<zod.ZodArray<zod.ZodEnum<{
|
|
63
|
+
file: "file";
|
|
64
|
+
text: "text";
|
|
65
|
+
image: "image";
|
|
66
|
+
audio: "audio";
|
|
67
|
+
video: "video";
|
|
68
|
+
embedding: "embedding";
|
|
69
|
+
}>>>;
|
|
70
|
+
output_modalities: zod.ZodNullable<zod.ZodArray<zod.ZodEnum<{
|
|
71
|
+
file: "file";
|
|
72
|
+
text: "text";
|
|
73
|
+
image: "image";
|
|
74
|
+
audio: "audio";
|
|
75
|
+
video: "video";
|
|
76
|
+
embedding: "embedding";
|
|
77
|
+
}>>>;
|
|
78
|
+
capabilities: zod.ZodRecord<zod.ZodString, zod.ZodObject<{
|
|
79
|
+
function_calling: zod.ZodNullable<zod.ZodBoolean>;
|
|
80
|
+
structured_output: zod.ZodNullable<zod.ZodBoolean>;
|
|
81
|
+
reasoning: zod.ZodUnion<readonly [zod.ZodObject<{
|
|
82
|
+
supported: zod.ZodBoolean;
|
|
83
|
+
effort_levels: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
84
|
+
default_effort: zod.ZodNullable<zod.ZodString>;
|
|
85
|
+
modes: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
86
|
+
budget_tokens: zod.ZodNullable<zod.ZodObject<{
|
|
87
|
+
min: zod.ZodInt;
|
|
88
|
+
max: zod.ZodInt;
|
|
89
|
+
}, zod.z.core.$strict>>;
|
|
90
|
+
summary: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
91
|
+
}, zod.z.core.$strict>, zod.ZodNull]>;
|
|
92
|
+
}, zod.z.core.$strict>>;
|
|
93
|
+
supported_endpoints: zod.ZodArray<zod.ZodEnum<{
|
|
94
|
+
"/v1/chat/completions": "/v1/chat/completions";
|
|
95
|
+
"/v1/responses": "/v1/responses";
|
|
96
|
+
"/v1/embeddings": "/v1/embeddings";
|
|
97
|
+
"/v1/images/generations": "/v1/images/generations";
|
|
98
|
+
"/v1/images/edits": "/v1/images/edits";
|
|
99
|
+
"/v1/audio/transcriptions": "/v1/audio/transcriptions";
|
|
100
|
+
"/v1/audio/translations": "/v1/audio/translations";
|
|
101
|
+
"/v1/audio/speech": "/v1/audio/speech";
|
|
102
|
+
"/v1/realtime": "/v1/realtime";
|
|
103
|
+
}>>;
|
|
64
104
|
}, zod.z.core.$strict>>;
|
|
65
105
|
}, zod.z.core.$strict>;
|
|
66
106
|
export type ModelListResponseBody = zod.input<typeof ModelListResponseBody>;
|
|
@@ -51,15 +51,55 @@ export declare const ModelResource: zod.ZodObject<{
|
|
|
51
51
|
unit_quantity: zod.ZodNullable<zod.ZodString>;
|
|
52
52
|
}, zod.z.core.$strict>>;
|
|
53
53
|
}, zod.z.core.$strict>, zod.ZodNull]>;
|
|
54
|
-
reasoning_tiers: zod.ZodArray<zod.ZodString>;
|
|
55
54
|
status: zod.ZodEnum<{
|
|
56
55
|
available: "available";
|
|
57
56
|
draining: "draining";
|
|
58
57
|
retired: "retired";
|
|
59
58
|
}>;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
developer: zod.ZodString;
|
|
60
|
+
description: zod.ZodString;
|
|
61
|
+
input_modalities: zod.ZodNullable<zod.ZodArray<zod.ZodEnum<{
|
|
62
|
+
file: "file";
|
|
63
|
+
text: "text";
|
|
64
|
+
image: "image";
|
|
65
|
+
audio: "audio";
|
|
66
|
+
video: "video";
|
|
67
|
+
embedding: "embedding";
|
|
68
|
+
}>>>;
|
|
69
|
+
output_modalities: zod.ZodNullable<zod.ZodArray<zod.ZodEnum<{
|
|
70
|
+
file: "file";
|
|
71
|
+
text: "text";
|
|
72
|
+
image: "image";
|
|
73
|
+
audio: "audio";
|
|
74
|
+
video: "video";
|
|
75
|
+
embedding: "embedding";
|
|
76
|
+
}>>>;
|
|
77
|
+
capabilities: zod.ZodRecord<zod.ZodString, zod.ZodObject<{
|
|
78
|
+
function_calling: zod.ZodNullable<zod.ZodBoolean>;
|
|
79
|
+
structured_output: zod.ZodNullable<zod.ZodBoolean>;
|
|
80
|
+
reasoning: zod.ZodUnion<readonly [zod.ZodObject<{
|
|
81
|
+
supported: zod.ZodBoolean;
|
|
82
|
+
effort_levels: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
83
|
+
default_effort: zod.ZodNullable<zod.ZodString>;
|
|
84
|
+
modes: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
85
|
+
budget_tokens: zod.ZodNullable<zod.ZodObject<{
|
|
86
|
+
min: zod.ZodInt;
|
|
87
|
+
max: zod.ZodInt;
|
|
88
|
+
}, zod.z.core.$strict>>;
|
|
89
|
+
summary: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
90
|
+
}, zod.z.core.$strict>, zod.ZodNull]>;
|
|
91
|
+
}, zod.z.core.$strict>>;
|
|
92
|
+
supported_endpoints: zod.ZodArray<zod.ZodEnum<{
|
|
93
|
+
"/v1/chat/completions": "/v1/chat/completions";
|
|
94
|
+
"/v1/responses": "/v1/responses";
|
|
95
|
+
"/v1/embeddings": "/v1/embeddings";
|
|
96
|
+
"/v1/images/generations": "/v1/images/generations";
|
|
97
|
+
"/v1/images/edits": "/v1/images/edits";
|
|
98
|
+
"/v1/audio/transcriptions": "/v1/audio/transcriptions";
|
|
99
|
+
"/v1/audio/translations": "/v1/audio/translations";
|
|
100
|
+
"/v1/audio/speech": "/v1/audio/speech";
|
|
101
|
+
"/v1/realtime": "/v1/realtime";
|
|
102
|
+
}>>;
|
|
63
103
|
}, zod.z.core.$strict>;
|
|
64
104
|
export type ModelResource = zod.input<typeof ModelResource>;
|
|
65
105
|
export type ModelResourceOutput = zod.output<typeof ModelResource>;
|
|
@@ -31,6 +31,9 @@
|
|
|
31
31
|
* OpenAPI spec version: 1.0.0
|
|
32
32
|
*/
|
|
33
33
|
import * as zod from "zod";
|
|
34
|
+
import { Modality } from "./modality.zod.js";
|
|
35
|
+
import { ModelCapabilities } from "./modelCapabilities.zod.js";
|
|
36
|
+
import { ModelEndpoint } from "./modelEndpoint.zod.js";
|
|
34
37
|
import { ModelPricing } from "./modelPricing.zod.js";
|
|
35
38
|
export const ModelResource = zod.strictObject({
|
|
36
39
|
context_length: zod
|
|
@@ -45,11 +48,21 @@ export const ModelResource = zod.strictObject({
|
|
|
45
48
|
pricing: zod
|
|
46
49
|
.union([ModelPricing, zod.null()])
|
|
47
50
|
.describe("What requests to this model cost. Null when the project has no billing account."),
|
|
48
|
-
reasoning_tiers: zod
|
|
49
|
-
.array(zod.string())
|
|
50
|
-
.describe("The values accepted for `reasoning_effort`. Empty means it is not supported"),
|
|
51
51
|
status: zod.enum(["available", "draining", "retired"]),
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
developer: zod
|
|
53
|
+
.string()
|
|
54
|
+
.describe("The model developer; not the upstream provider or model family."),
|
|
55
|
+
description: zod.string(),
|
|
56
|
+
input_modalities: zod
|
|
57
|
+
.array(Modality)
|
|
58
|
+
.nullable()
|
|
59
|
+
.describe("Accepted input modalities. Null means unknown."),
|
|
60
|
+
output_modalities: zod
|
|
61
|
+
.array(Modality)
|
|
62
|
+
.nullable()
|
|
63
|
+
.describe("Produced output modalities. Image input does not imply image generation."),
|
|
64
|
+
capabilities: ModelCapabilities,
|
|
65
|
+
supported_endpoints: zod
|
|
66
|
+
.array(ModelEndpoint)
|
|
67
|
+
.describe("Explicitly supported API endpoints. Requests to any other endpoint are rejected before upstream admission."),
|
|
55
68
|
});
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow Canopy API
|
|
5
|
+
* Canopy model inference, API keys, model catalogue, service enablement and recorded usage.
|
|
6
|
+
*
|
|
7
|
+
* OpenAI-compatible project inference is served on this host at `/v1/chat/completions`,
|
|
8
|
+
* `/v1/embeddings`, `/v1/models` and `/v1/models/{model}`. Use `https://canopy.leaflow.cloud/v1`
|
|
9
|
+
* as the OpenAI SDK base URL. Chat completions support `stream=true` SSE.
|
|
10
|
+
*
|
|
11
|
+
* Management operations use `/api/v1`. The management model catalogue includes pricing;
|
|
12
|
+
* `/v1/models` returns the OpenAI model format with Canopy capabilities and parameter limits.
|
|
13
|
+
*
|
|
14
|
+
* ## Authentication
|
|
15
|
+
*
|
|
16
|
+
* Every request carries a scoped token; see the `bearerAuth` security scheme.
|
|
17
|
+
*
|
|
18
|
+
* Management and project inference accept the same verified IAM scoped token. The token is the
|
|
19
|
+
* sole billing project authority; `OpenAI-Project` and historical identity headers cannot
|
|
20
|
+
* override it. These endpoints do not accept a Canopy API key. The separate API-key gateway
|
|
21
|
+
* accepts Canopy API keys and supports OpenAI, Anthropic and Gemini request formats.
|
|
22
|
+
*
|
|
23
|
+
* ## Conventions
|
|
24
|
+
*
|
|
25
|
+
* - **The plaintext of an API key is returned once.** The `secret` appears in the response that issues it and is returned by no other endpoint. A key that has been lost has to be revoked and reissued.
|
|
26
|
+
* - **Disabling and revoking are distinct.** A disabled key may be enabled again at any time, while a revocation is irreversible and is intended for a key that has been exposed. Neither removes the record, and the usage the key accrued remains readable.
|
|
27
|
+
* - **A usage query must carry a time range**, spanning no more than 31 days. `from` and `to` carry a timezone offset, which the server does not infer.
|
|
28
|
+
* - **The request and response bodies do not appear in the ledger.** They are not recorded. Quote the `upstream_request_id` from the response when reporting a problem.
|
|
29
|
+
* - **Usage may be estimated.** The upstream provider does not report usage on every request. Where it does not, `usage_source` is `estimated` and the figures are derived from the character classes of the payload, to within roughly fifteen per cent.
|
|
30
|
+
* - **The service is enabled before use.** A project enables the model platform once, through `create-service`; the forwarding endpoints refuse its requests until the service is `active`. Requests are then billed under the service's subscription by the tokens they use, at the rates stated in each model's `pricing`.
|
|
31
|
+
* OpenAPI spec version: 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
import * as zod from "zod";
|
|
34
|
+
export declare const reasoningCapabilitiesBudgetTokensMinMin = 0;
|
|
35
|
+
export declare const reasoningCapabilitiesBudgetTokensMaxMin = 0;
|
|
36
|
+
export declare const ReasoningCapabilities: zod.ZodObject<{
|
|
37
|
+
supported: zod.ZodBoolean;
|
|
38
|
+
effort_levels: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
39
|
+
default_effort: zod.ZodNullable<zod.ZodString>;
|
|
40
|
+
modes: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
41
|
+
budget_tokens: zod.ZodNullable<zod.ZodObject<{
|
|
42
|
+
min: zod.ZodInt;
|
|
43
|
+
max: zod.ZodInt;
|
|
44
|
+
}, zod.z.core.$strict>>;
|
|
45
|
+
summary: zod.ZodNullable<zod.ZodArray<zod.ZodString>>;
|
|
46
|
+
}, zod.z.core.$strict>;
|
|
47
|
+
export type ReasoningCapabilities = zod.input<typeof ReasoningCapabilities>;
|
|
48
|
+
export type ReasoningCapabilitiesOutput = zod.output<typeof ReasoningCapabilities>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow Canopy API
|
|
5
|
+
* Canopy model inference, API keys, model catalogue, service enablement and recorded usage.
|
|
6
|
+
*
|
|
7
|
+
* OpenAI-compatible project inference is served on this host at `/v1/chat/completions`,
|
|
8
|
+
* `/v1/embeddings`, `/v1/models` and `/v1/models/{model}`. Use `https://canopy.leaflow.cloud/v1`
|
|
9
|
+
* as the OpenAI SDK base URL. Chat completions support `stream=true` SSE.
|
|
10
|
+
*
|
|
11
|
+
* Management operations use `/api/v1`. The management model catalogue includes pricing;
|
|
12
|
+
* `/v1/models` returns the OpenAI model format with Canopy capabilities and parameter limits.
|
|
13
|
+
*
|
|
14
|
+
* ## Authentication
|
|
15
|
+
*
|
|
16
|
+
* Every request carries a scoped token; see the `bearerAuth` security scheme.
|
|
17
|
+
*
|
|
18
|
+
* Management and project inference accept the same verified IAM scoped token. The token is the
|
|
19
|
+
* sole billing project authority; `OpenAI-Project` and historical identity headers cannot
|
|
20
|
+
* override it. These endpoints do not accept a Canopy API key. The separate API-key gateway
|
|
21
|
+
* accepts Canopy API keys and supports OpenAI, Anthropic and Gemini request formats.
|
|
22
|
+
*
|
|
23
|
+
* ## Conventions
|
|
24
|
+
*
|
|
25
|
+
* - **The plaintext of an API key is returned once.** The `secret` appears in the response that issues it and is returned by no other endpoint. A key that has been lost has to be revoked and reissued.
|
|
26
|
+
* - **Disabling and revoking are distinct.** A disabled key may be enabled again at any time, while a revocation is irreversible and is intended for a key that has been exposed. Neither removes the record, and the usage the key accrued remains readable.
|
|
27
|
+
* - **A usage query must carry a time range**, spanning no more than 31 days. `from` and `to` carry a timezone offset, which the server does not infer.
|
|
28
|
+
* - **The request and response bodies do not appear in the ledger.** They are not recorded. Quote the `upstream_request_id` from the response when reporting a problem.
|
|
29
|
+
* - **Usage may be estimated.** The upstream provider does not report usage on every request. Where it does not, `usage_source` is `estimated` and the figures are derived from the character classes of the payload, to within roughly fifteen per cent.
|
|
30
|
+
* - **The service is enabled before use.** A project enables the model platform once, through `create-service`; the forwarding endpoints refuse its requests until the service is `active`. Requests are then billed under the service's subscription by the tokens they use, at the rates stated in each model's `pricing`.
|
|
31
|
+
* OpenAPI spec version: 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
import * as zod from "zod";
|
|
34
|
+
export const reasoningCapabilitiesBudgetTokensMinMin = 0;
|
|
35
|
+
export const reasoningCapabilitiesBudgetTokensMaxMin = 0;
|
|
36
|
+
export const ReasoningCapabilities = zod.strictObject({
|
|
37
|
+
supported: zod.boolean(),
|
|
38
|
+
effort_levels: zod
|
|
39
|
+
.array(zod.string())
|
|
40
|
+
.nullable()
|
|
41
|
+
.describe("Null means unknown; an empty array means effort is not configurable."),
|
|
42
|
+
default_effort: zod.string().nullable(),
|
|
43
|
+
modes: zod.array(zod.string()).nullable(),
|
|
44
|
+
budget_tokens: zod
|
|
45
|
+
.strictObject({
|
|
46
|
+
min: zod.int().min(reasoningCapabilitiesBudgetTokensMinMin),
|
|
47
|
+
max: zod.int().min(reasoningCapabilitiesBudgetTokensMaxMin),
|
|
48
|
+
})
|
|
49
|
+
.nullable(),
|
|
50
|
+
summary: zod.array(zod.string()).nullable(),
|
|
51
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow Canopy API
|
|
5
|
+
* Canopy model inference, API keys, model catalogue, service enablement and recorded usage.
|
|
6
|
+
*
|
|
7
|
+
* OpenAI-compatible project inference is served on this host at `/v1/chat/completions`,
|
|
8
|
+
* `/v1/embeddings`, `/v1/models` and `/v1/models/{model}`. Use `https://canopy.leaflow.cloud/v1`
|
|
9
|
+
* as the OpenAI SDK base URL. Chat completions support `stream=true` SSE.
|
|
10
|
+
*
|
|
11
|
+
* Management operations use `/api/v1`. The management model catalogue includes pricing;
|
|
12
|
+
* `/v1/models` returns the OpenAI model format with Canopy capabilities and parameter limits.
|
|
13
|
+
*
|
|
14
|
+
* ## Authentication
|
|
15
|
+
*
|
|
16
|
+
* Every request carries a scoped token; see the `bearerAuth` security scheme.
|
|
17
|
+
*
|
|
18
|
+
* Management and project inference accept the same verified IAM scoped token. The token is the
|
|
19
|
+
* sole billing project authority; `OpenAI-Project` and historical identity headers cannot
|
|
20
|
+
* override it. These endpoints do not accept a Canopy API key. The separate API-key gateway
|
|
21
|
+
* accepts Canopy API keys and supports OpenAI, Anthropic and Gemini request formats.
|
|
22
|
+
*
|
|
23
|
+
* ## Conventions
|
|
24
|
+
*
|
|
25
|
+
* - **The plaintext of an API key is returned once.** The `secret` appears in the response that issues it and is returned by no other endpoint. A key that has been lost has to be revoked and reissued.
|
|
26
|
+
* - **Disabling and revoking are distinct.** A disabled key may be enabled again at any time, while a revocation is irreversible and is intended for a key that has been exposed. Neither removes the record, and the usage the key accrued remains readable.
|
|
27
|
+
* - **A usage query must carry a time range**, spanning no more than 31 days. `from` and `to` carry a timezone offset, which the server does not infer.
|
|
28
|
+
* - **The request and response bodies do not appear in the ledger.** They are not recorded. Quote the `upstream_request_id` from the response when reporting a problem.
|
|
29
|
+
* - **Usage may be estimated.** The upstream provider does not report usage on every request. Where it does not, `usage_source` is `estimated` and the figures are derived from the character classes of the payload, to within roughly fifteen per cent.
|
|
30
|
+
* - **The service is enabled before use.** A project enables the model platform once, through `create-service`; the forwarding endpoints refuse its requests until the service is `active`. Requests are then billed under the service's subscription by the tokens they use, at the rates stated in each model's `pricing`.
|
|
31
|
+
* OpenAPI spec version: 1.0.0
|
|
32
|
+
*/
|
|
33
|
+
import * as zod from "zod";
|
|
34
|
+
export declare const ReasoningDiagnostics: zod.ZodObject<{
|
|
35
|
+
requested: zod.ZodRecord<zod.ZodString, zod.ZodUnknown>;
|
|
36
|
+
effective: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
37
|
+
translation: zod.ZodOptional<zod.ZodEnum<{
|
|
38
|
+
translate: "translate";
|
|
39
|
+
passthrough: "passthrough";
|
|
40
|
+
strip: "strip";
|
|
41
|
+
}>>;
|
|
42
|
+
}, zod.z.core.$strict>;
|
|
43
|
+
export type ReasoningDiagnostics = zod.input<typeof ReasoningDiagnostics>;
|
|
44
|
+
export type ReasoningDiagnosticsOutput = zod.output<typeof ReasoningDiagnostics>;
|