@vibesdotdev/client 0.1.1 → 1.0.0-rc.2
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 +3 -0
- package/dist/svelte/client-svelte.plugin.d.ts.map +1 -0
- package/dist/svelte/client-svelte.plugin.js +35 -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
package/dist/sse-client.js
CHANGED
|
@@ -1,124 +1,144 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*
|
|
5
|
-
|
|
6
|
-
*/
|
|
1
|
+
/** EventSource lifecycle and named event dispatch on the handed runtime. */
|
|
2
|
+
import { getLogger } from '@vibesdotdev/logging';
|
|
3
|
+
import { CapabilityError, CaughtFailureSchema, valueFreeFailure } from '@vibesdotdev/kernel';
|
|
4
|
+
import * as z from 'zod/v4';
|
|
5
|
+
import { readClientValue, HttpOriginSchema, decodeSSEData } from "./lib/client/internal/client-values.js";
|
|
7
6
|
export class SSEClient {
|
|
8
|
-
|
|
9
|
-
reconnectDelay;
|
|
10
|
-
maxReconnectAttempts;
|
|
11
|
-
onStatusChange;
|
|
12
|
-
onError;
|
|
7
|
+
options;
|
|
13
8
|
eventSource = null;
|
|
14
9
|
handlers = new Map();
|
|
10
|
+
listeners = new Set();
|
|
15
11
|
reconnectAttempts = 0;
|
|
16
|
-
|
|
12
|
+
cancelReconnect = null;
|
|
17
13
|
_status = 'disconnected';
|
|
14
|
+
_lastFailure = null;
|
|
15
|
+
reconnectDelay;
|
|
16
|
+
maxReconnectAttempts;
|
|
18
17
|
constructor(options) {
|
|
19
|
-
this.
|
|
20
|
-
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
}
|
|
25
|
-
get status() {
|
|
26
|
-
return this._status;
|
|
18
|
+
this.options = options;
|
|
19
|
+
readClientValue(HttpOriginSchema, options.url, 'client-origin-invalid');
|
|
20
|
+
this.reconnectDelay = readClientValue(z.number().int().nonnegative(), options.reconnectDelay ?? 5000, 'sse-reconnect-delay-invalid');
|
|
21
|
+
this.maxReconnectAttempts = readClientValue(z.number().int().nonnegative(), options.maxReconnectAttempts ?? 5, 'sse-reconnect-attempts-invalid');
|
|
22
|
+
options.runtime.lifecycle.signal.addEventListener('abort', () => this.disconnect(), { once: true });
|
|
27
23
|
}
|
|
24
|
+
get status() { return this._status; }
|
|
25
|
+
/** The latest EventSource failure remains observable after reconnect or disconnect. */
|
|
26
|
+
get lastFailure() { return this._lastFailure; }
|
|
28
27
|
connect() {
|
|
28
|
+
if (this.options.runtime.lifecycle.phase !== 'live')
|
|
29
|
+
throw new CapabilityError('The SSE runtime has ended.', 'UNAVAILABLE', { reason: 'client-runtime-disposed' });
|
|
30
|
+
this.cleanup();
|
|
29
31
|
this.setStatus('connecting');
|
|
32
|
+
const logger = getLogger('client.sse', this.options.runtime);
|
|
30
33
|
try {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
// The ambient `EventSource` binding, not `globalThis.EventSource`: Cloudflare
|
|
35
|
+
// workers types declare it as a global class, which is not a `globalThis` member.
|
|
36
|
+
if (!('EventSource' in globalThis))
|
|
37
|
+
throw new CapabilityError('EventSource is unavailable.', 'UNAVAILABLE', { reason: 'event-source-unavailable' });
|
|
38
|
+
// Hosts declare different constructor arities (DOM/workers take a URL, a
|
|
39
|
+
// lib-less Bun program none); the URL-taking shape is the one every host runs.
|
|
40
|
+
const EventSourceConstructor = EventSource;
|
|
41
|
+
const source = new EventSourceConstructor(this.options.url);
|
|
42
|
+
this.eventSource = source;
|
|
43
|
+
source.onopen = () => { if (this.eventSource !== source)
|
|
44
|
+
return; this.reconnectAttempts = 0; this.setStatus('connected'); };
|
|
45
|
+
source.onerror = (error) => {
|
|
46
|
+
if (this.eventSource !== source)
|
|
47
|
+
return;
|
|
48
|
+
const terminal = this.reconnectAttempts >= this.maxReconnectAttempts;
|
|
49
|
+
const failure = new CapabilityError(terminal ? 'SSE reconnect attempts exhausted.' : 'SSE connection error', 'UNAVAILABLE', {
|
|
50
|
+
reason: terminal ? 'sse-retries-exhausted' : 'sse-connection-failed', retryable: !terminal,
|
|
51
|
+
cause: valueFreeFailure(CaughtFailureSchema.parse(error))
|
|
52
|
+
});
|
|
53
|
+
this._lastFailure = failure;
|
|
54
|
+
this.dispatch('error', failure);
|
|
55
|
+
logger.error('SSE connection error', { error: valueFreeFailure(failure) });
|
|
56
|
+
if (this.options.onError)
|
|
57
|
+
this.options.onError(failure.message, failure);
|
|
58
|
+
this.cleanup();
|
|
40
59
|
if (this.reconnectAttempts < this.maxReconnectAttempts) {
|
|
41
60
|
this.setStatus('reconnecting');
|
|
42
61
|
this.reconnectAttempts++;
|
|
43
|
-
this.
|
|
62
|
+
this.cancelReconnect = this.options.runtime.lifecycle.timeout(() => { this.cancelReconnect = null; this.connect(); }, this.reconnectDelay);
|
|
44
63
|
}
|
|
45
|
-
else
|
|
64
|
+
else
|
|
46
65
|
this.setStatus('error');
|
|
47
|
-
this.cleanup();
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
// Dispatch events to registered handlers
|
|
51
|
-
this.eventSource.onmessage = (event) => {
|
|
52
|
-
this.dispatch('message', event.data);
|
|
53
66
|
};
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
this.eventSource.addEventListener(eventName, (event) => {
|
|
59
|
-
try {
|
|
60
|
-
const data = JSON.parse(event.data);
|
|
61
|
-
this.dispatch(eventName, data);
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
this.dispatch(eventName, event.data);
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
}
|
|
67
|
+
source.onmessage = (event) => { if (this.eventSource === source)
|
|
68
|
+
this.dispatch('message', this.decode(event.data)); };
|
|
69
|
+
for (const event of this.handlers.keys())
|
|
70
|
+
this.listen(event);
|
|
68
71
|
}
|
|
69
|
-
catch (
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
catch (error) {
|
|
73
|
+
logger.error('SSE connection failed', { error: valueFreeFailure(CaughtFailureSchema.parse(error)) });
|
|
74
|
+
const failure = new CapabilityError('The SSE connection could not be created.', 'UNAVAILABLE', { reason: 'sse-connection-unavailable', cause: valueFreeFailure(CaughtFailureSchema.parse(error)) });
|
|
75
|
+
this._lastFailure = failure;
|
|
76
|
+
this.dispatch('error', failure);
|
|
77
|
+
this.options.onError?.('Failed to create SSE connection', failure);
|
|
78
|
+
this.cleanup();
|
|
72
79
|
this.setStatus('error');
|
|
80
|
+
throw failure;
|
|
73
81
|
}
|
|
74
82
|
}
|
|
75
|
-
disconnect() {
|
|
76
|
-
this.cleanup();
|
|
77
|
-
this.setStatus('disconnected');
|
|
78
|
-
}
|
|
83
|
+
disconnect() { this.cleanup(); this.reconnectAttempts = 0; this.setStatus('disconnected'); }
|
|
79
84
|
on(event, handler) {
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
let handlers = this.handlers.get(event);
|
|
86
|
+
if (!handlers) {
|
|
87
|
+
handlers = new Set();
|
|
88
|
+
this.handlers.set(event, handlers);
|
|
82
89
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return () => {
|
|
86
|
-
|
|
87
|
-
|
|
90
|
+
handlers.add(handler);
|
|
91
|
+
this.listen(event);
|
|
92
|
+
return () => { this.handlers.get(event)?.delete(handler); };
|
|
93
|
+
}
|
|
94
|
+
listen(event) {
|
|
95
|
+
const source = this.eventSource;
|
|
96
|
+
if (!source || event === 'message' || event === 'error' || this.listeners.has(event))
|
|
97
|
+
return;
|
|
98
|
+
this.listeners.add(event);
|
|
99
|
+
source.addEventListener(event, message => {
|
|
100
|
+
if (this.eventSource !== source)
|
|
101
|
+
return;
|
|
102
|
+
if (!(message instanceof MessageEvent)) {
|
|
103
|
+
const failure = new CapabilityError('Invalid SSE event', 'INVALID_INPUT', { reason: 'sse-event-invalid' });
|
|
104
|
+
this._lastFailure = failure;
|
|
105
|
+
this.dispatch('error', failure);
|
|
106
|
+
this.options.onError?.(failure.message, failure);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
this.dispatch(event, this.decode(message.data));
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
decode(data) {
|
|
113
|
+
const text = z.string().safeParse(data);
|
|
114
|
+
return text.success ? decodeSSEData(text.data) : data;
|
|
88
115
|
}
|
|
89
116
|
dispatch(event, data) {
|
|
90
|
-
this.
|
|
117
|
+
const logger = getLogger('client.sse', this.options.runtime);
|
|
118
|
+
this.handlers.get(event)?.forEach(handler => {
|
|
91
119
|
try {
|
|
92
|
-
|
|
120
|
+
if (data instanceof CapabilityError) {
|
|
121
|
+
// SAFETY: Only the reserved error key receives CapabilityError; on('error') registers FailureHandler.
|
|
122
|
+
handler(data);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// SAFETY: Message and named data keys retain their JsonValue registration and payload contract.
|
|
126
|
+
handler(data);
|
|
127
|
+
}
|
|
93
128
|
}
|
|
94
|
-
catch (
|
|
95
|
-
|
|
129
|
+
catch (error) {
|
|
130
|
+
logger.error('SSE event handler failed', { error: valueFreeFailure(CaughtFailureSchema.parse(error)) });
|
|
96
131
|
}
|
|
97
132
|
});
|
|
98
133
|
}
|
|
99
|
-
setStatus(status) {
|
|
100
|
-
this._status = status;
|
|
101
|
-
this.onStatusChange?.(status);
|
|
102
|
-
}
|
|
103
|
-
scheduleReconnect() {
|
|
104
|
-
if (this.reconnectTimer)
|
|
105
|
-
clearTimeout(this.reconnectTimer);
|
|
106
|
-
this.reconnectTimer = setTimeout(() => {
|
|
107
|
-
this.connect();
|
|
108
|
-
}, this.reconnectDelay);
|
|
109
|
-
}
|
|
134
|
+
setStatus(status) { this._status = status; this.options.onStatusChange?.(status); }
|
|
110
135
|
cleanup() {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
this.eventSource.close();
|
|
117
|
-
this.eventSource = null;
|
|
118
|
-
}
|
|
136
|
+
this.cancelReconnect?.();
|
|
137
|
+
this.cancelReconnect = null;
|
|
138
|
+
this.eventSource?.close();
|
|
139
|
+
this.eventSource = null;
|
|
140
|
+
this.listeners.clear();
|
|
119
141
|
}
|
|
120
142
|
}
|
|
121
|
-
export function createSSEClient(options) {
|
|
122
|
-
return new SSEClient(options);
|
|
123
|
-
}
|
|
143
|
+
export function createSSEClient(options) { return new SSEClient(options); }
|
|
124
144
|
//# sourceMappingURL=sse-client.js.map
|
package/dist/sse-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse-client.js","sourceRoot":"","sources":["../src/sse-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sse-client.js","sourceRoot":"","sources":["../src/sse-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-svelte.plugin.d.ts","sourceRoot":"","sources":["../../src/svelte/client-svelte.plugin.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,kBAAkB,6CAiB7B,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createRuntimeImplementation, createRuntimePlugin, loader, settle } from '@vibesdotdev/kernel';
|
|
2
|
+
const loadApiRequestToolCard = () => import('./tool-widgets/ApiRequestToolCard.svelte');
|
|
3
|
+
const apiRequestWidget = {
|
|
4
|
+
id: 'api-request.svelte-widget',
|
|
5
|
+
kind: 'tools/ui',
|
|
6
|
+
name: 'API Request Svelte Widget',
|
|
7
|
+
description: 'Renders api-request method, URL, status, and a body excerpt in Kit ToolCard.',
|
|
8
|
+
surfaces: ['web'],
|
|
9
|
+
role: 'widget',
|
|
10
|
+
targetToolId: 'api-request',
|
|
11
|
+
tags: ['api', 'network'],
|
|
12
|
+
enabled: true
|
|
13
|
+
};
|
|
14
|
+
const kitToolWidgets = await settle(() => import('@vibesdotdev/kit/components/tool-widgets'));
|
|
15
|
+
const registerKitToolWidget = kitToolWidgets.ok ? kitToolWidgets.value.registerToolWidget : undefined;
|
|
16
|
+
registerKitToolWidget?.('api-request', loadApiRequestToolCard);
|
|
17
|
+
export const clientSveltePlugin = createRuntimePlugin({
|
|
18
|
+
id: '@vibesdotdev/client/svelte',
|
|
19
|
+
name: 'Client Svelte',
|
|
20
|
+
description: 'Client-owned Svelte tool-result contributions for api-request.',
|
|
21
|
+
dependencies: [],
|
|
22
|
+
descriptors: [apiRequestWidget],
|
|
23
|
+
loaders: [
|
|
24
|
+
loader(apiRequestWidget.id, { kind: 'tools/ui', scope: 'browser' }, async () => {
|
|
25
|
+
registerKitToolWidget?.('api-request', loadApiRequestToolCard);
|
|
26
|
+
const module = await loadApiRequestToolCard();
|
|
27
|
+
return createRuntimeImplementation({
|
|
28
|
+
kind: 'tools/ui',
|
|
29
|
+
id: apiRequestWidget.id,
|
|
30
|
+
implementation: { web: { component: module.default } }
|
|
31
|
+
});
|
|
32
|
+
})
|
|
33
|
+
]
|
|
34
|
+
});
|
|
35
|
+
export default clientSveltePlugin;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/svelte/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,0CAA0C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Tailwind v4 source declaration for consumers — mirrors @vibesdotdev/kit's
|
|
3
|
+
* styles.css pattern. Apps that @import this file get this package's
|
|
4
|
+
* components scanned by their Tailwind build, so utility classes used only
|
|
5
|
+
* inside these components are emitted in the app's CSS bundle (Tailwind
|
|
6
|
+
* never scans node_modules). Paths resolve relative to this file.
|
|
7
|
+
*/
|
|
8
|
+
@source "./";
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* Designed Kit card for `api-request`: method, app-scoped URL, status, and
|
|
4
|
+
* a truncated response-body excerpt. Composes the shared ToolCard shell.
|
|
5
|
+
*/
|
|
6
|
+
import { Badge } from '@vibesdotdev/kit/components/ui/badge';
|
|
7
|
+
import {
|
|
8
|
+
ToolCard,
|
|
9
|
+
ToolCardBody,
|
|
10
|
+
type ToolWidgetProps
|
|
11
|
+
} from '@vibesdotdev/kit/components/tool-widgets';
|
|
12
|
+
import { apiRequestCardModel } from '../../tools/api-request/api-request.view.js';
|
|
13
|
+
|
|
14
|
+
let { tool, compact = false }: ToolWidgetProps = $props();
|
|
15
|
+
|
|
16
|
+
const model = $derived(
|
|
17
|
+
apiRequestCardModel({
|
|
18
|
+
input: tool.input,
|
|
19
|
+
output: tool.output,
|
|
20
|
+
error: tool.error
|
|
21
|
+
})
|
|
22
|
+
);
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<ToolCard {tool} {compact} title={model.title} icon="lucide:server">
|
|
26
|
+
{#snippet children()}
|
|
27
|
+
<ToolCardBody {compact}>
|
|
28
|
+
<div class="flex flex-wrap items-center gap-1.5">
|
|
29
|
+
{#if model.method}
|
|
30
|
+
<Badge variant="outline" class="font-mono text-caption">{model.method}</Badge>
|
|
31
|
+
{/if}
|
|
32
|
+
{#if model.statusLabel}
|
|
33
|
+
<Badge
|
|
34
|
+
variant={model.failed ? 'destructive' : 'secondary'}
|
|
35
|
+
class="font-mono text-caption"
|
|
36
|
+
>
|
|
37
|
+
{model.statusLabel}
|
|
38
|
+
</Badge>
|
|
39
|
+
{/if}
|
|
40
|
+
</div>
|
|
41
|
+
{#if model.url}
|
|
42
|
+
<p class="truncate font-mono text-footnote text-foreground">{model.url}</p>
|
|
43
|
+
{/if}
|
|
44
|
+
{#if model.bodyExcerpt}
|
|
45
|
+
<p class="line-clamp-3 font-mono text-footnote whitespace-pre-wrap text-muted-foreground">
|
|
46
|
+
{model.bodyExcerpt}
|
|
47
|
+
</p>
|
|
48
|
+
{:else if model.statusLabel === 'success'}
|
|
49
|
+
<p class="text-footnote text-muted-foreground italic">No body returned.</p>
|
|
50
|
+
{/if}
|
|
51
|
+
</ToolCardBody>
|
|
52
|
+
{/snippet}
|
|
53
|
+
</ToolCard>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ToolWidgetProps } from '@vibesdotdev/kit/components/tool-widgets';
|
|
2
|
+
declare const ApiRequestToolCard: import("svelte").Component<ToolWidgetProps, {}, "">;
|
|
3
|
+
type ApiRequestToolCard = ReturnType<typeof ApiRequestToolCard>;
|
|
4
|
+
export default ApiRequestToolCard;
|
|
5
|
+
//# sourceMappingURL=ApiRequestToolCard.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiRequestToolCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/tool-widgets/ApiRequestToolCard.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,eAAe,EACpB,MAAM,0CAA0C,CAAC;AAiDnD,QAAA,MAAM,kBAAkB,qDAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/svelte/tool-widgets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as ApiRequestToolCard } from './ApiRequestToolCard.svelte';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type JsonValue } from '../../lib/client/internal/client-values.ts';
|
|
2
|
+
import { CapabilityError, type VibesRuntime } from '@vibesdotdev/kernel';
|
|
3
|
+
import type { ApiRequestInput, ApiRequestOutput } from './schemas/index.ts';
|
|
4
|
+
export declare class ApiRequestContractError extends CapabilityError {
|
|
5
|
+
readonly contractCode: string;
|
|
6
|
+
constructor(contractCode: string, message: string, options?: ErrorOptions);
|
|
7
|
+
}
|
|
8
|
+
export interface ResolvedApiRequestTarget {
|
|
9
|
+
app: string;
|
|
10
|
+
origin: string;
|
|
11
|
+
url: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function resolveApiRequestTarget(input: ApiRequestInput, runtime: VibesRuntime): Promise<ResolvedApiRequestTarget>;
|
|
14
|
+
export declare function apiRequestErrorOutput(error: unknown): ApiRequestOutput & {
|
|
15
|
+
error: NonNullable<ApiRequestOutput['error']>;
|
|
16
|
+
};
|
|
17
|
+
/** Apply the shared credential redactor before emitting a tool result. */
|
|
18
|
+
export declare function apiRequestSuccessOutput(response: JsonValue): ApiRequestOutput;
|
|
19
|
+
//# sourceMappingURL=api-request.contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-request.contract.d.ts","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.contract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsD,KAAK,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAEhI,OAAO,EAAE,eAAe,EAAkE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACzI,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAW5E,qBAAa,uBAAwB,SAAQ,eAAe;IAE1D,QAAQ,CAAC,YAAY,EAAE,MAAM;gBAApB,YAAY,EAAE,MAAM,EAC7B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY;CAKvB;AAED,MAAM,WAAW,wBAAwB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACZ;AA4CD,wBAAsB,uBAAuB,CAC5C,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,YAAY,GACnB,OAAO,CAAC,wBAAwB,CAAC,CAmDnC;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;CAAE,CAS1H;AACD,0EAA0E;AAC1E,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,SAAS,GAAG,gBAAgB,CAG7E"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import { redactedExcerpt, redactCredentials } from '@vibesdotdev/shared/utils';
|
|
3
|
+
import { readClientValue, readClientFields, JsonValueSchema } from "../../lib/client/internal/client-values.js";
|
|
4
|
+
import { apiRequestInputSchema } from "./schemas/index.js";
|
|
5
|
+
import { CapabilityError, CaughtFailureSchema, isCapabilityError } from '@vibesdotdev/kernel';
|
|
6
|
+
const FORBIDDEN_AUTH_HEADERS = new Set([
|
|
7
|
+
'authorization',
|
|
8
|
+
'proxy-authorization',
|
|
9
|
+
'cookie',
|
|
10
|
+
'set-cookie',
|
|
11
|
+
'x-api-key',
|
|
12
|
+
'x-auth-token'
|
|
13
|
+
]);
|
|
14
|
+
export class ApiRequestContractError extends CapabilityError {
|
|
15
|
+
contractCode;
|
|
16
|
+
constructor(contractCode, message, options) {
|
|
17
|
+
super(redactedExcerpt(message), contractCode === 'UNKNOWN_APP' ? 'NOT_FOUND' : contractCode.startsWith('NO_AUTH') ? 'AUTH_REQUIRED' : 'INVALID_INPUT', { reason: contractCode.toLowerCase().replaceAll('_', '-'), cause: options?.cause });
|
|
18
|
+
this.contractCode = contractCode;
|
|
19
|
+
this.name = 'ApiRequestContractError';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function assertSafeHeaders(headers) {
|
|
23
|
+
for (const name of Object.keys(headers ?? {})) {
|
|
24
|
+
if (FORBIDDEN_AUTH_HEADERS.has(name.trim().toLowerCase())) {
|
|
25
|
+
throw new ApiRequestContractError('AUTH_HEADER_FORBIDDEN', `Header "${name}" is managed by the authenticated API client and cannot be supplied to api-request.`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function resolveDeclaredServiceOrigin(app, runtime) {
|
|
30
|
+
try {
|
|
31
|
+
const selected = runtime.hasKind('infra/service')
|
|
32
|
+
? await runtime.query('infra/service').withId(app).select()
|
|
33
|
+
: undefined;
|
|
34
|
+
if (!selected) {
|
|
35
|
+
throw new CapabilityError('Service is not declared in this runtime.', 'NOT_FOUND', {
|
|
36
|
+
reason: 'service-undeclared',
|
|
37
|
+
details: { serviceId: app }
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return await selected.impl.origin();
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (!(error instanceof Error && isCapabilityError(error) && error.reason === 'service-undeclared'))
|
|
44
|
+
throw error;
|
|
45
|
+
throw new ApiRequestContractError('UNKNOWN_APP', `Unknown vibes app "${app}" — no infra/service declares it in the configured service environment.`, { cause: error });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export async function resolveApiRequestTarget(input, runtime) {
|
|
49
|
+
input = readClientValue(apiRequestInputSchema, input, 'api-request-input-invalid');
|
|
50
|
+
const app = input.app?.trim();
|
|
51
|
+
if (!app) {
|
|
52
|
+
throw new ApiRequestContractError('APP_REQUIRED', 'api-request requires an explicit app id naming a declared infra/service.');
|
|
53
|
+
}
|
|
54
|
+
assertSafeHeaders(input.headers);
|
|
55
|
+
const origin = await resolveDeclaredServiceOrigin(app, runtime);
|
|
56
|
+
let configured;
|
|
57
|
+
let target;
|
|
58
|
+
try {
|
|
59
|
+
configured = new URL(origin);
|
|
60
|
+
target = new URL(input.path, `${origin}/`);
|
|
61
|
+
}
|
|
62
|
+
catch (cause) {
|
|
63
|
+
throw new ApiRequestContractError('INVALID_APP_ORIGIN', `The configured origin for vibes app "${app}" is not a valid URL.`, { cause });
|
|
64
|
+
}
|
|
65
|
+
if (configured.protocol !== 'http:' && configured.protocol !== 'https:') {
|
|
66
|
+
throw new ApiRequestContractError('INVALID_APP_ORIGIN', `The configured origin for vibes app "${app}" must use HTTP or HTTPS.`);
|
|
67
|
+
}
|
|
68
|
+
const configuredOrigin = configured.origin;
|
|
69
|
+
if (!input.path.startsWith('/') ||
|
|
70
|
+
input.path.startsWith('//') ||
|
|
71
|
+
target.origin !== configuredOrigin) {
|
|
72
|
+
throw new ApiRequestContractError('INVALID_PATH', 'api-request path must begin with one slash and cannot override the configured app origin.');
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
app,
|
|
76
|
+
origin: configuredOrigin,
|
|
77
|
+
url: target.toString()
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export function apiRequestErrorOutput(error) {
|
|
81
|
+
const failure = CaughtFailureSchema.parse(error);
|
|
82
|
+
return readClientFields(() => {
|
|
83
|
+
const status = readClientValue(z.object({ status: z.number().int().optional() }), failure, 'api-request-failure-unreadable').status;
|
|
84
|
+
return { status: 'error', error: {
|
|
85
|
+
message: failure instanceof Error ? redactedExcerpt(failure.message, { maxChars: 2000 }) : 'The API request failed.',
|
|
86
|
+
code: failure instanceof ApiRequestContractError ? failure.contractCode : failure instanceof CapabilityError && failure.reason === 'no-auth-client' ? 'NO_AUTH_CLIENT' : 'API_REQUEST_FAILED', status
|
|
87
|
+
} };
|
|
88
|
+
}, 'api-request-failure-unreadable');
|
|
89
|
+
}
|
|
90
|
+
/** Apply the shared credential redactor before emitting a tool result. */
|
|
91
|
+
export function apiRequestSuccessOutput(response) {
|
|
92
|
+
const value = readClientValue(JsonValueSchema, response, 'api-request-response-invalid');
|
|
93
|
+
return { status: 'success', response: redactApiResponse(value) };
|
|
94
|
+
}
|
|
95
|
+
function redactApiResponse(value) {
|
|
96
|
+
if (value === null)
|
|
97
|
+
return null;
|
|
98
|
+
if (Array.isArray(value))
|
|
99
|
+
return value.map(redactApiResponse);
|
|
100
|
+
const string = z.string().safeParse(value);
|
|
101
|
+
if (string.success)
|
|
102
|
+
return redactCredentials(string.data);
|
|
103
|
+
const record = z.record(z.string(), JsonValueSchema).safeParse(value);
|
|
104
|
+
if (!record.success)
|
|
105
|
+
return value;
|
|
106
|
+
return Object.fromEntries(Object.entries(record.data).map(([key, entry]) => [key,
|
|
107
|
+
redactCredentials(`${key}=credential-value`) !== `${key}=credential-value`
|
|
108
|
+
? '[redacted]' : redactApiResponse(entry)]));
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=api-request.contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-request.contract.js","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,23 +23,30 @@ declare const _default: {
|
|
|
23
23
|
GET: "GET";
|
|
24
24
|
POST: "POST";
|
|
25
25
|
PUT: "PUT";
|
|
26
|
-
DELETE: "DELETE";
|
|
27
26
|
PATCH: "PATCH";
|
|
27
|
+
DELETE: "DELETE";
|
|
28
28
|
}>;
|
|
29
29
|
path: import("zod/v4").ZodString;
|
|
30
|
-
query: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").
|
|
31
|
-
body: import("zod/v4").ZodOptional<import("zod/v4").
|
|
30
|
+
query: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodOptional<import("zod/v4").ZodUnion<readonly [import("zod/v4").ZodString, import("zod/v4").ZodNumber, import("zod/v4").ZodBoolean, import("zod/v4").ZodArray<import("zod/v4").ZodString>]>>>>;
|
|
31
|
+
body: import("zod/v4").ZodOptional<import("zod/v4").ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, import("zod/v4/core").$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>>;
|
|
32
32
|
headers: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodString>>;
|
|
33
|
+
app: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
33
34
|
}, import("zod/v4/core").$strip>;
|
|
34
35
|
output: import("zod/v4").ZodObject<{
|
|
35
36
|
status: import("zod/v4").ZodEnum<{
|
|
36
37
|
error: "error";
|
|
37
38
|
success: "success";
|
|
38
39
|
}>;
|
|
39
|
-
response: import("zod/v4").ZodOptional<import("zod/v4").
|
|
40
|
+
response: import("zod/v4").ZodOptional<import("zod/v4").ZodType<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue, import("zod/v4/core").$ZodTypeInternals<import("@vibesdotdev/kernel/bootstrap").JsonValue, import("@vibesdotdev/kernel/bootstrap").JsonValue>>>;
|
|
40
41
|
error: import("zod/v4").ZodOptional<import("zod/v4").ZodObject<{
|
|
41
42
|
message: import("zod/v4").ZodString;
|
|
43
|
+
failure: import("zod/v4").ZodOptional<import("zod/v4").ZodObject<{
|
|
44
|
+
name: import("zod/v4").ZodString;
|
|
45
|
+
code: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
46
|
+
reason: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
47
|
+
}, import("zod/v4/core").$strip>>;
|
|
42
48
|
code: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
|
|
49
|
+
status: import("zod/v4").ZodOptional<import("zod/v4").ZodNumber>;
|
|
43
50
|
}, import("zod/v4/core").$strip>>;
|
|
44
51
|
}, import("zod/v4/core").$strip>;
|
|
45
52
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-request.descriptor.d.ts","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG
|
|
1
|
+
{"version":3,"file":"api-request.descriptor.d.ts","sourceRoot":"","sources":["../../../src/tools/api-request/api-request.descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKH,wBAsBG"}
|