apps 0.0.1-beta.5 → 0.0.1-beta.55
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/README.md +68 -44
- package/framework-reference.json +1 -1
- package/js/chunk-47F7VXST.js +221 -0
- package/js/chunk-5FHWNLCI.js +88 -0
- package/js/{chunk-M3B3DE4K.js → chunk-74YVXBKY.js} +463 -218
- package/js/chunk-7UUHJR2Q.js +49 -0
- package/js/{chunk-CYYBFC2K.js → chunk-AQU56EPI.js} +9 -5
- package/js/chunk-BTSIG4NQ.js +1885 -0
- package/js/chunk-CDXQDN7W.js +92 -0
- package/js/{chunk-UK573G7W.js → chunk-EOPQ727L.js} +87 -51
- package/js/{chunk-27F7W2LG.js → chunk-H2CJWXA3.js} +2 -2
- package/js/{chunk-JU7VHODU.js → chunk-H72MEDMN.js} +65 -10
- package/js/{chunk-CDL5PM2Q.js → chunk-IFJU5SYQ.js} +19082 -18402
- package/js/{chunk-UDDE5KOR.js → chunk-JK5S2N2S.js} +148 -34
- package/js/{chunk-RJDDBDSN.js → chunk-JM7LOD2W.js} +628 -85
- package/js/{chunk-VFZKSM3T.js → chunk-JPEUKEV4.js} +3 -3
- package/js/{chunk-FWQC6I3C.js → chunk-KGCTYL2S.js} +523 -63
- package/js/{chunk-KUMBKVJD.js → chunk-KLYSEHUD.js} +2 -2
- package/js/chunk-L4K2K22P.js +42 -0
- package/js/chunk-LTDHQJ2Z.js +171 -0
- package/js/chunk-MWKHKOTL.js +240 -0
- package/js/chunk-OD3KFKZD.js +1617 -0
- package/js/{chunk-57RKNWL2.js → chunk-PD6I2SDG.js} +4 -4
- package/js/chunk-PXXZ6ABC.js +266 -0
- package/js/chunk-QEBRH5AP.js +729 -0
- package/js/chunk-TLWLJ7PD.js +4342 -0
- package/js/{chunk-IJX4CYZO.js → chunk-TUMGL2OC.js} +228 -264
- package/js/{chunk-XHO2ZX6W.js → chunk-UM62MBJQ.js} +96 -41
- package/js/{chunk-IPI4MFSN.js → chunk-XBG7HHXC.js} +2 -2
- package/js/chunk-XCSG7FT7.js +340 -0
- package/js/client.js +142 -94
- package/js/contracts.js +123 -33
- package/js/effect.js +19 -21
- package/js/{es-APDZKREY.js → es-DIULA3ZF.js} +62 -1659
- package/js/graphql.js +63 -60
- package/js/host.js +83 -60
- package/js/index.js +262 -222
- package/js/mcp/effect.js +23 -23
- package/js/mcp/stdio.js +48 -40
- package/js/mcp.js +109 -72
- package/js/openapi.js +4129 -1419
- package/js/react.js +2 -3
- package/js/skills/effect.js +6 -3
- package/js/skills.js +208 -82
- package/js/storage/facet.js +1 -540
- package/js/ui/auth/contracts.js +2 -2
- package/js/ui/auth.js +5 -5
- package/js/ui/contracts.js +5 -4
- package/js/ui/serving.js +8517 -214
- package/package.json +2 -3
- package/runtime.json +1 -1
- package/types/app-cache/src/index.d.ts +10 -1
- package/types/apps/src/contracts/api-response-error.d.ts +4 -0
- package/types/apps/src/contracts/app.d.ts +9 -8
- package/types/apps/src/contracts/cache.d.ts +20 -0
- package/types/apps/src/contracts/context.d.ts +19 -11
- package/types/apps/src/contracts/elicitation.d.ts +6 -6
- package/types/apps/src/contracts/events.d.ts +93 -0
- package/types/apps/src/contracts/failure.d.ts +30 -1
- package/types/apps/src/contracts/graphql.d.ts +2 -1
- package/types/apps/src/contracts/host.d.ts +57 -18
- package/types/apps/src/contracts/live.d.ts +2 -0
- package/types/apps/src/contracts/mcp.d.ts +96 -10
- package/types/apps/src/contracts/network.d.ts +84 -0
- package/types/apps/src/contracts/openapi-compile.d.ts +32 -3
- package/types/apps/src/contracts/openapi.d.ts +45 -9
- package/types/apps/src/contracts/operations.d.ts +8 -9
- package/types/apps/src/contracts/protocol-version.d.ts +2 -2
- package/types/apps/src/contracts/protocols/1.d.ts +733 -81
- package/types/apps/src/contracts/protocols/10.d.ts +1450 -0
- package/types/apps/src/contracts/protocols/2.d.ts +69 -26
- package/types/apps/src/contracts/protocols/3.d.ts +133 -33
- package/types/apps/src/contracts/protocols/4.d.ts +1306 -0
- package/types/apps/src/contracts/protocols/5.d.ts +1200 -0
- package/types/apps/src/contracts/protocols/6.d.ts +1629 -0
- package/types/apps/src/contracts/protocols/7.d.ts +1785 -0
- package/types/apps/src/contracts/protocols/8.d.ts +1182 -0
- package/types/apps/src/contracts/protocols/9.d.ts +1104 -0
- package/types/apps/src/contracts/protocols/current.d.ts +2476 -0
- package/types/apps/src/contracts/protocols/oauth-6.d.ts +74 -0
- package/types/apps/src/contracts/protocols/oauth.d.ts +134 -0
- package/types/apps/src/contracts/provider-error.d.ts +9 -0
- package/types/apps/src/contracts/provider.d.ts +115 -10
- package/types/apps/src/contracts/router.d.ts +59 -0
- package/types/apps/src/contracts/skills.d.ts +50 -13
- package/types/apps/src/contracts/sql.d.ts +58 -0
- package/types/apps/src/contracts/ui.d.ts +19 -1
- package/types/apps/src/contracts/workflows.d.ts +6 -0
- package/types/apps/src/facet.d.ts +4 -5
- package/types/apps/src/graphql.d.ts +1 -3
- package/types/apps/src/host.d.ts +5 -0
- package/types/apps/src/implementation/account-router.d.ts +13 -0
- package/types/apps/src/implementation/app.d.ts +5 -4
- package/types/apps/src/implementation/authoring.d.ts +25 -5
- package/types/apps/src/implementation/browser-scripts.gen.d.ts +6 -0
- package/types/apps/src/implementation/cache.d.ts +4 -0
- package/types/apps/src/implementation/catalog-cache.d.ts +43 -5
- package/types/apps/src/implementation/elicitation.d.ts +18 -15
- package/types/apps/src/implementation/events.d.ts +59 -0
- package/types/apps/src/implementation/failure-detail.d.ts +25 -3
- package/types/apps/src/implementation/graphql-catalog.d.ts +4 -7
- package/types/apps/src/implementation/graphql.d.ts +4 -3
- package/types/apps/src/implementation/input-problems.d.ts +6 -2
- package/types/apps/src/implementation/invocation-timing.d.ts +16 -0
- package/types/apps/src/implementation/live.d.ts +2 -2
- package/types/apps/src/implementation/mcp-call.d.ts +6 -5
- package/types/apps/src/implementation/mcp-catalog.d.ts +7 -8
- package/types/apps/src/implementation/mcp-client.d.ts +49 -25
- package/types/apps/src/implementation/mcp-stdio.d.ts +1 -1
- package/types/apps/src/implementation/mcp-tools.d.ts +2 -1
- package/types/apps/src/implementation/mcp.d.ts +52 -25
- package/types/apps/src/implementation/network.d.ts +16 -0
- package/types/apps/src/implementation/openapi-compile.d.ts +27 -6
- package/types/apps/src/implementation/openapi-document.d.ts +46 -19
- package/types/apps/src/implementation/openapi-names.d.ts +9 -4
- package/types/apps/src/implementation/openapi-request.d.ts +10 -2
- package/types/apps/src/implementation/openapi-source.d.ts +8 -6
- package/types/apps/src/implementation/openapi-upgrade.d.ts +4 -0
- package/types/apps/src/implementation/operations.d.ts +43 -5
- package/types/apps/src/implementation/optimistic.d.ts +1 -1
- package/types/apps/src/implementation/protocol-operations.d.ts +6 -4
- package/types/apps/src/implementation/provider-error.d.ts +28 -1
- package/types/apps/src/implementation/provider.d.ts +19 -5
- package/types/apps/src/implementation/query-commit.d.ts +1 -1
- package/types/apps/src/implementation/router-catalog.d.ts +223 -0
- package/types/apps/src/implementation/router.d.ts +70 -0
- package/types/apps/src/implementation/runtime-yield.d.ts +7 -0
- package/types/apps/src/implementation/schema.d.ts +95 -11
- package/types/apps/src/implementation/skills.d.ts +18 -24
- package/types/apps/src/implementation/sql.d.ts +71 -0
- package/types/apps/src/implementation/ui-account-notice.d.ts +9 -0
- package/types/apps/src/implementation/ui-auth.d.ts +1 -1
- package/types/apps/src/implementation/ui-client.d.ts +2 -2
- package/types/apps/src/implementation/ui-document.d.ts +5 -0
- package/types/apps/src/implementation/ui-errors.d.ts +1 -1
- package/types/apps/src/implementation/ui-serving.d.ts +11 -5
- package/types/apps/src/implementation/ui-watch.d.ts +1 -1
- package/types/apps/src/implementation/upstream-error.d.ts +7 -0
- package/types/apps/src/implementation/webhooks.d.ts +1 -1
- package/types/apps/src/implementation/workflow-context.d.ts +1 -1
- package/types/apps/src/implementation/workflows.d.ts +1 -1
- package/types/apps/src/index.d.ts +32 -13
- package/types/apps/src/mcp-stdio.d.ts +2 -5
- package/types/apps/src/mcp.d.ts +25 -5
- package/types/apps/src/openapi.d.ts +6 -6
- package/types/apps/src/react.d.ts +1 -1
- package/types/apps/src/skills.d.ts +10 -8
- package/types/telemetry/src/app-records.d.ts +42 -0
- package/types/telemetry/src/browser-operations.d.ts +7 -4
- package/types/telemetry/src/browser.d.ts +8 -3
- package/types/telemetry/src/config.d.ts +2 -2
- package/types/telemetry/src/index.d.ts +1 -0
- package/types/telemetry/src/layer.d.ts +2 -2
- package/types/telemetry/src/ownership.d.ts +56 -0
- package/types/telemetry/src/recorded-failure.d.ts +29 -0
- package/types/telemetry/src/relay.d.ts +2 -2
- package/types/telemetry/src/transport.d.ts +8 -1
- package/types/utils/src/api-error.d.ts +55 -0
- package/types/utils/src/connection-failure.d.ts +33 -0
- package/types/utils/src/recorded-message.d.ts +18 -0
- package/types/utils/src/user-facing-error.d.ts +83 -0
- package/js/chunk-3XKZDQLM.js +0 -93
- package/js/chunk-4M277YTM.js +0 -136
- package/js/chunk-67EVWIGJ.js +0 -224
- package/js/chunk-C3VAOK5B.js +0 -215
- package/js/chunk-DQAZTA4I.js +0 -2375
- package/js/chunk-G7T27IWB.js +0 -63
- package/js/chunk-LUVSFETN.js +0 -1347
- package/js/chunk-N7YDVXYJ.js +0 -186
- package/js/chunk-PJJ24GU7.js +0 -877
- package/js/chunk-PZB6T6KU.js +0 -19
- package/js/chunk-SB3V4YVR.js +0 -18
- package/js/chunk-TDNYXSIX.js +0 -29
- package/js/chunk-W4DMKWAB.js +0 -35
- package/js/chunk-YEPYT6SD.js +0 -85
- package/js/chunk-ZQINWV4W.js +0 -630
- package/types/app-data/src/implementation/cursor.d.ts +0 -10
- package/types/app-data/src/implementation/index-key.d.ts +0 -7
- package/types/app-data/src/implementation/promise.d.ts +0 -68
- package/types/app-data/src/implementation/range.d.ts +0 -8
- package/types/app-data/src/implementation/schema.d.ts +0 -18
- package/types/app-data/src/implementation/sqlite.d.ts +0 -11
- package/types/app-data/src/index.d.ts +0 -4
- package/types/apps/src/contracts/dynamic-tools.d.ts +0 -13
- package/types/apps/src/contracts/storage.d.ts +0 -68
- package/types/apps/src/implementation/account-operations.d.ts +0 -151
- package/types/apps/src/implementation/dynamic-tools.d.ts +0 -8
- package/types/apps/src/implementation/storage.d.ts +0 -15
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Divide a tool invocation's time, on its own isolate's clock, by who the work belonged to:
|
|
3
|
+
* Executor, the app's authored code, upstream providers, or a person answering an elicitation.
|
|
4
|
+
* Each boundary declares its owner where the work starts (see `owned`); the invocation's own span is
|
|
5
|
+
* Executor's. The host adds the other isolates' parts.
|
|
6
|
+
*/
|
|
7
|
+
import { Effect } from "effect";
|
|
8
|
+
/** The span `makeElicit` opens while a person answers. */
|
|
9
|
+
export declare const elicitationWaitSpan = "app.elicitation.wait";
|
|
10
|
+
/** The span around each workflow control an app calls, which Executor answers. */
|
|
11
|
+
export declare const workflowControlSpan = "app.workflow.control";
|
|
12
|
+
/**
|
|
13
|
+
* Run a tool operation in its `app.<operation>` span and time it from the span's own start to its
|
|
14
|
+
* own end. The span records each part, and the isolated handler returns them to the host.
|
|
15
|
+
*/
|
|
16
|
+
export declare const timedInvocation: (operation: "call" | "query" | "mutate") => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, import("effect/Tracer").ParentSpan>>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Atom } from "effect/
|
|
1
|
+
import { Atom } from "effect/reactivity";
|
|
2
2
|
import { AppQueryFailed, type OperationReference, type QueryTransport } from "../contracts/live.js";
|
|
3
3
|
import type { Operation } from "./operations.js";
|
|
4
4
|
import { type Schema } from "./schema.js";
|
|
@@ -14,5 +14,5 @@ export declare const mutationReference: <Mutation>(name: Mutation extends Operat
|
|
|
14
14
|
export declare const liveQueryAtom: <Input, Output>(reference: OperationReference<Input, Output, "query">, input: NoInfer<Input>, options: {
|
|
15
15
|
readonly output: Schema<NoInfer<Output>, boolean>;
|
|
16
16
|
readonly transport: QueryTransport;
|
|
17
|
-
}) => Atom.Atom<import("effect/
|
|
17
|
+
}) => Atom.Atom<import("effect/reactivity/AsyncResult").AsyncResult<NoInfer<Output>, import("effect/Cause").NoSuchElementError | AppQueryFailed>>;
|
|
18
18
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ProviderError } from "../contracts/provider-error.js";
|
|
2
|
+
import type { NetworkRefused } from "../contracts/network.js";
|
|
2
3
|
/** One upstream call, with form requests forwarded to the invocation's existing elicitation capability. */
|
|
3
4
|
import type { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
4
5
|
import { Effect, Schema } from "effect";
|
|
@@ -6,15 +7,15 @@ import { ElicitationFailed } from "../contracts/elicitation.js";
|
|
|
6
7
|
import { McpError, type McpToolContext } from "../contracts/mcp.js";
|
|
7
8
|
import type { JsonObject } from "../contracts/schema.js";
|
|
8
9
|
/** Register prompts only around tools/call, preserve metadata, and close every callback with the call. Never retries. */
|
|
9
|
-
export declare const mcpCall: (client: Client, name: string, input: JsonObject, context: McpToolContext, timeoutMs: number, failure: (phase: McpError["phase"], error: unknown) => McpError | ProviderError) => Effect.Effect<{
|
|
10
|
+
export declare const mcpCall: (client: Client, name: string, input: JsonObject, context: McpToolContext, timeoutMs: number, failure: (phase: McpError["phase"], error: unknown) => McpError | ProviderError | NetworkRefused) => Effect.Effect<{
|
|
10
11
|
readonly content: readonly {
|
|
11
12
|
readonly [x: string]: Schema.Json;
|
|
12
13
|
}[];
|
|
13
14
|
readonly _meta?: {
|
|
14
15
|
readonly [x: string]: Schema.Json;
|
|
15
|
-
}
|
|
16
|
+
};
|
|
16
17
|
readonly structuredContent?: {
|
|
17
18
|
readonly [x: string]: Schema.Json;
|
|
18
|
-
}
|
|
19
|
-
readonly isError?: boolean
|
|
20
|
-
}, ProviderError | ElicitationFailed | McpError, never>;
|
|
19
|
+
};
|
|
20
|
+
readonly isError?: boolean;
|
|
21
|
+
}, ProviderError | NetworkRefused | ElicitationFailed | McpError, never>;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import type { DynamicTools } from "../contracts/dynamic-tools.js";
|
|
3
2
|
import { McpToolsOptions } from "../contracts/mcp.js";
|
|
4
|
-
import { type CatalogCacheOptions } from "./catalog-cache.js";
|
|
3
|
+
import { type CatalogAccount, type CatalogCacheOptions } from "./catalog-cache.js";
|
|
5
4
|
import { type OperationKinds } from "./protocol-operations.js";
|
|
6
|
-
/**
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
/**
|
|
6
|
+
* A server, the account whose catalog it is, and the metadata policy for HTTP/SSE sources. A
|
|
7
|
+
* missing cache keeps discovery invocation-local.
|
|
8
|
+
*/
|
|
9
|
+
export type McpCatalogOptions = Omit<McpToolsOptions, "accountId" | "headers"> & CatalogCacheOptions & CatalogAccount;
|
|
9
10
|
/** Construction opens no transport unless explicit revalidation is requested. */
|
|
10
|
-
export declare const mcpCatalog: (options: McpCatalogOptions, kinds: OperationKinds) => Effect.Effect<
|
|
11
|
-
dynamicTools: DynamicTools;
|
|
12
|
-
}, unknown, never>;
|
|
11
|
+
export declare const mcpCatalog: (options: McpCatalogOptions, kinds: OperationKinds) => Effect.Effect<import("./operations.js").RouterDeclaration<unknown, unknown>, unknown, never>;
|
|
@@ -1,51 +1,75 @@
|
|
|
1
1
|
import type { ProviderError } from "../contracts/provider-error.js";
|
|
2
|
+
import type { NetworkRefused } from "../contracts/network.js";
|
|
2
3
|
/** Shared MCP pagination, wire parsing and calls. Transport owns connection lifetime. */
|
|
3
4
|
import type { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
4
5
|
import type { jsonSchemaValidator } from "@modelcontextprotocol/sdk/validation/types.js";
|
|
5
6
|
import { Effect, Schema } from "effect";
|
|
6
7
|
import { McpError, type McpToolContext } from "../contracts/mcp.js";
|
|
8
|
+
import type { UpstreamError } from "../contracts/failure.js";
|
|
7
9
|
import type { JsonObject } from "../effect.js";
|
|
10
|
+
/**
|
|
11
|
+
* The JSON-RPC error a server answered a request with, if `error` is one. The SDK formats its
|
|
12
|
+
* message as `MCP error <code>: <message>`; the server's own message follows that prefix.
|
|
13
|
+
*/
|
|
14
|
+
export declare const answeredError: (error: unknown) => UpstreamError | undefined;
|
|
8
15
|
/** Use the framework-owned interpreter at the MCP SDK's synchronous validation boundary. */
|
|
9
16
|
export declare const mcpJsonSchemaValidator: jsonSchemaValidator;
|
|
10
17
|
/** An operation owns its connection; it must close even when interrupted. */
|
|
11
18
|
export interface WithMcpClient {
|
|
12
|
-
<A, E>(mode: "discover" | "call", use: (client: Client) => Effect.Effect<A, E>): Effect.Effect<A, E | McpError | ProviderError>;
|
|
19
|
+
<A, E>(mode: "discover" | "call", use: (client: Client) => Effect.Effect<A, E>): Effect.Effect<A, E | McpError | ProviderError | NetworkRefused>;
|
|
13
20
|
}
|
|
14
21
|
/** Shared client operations never cache catalogs or account credentials. */
|
|
15
|
-
export declare function mcpClient(withClient: WithMcpClient, timeoutMs: number, failure: (phase: McpError["phase"], error: unknown) => McpError | ProviderError): {
|
|
22
|
+
export declare function mcpClient(withClient: WithMcpClient, timeoutMs: number, failure: (phase: McpError["phase"], error: unknown) => McpError | ProviderError | NetworkRefused): {
|
|
16
23
|
list: Effect.Effect<{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
readonly
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
readonly
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
readonly
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
tools: {
|
|
25
|
+
readonly name: string;
|
|
26
|
+
readonly inputSchema: {
|
|
27
|
+
readonly [x: string]: Schema.Json;
|
|
28
|
+
};
|
|
29
|
+
readonly description?: string | undefined;
|
|
30
|
+
readonly _meta?: {
|
|
31
|
+
readonly [x: string]: Schema.Json;
|
|
32
|
+
} | undefined;
|
|
33
|
+
readonly title?: string | undefined;
|
|
34
|
+
readonly annotations?: {
|
|
35
|
+
readonly title?: string;
|
|
36
|
+
readonly readOnlyHint?: boolean;
|
|
37
|
+
readonly destructiveHint?: boolean;
|
|
38
|
+
readonly idempotentHint?: boolean;
|
|
39
|
+
readonly openWorldHint?: boolean;
|
|
40
|
+
} | undefined;
|
|
41
|
+
readonly outputSchema?: {
|
|
42
|
+
readonly [x: string]: Schema.Json;
|
|
43
|
+
} | undefined;
|
|
44
|
+
}[];
|
|
45
|
+
server: {
|
|
46
|
+
readonly description?: string;
|
|
47
|
+
readonly version?: string;
|
|
48
|
+
readonly name?: string;
|
|
49
|
+
readonly instructions?: string;
|
|
30
50
|
readonly title?: string;
|
|
31
|
-
readonly
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
51
|
+
readonly icons?: readonly {
|
|
52
|
+
readonly src: string;
|
|
53
|
+
readonly mimeType?: string;
|
|
54
|
+
readonly sizes?: readonly string[];
|
|
55
|
+
readonly theme?: "light" | "dark";
|
|
56
|
+
}[];
|
|
57
|
+
readonly websiteUrl?: string;
|
|
58
|
+
} | {};
|
|
59
|
+
}, ProviderError | NetworkRefused | McpError, never>;
|
|
60
|
+
check: Effect.Effect<void, ProviderError | NetworkRefused | McpError, never>;
|
|
37
61
|
call: (name: string, input: JsonObject, context: McpToolContext) => Effect.Effect<{
|
|
38
62
|
readonly content: readonly {
|
|
39
63
|
readonly [x: string]: Schema.Json;
|
|
40
64
|
}[];
|
|
41
65
|
readonly _meta?: {
|
|
42
66
|
readonly [x: string]: Schema.Json;
|
|
43
|
-
}
|
|
67
|
+
};
|
|
44
68
|
readonly structuredContent?: {
|
|
45
69
|
readonly [x: string]: Schema.Json;
|
|
46
|
-
}
|
|
47
|
-
readonly isError?: boolean
|
|
48
|
-
}, ProviderError | import("../index.js").ElicitationFailed | McpError, never>;
|
|
70
|
+
};
|
|
71
|
+
readonly isError?: boolean;
|
|
72
|
+
}, ProviderError | NetworkRefused | import("../index.js").ElicitationFailed | McpError, never>;
|
|
49
73
|
};
|
|
50
74
|
/** Transport-independent operations consumed by the app tool adapter. */
|
|
51
75
|
export type McpClient = ReturnType<typeof mcpClient>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { McpError, ProcessConfig } from "../contracts/mcp.js";
|
|
3
3
|
/** Each discovery/call owns and closes its subprocess. Deployment never starts it. */
|
|
4
|
-
export declare const stdioToolsEffect: (input: ProcessConfig) => Effect.Effect<Readonly<Record<string, import("../contracts/mcp.js").McpTool>>, import("../index.js").ProviderError | McpError, never>;
|
|
4
|
+
export declare const stdioToolsEffect: (input: ProcessConfig) => Effect.Effect<Readonly<Record<string, import("../contracts/mcp.js").McpTool>>, import("../index.js").ProviderError | import("../index.js").NetworkRefused | McpError, never>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ProviderError } from "../contracts/provider-error.js";
|
|
2
|
+
import type { NetworkRefused } from "../contracts/network.js";
|
|
2
3
|
/** Adapt any MCP transport into ordinary tools with shared validation behavior. */
|
|
3
4
|
import { Effect } from "effect";
|
|
4
5
|
import { McpError, type McpTools, type McpToolMetadata } from "../contracts/mcp.js";
|
|
@@ -6,4 +7,4 @@ import type { McpClient } from "./mcp-client.js";
|
|
|
6
7
|
/** Compile only the selected tool and bind its executable to the current invocation. */
|
|
7
8
|
export declare const adaptMcpTool: (client: McpClient, tool: McpToolMetadata) => Effect.Effect<import("../contracts/mcp.js").McpTool, McpError, never>;
|
|
8
9
|
/** Discover a complete catalog for probes and uncached low-level callers. */
|
|
9
|
-
export declare const adaptMcpTools: (client: McpClient) => Effect.Effect<McpTools, McpError | ProviderError>;
|
|
10
|
+
export declare const adaptMcpTools: (client: McpClient) => Effect.Effect<McpTools, McpError | ProviderError | NetworkRefused>;
|
|
@@ -1,41 +1,68 @@
|
|
|
1
1
|
import { ProviderError } from "../contracts/provider-error.js";
|
|
2
2
|
import { Effect, Schema } from "effect";
|
|
3
|
-
import { McpError, McpToolsOptions } from "../contracts/mcp.js";
|
|
3
|
+
import { McpCredentialsUnverified, McpError, McpToolsOptions, type McpHealthCheck, type McpHealthOptions } from "../contracts/mcp.js";
|
|
4
|
+
import { NetworkRefused } from "../contracts/network.js";
|
|
4
5
|
/** Discover and call with a fresh selected-account transport for each operation. */
|
|
5
6
|
export declare const mcpClientEffect: (input: McpToolsOptions, changed?: Effect.Effect<void, unknown>) => Effect.Effect<{
|
|
6
7
|
list: Effect.Effect<{
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
readonly
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
readonly
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
readonly
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
tools: {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly inputSchema: {
|
|
11
|
+
readonly [x: string]: Schema.Json;
|
|
12
|
+
};
|
|
13
|
+
readonly description?: string | undefined;
|
|
14
|
+
readonly _meta?: {
|
|
15
|
+
readonly [x: string]: Schema.Json;
|
|
16
|
+
} | undefined;
|
|
17
|
+
readonly title?: string | undefined;
|
|
18
|
+
readonly annotations?: {
|
|
19
|
+
readonly title?: string;
|
|
20
|
+
readonly readOnlyHint?: boolean;
|
|
21
|
+
readonly destructiveHint?: boolean;
|
|
22
|
+
readonly idempotentHint?: boolean;
|
|
23
|
+
readonly openWorldHint?: boolean;
|
|
24
|
+
} | undefined;
|
|
25
|
+
readonly outputSchema?: {
|
|
26
|
+
readonly [x: string]: Schema.Json;
|
|
27
|
+
} | undefined;
|
|
28
|
+
}[];
|
|
29
|
+
server: {
|
|
30
|
+
readonly description?: string;
|
|
31
|
+
readonly version?: string;
|
|
32
|
+
readonly name?: string;
|
|
33
|
+
readonly instructions?: string;
|
|
20
34
|
readonly title?: string;
|
|
21
|
-
readonly
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
35
|
+
readonly icons?: readonly {
|
|
36
|
+
readonly src: string;
|
|
37
|
+
readonly mimeType?: string;
|
|
38
|
+
readonly sizes?: readonly string[];
|
|
39
|
+
readonly theme?: "light" | "dark";
|
|
40
|
+
}[];
|
|
41
|
+
readonly websiteUrl?: string;
|
|
42
|
+
} | {};
|
|
43
|
+
}, ProviderError | NetworkRefused | McpError, never>;
|
|
44
|
+
check: Effect.Effect<void, ProviderError | NetworkRefused | McpError, never>;
|
|
27
45
|
call: (name: string, input: import("../index.js").JsonObject, context: import("../mcp.js").McpToolContext) => Effect.Effect<{
|
|
28
46
|
readonly content: readonly {
|
|
29
47
|
readonly [x: string]: Schema.Json;
|
|
30
48
|
}[];
|
|
31
49
|
readonly _meta?: {
|
|
32
50
|
readonly [x: string]: Schema.Json;
|
|
33
|
-
}
|
|
51
|
+
};
|
|
34
52
|
readonly structuredContent?: {
|
|
35
53
|
readonly [x: string]: Schema.Json;
|
|
36
|
-
}
|
|
37
|
-
readonly isError?: boolean
|
|
38
|
-
}, ProviderError | import("../index.js").ElicitationFailed | McpError, never>;
|
|
54
|
+
};
|
|
55
|
+
readonly isError?: boolean;
|
|
56
|
+
}, ProviderError | NetworkRefused | import("../index.js").ElicitationFailed | McpError, never>;
|
|
39
57
|
}, McpError, never>;
|
|
58
|
+
/**
|
|
59
|
+
* Check one account: initialize and read the first page of tools with the account's headers, then
|
|
60
|
+
* repeat that with no headers on a fresh transport. A refused account fails with its
|
|
61
|
+
* `ProviderError`, and anything else that stops the first check is an `McpError`; the second never
|
|
62
|
+
* runs. The check passes only when the server refuses the second, which shows it checked the
|
|
63
|
+
* credentials. Otherwise it fails with `McpCredentialsUnverified`. Both share one budget, which
|
|
64
|
+
* ends early enough before the check context's deadline to close the session and report why.
|
|
65
|
+
*/
|
|
66
|
+
export declare const mcpHealthEffect: (check: McpHealthCheck, options: McpHealthOptions) => Effect.Effect<void, ProviderError | NetworkRefused | McpError | McpCredentialsUnverified, never>;
|
|
40
67
|
/** Discover and compile all tools for connection probes and low-level consumers. */
|
|
41
|
-
export declare const mcpToolsEffect: (input: McpToolsOptions) => Effect.Effect<Readonly<Record<string, import("../contracts/mcp.js").McpTool>>, ProviderError | McpError, never>;
|
|
68
|
+
export declare const mcpToolsEffect: (input: McpToolsOptions) => Effect.Effect<Readonly<Record<string, import("../contracts/mcp.js").McpTool>>, ProviderError | NetworkRefused | McpError, never>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** Typed refusals and option checks for the fetch app code receives from the framework. */
|
|
2
|
+
import { Effect } from "effect";
|
|
3
|
+
import type { HttpClientResponse } from "effect/http";
|
|
4
|
+
import { type NetworkRefused } from "../contracts/network.js";
|
|
5
|
+
type Fetch = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
6
|
+
/** Fail with the refusal a protocol helper's response carries, or continue to its own handling. */
|
|
7
|
+
export declare const failOnNetworkRefusal: (response: HttpClientResponse.HttpClientResponse) => Effect.Effect<void, NetworkRefused>;
|
|
8
|
+
/**
|
|
9
|
+
* The fetch app code receives as `ctx.fetch`. It rejects a RequestInit value the app runtime
|
|
10
|
+
* would reject, naming the option, on every host. A request Executor's app network refused
|
|
11
|
+
* rejects with `NetworkRefused`: the service never answered, so there is no response to return.
|
|
12
|
+
*/
|
|
13
|
+
export declare const appFetch: (fetch: Fetch) => Fetch;
|
|
14
|
+
/** The invocation's correlated, cancellable fetch, as app code receives it. */
|
|
15
|
+
export declare const appInvocationFetch: (signal: AbortSignal) => Effect.Effect<Fetch, never, never>;
|
|
16
|
+
export {};
|
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
/** Compile an OpenAPI document into tool declarations inside the app runtime, never a second execution engine. */
|
|
2
2
|
import { Effect, Schema } from "effect";
|
|
3
3
|
import { JsonObject } from "../contracts/schema.js";
|
|
4
|
+
import { OpenapiErrorResponse } from "../contracts/openapi.js";
|
|
4
5
|
import { OpenapiCompileError as TemplateError } from "../contracts/openapi-compile.js";
|
|
5
6
|
import type { OpenApiImport } from "../contracts/openapi-document.js";
|
|
6
7
|
import { type GeneratedOperation, type GeneratedSecrets } from "../contracts/openapi-document.js";
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
import { type OpenApiDocument } from "./openapi-document.js";
|
|
9
|
+
/** Keep tagged errors, including response/component refs and anyOf alternatives.
|
|
10
|
+
* Public text comes from a declared string message or the schema's static description.
|
|
11
|
+
* `scripts/check-api-errors.ts` applies this to Executor's own API documents.
|
|
12
|
+
*/
|
|
13
|
+
export declare function errorResponses(document: OpenApiDocument, operation: JsonObject, at: string): OpenapiErrorResponse[];
|
|
14
|
+
/** Compile a revision of a live OpenAPI source into tool declarations for the app runtime.
|
|
15
|
+
* The document is consumed: compilation upgrades it in place instead of copying it. It must be a
|
|
16
|
+
* tree, with no object reached twice, as parsed JSON is.
|
|
17
|
+
*/
|
|
18
|
+
export declare const compileOpenApiDocument: (entry: OpenApiImport, inputDocument: JsonObject, options?: {
|
|
9
19
|
readonly baseUrl?: string;
|
|
10
20
|
readonly allowedOrigin?: string;
|
|
21
|
+
/** Inserted between every operation's server and path; see `prefixParameters`. */
|
|
22
|
+
readonly pathPrefix?: string;
|
|
11
23
|
readonly securitySchemes?: Readonly<Record<string, JsonObject>>;
|
|
12
24
|
readonly fallbackSecurity?: GeneratedOperation["request"]["security"];
|
|
13
25
|
}) => Effect.Effect<{
|
|
14
26
|
operations: {
|
|
15
|
-
readonly name: string;
|
|
16
|
-
readonly path: string;
|
|
17
27
|
readonly description: string;
|
|
18
28
|
readonly request: {
|
|
19
29
|
readonly parameters: readonly {
|
|
20
30
|
readonly name: string;
|
|
21
|
-
readonly in: "query" | "
|
|
31
|
+
readonly in: "path" | "query" | "querystring" | "header" | "cookie";
|
|
22
32
|
readonly required?: boolean;
|
|
23
33
|
readonly schema?: {
|
|
24
34
|
readonly [x: string]: Schema.Json;
|
|
@@ -53,10 +63,12 @@ export declare const compileOpenApiDocument: (entry: OpenApiImport, inputDocumen
|
|
|
53
63
|
readonly required?: boolean;
|
|
54
64
|
};
|
|
55
65
|
};
|
|
66
|
+
readonly path: string;
|
|
67
|
+
readonly name: string;
|
|
56
68
|
readonly input: {
|
|
57
69
|
readonly [x: string]: Schema.Json;
|
|
58
70
|
};
|
|
59
|
-
readonly method: "HEAD" | "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS";
|
|
71
|
+
readonly method: "HEAD" | "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "QUERY";
|
|
60
72
|
readonly securitySchemes: {
|
|
61
73
|
readonly [x: string]: {
|
|
62
74
|
readonly [x: string]: Schema.Json;
|
|
@@ -67,6 +79,7 @@ export declare const compileOpenApiDocument: (entry: OpenApiImport, inputDocumen
|
|
|
67
79
|
readonly outputSchema?: {
|
|
68
80
|
readonly [x: string]: Schema.Json;
|
|
69
81
|
};
|
|
82
|
+
readonly tags?: readonly string[];
|
|
70
83
|
readonly operationId?: string;
|
|
71
84
|
readonly streaming?: true;
|
|
72
85
|
readonly errorResponses?: readonly {
|
|
@@ -83,6 +96,14 @@ export declare const compileOpenApiDocument: (entry: OpenApiImport, inputDocumen
|
|
|
83
96
|
};
|
|
84
97
|
}[];
|
|
85
98
|
}[];
|
|
99
|
+
/** Declared operations left out of `operations`, in definition order. */
|
|
100
|
+
skipped: {
|
|
101
|
+
readonly name: string;
|
|
102
|
+
readonly method: string;
|
|
103
|
+
readonly path: string;
|
|
104
|
+
readonly code: "server_protocol" | "server_url" | "external_reference" | "circular_reference" | "schema_keyword" | "schema_reference" | "missing_component" | "openapi_version" | "auth_helper" | "auth_missing" | "operation_path" | "operation_method" | "duplicate_operation" | "server_missing" | "multiple_hosts" | "parameter_encoding" | "parameter_style" | "request_body" | "combined_oauth" | "auth_method" | "event_stream" | "input_schema" | "no_operations" | "no_supported_operations" | "invalid_document" | "source_generation" | "authoring_reference";
|
|
105
|
+
readonly reason: string;
|
|
106
|
+
}[];
|
|
86
107
|
definitions: {
|
|
87
108
|
[k: string]: {
|
|
88
109
|
readonly [x: string]: Schema.Json;
|
|
@@ -1,11 +1,32 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
2
|
import { JsonObject } from "../contracts/schema.js";
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
/**
|
|
4
|
+
* An object in a document that was validated as JSON when it was read. Compilation only turns JSON
|
|
5
|
+
* into JSON, so inside it an object's shape is checked, not its every leaf again: re-validating
|
|
6
|
+
* whole documents was most of a large API's compile time.
|
|
7
7
|
*/
|
|
8
|
-
export declare
|
|
8
|
+
export declare const DocumentObject: Schema.declare<{
|
|
9
|
+
readonly [x: string]: Schema.Json;
|
|
10
|
+
}, {
|
|
11
|
+
readonly [x: string]: Schema.Json;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const documentObject: (input: unknown, options?: import("effect/SchemaAST").ParseOptions) => {
|
|
14
|
+
readonly [x: string]: Schema.Json;
|
|
15
|
+
};
|
|
16
|
+
/** One JSON Pointer reference token. */
|
|
17
|
+
export declare const pointerToken: (key: string) => string;
|
|
18
|
+
/**
|
|
19
|
+
* Decode one part of the definition, located by the JSON Pointer `at`. A mismatch names the
|
|
20
|
+
* pointer of the first failing value and what was expected there.
|
|
21
|
+
*/
|
|
22
|
+
export declare const decodeDefinition: <S extends Schema.Decoder<unknown>>(schema: S, value: unknown, at: string, what: string) => S["Type"];
|
|
23
|
+
/** Resolve OpenAPI objects once; schemas retain their original recursive references.
|
|
24
|
+
* Scalar first upgrades Swagger 2.0 and OpenAPI 3.0 to 3.1, so the importer reads 3.1 and 3.2,
|
|
25
|
+
* whose Schema Objects share one dialect, and 3.1 keywords that appear in 3.0 documents keep
|
|
26
|
+
* their meaning. Unsupported versions, references and conversions throw TemplateError at the
|
|
27
|
+
* import boundary.
|
|
28
|
+
*/
|
|
29
|
+
export declare function openApiDocument(input: JsonObject): Promise<{
|
|
9
30
|
spec: {
|
|
10
31
|
readonly openapi: string;
|
|
11
32
|
readonly paths: {
|
|
@@ -13,39 +34,45 @@ export declare function openApiDocument(input: unknown): Promise<{
|
|
|
13
34
|
readonly [x: string]: Schema.Json;
|
|
14
35
|
};
|
|
15
36
|
};
|
|
16
|
-
readonly security?: readonly {
|
|
17
|
-
readonly [x: string]: readonly string[];
|
|
18
|
-
}[];
|
|
19
|
-
readonly servers?: readonly {
|
|
20
|
-
readonly url: string;
|
|
21
|
-
readonly variables?: {
|
|
22
|
-
readonly [x: string]: Schema.Json;
|
|
23
|
-
};
|
|
24
|
-
}[];
|
|
25
37
|
readonly components?: {
|
|
26
|
-
readonly
|
|
38
|
+
readonly schemas?: {
|
|
27
39
|
readonly [x: string]: {
|
|
28
40
|
readonly [x: string]: Schema.Json;
|
|
29
41
|
};
|
|
30
42
|
};
|
|
31
|
-
readonly
|
|
43
|
+
readonly securitySchemes?: {
|
|
32
44
|
readonly [x: string]: {
|
|
33
45
|
readonly [x: string]: Schema.Json;
|
|
34
46
|
};
|
|
35
47
|
};
|
|
36
48
|
};
|
|
49
|
+
readonly security?: readonly {
|
|
50
|
+
readonly [x: string]: readonly string[];
|
|
51
|
+
}[];
|
|
52
|
+
readonly servers?: readonly {
|
|
53
|
+
readonly url: string;
|
|
54
|
+
readonly variables?: {
|
|
55
|
+
readonly [x: string]: Schema.Json;
|
|
56
|
+
};
|
|
57
|
+
}[];
|
|
37
58
|
};
|
|
38
59
|
definitions: Map<string, {
|
|
39
60
|
readonly [x: string]: Schema.Json;
|
|
40
61
|
}>;
|
|
62
|
+
/**
|
|
63
|
+
* The JSON Pointer of the object a local reference resolved to, so a diagnostic can locate
|
|
64
|
+
* a resolved Response, Parameter, Request Body or Path Item where the definition declares it.
|
|
65
|
+
*/
|
|
66
|
+
origin(value: unknown): string | undefined;
|
|
41
67
|
/** Inspect a component schema without expanding its children. OpenAPI object refs must already be resolved by Swagger. */
|
|
42
68
|
resolve(value: JsonObject): JsonObject;
|
|
43
69
|
/** Compose a Draft 2020-12 schema around API Schema Objects. Only values passed to
|
|
44
70
|
* `api` use the document's OpenAPI dialect; Executor-authored wrappers are already
|
|
45
|
-
* Draft 2020-12 and must not be reinterpreted.
|
|
46
|
-
*
|
|
71
|
+
* Draft 2020-12 and must not be reinterpreted. `api` takes the schema's JSON Pointer in the
|
|
72
|
+
* definition, which failures name. Reached components are converted once into the shared
|
|
73
|
+
* `definitions` and stay references here; nothing is inlined or copied per operation.
|
|
47
74
|
*/
|
|
48
|
-
schema(build: (api: (input: Schema.Json) => JsonObject) => JsonObject): JsonObject;
|
|
75
|
+
schema(build: (api: (input: Schema.Json, at: string) => JsonObject) => JsonObject): JsonObject;
|
|
49
76
|
}>;
|
|
50
77
|
/** A parsed document with one reference scope and one schema dialect. */
|
|
51
78
|
export type OpenApiDocument = Awaited<ReturnType<typeof openApiDocument>>;
|
|
@@ -11,8 +11,13 @@ export interface OperationNameInput {
|
|
|
11
11
|
readonly path: string;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
* the path's version segment, then by the
|
|
16
|
-
*
|
|
14
|
+
* Name every input, in input order. Names that collide, whether or not they come from an
|
|
15
|
+
* operationId, are refined together: first by the path's version segment, then by the path
|
|
16
|
+
* segments that tell them apart (`GET /items` and `GET /items/{id}` are `items.getItems` and
|
|
17
|
+
* `items.getItemsById`), then by the whole path, then by the HTTP method, then by a stable hash.
|
|
18
|
+
* Refinement only touches the colliding names, so adding an operation never renames an unrelated
|
|
19
|
+
* one.
|
|
17
20
|
*/
|
|
18
|
-
export declare const planOperationNames: (inputs: readonly
|
|
21
|
+
export declare const planOperationNames: <I extends OperationNameInput>(inputs: readonly I[]) => (I & {
|
|
22
|
+
readonly name: string;
|
|
23
|
+
})[];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NetworkRefused } from "../contracts/network.js";
|
|
1
2
|
import { ProviderError } from "../contracts/provider-error.js";
|
|
2
3
|
/** Swagger constructs requests; Effect owns HTTP policy and bounded results. */
|
|
3
4
|
import { Effect, Schema } from "effect";
|
|
@@ -6,12 +7,19 @@ import { OpenapiError, type CredentialBinding, type OpenapiOperation, type Opena
|
|
|
6
7
|
type DeclaredError = OpenapiErrorResponse & {
|
|
7
8
|
readonly decoder: Schema.Decoder<Schema.Json>;
|
|
8
9
|
};
|
|
10
|
+
/** What decides whether an account can call an operation: its transport and security. */
|
|
11
|
+
export interface OpenapiOperationAccess {
|
|
12
|
+
readonly streaming?: true;
|
|
13
|
+
readonly request: {
|
|
14
|
+
readonly security: OpenapiOperation["request"]["security"];
|
|
15
|
+
};
|
|
16
|
+
}
|
|
9
17
|
/** Create request helpers from credential-free generated authentication metadata. */
|
|
10
18
|
export declare function createRequest(config: {
|
|
11
19
|
readonly methods: Readonly<Record<string, readonly CredentialBinding[]>>;
|
|
12
20
|
readonly oauth: readonly string[];
|
|
13
21
|
}): {
|
|
14
|
-
available: (op:
|
|
15
|
-
call: (op: OpenapiOperation, input: unknown, account: OpenapiAccount | undefined, errors: readonly DeclaredError[]) => Effect.Effect<Schema.Json, ProviderError | OpenapiResponseError | OpenapiError, never>;
|
|
22
|
+
available: (op: OpenapiOperationAccess, account: OpenapiAccount | undefined) => boolean;
|
|
23
|
+
call: (op: OpenapiOperation, input: unknown, account: OpenapiAccount | undefined, errors: readonly DeclaredError[]) => Effect.Effect<Schema.Json, ProviderError | NetworkRefused | OpenapiResponseError | OpenapiError, never>;
|
|
16
24
|
};
|
|
17
25
|
export {};
|
|
@@ -3,8 +3,8 @@ import { Duration } from "effect";
|
|
|
3
3
|
import type { AppCache } from "../contracts/cache.js";
|
|
4
4
|
import { OpenapiOperation, type OpenapiToolsOptions } from "../contracts/openapi.js";
|
|
5
5
|
import { JsonObject, JsonValue } from "../contracts/schema.js";
|
|
6
|
-
import type { DynamicTools } from "../contracts/dynamic-tools.js";
|
|
7
6
|
import { type OperationKinds } from "./protocol-operations.js";
|
|
7
|
+
import { type RouterDeclaration } from "./router.js";
|
|
8
8
|
/** Static credential placement and destination are reviewed when the app is authored/imported. */
|
|
9
9
|
export interface OpenapiSourceOptions extends Omit<OpenapiToolsOptions, "operations" | "definitions"> {
|
|
10
10
|
readonly cache: AppCache;
|
|
@@ -16,6 +16,12 @@ export interface OpenapiSourceOptions extends Omit<OpenapiToolsOptions, "operati
|
|
|
16
16
|
readonly allowedOrigin: string;
|
|
17
17
|
readonly securitySchemes: Readonly<Record<string, JsonObject>>;
|
|
18
18
|
readonly baseUrl?: string;
|
|
19
|
+
/**
|
|
20
|
+
* A path inserted between the server and every operation's path, for a definition that omits a
|
|
21
|
+
* leading segment, such as `/projects/{project}`. Each `{name}` becomes a required string path
|
|
22
|
+
* parameter of every tool, unless the operation already declares it without placing it.
|
|
23
|
+
*/
|
|
24
|
+
readonly pathPrefix?: string;
|
|
19
25
|
readonly freshFor?: Duration.Input;
|
|
20
26
|
readonly staleFor?: Duration.Input;
|
|
21
27
|
/**
|
|
@@ -33,8 +39,4 @@ export interface OpenapiSourceOptions extends Omit<OpenapiToolsOptions, "operati
|
|
|
33
39
|
/** JSON-object patches are static app configuration and are reapplied to every revision. */
|
|
34
40
|
export declare function patchOpenapi(root: JsonObject, patches: OpenapiSourceOptions["patches"]): JsonObject;
|
|
35
41
|
/** No I/O during app construction. All accounts share credential-free compilation. */
|
|
36
|
-
export declare const
|
|
37
|
-
readonly queries: {};
|
|
38
|
-
readonly mutations: {};
|
|
39
|
-
readonly dynamicTools: DynamicTools;
|
|
40
|
-
};
|
|
42
|
+
export declare const liveOpenapiRouter: (options: OpenapiSourceOptions) => RouterDeclaration;
|