@agent-vm/agent-portal-sdk 0.0.135 → 0.0.138
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/approval-surface/index.d.ts +1 -1
- package/dist/cli/tool-portal.js +139 -159
- package/dist/cli/tool-portal.js.map +1 -1
- package/dist/gateway-runtime-client/index.d.ts +2 -2
- package/dist/{index-BoYiYKiy.d.ts → index-BQ12JshX.d.ts} +39 -39
- package/dist/{index-BoYiYKiy.d.ts.map → index-BQ12JshX.d.ts.map} +1 -1
- package/dist/{index-Cwtgu-ga.d.ts → index-BqWw914Z.d.ts} +5 -5
- package/dist/{index-Cwtgu-ga.d.ts.map → index-BqWw914Z.d.ts.map} +1 -1
- package/dist/{index-DvcQs-mM.d.ts → index-CsCLhmNb.d.ts} +17 -17
- package/dist/{index-DvcQs-mM.d.ts.map → index-CsCLhmNb.d.ts.map} +1 -1
- package/dist/{index-CscGl_Rj.d.ts → index-UuqAPQOK.d.ts} +3 -3
- package/dist/{index-CscGl_Rj.d.ts.map → index-UuqAPQOK.d.ts.map} +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/{portal-call-result-schema-CGopcrjJ.d.ts → portal-call-result-schema-DalyNrfW.d.ts} +191 -191
- package/dist/{portal-call-result-schema-CGopcrjJ.d.ts.map → portal-call-result-schema-DalyNrfW.d.ts.map} +1 -1
- package/dist/portal-call-surface/index.d.ts +2 -2
- package/dist/portal-event-surface/index.d.ts +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/tool-portal-mcp-client/index.d.ts +1 -1
- package/dist/tool-portal-mcp-client/node-tool-portal-mcp-transport.d.ts +1 -1
- package/package.json +4 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ApprovalRequiredResult, i as ApprovalDecisionReferenceSchema, n as ApprovalChallengeReferenceSchema, o as ApprovalRequiredResultSchema, r as ApprovalDecisionReference, t as ApprovalChallengeReference } from "../index-
|
|
1
|
+
import { a as ApprovalRequiredResult, i as ApprovalDecisionReferenceSchema, n as ApprovalChallengeReferenceSchema, o as ApprovalRequiredResultSchema, r as ApprovalDecisionReference, t as ApprovalChallengeReference } from "../index-BqWw914Z.js";
|
|
2
2
|
export { ApprovalChallengeReference, ApprovalChallengeReferenceSchema, ApprovalDecisionReference, ApprovalDecisionReferenceSchema, ApprovalRequiredResult, ApprovalRequiredResultSchema };
|
package/dist/cli/tool-portal.js
CHANGED
|
@@ -6,165 +6,34 @@ import { a as encodeCanonicalJson } from "../portable-contracts-C5rtqe-H.js";
|
|
|
6
6
|
import { t as ToolPortalMcpClient } from "../tool-portal-mcp-client-nMGxqQ-A.js";
|
|
7
7
|
import { t as createNodeToolPortalMcpTransport } from "../node-tool-portal-mcp-transport-CnB8MCW2.js";
|
|
8
8
|
import { z } from "zod";
|
|
9
|
+
import { run } from "@optique/run";
|
|
9
10
|
import { readFile } from "node:fs/promises";
|
|
10
11
|
import path from "node:path";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import "@optique/core/
|
|
14
|
-
import { map, optional } from "@optique/core/modifiers";
|
|
15
|
-
import "@optique/core/parser";
|
|
16
|
-
import { command, option } from "@optique/core/primitives";
|
|
12
|
+
import { object, or } from "@optique/core/constructs";
|
|
13
|
+
import { map, optional, withDefault } from "@optique/core/modifiers";
|
|
14
|
+
import { command, constant, option } from "@optique/core/primitives";
|
|
17
15
|
import { zod } from "@optique/zod";
|
|
18
|
-
//#region src/cli/tool-portal-cli-
|
|
19
|
-
z.enum([
|
|
20
|
-
"artifact-read",
|
|
21
|
-
"call",
|
|
22
|
-
"describe",
|
|
23
|
-
"list",
|
|
24
|
-
"search"
|
|
25
|
-
]);
|
|
26
|
-
const transportKindSchema = z.enum(["http", "scoped-stdio"]);
|
|
27
|
-
const environmentVariableNameSchema = z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/u);
|
|
28
|
-
const absolutePathSchema = z.string().min(1).refine(path.isAbsolute, { message: "Scoped stdio configuration path must be absolute." });
|
|
29
|
-
function createEnvironmentVariableNameParser() {
|
|
30
|
-
return zod(environmentVariableNameSchema, {
|
|
31
|
-
metavar: "ENV_NAME",
|
|
32
|
-
placeholder: "TOOL_PORTAL_AUTH"
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
function createInputJsonParser() {
|
|
36
|
-
return zod(z.string().min(1), {
|
|
37
|
-
metavar: "JSON",
|
|
38
|
-
placeholder: "{}"
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
function createHttpTransportParser() {
|
|
42
|
-
return map(object({
|
|
43
|
-
authorizationEnvironmentName: option("--authorization-env", createEnvironmentVariableNameParser()),
|
|
44
|
-
endpoint: option("--endpoint", zod(z.string().min(1), {
|
|
45
|
-
metavar: "URL",
|
|
46
|
-
placeholder: "https://example.test/mcp"
|
|
47
|
-
}))
|
|
48
|
-
}), (options) => ({
|
|
49
|
-
...options,
|
|
50
|
-
kind: "http"
|
|
51
|
-
}));
|
|
52
|
-
}
|
|
53
|
-
function createScopedStdioTransportParser() {
|
|
54
|
-
return map(object({ scopedStdioConfigPath: option("--stdio-config", zod(absolutePathSchema, {
|
|
55
|
-
metavar: "PATH",
|
|
56
|
-
placeholder: "/tmp/tool-portal.json"
|
|
57
|
-
})) }), (options) => ({
|
|
58
|
-
...options,
|
|
59
|
-
kind: "scoped-stdio"
|
|
60
|
-
}));
|
|
61
|
-
}
|
|
62
|
-
function createTransportParser() {
|
|
63
|
-
return map(conditional(option("--transport", zod(transportKindSchema, {
|
|
64
|
-
metavar: "TRANSPORT",
|
|
65
|
-
placeholder: "http"
|
|
66
|
-
})), {
|
|
67
|
-
http: createHttpTransportParser(),
|
|
68
|
-
"scoped-stdio": createScopedStdioTransportParser()
|
|
69
|
-
}), ([, transport]) => transport);
|
|
70
|
-
}
|
|
71
|
-
function createInputJsonOption() {
|
|
72
|
-
return option("--input-json", createInputJsonParser());
|
|
73
|
-
}
|
|
74
|
-
function createCallCommand() {
|
|
75
|
-
return command("call", map(object({
|
|
76
|
-
approvalTokenEnvironmentName: optional(option("--approval-token-env", createEnvironmentVariableNameParser())),
|
|
77
|
-
inputJson: createInputJsonOption(),
|
|
78
|
-
transport: createTransportParser()
|
|
79
|
-
}), ({ approvalTokenEnvironmentName, inputJson, transport }) => ({
|
|
80
|
-
...approvalTokenEnvironmentName === void 0 ? {} : { approvalTokenEnvironmentName },
|
|
81
|
-
inputJson,
|
|
82
|
-
operation: "call",
|
|
83
|
-
transport
|
|
84
|
-
})));
|
|
85
|
-
}
|
|
86
|
-
function createNonCallCommand(operation) {
|
|
87
|
-
return command(operation, map(object({
|
|
88
|
-
inputJson: createInputJsonOption(),
|
|
89
|
-
transport: createTransportParser()
|
|
90
|
-
}), ({ inputJson, transport }) => ({
|
|
91
|
-
inputJson,
|
|
92
|
-
operation,
|
|
93
|
-
transport
|
|
94
|
-
})));
|
|
95
|
-
}
|
|
96
|
-
const toolPortalCliParser = or(createNonCallCommand("artifact-read"), createCallCommand(), createNonCallCommand("describe"), createNonCallCommand("list"), createNonCallCommand("search"));
|
|
97
|
-
var ToolPortalCliRunnerSignalError = class extends Error {
|
|
98
|
-
signal;
|
|
99
|
-
constructor(signal) {
|
|
100
|
-
super(`Tool Portal CLI runner signal: ${signal.kind}`);
|
|
101
|
-
this.signal = signal;
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
function writeOutput(write, text) {
|
|
105
|
-
write.write(text.endsWith("\n") ? text : `${text}\n`);
|
|
106
|
-
}
|
|
107
|
-
function createRunOptions(io) {
|
|
108
|
-
return {
|
|
109
|
-
help: {
|
|
110
|
-
command: true,
|
|
111
|
-
option: { names: ["-h", "--help"] },
|
|
112
|
-
onShow: () => {
|
|
113
|
-
throw new ToolPortalCliRunnerSignalError({
|
|
114
|
-
exitCode: 0,
|
|
115
|
-
kind: "help"
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
onError: (exitCode) => {
|
|
120
|
-
throw new ToolPortalCliRunnerSignalError({
|
|
121
|
-
exitCode,
|
|
122
|
-
kind: "parse-error"
|
|
123
|
-
});
|
|
124
|
-
},
|
|
125
|
-
stderr: (text) => writeOutput(io.stderr, text),
|
|
126
|
-
stdout: (text) => writeOutput(io.stdout, text)
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
function runToolPortalCliParser(argv, io) {
|
|
130
|
-
try {
|
|
131
|
-
return {
|
|
132
|
-
kind: "parsed",
|
|
133
|
-
value: runParser(toolPortalCliParser, "tool-portal", argv, createRunOptions(io))
|
|
134
|
-
};
|
|
135
|
-
} catch (error) {
|
|
136
|
-
if (error instanceof ToolPortalCliRunnerSignalError) return error.signal;
|
|
137
|
-
throw error;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
//#endregion
|
|
141
|
-
//#region src/cli/tool-portal.ts
|
|
16
|
+
//#region src/cli/tool-portal-cli-operation.ts
|
|
142
17
|
const canonicalResultGraceAfterInterruptMilliseconds = 250;
|
|
143
|
-
const
|
|
18
|
+
const scopedStdioConfigSchema = z.object({
|
|
144
19
|
argv: z.array(z.string()).max(128),
|
|
145
20
|
executable: z.string().min(1),
|
|
146
21
|
schemaVersion: z.literal(1)
|
|
147
22
|
}).strict();
|
|
148
|
-
function
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return parsedEndpoint;
|
|
152
|
-
}
|
|
153
|
-
async function createCliTransport(arguments_, environment) {
|
|
154
|
-
if (arguments_.transport.kind === "http") {
|
|
155
|
-
const environmentName = arguments_.transport.authorizationEnvironmentName;
|
|
156
|
-
const authorization = environmentName === void 0 ? void 0 : environment[environmentName];
|
|
23
|
+
async function createCliTransport(command, environment) {
|
|
24
|
+
if (command.transport.kind === "http") {
|
|
25
|
+
const authorization = environment[command.transport.authorizationEnvironmentName];
|
|
157
26
|
if (authorization === void 0 || authorization.length === 0) throw new Error("The explicit Tool Portal authorization environment variable is unset.");
|
|
158
27
|
return {
|
|
159
28
|
authorization,
|
|
160
29
|
transport: createNodeToolPortalMcpTransport({
|
|
161
30
|
authorization,
|
|
162
|
-
endpoint:
|
|
31
|
+
endpoint: new URL(command.transport.endpoint),
|
|
163
32
|
kind: "http"
|
|
164
33
|
})
|
|
165
34
|
};
|
|
166
35
|
}
|
|
167
|
-
const config =
|
|
36
|
+
const config = scopedStdioConfigSchema.parse(JSON.parse(await readFile(command.transport.scopedStdioConfigPath, "utf8")));
|
|
168
37
|
return {
|
|
169
38
|
authorization: void 0,
|
|
170
39
|
transport: createNodeToolPortalMcpTransport({
|
|
@@ -204,13 +73,13 @@ async function invokePortalOperation(props) {
|
|
|
204
73
|
result: await props.client.search(PortalSearchRequestSchema.parse(props.publicRequest), options)
|
|
205
74
|
};
|
|
206
75
|
}
|
|
207
|
-
return assertNever(props.operation);
|
|
76
|
+
return assertNever$1(props.operation);
|
|
208
77
|
}
|
|
209
|
-
function assertNever(value) {
|
|
78
|
+
function assertNever$1(value) {
|
|
210
79
|
throw new Error(`Unsupported Tool Portal CLI operation: ${String(value)}.`);
|
|
211
80
|
}
|
|
212
|
-
function readApprovalToken(
|
|
213
|
-
const environmentName =
|
|
81
|
+
function readApprovalToken(command, environment) {
|
|
82
|
+
const environmentName = command.approvalTokenEnvironmentName;
|
|
214
83
|
if (environmentName === void 0) return void 0;
|
|
215
84
|
const approvalToken = environment[environmentName];
|
|
216
85
|
if (approvalToken === void 0 || approvalToken.length === 0) throw new Error("The explicit Tool Portal approval-token environment variable is unset.");
|
|
@@ -224,7 +93,7 @@ function safeDiagnostic(error, secrets) {
|
|
|
224
93
|
async function waitForCancellationNotificationFlush() {
|
|
225
94
|
await new Promise((resolve) => setImmediate(resolve));
|
|
226
95
|
}
|
|
227
|
-
async function
|
|
96
|
+
async function runToolPortalOperation(command, environment) {
|
|
228
97
|
let authorization;
|
|
229
98
|
let approvalToken;
|
|
230
99
|
let client;
|
|
@@ -232,23 +101,16 @@ async function runToolPortalCli(argv, environment) {
|
|
|
232
101
|
const interrupt = () => cancellation.abort(/* @__PURE__ */ new Error("Tool Portal CLI interrupted."));
|
|
233
102
|
process.once("SIGINT", interrupt);
|
|
234
103
|
try {
|
|
235
|
-
const
|
|
236
|
-
stderr: process.stderr,
|
|
237
|
-
stdout: process.stdout
|
|
238
|
-
});
|
|
239
|
-
if (parseResult.kind === "help") return parseResult.exitCode;
|
|
240
|
-
if (parseResult.kind === "parse-error") return 2;
|
|
241
|
-
const cliArguments = parseResult.value;
|
|
242
|
-
const transportResult = await createCliTransport(cliArguments, environment);
|
|
104
|
+
const transportResult = await createCliTransport(command, environment);
|
|
243
105
|
authorization = transportResult.authorization;
|
|
244
106
|
client = new ToolPortalMcpClient({ transport: transportResult.transport });
|
|
245
107
|
await client.connect();
|
|
246
|
-
const publicRequest = JSON.parse(
|
|
247
|
-
approvalToken =
|
|
108
|
+
const publicRequest = JSON.parse(command.inputJson);
|
|
109
|
+
approvalToken = command.operation === "call" ? readApprovalToken(command, environment) : void 0;
|
|
248
110
|
const invocation = await invokePortalOperation({
|
|
249
111
|
...approvalToken === void 0 ? {} : { approvalToken },
|
|
250
112
|
client,
|
|
251
|
-
operation:
|
|
113
|
+
operation: command.operation,
|
|
252
114
|
publicRequest,
|
|
253
115
|
signal: cancellation.signal
|
|
254
116
|
});
|
|
@@ -270,7 +132,125 @@ async function runToolPortalCli(argv, environment) {
|
|
|
270
132
|
} catch {}
|
|
271
133
|
}
|
|
272
134
|
}
|
|
273
|
-
|
|
135
|
+
//#endregion
|
|
136
|
+
//#region src/cli/tool-portal-cli-dispatcher.ts
|
|
137
|
+
function assertNever(value) {
|
|
138
|
+
throw new Error(`Unsupported Tool Portal CLI operation: ${String(value)}.`);
|
|
139
|
+
}
|
|
140
|
+
async function dispatchToolPortalCommand(command, environment, operation = runToolPortalOperation) {
|
|
141
|
+
switch (command.operation) {
|
|
142
|
+
case "artifact-read":
|
|
143
|
+
case "call":
|
|
144
|
+
case "describe":
|
|
145
|
+
case "list":
|
|
146
|
+
case "search": return operation(command, environment);
|
|
147
|
+
default: return assertNever(command);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//#endregion
|
|
151
|
+
//#region src/cli/tool-portal-cli-parser.ts
|
|
152
|
+
const toolPortalTransportKindSchema = z.enum(["http", "scoped-stdio"]);
|
|
153
|
+
const toolPortalHttpTransportKindSchema = toolPortalTransportKindSchema.extract(["http"]);
|
|
154
|
+
const toolPortalScopedStdioTransportKindSchema = toolPortalTransportKindSchema.extract(["scoped-stdio"]);
|
|
155
|
+
const toolPortalInputJsonSchema = z.string().min(1);
|
|
156
|
+
const toolPortalEnvironmentVariableNameSchema = z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/u);
|
|
157
|
+
const toolPortalOptionalApprovalEnvironmentNameSchema = toolPortalEnvironmentVariableNameSchema.optional();
|
|
158
|
+
const toolPortalHttpEndpointSchema = z.string().min(1).refine((value) => {
|
|
159
|
+
try {
|
|
160
|
+
const endpoint = new URL(value);
|
|
161
|
+
return (endpoint.protocol === "http:" || endpoint.protocol === "https:") && endpoint.username.length === 0 && endpoint.password.length === 0 && endpoint.hash.length === 0;
|
|
162
|
+
} catch {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
}, { message: "Tool Portal HTTP endpoint must be an HTTP(S) URL without credentials or a fragment." });
|
|
166
|
+
const toolPortalScopedStdioConfigPathSchema = z.string().min(1).refine(path.isAbsolute, { message: "Scoped stdio configuration path must be absolute." });
|
|
167
|
+
function projectZodScalarPresence(props) {
|
|
168
|
+
if (props.schema instanceof z.ZodOptional) {
|
|
169
|
+
if (props.schema.unwrap() instanceof z.ZodDefault) throw new Error("CLI value schemas must not mix ZodOptional and ZodDefault.");
|
|
170
|
+
return optional(props.parser);
|
|
171
|
+
}
|
|
172
|
+
if (props.schema instanceof z.ZodDefault) {
|
|
173
|
+
if (props.schema.unwrap() instanceof z.ZodOptional) throw new Error("CLI value schemas must not mix ZodOptional and ZodDefault.");
|
|
174
|
+
return withDefault(props.parser, props.schema.parse(void 0));
|
|
175
|
+
}
|
|
176
|
+
if (props.schema.safeParse(void 0).success) throw new TypeError("CLI value schemas accepting undefined must use ZodOptional or ZodDefault.");
|
|
177
|
+
return props.parser;
|
|
178
|
+
}
|
|
179
|
+
const toolPortalTransportParser = or(map(object({
|
|
180
|
+
authorizationEnvironmentName: option("--authorization-env", zod(toolPortalEnvironmentVariableNameSchema, {
|
|
181
|
+
metavar: "ENV_NAME",
|
|
182
|
+
placeholder: "TOOL_PORTAL_AUTH"
|
|
183
|
+
})),
|
|
184
|
+
endpoint: option("--endpoint", zod(toolPortalHttpEndpointSchema, {
|
|
185
|
+
metavar: "URL",
|
|
186
|
+
placeholder: "https://example.test/mcp"
|
|
187
|
+
})),
|
|
188
|
+
kind: constant("http"),
|
|
189
|
+
transportKind: option("--transport", zod(toolPortalHttpTransportKindSchema, {
|
|
190
|
+
metavar: "TRANSPORT",
|
|
191
|
+
placeholder: "http"
|
|
192
|
+
}))
|
|
193
|
+
}), ({ authorizationEnvironmentName, endpoint, kind }) => ({
|
|
194
|
+
authorizationEnvironmentName,
|
|
195
|
+
endpoint,
|
|
196
|
+
kind
|
|
197
|
+
})), map(object({
|
|
198
|
+
kind: constant("scoped-stdio"),
|
|
199
|
+
scopedStdioConfigPath: option("--stdio-config", zod(toolPortalScopedStdioConfigPathSchema, {
|
|
200
|
+
metavar: "PATH",
|
|
201
|
+
placeholder: "/tmp/tool-portal.json"
|
|
202
|
+
})),
|
|
203
|
+
transportKind: option("--transport", zod(toolPortalScopedStdioTransportKindSchema, {
|
|
204
|
+
metavar: "TRANSPORT",
|
|
205
|
+
placeholder: "scoped-stdio"
|
|
206
|
+
}))
|
|
207
|
+
}), ({ kind, scopedStdioConfigPath }) => ({
|
|
208
|
+
kind,
|
|
209
|
+
scopedStdioConfigPath
|
|
210
|
+
})));
|
|
211
|
+
function createInputJsonOption() {
|
|
212
|
+
return option("--input-json", zod(toolPortalInputJsonSchema, {
|
|
213
|
+
metavar: "JSON",
|
|
214
|
+
placeholder: "{}"
|
|
215
|
+
}));
|
|
216
|
+
}
|
|
217
|
+
const callCommandParser = command("call", object({
|
|
218
|
+
approvalTokenEnvironmentName: projectZodScalarPresence({
|
|
219
|
+
parser: option("--approval-token-env", zod(toolPortalOptionalApprovalEnvironmentNameSchema, {
|
|
220
|
+
metavar: "ENV_NAME",
|
|
221
|
+
placeholder: void 0
|
|
222
|
+
})),
|
|
223
|
+
schema: toolPortalOptionalApprovalEnvironmentNameSchema
|
|
224
|
+
}),
|
|
225
|
+
inputJson: createInputJsonOption(),
|
|
226
|
+
operation: constant("call"),
|
|
227
|
+
transport: toolPortalTransportParser
|
|
228
|
+
}));
|
|
229
|
+
//#endregion
|
|
230
|
+
//#region src/cli/tool-portal.ts
|
|
231
|
+
const command$1 = run(or(command("artifact-read", object({
|
|
232
|
+
inputJson: createInputJsonOption(),
|
|
233
|
+
operation: constant("artifact-read"),
|
|
234
|
+
transport: toolPortalTransportParser
|
|
235
|
+
})), callCommandParser, command("describe", object({
|
|
236
|
+
inputJson: createInputJsonOption(),
|
|
237
|
+
operation: constant("describe"),
|
|
238
|
+
transport: toolPortalTransportParser
|
|
239
|
+
})), command("list", object({
|
|
240
|
+
inputJson: createInputJsonOption(),
|
|
241
|
+
operation: constant("list"),
|
|
242
|
+
transport: toolPortalTransportParser
|
|
243
|
+
})), command("search", object({
|
|
244
|
+
inputJson: createInputJsonOption(),
|
|
245
|
+
operation: constant("search"),
|
|
246
|
+
transport: toolPortalTransportParser
|
|
247
|
+
}))), {
|
|
248
|
+
errorExitCode: 2,
|
|
249
|
+
help: "both",
|
|
250
|
+
programName: "tool-portal",
|
|
251
|
+
showDefault: true
|
|
252
|
+
});
|
|
253
|
+
process.exitCode = await dispatchToolPortalCommand(command$1, process.env);
|
|
274
254
|
//#endregion
|
|
275
255
|
export {};
|
|
276
256
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-portal.js","names":[],"sources":["../../src/cli/tool-portal-cli-parser.ts","../../src/cli/tool-portal.ts"],"sourcesContent":["import path from 'node:path';\n\nimport { conditional, object, or } from '@optique/core/constructs';\nimport { runParser, type RunOptions } from '@optique/core/facade';\nimport { formatMessage } from '@optique/core/message';\nimport { map, optional } from '@optique/core/modifiers';\nimport type { Parser } from '@optique/core/parser';\nimport { parseSync } from '@optique/core/parser';\nimport { command, option } from '@optique/core/primitives';\nimport { zod } from '@optique/zod';\nimport { z } from 'zod';\n\nconst operationSchema = z.enum(['artifact-read', 'call', 'describe', 'list', 'search']);\nconst transportKindSchema = z.enum(['http', 'scoped-stdio']);\nconst environmentVariableNameSchema = z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/u);\nconst absolutePathSchema = z.string().min(1).refine(path.isAbsolute, {\n\tmessage: 'Scoped stdio configuration path must be absolute.',\n});\n\nexport type ToolPortalCliOperation = z.infer<typeof operationSchema>;\n\nexport interface ToolPortalHttpTransportArguments {\n\treadonly authorizationEnvironmentName: string;\n\treadonly endpoint: string;\n\treadonly kind: 'http';\n}\n\nexport interface ToolPortalScopedStdioTransportArguments {\n\treadonly kind: 'scoped-stdio';\n\treadonly scopedStdioConfigPath: string;\n}\n\nexport type ToolPortalCliTransport =\n\t| ToolPortalHttpTransportArguments\n\t| ToolPortalScopedStdioTransportArguments;\n\ntype ToolPortalNonCallOperation = Exclude<ToolPortalCliOperation, 'call'>;\n\nexport type ToolPortalCliArguments =\n\t| {\n\t\t\treadonly approvalTokenEnvironmentName?: string;\n\t\t\treadonly inputJson: string;\n\t\t\treadonly operation: 'call';\n\t\t\treadonly transport: ToolPortalCliTransport;\n\t }\n\t| {\n\t\t\treadonly inputJson: string;\n\t\t\treadonly operation: ToolPortalNonCallOperation;\n\t\t\treadonly transport: ToolPortalCliTransport;\n\t };\n\nexport type ToolPortalCliParseResult =\n\t| { readonly kind: 'parsed'; readonly value: ToolPortalCliArguments }\n\t| { readonly kind: 'help'; readonly exitCode: 0 }\n\t| { readonly kind: 'parse-error'; readonly exitCode: number };\n\nexport interface ToolPortalCliParserIo {\n\treadonly stderr: Pick<NodeJS.WriteStream, 'write'>;\n\treadonly stdout: Pick<NodeJS.WriteStream, 'write'>;\n}\n\nfunction createEnvironmentVariableNameParser(): ReturnType<typeof zod<string>> {\n\treturn zod(environmentVariableNameSchema, {\n\t\tmetavar: 'ENV_NAME',\n\t\tplaceholder: 'TOOL_PORTAL_AUTH',\n\t});\n}\n\nfunction createInputJsonParser(): ReturnType<typeof zod<string>> {\n\treturn zod(z.string().min(1), {\n\t\tmetavar: 'JSON',\n\t\tplaceholder: '{}',\n\t});\n}\n\nfunction createHttpTransportParser(): Parser<'sync', ToolPortalHttpTransportArguments> {\n\tconst httpTransportOptionsParser = object({\n\t\tauthorizationEnvironmentName: option(\n\t\t\t'--authorization-env',\n\t\t\tcreateEnvironmentVariableNameParser(),\n\t\t),\n\t\tendpoint: option(\n\t\t\t'--endpoint',\n\t\t\tzod(z.string().min(1), {\n\t\t\t\tmetavar: 'URL',\n\t\t\t\tplaceholder: 'https://example.test/mcp',\n\t\t\t}),\n\t\t),\n\t});\n\treturn map(\n\t\thttpTransportOptionsParser,\n\t\t(options): ToolPortalHttpTransportArguments => ({\n\t\t\t...options,\n\t\t\tkind: 'http',\n\t\t}),\n\t);\n}\n\nfunction createScopedStdioTransportParser(): Parser<\n\t'sync',\n\tToolPortalScopedStdioTransportArguments\n> {\n\tconst scopedStdioTransportOptionsParser = object({\n\t\tscopedStdioConfigPath: option(\n\t\t\t'--stdio-config',\n\t\t\tzod(absolutePathSchema, {\n\t\t\t\tmetavar: 'PATH',\n\t\t\t\tplaceholder: '/tmp/tool-portal.json',\n\t\t\t}),\n\t\t),\n\t});\n\treturn map(\n\t\tscopedStdioTransportOptionsParser,\n\t\t(options): ToolPortalScopedStdioTransportArguments => ({\n\t\t\t...options,\n\t\t\tkind: 'scoped-stdio',\n\t\t}),\n\t);\n}\n\nfunction createTransportParser(): Parser<'sync', ToolPortalCliTransport> {\n\tconst transportSelectionParser = conditional(\n\t\toption(\n\t\t\t'--transport',\n\t\t\tzod(transportKindSchema, {\n\t\t\t\tmetavar: 'TRANSPORT',\n\t\t\t\tplaceholder: 'http',\n\t\t\t}),\n\t\t),\n\t\t{\n\t\t\thttp: createHttpTransportParser(),\n\t\t\t'scoped-stdio': createScopedStdioTransportParser(),\n\t\t},\n\t);\n\treturn map(transportSelectionParser, ([, transport]): ToolPortalCliTransport => transport);\n}\n\nfunction createInputJsonOption(): Parser<'sync', string> {\n\treturn option('--input-json', createInputJsonParser());\n}\n\nfunction createCallCommand(): Parser<'sync', ToolPortalCliArguments> {\n\treturn command(\n\t\t'call',\n\t\tmap(\n\t\t\tobject({\n\t\t\t\tapprovalTokenEnvironmentName: optional(\n\t\t\t\t\toption('--approval-token-env', createEnvironmentVariableNameParser()),\n\t\t\t\t),\n\t\t\t\tinputJson: createInputJsonOption(),\n\t\t\t\ttransport: createTransportParser(),\n\t\t\t}),\n\t\t\t({ approvalTokenEnvironmentName, inputJson, transport }): ToolPortalCliArguments => ({\n\t\t\t\t...(approvalTokenEnvironmentName === undefined ? {} : { approvalTokenEnvironmentName }),\n\t\t\t\tinputJson,\n\t\t\t\toperation: 'call',\n\t\t\t\ttransport,\n\t\t\t}),\n\t\t),\n\t);\n}\n\nfunction createNonCallCommand(\n\toperation: ToolPortalNonCallOperation,\n): Parser<'sync', ToolPortalCliArguments> {\n\treturn command(\n\t\toperation,\n\t\tmap(\n\t\t\tobject({\n\t\t\t\tinputJson: createInputJsonOption(),\n\t\t\t\ttransport: createTransportParser(),\n\t\t\t}),\n\t\t\t({ inputJson, transport }): ToolPortalCliArguments => ({\n\t\t\t\tinputJson,\n\t\t\t\toperation,\n\t\t\t\ttransport,\n\t\t\t}),\n\t\t),\n\t);\n}\n\nexport const toolPortalCliParser: Parser<'sync', ToolPortalCliArguments> = or(\n\tcreateNonCallCommand('artifact-read'),\n\tcreateCallCommand(),\n\tcreateNonCallCommand('describe'),\n\tcreateNonCallCommand('list'),\n\tcreateNonCallCommand('search'),\n);\n\ntype ToolPortalCliRunnerSignal = Exclude<ToolPortalCliParseResult, { readonly kind: 'parsed' }>;\n\nclass ToolPortalCliRunnerSignalError extends Error {\n\treadonly signal: ToolPortalCliRunnerSignal;\n\n\tconstructor(signal: ToolPortalCliRunnerSignal) {\n\t\tsuper(`Tool Portal CLI runner signal: ${signal.kind}`);\n\t\tthis.signal = signal;\n\t}\n}\n\nfunction writeOutput(write: ToolPortalCliParserIo['stdout'], text: string): void {\n\twrite.write(text.endsWith('\\n') ? text : `${text}\\n`);\n}\n\nfunction createRunOptions(io: ToolPortalCliParserIo): RunOptions<never, never> {\n\treturn {\n\t\thelp: {\n\t\t\tcommand: true,\n\t\t\toption: { names: ['-h', '--help'] as const },\n\t\t\tonShow: (): never => {\n\t\t\t\tthrow new ToolPortalCliRunnerSignalError({ exitCode: 0, kind: 'help' });\n\t\t\t},\n\t\t},\n\t\tonError: (exitCode: number): never => {\n\t\t\tthrow new ToolPortalCliRunnerSignalError({ exitCode, kind: 'parse-error' });\n\t\t},\n\t\tstderr: (text: string): void => writeOutput(io.stderr, text),\n\t\tstdout: (text: string): void => writeOutput(io.stdout, text),\n\t};\n}\n\nexport function runToolPortalCliParser(\n\targv: readonly string[],\n\tio: ToolPortalCliParserIo,\n): ToolPortalCliParseResult {\n\ttry {\n\t\treturn {\n\t\t\tkind: 'parsed',\n\t\t\tvalue: runParser(toolPortalCliParser, 'tool-portal', argv, createRunOptions(io)),\n\t\t};\n\t} catch (error: unknown) {\n\t\tif (error instanceof ToolPortalCliRunnerSignalError) return error.signal;\n\t\tthrow error;\n\t}\n}\n\nexport function parseToolPortalCliArguments(argv: readonly string[]): ToolPortalCliArguments {\n\tconst result = parseSync(toolPortalCliParser, argv);\n\tif (!result.success) {\n\t\tthrow new Error(formatMessage(result.error));\n\t}\n\treturn result.value;\n}\n","#!/usr/bin/env node\n\nimport { readFile } from 'node:fs/promises';\n\nimport { z } from 'zod';\n\nimport {\n\tPortalArtifactReadRequestSchema,\n\ttype PortalArtifactReadResult,\n} from '../artifact-surface/index.js';\nimport { encodeCanonicalJson } from '../portable-contracts/index.js';\nimport {\n\tPortalCallRequestSchema,\n\tPortalDescribeRequestSchema,\n\tPortalListRequestSchema,\n\tPortalSearchRequestSchema,\n\ttype PortalCallResult,\n\ttype PortalDescribeResult,\n\ttype PortalListResult,\n\ttype PortalSearchResult,\n} from '../portal-call-surface/index.js';\nimport {\n\tToolPortalMcpClient,\n\ttype ToolPortalMcpTransport,\n} from '../tool-portal-mcp-client/index.js';\nimport { createNodeToolPortalMcpTransport } from '../tool-portal-mcp-client/node-tool-portal-mcp-transport.js';\nimport {\n\trunToolPortalCliParser,\n\ttype ToolPortalCliArguments,\n\ttype ToolPortalCliOperation,\n} from './tool-portal-cli-parser.js';\n\nconst canonicalResultGraceAfterInterruptMilliseconds = 250;\nconst ScopedStdioConfigSchema = z\n\t.object({\n\t\targv: z.array(z.string()).max(128),\n\t\texecutable: z.string().min(1),\n\t\tschemaVersion: z.literal(1),\n\t})\n\t.strict();\n\ntype ToolPortalCliInvocationResult =\n\t| { readonly kind: 'artifact-read'; readonly result: PortalArtifactReadResult }\n\t| {\n\t\t\treadonly kind: 'portal';\n\t\t\treadonly result:\n\t\t\t\t| PortalCallResult\n\t\t\t\t| PortalDescribeResult\n\t\t\t\t| PortalListResult\n\t\t\t\t| PortalSearchResult;\n\t };\n\ninterface ToolPortalCliTransportResult {\n\treadonly authorization: string | undefined;\n\treadonly transport: ToolPortalMcpTransport;\n}\n\nfunction parseHttpEndpoint(endpoint: string): URL {\n\tconst parsedEndpoint = new URL(endpoint);\n\tif (\n\t\t!['http:', 'https:'].includes(parsedEndpoint.protocol) ||\n\t\tparsedEndpoint.username.length > 0 ||\n\t\tparsedEndpoint.password.length > 0 ||\n\t\tparsedEndpoint.hash.length > 0\n\t) {\n\t\tthrow new Error(\n\t\t\t'Tool Portal HTTP endpoint must be an HTTP(S) URL without credentials or a fragment.',\n\t\t);\n\t}\n\treturn parsedEndpoint;\n}\n\nasync function createCliTransport(\n\targuments_: ToolPortalCliArguments,\n\tenvironment: NodeJS.ProcessEnv,\n): Promise<ToolPortalCliTransportResult> {\n\tif (arguments_.transport.kind === 'http') {\n\t\tconst environmentName = arguments_.transport.authorizationEnvironmentName;\n\t\tconst authorization = environmentName === undefined ? undefined : environment[environmentName];\n\t\tif (authorization === undefined || authorization.length === 0) {\n\t\t\tthrow new Error('The explicit Tool Portal authorization environment variable is unset.');\n\t\t}\n\t\treturn {\n\t\t\tauthorization,\n\t\t\ttransport: createNodeToolPortalMcpTransport({\n\t\t\t\tauthorization,\n\t\t\t\tendpoint: parseHttpEndpoint(arguments_.transport.endpoint),\n\t\t\t\tkind: 'http',\n\t\t\t}),\n\t\t};\n\t}\n\n\tconst config = ScopedStdioConfigSchema.parse(\n\t\tJSON.parse(await readFile(arguments_.transport.scopedStdioConfigPath, 'utf8')) as unknown,\n\t);\n\treturn {\n\t\tauthorization: undefined,\n\t\ttransport: createNodeToolPortalMcpTransport({\n\t\t\targv: config.argv,\n\t\t\texecutable: config.executable,\n\t\t\tkind: 'scoped-stdio',\n\t\t}),\n\t};\n}\n\nasync function invokePortalOperation(props: {\n\treadonly approvalToken?: string;\n\treadonly client: ToolPortalMcpClient;\n\treadonly operation: ToolPortalCliOperation;\n\treadonly publicRequest: unknown;\n\treadonly signal: AbortSignal;\n}): Promise<ToolPortalCliInvocationResult> {\n\tconst options = {\n\t\tresultGraceAfterAbortMs: canonicalResultGraceAfterInterruptMilliseconds,\n\t\tsignal: props.signal,\n\t};\n\tswitch (props.operation) {\n\t\tcase 'artifact-read':\n\t\t\treturn {\n\t\t\t\tkind: 'artifact-read',\n\t\t\t\tresult: await props.client.artifacts.read(\n\t\t\t\t\tPortalArtifactReadRequestSchema.parse(props.publicRequest),\n\t\t\t\t\toptions,\n\t\t\t\t),\n\t\t\t};\n\t\tcase 'call':\n\t\t\treturn {\n\t\t\t\tkind: 'portal',\n\t\t\t\tresult: await props.client.call(PortalCallRequestSchema.parse(props.publicRequest), {\n\t\t\t\t\t...options,\n\t\t\t\t\t...(props.approvalToken === undefined ? {} : { approvalToken: props.approvalToken }),\n\t\t\t\t}),\n\t\t\t};\n\t\tcase 'describe':\n\t\t\treturn {\n\t\t\t\tkind: 'portal',\n\t\t\t\tresult: await props.client.describe(\n\t\t\t\t\tPortalDescribeRequestSchema.parse(props.publicRequest),\n\t\t\t\t\toptions,\n\t\t\t\t),\n\t\t\t};\n\t\tcase 'list':\n\t\t\treturn {\n\t\t\t\tkind: 'portal',\n\t\t\t\tresult: await props.client.list(\n\t\t\t\t\tPortalListRequestSchema.parse(props.publicRequest),\n\t\t\t\t\toptions,\n\t\t\t\t),\n\t\t\t};\n\t\tcase 'search':\n\t\t\treturn {\n\t\t\t\tkind: 'portal',\n\t\t\t\tresult: await props.client.search(\n\t\t\t\t\tPortalSearchRequestSchema.parse(props.publicRequest),\n\t\t\t\t\toptions,\n\t\t\t\t),\n\t\t\t};\n\t}\n\treturn assertNever(props.operation);\n}\n\nfunction assertNever(value: never): never {\n\tthrow new Error(`Unsupported Tool Portal CLI operation: ${String(value)}.`);\n}\n\nfunction readApprovalToken(\n\targuments_: Extract<ToolPortalCliArguments, { readonly operation: 'call' }>,\n\tenvironment: NodeJS.ProcessEnv,\n): string | undefined {\n\tconst environmentName = arguments_.approvalTokenEnvironmentName;\n\tif (environmentName === undefined) return undefined;\n\tconst approvalToken = environment[environmentName];\n\tif (approvalToken === undefined || approvalToken.length === 0) {\n\t\tthrow new Error('The explicit Tool Portal approval-token environment variable is unset.');\n\t}\n\treturn z.string().min(1).max(16_384).parse(approvalToken);\n}\n\nfunction safeDiagnostic(error: unknown, secrets: readonly string[]): string {\n\tlet message = error instanceof Error ? error.message : String(error);\n\tfor (const secret of secrets) {\n\t\tif (secret.length > 0) message = message.replaceAll(secret, '[redacted]');\n\t}\n\treturn message;\n}\n\nasync function waitForCancellationNotificationFlush(): Promise<void> {\n\tawait new Promise<void>((resolve) => setImmediate(resolve));\n}\n\nasync function runToolPortalCli(\n\targv: readonly string[],\n\tenvironment: NodeJS.ProcessEnv,\n): Promise<number> {\n\tlet authorization: string | undefined;\n\tlet approvalToken: string | undefined;\n\tlet client: ToolPortalMcpClient | undefined;\n\tconst cancellation = new AbortController();\n\tconst interrupt = (): void => cancellation.abort(new Error('Tool Portal CLI interrupted.'));\n\tprocess.once('SIGINT', interrupt);\n\ttry {\n\t\tconst parseResult = runToolPortalCliParser(argv, {\n\t\t\tstderr: process.stderr,\n\t\t\tstdout: process.stdout,\n\t\t});\n\t\tif (parseResult.kind === 'help') return parseResult.exitCode;\n\t\tif (parseResult.kind === 'parse-error') return 2;\n\t\tconst cliArguments = parseResult.value;\n\t\tconst transportResult = await createCliTransport(cliArguments, environment);\n\t\tauthorization = transportResult.authorization;\n\t\tclient = new ToolPortalMcpClient({ transport: transportResult.transport });\n\t\tawait client.connect();\n\t\tconst publicRequest = JSON.parse(cliArguments.inputJson) as unknown;\n\t\tapprovalToken =\n\t\t\tcliArguments.operation === 'call' ? readApprovalToken(cliArguments, environment) : undefined;\n\t\tconst invocation = await invokePortalOperation({\n\t\t\t...(approvalToken === undefined ? {} : { approvalToken }),\n\t\t\tclient,\n\t\t\toperation: cliArguments.operation,\n\t\t\tpublicRequest,\n\t\t\tsignal: cancellation.signal,\n\t\t});\n\t\tprocess.stdout.write(`${encodeCanonicalJson(invocation.result)}\\n`);\n\t\tconst exitCode = invocation.kind === 'artifact-read' || invocation.result.ok ? 0 : 1;\n\t\ttry {\n\t\t\tawait client.close();\n\t\t} catch {\n\t\t\t// A canonical result already returned and remains authoritative after interrupt/close races.\n\t\t}\n\t\tclient = undefined;\n\t\treturn exitCode;\n\t} catch (error: unknown) {\n\t\tif (cancellation.signal.aborted) {\n\t\t\tawait waitForCancellationNotificationFlush();\n\t\t}\n\t\tprocess.stderr.write(\n\t\t\t`tool-portal: ${safeDiagnostic(error, [\n\t\t\t\t...(authorization === undefined ? [] : [authorization]),\n\t\t\t\t...(approvalToken === undefined ? [] : [approvalToken]),\n\t\t\t])}\\n`,\n\t\t);\n\t\treturn 2;\n\t} finally {\n\t\tprocess.removeListener('SIGINT', interrupt);\n\t\tif (client !== undefined) {\n\t\t\ttry {\n\t\t\t\tawait client.close();\n\t\t\t} catch {\n\t\t\t\t// The primary diagnostic and exit class remain authoritative.\n\t\t\t}\n\t\t}\n\t}\n}\n\nprocess.exitCode = await runToolPortalCli(process.argv.slice(2), process.env);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-portal.js","names":["assertNever","command"],"sources":["../../src/cli/tool-portal-cli-operation.ts","../../src/cli/tool-portal-cli-dispatcher.ts","../../src/cli/tool-portal-cli-parser.ts","../../src/cli/tool-portal.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises';\n\nimport { z } from 'zod';\n\nimport {\n\tPortalArtifactReadRequestSchema,\n\ttype PortalArtifactReadResult,\n} from '../artifact-surface/index.js';\nimport { encodeCanonicalJson } from '../portable-contracts/index.js';\nimport {\n\tPortalCallRequestSchema,\n\tPortalDescribeRequestSchema,\n\tPortalListRequestSchema,\n\tPortalSearchRequestSchema,\n\ttype PortalCallResult,\n\ttype PortalDescribeResult,\n\ttype PortalListResult,\n\ttype PortalSearchResult,\n} from '../portal-call-surface/index.js';\nimport {\n\tToolPortalMcpClient,\n\ttype ToolPortalMcpTransport,\n} from '../tool-portal-mcp-client/index.js';\nimport { createNodeToolPortalMcpTransport } from '../tool-portal-mcp-client/node-tool-portal-mcp-transport.js';\nimport type { ToolPortalCommand } from './tool-portal-cli-parser.js';\n\nconst canonicalResultGraceAfterInterruptMilliseconds = 250;\nconst scopedStdioConfigSchema = z\n\t.object({\n\t\targv: z.array(z.string()).max(128),\n\t\texecutable: z.string().min(1),\n\t\tschemaVersion: z.literal(1),\n\t})\n\t.strict();\n\ntype ToolPortalCliInvocationResult =\n\t| { readonly kind: 'artifact-read'; readonly result: PortalArtifactReadResult }\n\t| {\n\t\t\treadonly kind: 'portal';\n\t\t\treadonly result:\n\t\t\t\t| PortalCallResult\n\t\t\t\t| PortalDescribeResult\n\t\t\t\t| PortalListResult\n\t\t\t\t| PortalSearchResult;\n\t };\n\ninterface ToolPortalCliTransportResult {\n\treadonly authorization: string | undefined;\n\treadonly transport: ToolPortalMcpTransport;\n}\n\nasync function createCliTransport(\n\tcommand: ToolPortalCommand,\n\tenvironment: NodeJS.ProcessEnv,\n): Promise<ToolPortalCliTransportResult> {\n\tif (command.transport.kind === 'http') {\n\t\tconst authorization = environment[command.transport.authorizationEnvironmentName];\n\t\tif (authorization === undefined || authorization.length === 0) {\n\t\t\tthrow new Error('The explicit Tool Portal authorization environment variable is unset.');\n\t\t}\n\t\treturn {\n\t\t\tauthorization,\n\t\t\ttransport: createNodeToolPortalMcpTransport({\n\t\t\t\tauthorization,\n\t\t\t\tendpoint: new URL(command.transport.endpoint),\n\t\t\t\tkind: 'http',\n\t\t\t}),\n\t\t};\n\t}\n\n\tconst config = scopedStdioConfigSchema.parse(\n\t\tJSON.parse(await readFile(command.transport.scopedStdioConfigPath, 'utf8')) as unknown,\n\t);\n\treturn {\n\t\tauthorization: undefined,\n\t\ttransport: createNodeToolPortalMcpTransport({\n\t\t\targv: config.argv,\n\t\t\texecutable: config.executable,\n\t\t\tkind: 'scoped-stdio',\n\t\t}),\n\t};\n}\n\nasync function invokePortalOperation(props: {\n\treadonly approvalToken?: string;\n\treadonly client: ToolPortalMcpClient;\n\treadonly operation: ToolPortalCommand['operation'];\n\treadonly publicRequest: unknown;\n\treadonly signal: AbortSignal;\n}): Promise<ToolPortalCliInvocationResult> {\n\tconst options = {\n\t\tresultGraceAfterAbortMs: canonicalResultGraceAfterInterruptMilliseconds,\n\t\tsignal: props.signal,\n\t};\n\tswitch (props.operation) {\n\t\tcase 'artifact-read':\n\t\t\treturn {\n\t\t\t\tkind: 'artifact-read',\n\t\t\t\tresult: await props.client.artifacts.read(\n\t\t\t\t\tPortalArtifactReadRequestSchema.parse(props.publicRequest),\n\t\t\t\t\toptions,\n\t\t\t\t),\n\t\t\t};\n\t\tcase 'call':\n\t\t\treturn {\n\t\t\t\tkind: 'portal',\n\t\t\t\tresult: await props.client.call(PortalCallRequestSchema.parse(props.publicRequest), {\n\t\t\t\t\t...options,\n\t\t\t\t\t...(props.approvalToken === undefined ? {} : { approvalToken: props.approvalToken }),\n\t\t\t\t}),\n\t\t\t};\n\t\tcase 'describe':\n\t\t\treturn {\n\t\t\t\tkind: 'portal',\n\t\t\t\tresult: await props.client.describe(\n\t\t\t\t\tPortalDescribeRequestSchema.parse(props.publicRequest),\n\t\t\t\t\toptions,\n\t\t\t\t),\n\t\t\t};\n\t\tcase 'list':\n\t\t\treturn {\n\t\t\t\tkind: 'portal',\n\t\t\t\tresult: await props.client.list(\n\t\t\t\t\tPortalListRequestSchema.parse(props.publicRequest),\n\t\t\t\t\toptions,\n\t\t\t\t),\n\t\t\t};\n\t\tcase 'search':\n\t\t\treturn {\n\t\t\t\tkind: 'portal',\n\t\t\t\tresult: await props.client.search(\n\t\t\t\t\tPortalSearchRequestSchema.parse(props.publicRequest),\n\t\t\t\t\toptions,\n\t\t\t\t),\n\t\t\t};\n\t}\n\treturn assertNever(props.operation);\n}\n\nfunction assertNever(value: never): never {\n\tthrow new Error(`Unsupported Tool Portal CLI operation: ${String(value)}.`);\n}\n\nfunction readApprovalToken(\n\tcommand: Extract<ToolPortalCommand, { readonly operation: 'call' }>,\n\tenvironment: NodeJS.ProcessEnv,\n): string | undefined {\n\tconst environmentName = command.approvalTokenEnvironmentName;\n\tif (environmentName === undefined) return undefined;\n\tconst approvalToken = environment[environmentName];\n\tif (approvalToken === undefined || approvalToken.length === 0) {\n\t\tthrow new Error('The explicit Tool Portal approval-token environment variable is unset.');\n\t}\n\treturn z.string().min(1).max(16_384).parse(approvalToken);\n}\n\nfunction safeDiagnostic(error: unknown, secrets: readonly string[]): string {\n\tlet message = error instanceof Error ? error.message : String(error);\n\tfor (const secret of secrets) {\n\t\tif (secret.length > 0) message = message.replaceAll(secret, '[redacted]');\n\t}\n\treturn message;\n}\n\nasync function waitForCancellationNotificationFlush(): Promise<void> {\n\tawait new Promise<void>((resolve) => setImmediate(resolve));\n}\n\nexport async function runToolPortalOperation(\n\tcommand: ToolPortalCommand,\n\tenvironment: NodeJS.ProcessEnv,\n): Promise<number> {\n\tlet authorization: string | undefined;\n\tlet approvalToken: string | undefined;\n\tlet client: ToolPortalMcpClient | undefined;\n\tconst cancellation = new AbortController();\n\tconst interrupt = (): void => cancellation.abort(new Error('Tool Portal CLI interrupted.'));\n\tprocess.once('SIGINT', interrupt);\n\ttry {\n\t\tconst transportResult = await createCliTransport(command, environment);\n\t\tauthorization = transportResult.authorization;\n\t\tclient = new ToolPortalMcpClient({ transport: transportResult.transport });\n\t\tawait client.connect();\n\t\tconst publicRequest = JSON.parse(command.inputJson) as unknown;\n\t\tapprovalToken =\n\t\t\tcommand.operation === 'call' ? readApprovalToken(command, environment) : undefined;\n\t\tconst invocation = await invokePortalOperation({\n\t\t\t...(approvalToken === undefined ? {} : { approvalToken }),\n\t\t\tclient,\n\t\t\toperation: command.operation,\n\t\t\tpublicRequest,\n\t\t\tsignal: cancellation.signal,\n\t\t});\n\t\tprocess.stdout.write(`${encodeCanonicalJson(invocation.result)}\\n`);\n\t\tconst exitCode = invocation.kind === 'artifact-read' || invocation.result.ok ? 0 : 1;\n\t\ttry {\n\t\t\tawait client.close();\n\t\t} catch {\n\t\t\t// A canonical result already returned and remains authoritative after interrupt/close races.\n\t\t}\n\t\tclient = undefined;\n\t\treturn exitCode;\n\t} catch (error: unknown) {\n\t\tif (cancellation.signal.aborted) await waitForCancellationNotificationFlush();\n\t\tprocess.stderr.write(\n\t\t\t`tool-portal: ${safeDiagnostic(error, [\n\t\t\t\t...(authorization === undefined ? [] : [authorization]),\n\t\t\t\t...(approvalToken === undefined ? [] : [approvalToken]),\n\t\t\t])}\\n`,\n\t\t);\n\t\treturn 2;\n\t} finally {\n\t\tprocess.removeListener('SIGINT', interrupt);\n\t\tif (client !== undefined) {\n\t\t\ttry {\n\t\t\t\tawait client.close();\n\t\t\t} catch {\n\t\t\t\t// The primary diagnostic and exit class remain authoritative.\n\t\t\t}\n\t\t}\n\t}\n}\n","import { runToolPortalOperation } from './tool-portal-cli-operation.js';\nimport type { ToolPortalCommand } from './tool-portal-cli-parser.js';\n\nexport type ToolPortalOperation = (\n\tcommand: ToolPortalCommand,\n\tenvironment: NodeJS.ProcessEnv,\n) => Promise<number>;\n\nfunction assertNever(value: never): never {\n\tthrow new Error(`Unsupported Tool Portal CLI operation: ${String(value)}.`);\n}\n\nexport async function dispatchToolPortalCommand(\n\tcommand: ToolPortalCommand,\n\tenvironment: NodeJS.ProcessEnv,\n\toperation: ToolPortalOperation = runToolPortalOperation,\n): Promise<number> {\n\tswitch (command.operation) {\n\t\tcase 'artifact-read':\n\t\tcase 'call':\n\t\tcase 'describe':\n\t\tcase 'list':\n\t\tcase 'search':\n\t\t\treturn operation(command, environment);\n\t\tdefault:\n\t\t\treturn assertNever(command);\n\t}\n}\n","import path from 'node:path';\n\nimport { object, or } from '@optique/core/constructs';\nimport { map, optional, withDefault } from '@optique/core/modifiers';\nimport type { InferValue, Parser } from '@optique/core/parser';\nimport { command, constant, option } from '@optique/core/primitives';\nimport { zod } from '@optique/zod';\nimport { z } from 'zod';\n\nconst toolPortalTransportKindSchema = z.enum(['http', 'scoped-stdio']);\nconst toolPortalHttpTransportKindSchema = toolPortalTransportKindSchema.extract(['http']);\nconst toolPortalScopedStdioTransportKindSchema = toolPortalTransportKindSchema.extract([\n\t'scoped-stdio',\n]);\nconst toolPortalInputJsonSchema = z.string().min(1);\nconst toolPortalEnvironmentVariableNameSchema = z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/u);\nconst toolPortalOptionalApprovalEnvironmentNameSchema =\n\ttoolPortalEnvironmentVariableNameSchema.optional();\nconst toolPortalHttpEndpointSchema = z\n\t.string()\n\t.min(1)\n\t.refine(\n\t\t(value): boolean => {\n\t\t\ttry {\n\t\t\t\tconst endpoint = new URL(value);\n\t\t\t\treturn (\n\t\t\t\t\t(endpoint.protocol === 'http:' || endpoint.protocol === 'https:') &&\n\t\t\t\t\tendpoint.username.length === 0 &&\n\t\t\t\t\tendpoint.password.length === 0 &&\n\t\t\t\t\tendpoint.hash.length === 0\n\t\t\t\t);\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tmessage:\n\t\t\t\t'Tool Portal HTTP endpoint must be an HTTP(S) URL without credentials or a fragment.',\n\t\t},\n\t);\nconst toolPortalScopedStdioConfigPathSchema = z.string().min(1).refine(path.isAbsolute, {\n\tmessage: 'Scoped stdio configuration path must be absolute.',\n});\n\ninterface ZodScalarPresenceProps<TSchema extends z.ZodType, TState> {\n\treadonly parser: Parser<'sync', z.infer<TSchema>, TState>;\n\treadonly schema: TSchema;\n}\n\nexport function projectZodScalarPresence<TSchema extends z.ZodType, TState>(\n\tprops: ZodScalarPresenceProps<TSchema, TState>,\n): Parser<'sync', z.infer<TSchema>>;\nexport function projectZodScalarPresence(props: {\n\treadonly parser: Parser;\n\treadonly schema: z.ZodType;\n}): Parser {\n\tif (props.schema instanceof z.ZodOptional) {\n\t\tif (props.schema.unwrap() instanceof z.ZodDefault) {\n\t\t\tthrow new Error('CLI value schemas must not mix ZodOptional and ZodDefault.');\n\t\t}\n\t\treturn optional(props.parser);\n\t}\n\tif (props.schema instanceof z.ZodDefault) {\n\t\tif (props.schema.unwrap() instanceof z.ZodOptional) {\n\t\t\tthrow new Error('CLI value schemas must not mix ZodOptional and ZodDefault.');\n\t\t}\n\t\treturn withDefault(props.parser, props.schema.parse(undefined));\n\t}\n\tif (props.schema.safeParse(undefined).success) {\n\t\tthrow new TypeError(\n\t\t\t'CLI value schemas accepting undefined must use ZodOptional or ZodDefault.',\n\t\t);\n\t}\n\treturn props.parser;\n}\n\nconst toolPortalHttpTransportParser = map(\n\tobject({\n\t\tauthorizationEnvironmentName: option(\n\t\t\t'--authorization-env',\n\t\t\tzod(toolPortalEnvironmentVariableNameSchema, {\n\t\t\t\tmetavar: 'ENV_NAME',\n\t\t\t\tplaceholder: 'TOOL_PORTAL_AUTH',\n\t\t\t}),\n\t\t),\n\t\tendpoint: option(\n\t\t\t'--endpoint',\n\t\t\tzod(toolPortalHttpEndpointSchema, {\n\t\t\t\tmetavar: 'URL',\n\t\t\t\tplaceholder: 'https://example.test/mcp',\n\t\t\t}),\n\t\t),\n\t\tkind: constant('http'),\n\t\ttransportKind: option(\n\t\t\t'--transport',\n\t\t\tzod(toolPortalHttpTransportKindSchema, {\n\t\t\t\tmetavar: 'TRANSPORT',\n\t\t\t\tplaceholder: 'http',\n\t\t\t}),\n\t\t),\n\t}),\n\t({ authorizationEnvironmentName, endpoint, kind }) => ({\n\t\tauthorizationEnvironmentName,\n\t\tendpoint,\n\t\tkind,\n\t}),\n);\n\nconst toolPortalScopedStdioTransportParser = map(\n\tobject({\n\t\tkind: constant('scoped-stdio'),\n\t\tscopedStdioConfigPath: option(\n\t\t\t'--stdio-config',\n\t\t\tzod(toolPortalScopedStdioConfigPathSchema, {\n\t\t\t\tmetavar: 'PATH',\n\t\t\t\tplaceholder: '/tmp/tool-portal.json',\n\t\t\t}),\n\t\t),\n\t\ttransportKind: option(\n\t\t\t'--transport',\n\t\t\tzod(toolPortalScopedStdioTransportKindSchema, {\n\t\t\t\tmetavar: 'TRANSPORT',\n\t\t\t\tplaceholder: 'scoped-stdio',\n\t\t\t}),\n\t\t),\n\t}),\n\t({ kind, scopedStdioConfigPath }) => ({ kind, scopedStdioConfigPath }),\n);\n\nconst toolPortalTransportParser = or(\n\ttoolPortalHttpTransportParser,\n\ttoolPortalScopedStdioTransportParser,\n);\n\nfunction createInputJsonOption(): Parser<'sync', z.infer<typeof toolPortalInputJsonSchema>> {\n\treturn option(\n\t\t'--input-json',\n\t\tzod(toolPortalInputJsonSchema, { metavar: 'JSON', placeholder: '{}' }),\n\t);\n}\n\nconst callCommandParser = command(\n\t'call',\n\tobject({\n\t\tapprovalTokenEnvironmentName: projectZodScalarPresence({\n\t\t\tparser: option(\n\t\t\t\t'--approval-token-env',\n\t\t\t\tzod(toolPortalOptionalApprovalEnvironmentNameSchema, {\n\t\t\t\t\tmetavar: 'ENV_NAME',\n\t\t\t\t\tplaceholder: undefined,\n\t\t\t\t}),\n\t\t\t),\n\t\t\tschema: toolPortalOptionalApprovalEnvironmentNameSchema,\n\t\t}),\n\t\tinputJson: createInputJsonOption(),\n\t\toperation: constant('call'),\n\t\ttransport: toolPortalTransportParser,\n\t}),\n);\n\nconst artifactReadCommandParser = command(\n\t'artifact-read',\n\tobject({\n\t\tinputJson: createInputJsonOption(),\n\t\toperation: constant('artifact-read'),\n\t\ttransport: toolPortalTransportParser,\n\t}),\n);\nconst describeCommandParser = command(\n\t'describe',\n\tobject({\n\t\tinputJson: createInputJsonOption(),\n\t\toperation: constant('describe'),\n\t\ttransport: toolPortalTransportParser,\n\t}),\n);\nconst listCommandParser = command(\n\t'list',\n\tobject({\n\t\tinputJson: createInputJsonOption(),\n\t\toperation: constant('list'),\n\t\ttransport: toolPortalTransportParser,\n\t}),\n);\nconst searchCommandParser = command(\n\t'search',\n\tobject({\n\t\tinputJson: createInputJsonOption(),\n\t\toperation: constant('search'),\n\t\ttransport: toolPortalTransportParser,\n\t}),\n);\n\nexport const toolPortalRootParser = or(\n\tartifactReadCommandParser,\n\tcallCommandParser,\n\tdescribeCommandParser,\n\tlistCommandParser,\n\tsearchCommandParser,\n);\n\nexport type ToolPortalCommand = InferValue<typeof toolPortalRootParser>;\n","#!/usr/bin/env node\n\nimport { run } from '@optique/run';\n\nimport { dispatchToolPortalCommand } from './tool-portal-cli-dispatcher.js';\nimport { toolPortalRootParser } from './tool-portal-cli-parser.js';\n\nconst command = run(toolPortalRootParser, {\n\terrorExitCode: 2,\n\thelp: 'both',\n\tprogramName: 'tool-portal',\n\tshowDefault: true,\n});\n\nprocess.exitCode = await dispatchToolPortalCommand(command, process.env);\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c as PortalArtifactReadRequest, u as PortalArtifactReadResult } from "../index-B_xYdo3v.js";
|
|
2
2
|
import { A as SandboxTerminalResizeResult, At as SandboxFsRenameResult, B as SandboxStreamWriteRequest, Bt as SandboxExecCancelRequest, E as SandboxTerminalAttachResult, Et as SandboxFsRemoveResult, Gt as SandboxExecStartRequest, H as SandboxStreamWriteResult, Ht as SandboxExecCancelResult, I as SandboxStreamReadRequest, It as SandboxFsWriteRequest, K as SandboxProcessCancelResult, M as SandboxStreamCloseRequest, Mt as SandboxFsStatRequest, O as SandboxTerminalResizeRequest, Ot as SandboxFsRenameRequest, P as SandboxStreamCloseResult, Pt as SandboxFsStatResult, Q as SandboxProcessLogsResult, R as SandboxStreamReadResult, Rt as SandboxFsWriteResult, St as SandboxFsReadResult, W as SandboxProcessCancelRequest, X as SandboxProcessLogsRequest, Yt as SandboxExecWaitRequest, Zt as SandboxExecWaitResult, _ as GatewayRuntimeTrustedInvocationRequester, _n as SandboxRetainedResultLookupRequest, at as SandboxProcessStatusResult, bt as SandboxFsReadRequest, c as GatewayRuntimeManagedPluginClientKind, cn as SandboxEnvironmentStatusRequest, d as GatewayRuntimeTrustedInvocationContext, en as SandboxEnvironmentCloseRequest, et as SandboxProcessStartRequest, f as GatewayRuntimeTrustedInvocationContextSchema, ft as SandboxFsListRequest, g as GatewayRuntimeTrustedInvocationPrincipalSchema, gt as SandboxFsMkdirRequest, h as GatewayRuntimeTrustedInvocationPrincipal, in as SandboxEnvironmentOpenRequest, it as SandboxProcessStatusRequest, ln as SandboxEnvironmentStatusResult, lt as SandboxProcessWaitResult, m as GatewayRuntimeTrustedInvocationCorrelationSchema, mt as SandboxFsListResult, n as GatewayRuntimeAttachmentMetadata$1, nt as SandboxProcessStartResult, on as SandboxEnvironmentOpenResult, p as GatewayRuntimeTrustedInvocationCorrelation, qt as SandboxExecStartResult, st as SandboxProcessWaitRequest, tn as SandboxEnvironmentCloseResult, v as GatewayRuntimeTrustedInvocationRequesterSchema, vt as SandboxFsMkdirResult, w as SandboxTerminalAttachRequest, wt as SandboxFsRemoveRequest, yn as SandboxRetainedResultLookupResult } from "../index-C5NhyO2R.js";
|
|
3
|
-
import { S as PortalCallRequest, _ as PortalSearchResult, c as PortalDescribeResult, i as PortalCallResult, p as PortalListResult } from "../portal-call-result-schema-
|
|
4
|
-
import { i as PortalSearchRequest, m as PortalDescribeRequest, s as PortalListRequest } from "../index-
|
|
3
|
+
import { S as PortalCallRequest, _ as PortalSearchResult, c as PortalDescribeResult, i as PortalCallResult, p as PortalListResult } from "../portal-call-result-schema-DalyNrfW.js";
|
|
4
|
+
import { i as PortalSearchRequest, m as PortalDescribeRequest, s as PortalListRequest } from "../index-CsCLhmNb.js";
|
|
5
5
|
import { z } from "zod/v4";
|
|
6
6
|
|
|
7
7
|
//#region src/gateway-runtime-client/gateway-runtime-trace-context.d.ts
|
|
@@ -23,14 +23,14 @@ type PortalPartialOutputEvent = z.infer<typeof PortalPartialOutputEventSchema>;
|
|
|
23
23
|
declare const PortalDiagnosticEventSchema: z.ZodObject<{
|
|
24
24
|
diagnostic: z.ZodObject<{
|
|
25
25
|
code: z.ZodEnum<{
|
|
26
|
-
provider_unavailable: "provider_unavailable";
|
|
27
|
-
capability_denied: "capability_denied";
|
|
28
26
|
approval_required: "approval_required";
|
|
27
|
+
capability_denied: "capability_denied";
|
|
29
28
|
validation_failed: "validation_failed";
|
|
29
|
+
provider_unavailable: "provider_unavailable";
|
|
30
30
|
execution_failed: "execution_failed";
|
|
31
|
-
output_truncated: "output_truncated";
|
|
32
|
-
timeout: "timeout";
|
|
33
31
|
cancelled: "cancelled";
|
|
32
|
+
timeout: "timeout";
|
|
33
|
+
output_truncated: "output_truncated";
|
|
34
34
|
artifact_unavailable: "artifact_unavailable";
|
|
35
35
|
}>;
|
|
36
36
|
level: z.ZodEnum<{
|
|
@@ -55,29 +55,29 @@ type PortalCancellationRequestEvent = z.infer<typeof PortalCancellationRequestEv
|
|
|
55
55
|
declare const PortalCancellationResultEventSchema: z.ZodObject<{
|
|
56
56
|
error: z.ZodOptional<z.ZodObject<{
|
|
57
57
|
code: z.ZodEnum<{
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
invalid_request: "invalid_request";
|
|
59
|
+
not_found: "not_found";
|
|
60
|
+
not_authorized: "not_authorized";
|
|
60
61
|
approval_required: "approval_required";
|
|
62
|
+
capability_denied: "capability_denied";
|
|
61
63
|
validation_failed: "validation_failed";
|
|
64
|
+
provider_unavailable: "provider_unavailable";
|
|
62
65
|
execution_failed: "execution_failed";
|
|
63
|
-
timeout: "timeout";
|
|
64
66
|
cancelled: "cancelled";
|
|
65
|
-
|
|
66
|
-
not_found: "not_found";
|
|
67
|
-
not_authorized: "not_authorized";
|
|
67
|
+
timeout: "timeout";
|
|
68
68
|
}>;
|
|
69
69
|
message: z.ZodString;
|
|
70
70
|
retryable: z.ZodOptional<z.ZodBoolean>;
|
|
71
71
|
safeDiagnostic: z.ZodOptional<z.ZodObject<{
|
|
72
72
|
code: z.ZodEnum<{
|
|
73
|
-
provider_unavailable: "provider_unavailable";
|
|
74
|
-
capability_denied: "capability_denied";
|
|
75
73
|
approval_required: "approval_required";
|
|
74
|
+
capability_denied: "capability_denied";
|
|
76
75
|
validation_failed: "validation_failed";
|
|
76
|
+
provider_unavailable: "provider_unavailable";
|
|
77
77
|
execution_failed: "execution_failed";
|
|
78
|
-
output_truncated: "output_truncated";
|
|
79
|
-
timeout: "timeout";
|
|
80
78
|
cancelled: "cancelled";
|
|
79
|
+
timeout: "timeout";
|
|
80
|
+
output_truncated: "output_truncated";
|
|
81
81
|
artifact_unavailable: "artifact_unavailable";
|
|
82
82
|
}>;
|
|
83
83
|
level: z.ZodEnum<{
|
|
@@ -93,8 +93,8 @@ declare const PortalCancellationResultEventSchema: z.ZodObject<{
|
|
|
93
93
|
id: z.ZodString;
|
|
94
94
|
kind: z.ZodLiteral<"cancellation_result">;
|
|
95
95
|
status: z.ZodEnum<{
|
|
96
|
-
cancelled: "cancelled";
|
|
97
96
|
not_found: "not_found";
|
|
97
|
+
cancelled: "cancelled";
|
|
98
98
|
already_finished: "already_finished";
|
|
99
99
|
}>;
|
|
100
100
|
}, z.core.$strict>;
|
|
@@ -117,14 +117,14 @@ declare const PortalEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
117
117
|
}, z.core.$strict>, z.ZodObject<{
|
|
118
118
|
diagnostic: z.ZodObject<{
|
|
119
119
|
code: z.ZodEnum<{
|
|
120
|
-
provider_unavailable: "provider_unavailable";
|
|
121
|
-
capability_denied: "capability_denied";
|
|
122
120
|
approval_required: "approval_required";
|
|
121
|
+
capability_denied: "capability_denied";
|
|
123
122
|
validation_failed: "validation_failed";
|
|
123
|
+
provider_unavailable: "provider_unavailable";
|
|
124
124
|
execution_failed: "execution_failed";
|
|
125
|
-
output_truncated: "output_truncated";
|
|
126
|
-
timeout: "timeout";
|
|
127
125
|
cancelled: "cancelled";
|
|
126
|
+
timeout: "timeout";
|
|
127
|
+
output_truncated: "output_truncated";
|
|
128
128
|
artifact_unavailable: "artifact_unavailable";
|
|
129
129
|
}>;
|
|
130
130
|
level: z.ZodEnum<{
|
|
@@ -145,29 +145,29 @@ declare const PortalEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
145
145
|
}, z.core.$strict>, z.ZodObject<{
|
|
146
146
|
error: z.ZodOptional<z.ZodObject<{
|
|
147
147
|
code: z.ZodEnum<{
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
invalid_request: "invalid_request";
|
|
149
|
+
not_found: "not_found";
|
|
150
|
+
not_authorized: "not_authorized";
|
|
150
151
|
approval_required: "approval_required";
|
|
152
|
+
capability_denied: "capability_denied";
|
|
151
153
|
validation_failed: "validation_failed";
|
|
154
|
+
provider_unavailable: "provider_unavailable";
|
|
152
155
|
execution_failed: "execution_failed";
|
|
153
|
-
timeout: "timeout";
|
|
154
156
|
cancelled: "cancelled";
|
|
155
|
-
|
|
156
|
-
not_found: "not_found";
|
|
157
|
-
not_authorized: "not_authorized";
|
|
157
|
+
timeout: "timeout";
|
|
158
158
|
}>;
|
|
159
159
|
message: z.ZodString;
|
|
160
160
|
retryable: z.ZodOptional<z.ZodBoolean>;
|
|
161
161
|
safeDiagnostic: z.ZodOptional<z.ZodObject<{
|
|
162
162
|
code: z.ZodEnum<{
|
|
163
|
-
provider_unavailable: "provider_unavailable";
|
|
164
|
-
capability_denied: "capability_denied";
|
|
165
163
|
approval_required: "approval_required";
|
|
164
|
+
capability_denied: "capability_denied";
|
|
166
165
|
validation_failed: "validation_failed";
|
|
166
|
+
provider_unavailable: "provider_unavailable";
|
|
167
167
|
execution_failed: "execution_failed";
|
|
168
|
-
output_truncated: "output_truncated";
|
|
169
|
-
timeout: "timeout";
|
|
170
168
|
cancelled: "cancelled";
|
|
169
|
+
timeout: "timeout";
|
|
170
|
+
output_truncated: "output_truncated";
|
|
171
171
|
artifact_unavailable: "artifact_unavailable";
|
|
172
172
|
}>;
|
|
173
173
|
level: z.ZodEnum<{
|
|
@@ -183,8 +183,8 @@ declare const PortalEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
183
183
|
id: z.ZodString;
|
|
184
184
|
kind: z.ZodLiteral<"cancellation_result">;
|
|
185
185
|
status: z.ZodEnum<{
|
|
186
|
-
cancelled: "cancelled";
|
|
187
186
|
not_found: "not_found";
|
|
187
|
+
cancelled: "cancelled";
|
|
188
188
|
already_finished: "already_finished";
|
|
189
189
|
}>;
|
|
190
190
|
}, z.core.$strict>], "kind">;
|
|
@@ -192,26 +192,26 @@ type PortalEvent = z.infer<typeof PortalEventSchema>;
|
|
|
192
192
|
//#endregion
|
|
193
193
|
//#region src/portal-event-surface/models/safe-diagnostic-schema.d.ts
|
|
194
194
|
declare const SafeDiagnosticCodeSchema: z.ZodEnum<{
|
|
195
|
-
provider_unavailable: "provider_unavailable";
|
|
196
|
-
capability_denied: "capability_denied";
|
|
197
195
|
approval_required: "approval_required";
|
|
196
|
+
capability_denied: "capability_denied";
|
|
198
197
|
validation_failed: "validation_failed";
|
|
198
|
+
provider_unavailable: "provider_unavailable";
|
|
199
199
|
execution_failed: "execution_failed";
|
|
200
|
-
output_truncated: "output_truncated";
|
|
201
|
-
timeout: "timeout";
|
|
202
200
|
cancelled: "cancelled";
|
|
201
|
+
timeout: "timeout";
|
|
202
|
+
output_truncated: "output_truncated";
|
|
203
203
|
artifact_unavailable: "artifact_unavailable";
|
|
204
204
|
}>;
|
|
205
205
|
declare const SafeDiagnosticSchema: z.ZodObject<{
|
|
206
206
|
code: z.ZodEnum<{
|
|
207
|
-
provider_unavailable: "provider_unavailable";
|
|
208
|
-
capability_denied: "capability_denied";
|
|
209
207
|
approval_required: "approval_required";
|
|
208
|
+
capability_denied: "capability_denied";
|
|
210
209
|
validation_failed: "validation_failed";
|
|
210
|
+
provider_unavailable: "provider_unavailable";
|
|
211
211
|
execution_failed: "execution_failed";
|
|
212
|
-
output_truncated: "output_truncated";
|
|
213
|
-
timeout: "timeout";
|
|
214
212
|
cancelled: "cancelled";
|
|
213
|
+
timeout: "timeout";
|
|
214
|
+
output_truncated: "output_truncated";
|
|
215
215
|
artifact_unavailable: "artifact_unavailable";
|
|
216
216
|
}>;
|
|
217
217
|
level: z.ZodEnum<{
|
|
@@ -226,4 +226,4 @@ declare const SafeDiagnosticSchema: z.ZodObject<{
|
|
|
226
226
|
type SafeDiagnostic = z.infer<typeof SafeDiagnosticSchema>;
|
|
227
227
|
//#endregion
|
|
228
228
|
export { PortalCancellationRequestEventSchema as a, PortalDiagnosticEvent as c, PortalEventSchema as d, PortalPartialOutputEvent as f, PortalProgressEventSchema as h, PortalCancellationRequestEvent as i, PortalDiagnosticEventSchema as l, PortalProgressEvent as m, SafeDiagnosticCodeSchema as n, PortalCancellationResultEvent as o, PortalPartialOutputEventSchema as p, SafeDiagnosticSchema as r, PortalCancellationResultEventSchema as s, SafeDiagnostic as t, PortalEvent as u };
|
|
229
|
-
//# sourceMappingURL=index-
|
|
229
|
+
//# sourceMappingURL=index-BQ12JshX.d.ts.map
|