@vibesdotdev/client 0.1.1 → 1.0.0-rc.3
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/LICENSE +21 -0
- package/README.md +24 -15
- package/dist/api-client-plugin.d.ts +4 -0
- package/dist/api-client-plugin.d.ts.map +1 -0
- package/dist/api-client-plugin.js +20 -0
- package/dist/api-client-plugin.js.map +1 -0
- package/dist/api-client.impl.d.ts +23 -0
- package/dist/api-client.impl.d.ts.map +1 -0
- package/dist/api-client.impl.js +47 -0
- package/dist/api-client.impl.js.map +1 -0
- package/dist/client.consumer.plugin.d.ts +3 -0
- package/dist/client.consumer.plugin.d.ts.map +1 -0
- package/dist/client.consumer.plugin.js +10 -0
- package/dist/client.consumer.plugin.js.map +1 -0
- package/dist/cloud.plugin.d.ts +3 -0
- package/dist/cloud.plugin.d.ts.map +1 -0
- package/dist/cloud.plugin.js +10 -0
- package/dist/cloud.plugin.js.map +1 -0
- package/dist/config/client.config.descriptor.d.ts +4 -0
- package/dist/config/client.config.descriptor.d.ts.map +1 -0
- package/dist/config/client.config.descriptor.js +32 -0
- package/dist/config/client.config.descriptor.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/settings.d.ts +9 -0
- package/dist/config/settings.d.ts.map +1 -0
- package/dist/config/settings.js +25 -0
- package/dist/config/settings.js.map +1 -0
- package/dist/docs/client.api-request.docs.descriptor.d.ts +4 -0
- package/dist/docs/client.api-request.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/client.api-request.docs.descriptor.js +71 -0
- package/dist/docs/client.api-request.docs.descriptor.js.map +1 -0
- package/dist/events/auth-rejected.event.d.ts +35 -0
- package/dist/events/auth-rejected.event.d.ts.map +1 -0
- package/dist/events/auth-rejected.event.js +36 -0
- package/dist/events/auth-rejected.event.js.map +1 -0
- package/dist/factory.d.ts +5 -1
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +16 -17
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/kind-augment.d.ts +11 -0
- package/dist/kind-augment.d.ts.map +1 -0
- package/dist/kind-augment.js +2 -0
- package/dist/kind-augment.js.map +1 -0
- package/dist/lib/client/api-diagnostics.d.ts +79 -0
- package/dist/lib/client/api-diagnostics.d.ts.map +1 -0
- package/dist/lib/client/api-diagnostics.js +111 -0
- package/dist/lib/client/api-diagnostics.js.map +1 -0
- package/dist/lib/client/configured.d.ts +78 -0
- package/dist/lib/client/configured.d.ts.map +1 -0
- package/dist/lib/client/configured.js +261 -0
- package/dist/lib/client/configured.js.map +1 -0
- package/dist/lib/client/internal/auth-headers.d.ts +11 -0
- package/dist/lib/client/internal/auth-headers.d.ts.map +1 -0
- package/dist/lib/client/internal/auth-headers.js +35 -0
- package/dist/lib/client/internal/auth-headers.js.map +1 -0
- package/dist/lib/client/internal/base-client.d.ts +5 -2
- package/dist/lib/client/internal/base-client.d.ts.map +1 -1
- package/dist/lib/client/internal/base-client.js +42 -22
- package/dist/lib/client/internal/base-client.js.map +1 -1
- package/dist/lib/client/internal/base-helpers.d.ts.map +1 -1
- package/dist/lib/client/internal/base-helpers.js +20 -20
- package/dist/lib/client/internal/base-helpers.js.map +1 -1
- package/dist/lib/client/internal/base-types.d.ts +10 -5
- package/dist/lib/client/internal/base-types.d.ts.map +1 -1
- package/dist/lib/client/internal/base-types.js +5 -3
- package/dist/lib/client/internal/base-types.js.map +1 -1
- package/dist/lib/client/internal/client-values.d.ts +43 -0
- package/dist/lib/client/internal/client-values.d.ts.map +1 -0
- package/dist/lib/client/internal/client-values.js +76 -0
- package/dist/lib/client/internal/client-values.js.map +1 -0
- package/dist/lib/client/internal/endpoint.d.ts +6 -5
- package/dist/lib/client/internal/endpoint.d.ts.map +1 -1
- package/dist/lib/client/internal/endpoint.js +3 -0
- package/dist/lib/client/internal/endpoint.js.map +1 -1
- package/dist/lib/client/internal/generator.d.ts +98 -9
- package/dist/lib/client/internal/generator.d.ts.map +1 -1
- package/dist/lib/client/internal/generator.js +92 -140
- package/dist/lib/client/internal/generator.js.map +1 -1
- package/dist/lib/client/internal/request-builder.d.ts +5 -2
- package/dist/lib/client/internal/request-builder.d.ts.map +1 -1
- package/dist/lib/client/internal/request-builder.js +105 -65
- package/dist/lib/client/internal/request-builder.js.map +1 -1
- package/dist/lib/client/internal/sse-stream.d.ts +9 -5
- package/dist/lib/client/internal/sse-stream.d.ts.map +1 -1
- package/dist/lib/client/internal/sse-stream.js +96 -94
- package/dist/lib/client/internal/sse-stream.js.map +1 -1
- package/dist/lib/client/internal/timeout-signal.d.ts +8 -0
- package/dist/lib/client/internal/timeout-signal.d.ts.map +1 -0
- package/dist/lib/client/internal/timeout-signal.js +17 -0
- package/dist/lib/client/internal/timeout-signal.js.map +1 -0
- package/dist/lib/client/internal/transport/http2-fetch.d.ts +8 -0
- package/dist/lib/client/internal/transport/http2-fetch.d.ts.map +1 -0
- package/dist/lib/client/internal/transport/http2-fetch.js +17 -0
- package/dist/lib/client/internal/transport/http2-fetch.js.map +1 -0
- package/dist/lib/client/internal/vibes-client.d.ts +17 -8
- package/dist/lib/client/internal/vibes-client.d.ts.map +1 -1
- package/dist/lib/client/internal/vibes-client.js +127 -67
- package/dist/lib/client/internal/vibes-client.js.map +1 -1
- package/dist/lib/client/internal/wrap-fetch.d.ts +3 -2
- package/dist/lib/client/internal/wrap-fetch.d.ts.map +1 -1
- package/dist/lib/client/internal/wrap-fetch.js +14 -33
- package/dist/lib/client/internal/wrap-fetch.js.map +1 -1
- package/dist/lib/client/runtime-fetch.d.ts +14 -0
- package/dist/lib/client/runtime-fetch.d.ts.map +1 -0
- package/dist/lib/client/runtime-fetch.js +25 -0
- package/dist/lib/client/runtime-fetch.js.map +1 -0
- package/dist/lib/client/types.d.ts +18 -9
- package/dist/lib/client/types.d.ts.map +1 -1
- package/dist/lib/client/types.js +22 -3
- package/dist/lib/client/types.js.map +1 -1
- package/dist/plugin.d.ts +2 -18
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +7 -74
- package/dist/plugin.js.map +1 -1
- package/dist/runtime-client.d.ts +10 -0
- package/dist/runtime-client.d.ts.map +1 -0
- package/dist/runtime-client.js +14 -0
- package/dist/runtime-client.js.map +1 -0
- package/dist/schemas/auth-rejected.d.ts +12 -0
- package/dist/schemas/auth-rejected.d.ts.map +1 -0
- package/dist/schemas/auth-rejected.js +11 -0
- package/dist/schemas/auth-rejected.js.map +1 -0
- package/dist/schemas/sdk-languages.d.ts +47 -0
- package/dist/schemas/sdk-languages.d.ts.map +1 -0
- package/dist/schemas/sdk-languages.js +75 -0
- package/dist/schemas/sdk-languages.js.map +1 -0
- package/dist/schemas/settings.d.ts +14 -0
- package/dist/schemas/settings.d.ts.map +1 -0
- package/dist/schemas/settings.js +10 -0
- package/dist/schemas/settings.js.map +1 -0
- package/dist/schemas/validated-request.d.ts +19 -0
- package/dist/schemas/validated-request.d.ts.map +1 -0
- package/dist/schemas/validated-request.js +2 -0
- package/dist/schemas/validated-request.js.map +1 -0
- package/dist/schemas.d.ts +23 -8
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +8 -2
- package/dist/schemas.js.map +1 -1
- package/dist/sse-client.d.ts +17 -15
- package/dist/sse-client.d.ts.map +1 -1
- package/dist/sse-client.js +111 -91
- package/dist/sse-client.js.map +1 -1
- package/dist/svelte/client-svelte.plugin.d.ts +5 -0
- package/dist/svelte/client-svelte.plugin.d.ts.map +1 -0
- package/dist/svelte/client-svelte.plugin.js +46 -0
- package/dist/svelte/index.d.ts +3 -0
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +2 -0
- package/dist/svelte/styles.css +8 -0
- package/dist/svelte/tool-widgets/ApiRequestToolCard.svelte +53 -0
- package/dist/svelte/tool-widgets/ApiRequestToolCard.svelte.d.ts +5 -0
- package/dist/svelte/tool-widgets/ApiRequestToolCard.svelte.d.ts.map +1 -0
- package/dist/svelte/tool-widgets/index.d.ts +2 -0
- package/dist/svelte/tool-widgets/index.d.ts.map +1 -0
- package/dist/svelte/tool-widgets/index.js +1 -0
- package/dist/tools/api-request/api-request.contract.d.ts +19 -0
- package/dist/tools/api-request/api-request.contract.d.ts.map +1 -0
- package/dist/tools/api-request/api-request.contract.js +110 -0
- package/dist/tools/api-request/api-request.contract.js.map +1 -0
- package/dist/tools/api-request/api-request.descriptor.d.ts +11 -4
- package/dist/tools/api-request/api-request.descriptor.d.ts.map +1 -1
- package/dist/tools/api-request/api-request.descriptor.js +8 -5
- package/dist/tools/api-request/api-request.descriptor.js.map +1 -1
- package/dist/tools/api-request/api-request.impl.cloud.d.ts +15 -0
- package/dist/tools/api-request/api-request.impl.cloud.d.ts.map +1 -0
- package/dist/tools/api-request/api-request.impl.cloud.js +75 -0
- package/dist/tools/api-request/api-request.impl.cloud.js.map +1 -0
- package/dist/tools/api-request/api-request.impl.consumer.d.ts +5 -3
- package/dist/tools/api-request/api-request.impl.consumer.d.ts.map +1 -1
- package/dist/tools/api-request/api-request.impl.consumer.js +27 -33
- package/dist/tools/api-request/api-request.impl.consumer.js.map +1 -1
- package/dist/tools/api-request/api-request.view.d.ts +29 -0
- package/dist/tools/api-request/api-request.view.d.ts.map +1 -0
- package/dist/tools/api-request/api-request.view.js +62 -0
- package/dist/tools/api-request/api-request.view.js.map +1 -0
- package/dist/tools/api-request/schemas/index.d.ts +12 -5
- package/dist/tools/api-request/schemas/index.d.ts.map +1 -1
- package/dist/tools/api-request/schemas/index.js +24 -6
- package/dist/tools/api-request/schemas/index.js.map +1 -1
- package/dist/tui/client-tui.plugin.d.ts +3 -0
- package/dist/tui/client-tui.plugin.d.ts.map +1 -0
- package/dist/tui/client-tui.plugin.js +32 -0
- package/dist/tui/client-tui.plugin.js.map +1 -0
- package/dist/tui/index.d.ts +2 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +2 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/tool-widgets/ApiRequestToolWidget.impl.tui.d.ts +17 -0
- package/dist/tui/tool-widgets/ApiRequestToolWidget.impl.tui.d.ts.map +1 -0
- package/dist/tui/tool-widgets/ApiRequestToolWidget.impl.tui.js +28 -0
- package/dist/tui/tool-widgets/ApiRequestToolWidget.impl.tui.js.map +1 -0
- package/dist/validated-request.d.ts +27 -0
- package/dist/validated-request.d.ts.map +1 -0
- package/dist/validated-request.js +119 -0
- package/dist/validated-request.js.map +1 -0
- package/package.json +188 -41
- package/dist/lib/client/internal/node/http2-fetch.node.d.ts +0 -2
- package/dist/lib/client/internal/node/http2-fetch.node.d.ts.map +0 -1
- package/dist/lib/client/internal/node/http2-fetch.node.js +0 -131
- package/dist/lib/client/internal/node/http2-fetch.node.js.map +0 -1
- package/dist/lib/client/node.d.ts +0 -5
- package/dist/lib/client/node.d.ts.map +0 -1
- package/dist/lib/client/node.js +0 -33
- package/dist/lib/client/node.js.map +0 -1
- package/dist/tools/api-request/index.d.ts +0 -5
- package/dist/tools/api-request/index.d.ts.map +0 -1
- package/dist/tools/api-request/index.js +0 -4
- package/dist/tools/api-request/index.js.map +0 -1
- package/src/factory.ts +0 -114
- package/src/index.ts +0 -15
- package/src/lib/client/core.ts +0 -13
- package/src/lib/client/internal/base-client.ts +0 -107
- package/src/lib/client/internal/base-helpers.ts +0 -74
- package/src/lib/client/internal/base-types.ts +0 -42
- package/src/lib/client/internal/endpoint.ts +0 -51
- package/src/lib/client/internal/generator.ts +0 -181
- package/src/lib/client/internal/index.ts +0 -4
- package/src/lib/client/internal/node/http2-fetch.node.ts +0 -138
- package/src/lib/client/internal/request-builder.ts +0 -147
- package/src/lib/client/internal/sse-stream.ts +0 -130
- package/src/lib/client/internal/vibes-client.ts +0 -167
- package/src/lib/client/internal/wrap-fetch.ts +0 -59
- package/src/lib/client/node.ts +0 -36
- package/src/lib/client/types.ts +0 -156
- package/src/plugin.ts +0 -104
- package/src/schemas.ts +0 -91
- package/src/sse-client.ts +0 -155
- package/src/tools/api-request/api-request.descriptor.ts +0 -28
- package/src/tools/api-request/api-request.impl.consumer.ts +0 -66
- package/src/tools/api-request/index.ts +0 -4
- package/src/tools/api-request/schemas/index.ts +0 -29
|
@@ -3,16 +3,19 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Metadata for the api-request tool. Safe to import anywhere.
|
|
5
5
|
*/
|
|
6
|
-
import { createRuntimeAsset } from '@vibesdotdev/
|
|
6
|
+
import { createRuntimeAsset } from '@vibesdotdev/kernel/factory';
|
|
7
7
|
import { apiRequestInputSchema, apiRequestOutputSchema } from "./schemas/index.js";
|
|
8
8
|
export default createRuntimeAsset({
|
|
9
9
|
kind: 'tools/tool',
|
|
10
10
|
id: 'api-request',
|
|
11
11
|
name: 'API Request',
|
|
12
|
-
description: 'Make an authenticated API request to
|
|
13
|
-
mcpDescription: '
|
|
14
|
-
hardware: ['consumer'],
|
|
15
|
-
|
|
12
|
+
description: 'Make an authenticated API request to an explicitly named Vibes app.',
|
|
13
|
+
mcpDescription: 'Vibes API request. app is required via the infra/service catalog; auth/cookie headers are rejected. Ex: {app:"account",method:"GET",path:"/api/profile"}.',
|
|
14
|
+
hardware: ['consumer', 'cloud'],
|
|
15
|
+
// MCP adapters do not yet thread verified caller auth into ToolCallContext.
|
|
16
|
+
// Keep the tool out of MCP discovery until that surface owns the contract;
|
|
17
|
+
// direct/worker/agent surfaces fail closed on explicit auth context.
|
|
18
|
+
purpose: ['direct', 'worker', 'agent'],
|
|
16
19
|
category: 'execution',
|
|
17
20
|
subcategory: 'api-request',
|
|
18
21
|
tags: ['api', 'network'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-request.descriptor.js","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"api-request.descriptor.js","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEnF,eAAe,kBAAkB,CAAC;IACjC,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,qEAAqE;IAClF,cAAc,EACb,2JAA2J;IAC5J,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;IAC/B,4EAA4E;IAC5E,2EAA2E;IAC3E,qEAAqE;IACrE,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;IACtC,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;IACxB,MAAM,EAAE,OAAO;IACf,gBAAgB,EAAE,IAAI;IACtB,WAAW,EAAE,CAAC,kBAAkB,CAAC;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,qBAAqB;QAC5B,MAAM,EAAE,sBAAsB;KAC9B;CACD,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* api-request Tool Implementation (Cloud)
|
|
3
|
+
*
|
|
4
|
+
* Resolves the requested app through the declared infra/service catalog and
|
|
5
|
+
* forwards only caller-scoped authentication supplied by the tool execution
|
|
6
|
+
* context. Cloud execution fails closed when the surface did not provide a
|
|
7
|
+
* JWT or cookie.
|
|
8
|
+
*/
|
|
9
|
+
import type { VibesRuntime, ToolCallContext } from '@vibesdotdev/kernel';
|
|
10
|
+
import type { ApiRequestInput, ApiRequestOutput } from './schemas/index.ts';
|
|
11
|
+
declare const _default: {
|
|
12
|
+
execute(input: ApiRequestInput, runtime: VibesRuntime, ctx: ToolCallContext): Promise<ApiRequestOutput>;
|
|
13
|
+
};
|
|
14
|
+
export default _default;
|
|
15
|
+
//# sourceMappingURL=api-request.impl.cloud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-request.impl.cloud.d.ts","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.impl.cloud.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAUzE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;;mBAqDnE,eAAe,WACb,YAAY,OAChB,eAAe,GAClB,OAAO,CAAC,gBAAgB,CAAC;;AAL7B,wBA4BE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { valueFreeFailure, CaughtFailureSchema } from '@vibesdotdev/kernel';
|
|
2
|
+
import { JsonValueSchema, readClientValue } from "../../lib/client/internal/client-values.js";
|
|
3
|
+
import { apiRequestInputSchema } from "./schemas/index.js";
|
|
4
|
+
import * as z from 'zod/v4';
|
|
5
|
+
import { vibesApiClient } from "../../factory.js";
|
|
6
|
+
import { ApiRequestContractError, apiRequestErrorOutput, apiRequestSuccessOutput, resolveApiRequestTarget } from "./api-request.contract.js";
|
|
7
|
+
function nonEmptyMetadataString(ctx, key) {
|
|
8
|
+
const value = readClientValue(z.object({ metadata: z.record(z.string(), JsonValueSchema).optional() }), ctx, 'api-request-context-unreadable').metadata?.[key];
|
|
9
|
+
const parsed = z.string().safeParse(value);
|
|
10
|
+
if (!parsed.success)
|
|
11
|
+
return null;
|
|
12
|
+
const trimmed = parsed.data.trim();
|
|
13
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
14
|
+
}
|
|
15
|
+
const FORWARDABLE_AUTH_COOKIES = new Set([
|
|
16
|
+
'__Secure-better-auth.session_token',
|
|
17
|
+
'better-auth.session_token'
|
|
18
|
+
]);
|
|
19
|
+
/**
|
|
20
|
+
* Extract only the canonical Better Auth session cookie. Tool metadata may
|
|
21
|
+
* carry the caller's complete host Cookie header; forwarding that verbatim to
|
|
22
|
+
* a sibling app would leak unrelated host-only cookies across trust domains.
|
|
23
|
+
*/
|
|
24
|
+
function resolveForwardableAuthCookie(rawCookie) {
|
|
25
|
+
for (const part of rawCookie.split(';')) {
|
|
26
|
+
const separator = part.indexOf('=');
|
|
27
|
+
if (separator <= 0)
|
|
28
|
+
continue;
|
|
29
|
+
const name = part.slice(0, separator).trim();
|
|
30
|
+
const value = part.slice(separator + 1).trim();
|
|
31
|
+
if (FORWARDABLE_AUTH_COOKIES.has(name) && value.length > 0 && !/[\r\n]/.test(value)) {
|
|
32
|
+
return `${name}=${value}`;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
function resolveCallerAuth(ctx) {
|
|
38
|
+
const jwt = nonEmptyMetadataString(ctx, 'jwt');
|
|
39
|
+
if (jwt) {
|
|
40
|
+
return { auth: { type: 'bearer', credentials: jwt } };
|
|
41
|
+
}
|
|
42
|
+
const cookie = nonEmptyMetadataString(ctx, 'cookie');
|
|
43
|
+
if (cookie) {
|
|
44
|
+
const authCookie = resolveForwardableAuthCookie(cookie);
|
|
45
|
+
if (authCookie)
|
|
46
|
+
return { headers: { Cookie: authCookie } };
|
|
47
|
+
}
|
|
48
|
+
throw new ApiRequestContractError('NO_AUTH_CONTEXT', 'Cloud api-request requires caller-scoped JWT or a canonical Better Auth session cookie from the execution surface.');
|
|
49
|
+
}
|
|
50
|
+
export default {
|
|
51
|
+
async execute(input, runtime, ctx) {
|
|
52
|
+
try {
|
|
53
|
+
input = readClientValue(apiRequestInputSchema, input, 'api-request-input-invalid');
|
|
54
|
+
const target = await resolveApiRequestTarget(input, runtime);
|
|
55
|
+
const apiClient = vibesApiClient({
|
|
56
|
+
id: `api-request:${target.app}`,
|
|
57
|
+
baseUrl: target.origin,
|
|
58
|
+
runtime,
|
|
59
|
+
...resolveCallerAuth(ctx)
|
|
60
|
+
});
|
|
61
|
+
const response = await apiClient.request(target.url, {
|
|
62
|
+
method: input.method,
|
|
63
|
+
query: input.query ?? {},
|
|
64
|
+
body: input.body ?? undefined,
|
|
65
|
+
headers: input.headers ?? {}
|
|
66
|
+
});
|
|
67
|
+
return apiRequestSuccessOutput(response);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
const projected = apiRequestErrorOutput(error);
|
|
71
|
+
return { status: 'error', error: { ...projected.error, failure: valueFreeFailure(CaughtFailureSchema.parse(error)) } };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=api-request.impl.cloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-request.impl.cloud.js","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.impl.cloud.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* api-request Tool Implementation (Consumer)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Resolves the requested app through the declared infra/service catalog, then
|
|
5
|
+
* sends the absolute target URL through the explicitly registered auth API
|
|
6
|
+
* client. The auth client owns the consumer credential provider; api-request
|
|
7
|
+
* never reads or accepts credentials itself.
|
|
6
8
|
*/
|
|
7
|
-
import type
|
|
9
|
+
import { type VibesRuntime, type ToolCallContext } from '@vibesdotdev/kernel';
|
|
8
10
|
import type { ApiRequestInput, ApiRequestOutput } from './schemas/index.ts';
|
|
9
11
|
declare const _default: {
|
|
10
12
|
execute(input: ApiRequestInput, runtime: VibesRuntime, _ctx: ToolCallContext): Promise<ApiRequestOutput>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-request.impl.consumer.d.ts","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.impl.consumer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api-request.impl.consumer.d.ts","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.impl.consumer.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,OAAO,EAAmB,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAS/F,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;;mBAoBnE,eAAe,WACb,YAAY,QACf,eAAe,GACnB,OAAO,CAAC,gBAAgB,CAAC;;AAL7B,wBAuBE"}
|
|
@@ -1,50 +1,44 @@
|
|
|
1
|
+
import { valueFreeFailure, CaughtFailureSchema } from '@vibesdotdev/kernel';
|
|
2
|
+
import { readClientValue } from "../../lib/client/internal/client-values.js";
|
|
3
|
+
import { apiRequestInputSchema } from "./schemas/index.js";
|
|
1
4
|
/**
|
|
2
5
|
* api-request Tool Implementation (Consumer)
|
|
3
6
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
7
|
+
* Resolves the requested app through the declared infra/service catalog, then
|
|
8
|
+
* sends the absolute target URL through the explicitly registered auth API
|
|
9
|
+
* client. The auth client owns the consumer credential provider; api-request
|
|
10
|
+
* never reads or accepts credentials itself.
|
|
6
11
|
*/
|
|
7
|
-
|
|
12
|
+
import { CapabilityError } from '@vibesdotdev/kernel';
|
|
13
|
+
import { getVibesClient } from '@vibesdotdev/kernel/client';
|
|
14
|
+
import { apiRequestErrorOutput, apiRequestSuccessOutput, resolveApiRequestTarget } from "./api-request.contract.js";
|
|
15
|
+
async function resolveAuthenticatedApiClient(runtime) {
|
|
8
16
|
try {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
17
|
+
const client = await getVibesClient('client', runtime);
|
|
18
|
+
const apiClient = await client.resolve('auth');
|
|
19
|
+
return apiClient;
|
|
13
20
|
}
|
|
14
|
-
catch {
|
|
15
|
-
|
|
21
|
+
catch (cause) {
|
|
22
|
+
throw new CapabilityError('The authenticated auth API client is not available in this runtime.', 'AUTH_REQUIRED', { reason: 'no-auth-client', cause });
|
|
16
23
|
}
|
|
17
|
-
throw new Error('API client not available in runtime context. Ensure api/client kind is registered.');
|
|
18
24
|
}
|
|
19
25
|
export default {
|
|
20
26
|
async execute(input, runtime, _ctx) {
|
|
21
|
-
const method = input.method;
|
|
22
|
-
const path = input.path;
|
|
23
|
-
const query = input.query ?? {};
|
|
24
|
-
const body = input.body ?? undefined;
|
|
25
|
-
const headers = input.headers ?? {};
|
|
26
27
|
try {
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
input = readClientValue(apiRequestInputSchema, input, 'api-request-input-invalid');
|
|
29
|
+
const target = await resolveApiRequestTarget(input, runtime);
|
|
30
|
+
const apiClient = await resolveAuthenticatedApiClient(runtime);
|
|
31
|
+
const response = await apiClient.request(target.url, {
|
|
32
|
+
method: input.method,
|
|
33
|
+
query: input.query ?? {},
|
|
34
|
+
body: input.body ?? undefined,
|
|
35
|
+
headers: input.headers ?? {}
|
|
33
36
|
});
|
|
34
|
-
return
|
|
35
|
-
status: 'success',
|
|
36
|
-
response
|
|
37
|
-
};
|
|
37
|
+
return apiRequestSuccessOutput(response);
|
|
38
38
|
}
|
|
39
39
|
catch (error) {
|
|
40
|
-
const
|
|
41
|
-
return {
|
|
42
|
-
status: 'error',
|
|
43
|
-
error: {
|
|
44
|
-
message,
|
|
45
|
-
code: 'API_REQUEST_FAILED'
|
|
46
|
-
}
|
|
47
|
-
};
|
|
40
|
+
const projected = apiRequestErrorOutput(error);
|
|
41
|
+
return { status: 'error', error: { ...projected.error, failure: valueFreeFailure(CaughtFailureSchema.parse(error)) } };
|
|
48
42
|
}
|
|
49
43
|
}
|
|
50
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-request.impl.consumer.js","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.impl.consumer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"api-request.impl.consumer.js","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.impl.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAkB,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAA2C,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,EACN,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,MAAM,2BAA2B,CAAC;AAGnC,KAAK,UAAU,6BAA6B,CAC3C,OAAqB;IAErB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,cAAc,CAAmB,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,SAAS,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,eAAe,CACxB,qEAAqE,EAAE,eAAe,EACtF,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,CACnC,CAAC;IACH,CAAC;AAEF,CAAC;AAED,eAAe;IACd,KAAK,CAAC,OAAO,CACZ,KAAsB,EACtB,OAAqB,EACrB,IAAqB;QAErB,IAAI,CAAC;YACJ,KAAK,GAAG,eAAe,CAAC,qBAAqB,EAAE,KAAK,EAAE,2BAA2B,CAAC,CAAC;YACnF,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAY,MAAM,CAAC,GAAG,EAAE;gBAC/D,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS;gBAC7B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;aAC5B,CAAC,CAAC;YAEH,OAAO,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC/C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACxH,CAAC;IACF,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ValueFreeFailure } from '@vibesdotdev/kernel';
|
|
2
|
+
/** Shared method, app-scoped URL, status and redacted body projection. */
|
|
3
|
+
import * as z from 'zod/v4';
|
|
4
|
+
export declare const API_REQUEST_BODY_EXCERPT_MAX = 240;
|
|
5
|
+
export interface ApiRequestCardModel {
|
|
6
|
+
method: string;
|
|
7
|
+
url: string;
|
|
8
|
+
statusLabel: string;
|
|
9
|
+
httpStatus: number | null;
|
|
10
|
+
bodyExcerpt: string;
|
|
11
|
+
title: string;
|
|
12
|
+
failed: boolean;
|
|
13
|
+
failure?: ValueFreeFailure;
|
|
14
|
+
}
|
|
15
|
+
declare const CardBoundarySchema: z.ZodUnknown;
|
|
16
|
+
type CardValue = z.input<typeof CardBoundarySchema>;
|
|
17
|
+
declare const RecordSchema: z.ZodRecord<z.ZodString, z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>>;
|
|
18
|
+
export declare function rec(value: CardValue): z.infer<typeof RecordSchema> | {
|
|
19
|
+
failure: ValueFreeFailure;
|
|
20
|
+
} | null;
|
|
21
|
+
export declare function excerptBody(value: CardValue, maxLength?: number): string;
|
|
22
|
+
export declare function apiRequestCardModel(options: {
|
|
23
|
+
input?: CardValue;
|
|
24
|
+
args?: CardValue;
|
|
25
|
+
output?: CardValue;
|
|
26
|
+
error?: string | null;
|
|
27
|
+
}): ApiRequestCardModel;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=api-request.view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-request.view.d.ts","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.view.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0D,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACpH,0EAA0E;AAC1E,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,MAAM,WAAW,mBAAmB;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAAE;AACtM,QAAA,MAAM,kBAAkB,cAAc,CAAC;AACvC,KAAK,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACpD,QAAA,MAAM,YAAY,2QAAwC,CAAC;AAG3D,wBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,GAAG;IAAE,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAAG,IAAI,CAGzG;AACD,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,SAA+B,GAAG,MAAM,CAQ9F;AAWD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,mBAAmB,CAapJ"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { CapabilityError, CaughtFailureSchema, valueFreeFailure } from '@vibesdotdev/kernel';
|
|
2
|
+
/** Shared method, app-scoped URL, status and redacted body projection. */
|
|
3
|
+
import * as z from 'zod/v4';
|
|
4
|
+
import { redactedExcerpt, redactCredentials } from '@vibesdotdev/shared/utils';
|
|
5
|
+
import { JsonValueSchema, QuerySchema, readClientValue } from "../../lib/client/internal/client-values.js";
|
|
6
|
+
export const API_REQUEST_BODY_EXCERPT_MAX = 240;
|
|
7
|
+
const CardBoundarySchema = z.unknown();
|
|
8
|
+
const RecordSchema = z.record(z.string(), JsonValueSchema);
|
|
9
|
+
const InputSchema = z.object({ method: z.string().optional().catch(undefined), path: z.string().optional().catch(undefined), app: z.string().optional().catch(undefined), query: QuerySchema.optional().catch(undefined) });
|
|
10
|
+
const OutputSchema = z.object({ status: z.enum(['success', 'error']).optional().catch(undefined), response: JsonValueSchema.optional().catch(undefined), error: z.object({ message: z.string().optional(), status: z.number().int().optional() }).optional().catch(undefined) });
|
|
11
|
+
export function rec(value) {
|
|
12
|
+
try {
|
|
13
|
+
return RecordSchema.safeParse(value).data ?? null;
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
return { failure: valueFreeFailure(CaughtFailureSchema.parse(error)) };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function excerptBody(value, maxLength = API_REQUEST_BODY_EXCERPT_MAX) {
|
|
20
|
+
if (value === undefined || value === null)
|
|
21
|
+
return '';
|
|
22
|
+
try {
|
|
23
|
+
const parsed = readClientValue(JsonValueSchema, value, 'api-card-value-invalid');
|
|
24
|
+
const text = z.string().safeParse(parsed);
|
|
25
|
+
const normalized = redactedExcerpt(text.success ? text.data : JSON.stringify(parsed), { maxChars: Math.max(maxLength, 1) + 1 }).replace(/\s+/g, ' ').trim();
|
|
26
|
+
return normalized.length <= maxLength ? normalized : maxLength <= 1 ? '…' : `${normalized.slice(0, maxLength - 1).trimEnd()}…`;
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
throw new CapabilityError('The API card body could not be read.', 'INVALID_INPUT', { reason: 'api-card-value-unreadable', cause: valueFreeFailure(CaughtFailureSchema.parse(error)) });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function formatQuery(query) {
|
|
33
|
+
const params = new URLSearchParams();
|
|
34
|
+
for (const [key, value] of Object.entries(query ?? {})) {
|
|
35
|
+
if (value === undefined)
|
|
36
|
+
continue;
|
|
37
|
+
if (Array.isArray(value))
|
|
38
|
+
value.forEach(item => params.append(key, item));
|
|
39
|
+
else
|
|
40
|
+
params.set(key, String(value));
|
|
41
|
+
}
|
|
42
|
+
const encoded = params.toString();
|
|
43
|
+
return encoded ? `?${encoded}` : '';
|
|
44
|
+
}
|
|
45
|
+
export function apiRequestCardModel(options) {
|
|
46
|
+
try {
|
|
47
|
+
const input = InputSchema.safeParse(options.input ?? options.args).data;
|
|
48
|
+
const output = OutputSchema.safeParse(options.output).data;
|
|
49
|
+
const method = input?.method?.toUpperCase() ?? '', path = input?.path ?? '', app = input?.app ?? '';
|
|
50
|
+
const url = redactCredentials(`${app && path ? `${app}:` : ''}${path}${formatQuery(input?.query)}`);
|
|
51
|
+
const httpStatus = output?.error?.status ?? null, outcome = output?.status;
|
|
52
|
+
const failed = Boolean(options.error) || outcome === 'error' || (httpStatus !== null && httpStatus >= 400);
|
|
53
|
+
const statusLabel = httpStatus !== null ? String(httpStatus) : outcome ?? '';
|
|
54
|
+
const bodyExcerpt = excerptBody(failed ? output?.error?.message ?? options.error ?? output?.response : output?.response);
|
|
55
|
+
const title = redactCredentials([method, path].filter(Boolean).join(' ') || 'API request');
|
|
56
|
+
return { method, url, statusLabel, httpStatus, bodyExcerpt, title, failed };
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return { method: '', url: '', statusLabel: 'error', httpStatus: null, bodyExcerpt: '[unreadable]', title: 'API request', failed: true, failure: valueFreeFailure(CaughtFailureSchema.parse(error)) };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=api-request.view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-request.view.js","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.view.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,25 +7,32 @@ import * as z from 'zod/v4';
|
|
|
7
7
|
export declare const apiRequestInputSchema: z.ZodObject<{
|
|
8
8
|
method: z.ZodEnum<{
|
|
9
9
|
GET: "GET";
|
|
10
|
-
DELETE: "DELETE";
|
|
11
10
|
POST: "POST";
|
|
12
11
|
PUT: "PUT";
|
|
13
12
|
PATCH: "PATCH";
|
|
13
|
+
DELETE: "DELETE";
|
|
14
14
|
}>;
|
|
15
15
|
path: z.ZodString;
|
|
16
|
-
query: z.ZodOptional<z.ZodRecord<z.ZodString, z.
|
|
17
|
-
body: z.ZodOptional<z.
|
|
16
|
+
query: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString>]>>>>;
|
|
17
|
+
body: z.ZodOptional<z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>>;
|
|
18
18
|
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
19
|
+
app: z.ZodOptional<z.ZodString>;
|
|
19
20
|
}, z.core.$strip>;
|
|
20
21
|
export declare const apiRequestOutputSchema: z.ZodObject<{
|
|
21
22
|
status: z.ZodEnum<{
|
|
22
|
-
success: "success";
|
|
23
23
|
error: "error";
|
|
24
|
+
success: "success";
|
|
24
25
|
}>;
|
|
25
|
-
response: z.ZodOptional<z.
|
|
26
|
+
response: z.ZodOptional<z.ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, z.core.$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>>;
|
|
26
27
|
error: z.ZodOptional<z.ZodObject<{
|
|
27
28
|
message: z.ZodString;
|
|
29
|
+
failure: z.ZodOptional<z.ZodObject<{
|
|
30
|
+
name: z.ZodString;
|
|
31
|
+
code: z.ZodOptional<z.ZodString>;
|
|
32
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
33
|
+
}, z.core.$strip>>;
|
|
28
34
|
code: z.ZodOptional<z.ZodString>;
|
|
35
|
+
status: z.ZodOptional<z.ZodNumber>;
|
|
29
36
|
}, z.core.$strip>>;
|
|
30
37
|
}, z.core.$strip>;
|
|
31
38
|
export type ApiRequestInput = z.infer<typeof apiRequestInputSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/api-request/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/api-request/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;iBAwBhC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;iBAWjC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -4,20 +4,38 @@
|
|
|
4
4
|
* Input/output schemas for the api-request tool.
|
|
5
5
|
*/
|
|
6
6
|
import * as z from 'zod/v4';
|
|
7
|
+
import { JsonValueSchema } from "../../../lib/client/internal/client-values.js";
|
|
7
8
|
export const apiRequestInputSchema = z.object({
|
|
8
9
|
method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']),
|
|
9
|
-
path: z
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
path: z
|
|
11
|
+
.string()
|
|
12
|
+
.min(1)
|
|
13
|
+
.refine((path) => path.startsWith('/') && !path.startsWith('//'), {
|
|
14
|
+
message: 'Path must begin with one slash and cannot override the app origin.'
|
|
15
|
+
}),
|
|
16
|
+
query: z
|
|
17
|
+
.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.array(z.string())]).optional())
|
|
18
|
+
.optional(),
|
|
19
|
+
body: JsonValueSchema.optional(),
|
|
20
|
+
headers: z.record(z.string(), z.string()).optional(),
|
|
21
|
+
/**
|
|
22
|
+
* Target vibes app id (e.g. `account`, `platform`, `knowledge`, `ai`). The
|
|
23
|
+
* implementation requires this value and resolves it from the declared
|
|
24
|
+
* infra/service catalog for the configured service environment. It remains
|
|
25
|
+
* schema-optional so omission returns the stable APP_REQUIRED tool error
|
|
26
|
+
* instead of a generic validation failure.
|
|
27
|
+
*/
|
|
28
|
+
app: z.string().min(1).optional()
|
|
13
29
|
});
|
|
14
30
|
export const apiRequestOutputSchema = z.object({
|
|
15
31
|
status: z.enum(['success', 'error']),
|
|
16
|
-
response:
|
|
32
|
+
response: JsonValueSchema.optional(),
|
|
17
33
|
error: z
|
|
18
34
|
.object({
|
|
19
35
|
message: z.string(),
|
|
20
|
-
code: z.string().optional()
|
|
36
|
+
failure: z.object({ name: z.string(), code: z.string().optional(), reason: z.string().optional() }).optional(),
|
|
37
|
+
code: z.string().optional(),
|
|
38
|
+
status: z.number().int().optional()
|
|
21
39
|
})
|
|
22
40
|
.optional()
|
|
23
41
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/api-request/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/api-request/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAEhF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACjE,OAAO,EAAE,oEAAoE;KAC7E,CAAC;IACH,KAAK,EAAE,CAAC;SACN,MAAM,CACN,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC9E;SACA,QAAQ,EAAE;IACZ,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD;;;;;;OAMG;IACH,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACpC,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,CAAC;SACN,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC9G,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACnC,CAAC;SACD,QAAQ,EAAE;CACZ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-tui.plugin.d.ts","sourceRoot":"","sources":["../../src/tui/client-tui.plugin.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,eAAe,6CAgB1B,CAAC;AAEH,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createRuntimeImplementation, createRuntimePlugin, loader } from '@vibesdotdev/kernel';
|
|
2
|
+
const apiRequestTuiWidget = {
|
|
3
|
+
id: 'api-request.tui-widget',
|
|
4
|
+
kind: 'tools/ui',
|
|
5
|
+
name: 'API Request TUI Widget',
|
|
6
|
+
description: 'Renders api-request method, URL, status, and a body excerpt in the TUI.',
|
|
7
|
+
surfaces: ['tui'],
|
|
8
|
+
role: 'widget',
|
|
9
|
+
targetToolId: 'api-request',
|
|
10
|
+
targetId: 'api-request',
|
|
11
|
+
tags: ['api', 'tui'],
|
|
12
|
+
enabled: true
|
|
13
|
+
};
|
|
14
|
+
export const clientTuiPlugin = createRuntimePlugin({
|
|
15
|
+
id: 'client.tui',
|
|
16
|
+
name: 'Client TUI Surface',
|
|
17
|
+
description: 'Terminal tool-result card for the api-request agent tool.',
|
|
18
|
+
dependencies: ['tui'],
|
|
19
|
+
descriptors: [apiRequestTuiWidget],
|
|
20
|
+
loaders: [
|
|
21
|
+
loader(apiRequestTuiWidget.id, { kind: 'tools/ui', scope: 'tui' }, async () => {
|
|
22
|
+
const module = await import("./tool-widgets/ApiRequestToolWidget.impl.tui.js");
|
|
23
|
+
return createRuntimeImplementation({
|
|
24
|
+
kind: 'tools/ui',
|
|
25
|
+
id: apiRequestTuiWidget.id,
|
|
26
|
+
implementation: { tui: { component: module.default } }
|
|
27
|
+
});
|
|
28
|
+
})
|
|
29
|
+
]
|
|
30
|
+
});
|
|
31
|
+
export default clientTuiPlugin;
|
|
32
|
+
//# sourceMappingURL=client-tui.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-tui.plugin.js","sourceRoot":"","sources":["../../src/tui/client-tui.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE/F,MAAM,mBAAmB,GAAG;IAC3B,EAAE,EAAE,wBAAwB;IAC5B,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,yEAAyE;IACtF,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,aAAa;IAC3B,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;IACpB,OAAO,EAAE,IAAI;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;IAClD,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,2DAA2D;IACxE,YAAY,EAAE,CAAC,KAAK,CAAC;IACrB,WAAW,EAAE,CAAC,mBAAmB,CAAC;IAClC,OAAO,EAAE;QACR,MAAM,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iDAAkD,CAAC,CAAC;YAChF,OAAO,2BAA2B,CAAC;gBAClC,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,mBAAmB,CAAC,EAAE;gBAC1B,cAAc,EAAE,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE;aACtD,CAAC,CAAC;QACJ,CAAC,CAAC;KACF;CACD,CAAC,CAAC;AAEH,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface ApiRequestToolWidgetProps {
|
|
3
|
+
toolCall?: {
|
|
4
|
+
id?: string;
|
|
5
|
+
tool?: string;
|
|
6
|
+
messageId?: string;
|
|
7
|
+
events?: unknown[];
|
|
8
|
+
startedAt?: number;
|
|
9
|
+
updatedAt?: number;
|
|
10
|
+
};
|
|
11
|
+
status?: string;
|
|
12
|
+
args?: unknown;
|
|
13
|
+
output?: unknown;
|
|
14
|
+
error?: string | null;
|
|
15
|
+
}
|
|
16
|
+
export default function ApiRequestToolWidget(tool: ApiRequestToolWidgetProps): ReactNode;
|
|
17
|
+
//# sourceMappingURL=ApiRequestToolWidget.impl.tui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiRequestToolWidget.impl.tui.d.ts","sourceRoot":"","sources":["../../../src/tui/tool-widgets/ApiRequestToolWidget.impl.tui.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAWjD,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,EAAE;QACV,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAUD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,IAAI,EAAE,yBAAyB,GAAG,SAAS,CA2CvF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { VStack } from '@vibesdotdev/tui/components/layout';
|
|
4
|
+
import { WidgetContainer, WidgetContent, WidgetHeader } from '@vibesdotdev/tui';
|
|
5
|
+
import { dsBase, dsColors, dsSpace } from '@vibesdotdev/tui/theme';
|
|
6
|
+
import { apiRequestCardModel } from "../../tools/api-request/api-request.view.js";
|
|
7
|
+
function widgetStatus(status, failed) {
|
|
8
|
+
if (status === 'failed' || failed)
|
|
9
|
+
return 'error';
|
|
10
|
+
if (status === 'done')
|
|
11
|
+
return 'success';
|
|
12
|
+
if (status === 'awaiting_approval')
|
|
13
|
+
return 'warning';
|
|
14
|
+
if (status === 'pending')
|
|
15
|
+
return 'pending';
|
|
16
|
+
return 'running';
|
|
17
|
+
}
|
|
18
|
+
export default function ApiRequestToolWidget(tool) {
|
|
19
|
+
const model = apiRequestCardModel({
|
|
20
|
+
args: tool.args,
|
|
21
|
+
output: tool.output,
|
|
22
|
+
error: tool.error
|
|
23
|
+
});
|
|
24
|
+
const status = widgetStatus(tool.status, model.failed);
|
|
25
|
+
const [collapsed, setCollapsed] = useState(false);
|
|
26
|
+
return (_jsxs(WidgetContainer, { status: status, marginTop: 1, children: [_jsx(WidgetHeader, { title: model.title, status: status, statusText: model.statusLabel || undefined, isCollapsed: collapsed, onToggle: () => setCollapsed((v) => !v), showClose: false, bottomBorder: false, compact: true }), !collapsed && (_jsx(WidgetContent, { children: _jsxs(VStack, { gap: dsSpace.xs, children: [model.method ? (_jsx("text", { style: { fg: dsBase.mutedForeground }, children: model.method })) : null, model.url ? _jsx("text", { style: { fg: dsBase.foreground }, children: model.url }) : null, model.statusLabel ? (_jsx("text", { style: { fg: model.failed ? dsColors.danger.solid : dsBase.mutedForeground }, children: model.statusLabel })) : null, model.bodyExcerpt ? (_jsx("text", { style: { fg: dsBase.mutedForeground }, children: model.bodyExcerpt })) : model.statusLabel === 'success' ? (_jsx("text", { style: { fg: dsBase.mutedForeground }, children: "No body returned." })) : null] }) }))] }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=ApiRequestToolWidget.impl.tui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiRequestToolWidget.impl.tui.js","sourceRoot":"","sources":["../../../src/tui/tool-widgets/ApiRequestToolWidget.impl.tui.tsx"],"names":[],"mappings":"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"}
|