@vibesdotdev/client 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/SPEC.md +107 -0
  2. package/dist/factory.d.ts +34 -0
  3. package/dist/factory.d.ts.map +1 -0
  4. package/dist/factory.js +80 -0
  5. package/dist/factory.js.map +1 -0
  6. package/dist/index.d.ts +10 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +6 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/lib/client/core.d.ts +8 -0
  11. package/dist/lib/client/core.d.ts.map +1 -0
  12. package/dist/lib/client/core.js +5 -0
  13. package/dist/lib/client/core.js.map +1 -0
  14. package/dist/lib/client/internal/base-client.d.ts +19 -0
  15. package/dist/lib/client/internal/base-client.d.ts.map +1 -0
  16. package/dist/lib/client/internal/base-client.js +92 -0
  17. package/dist/lib/client/internal/base-client.js.map +1 -0
  18. package/dist/lib/client/internal/base-helpers.d.ts +9 -0
  19. package/dist/lib/client/internal/base-helpers.d.ts.map +1 -0
  20. package/dist/lib/client/internal/base-helpers.js +79 -0
  21. package/dist/lib/client/internal/base-helpers.js.map +1 -0
  22. package/dist/lib/client/internal/base-types.d.ts +35 -0
  23. package/dist/lib/client/internal/base-types.d.ts.map +1 -0
  24. package/dist/lib/client/internal/base-types.js +15 -0
  25. package/dist/lib/client/internal/base-types.js.map +1 -0
  26. package/dist/lib/client/internal/endpoint.d.ts +22 -0
  27. package/dist/lib/client/internal/endpoint.d.ts.map +1 -0
  28. package/dist/lib/client/internal/endpoint.js +35 -0
  29. package/dist/lib/client/internal/endpoint.js.map +1 -0
  30. package/dist/lib/client/internal/generator.d.ts +20 -0
  31. package/dist/lib/client/internal/generator.d.ts.map +1 -0
  32. package/dist/lib/client/internal/generator.js +173 -0
  33. package/dist/lib/client/internal/generator.js.map +1 -0
  34. package/dist/lib/client/internal/index.d.ts +5 -0
  35. package/dist/lib/client/internal/index.d.ts.map +1 -0
  36. package/dist/lib/client/internal/index.js +4 -0
  37. package/dist/lib/client/internal/index.js.map +1 -0
  38. package/dist/lib/client/internal/node/http2-fetch.node.d.ts +2 -0
  39. package/dist/lib/client/internal/node/http2-fetch.node.d.ts.map +1 -0
  40. package/dist/lib/client/internal/node/http2-fetch.node.js +131 -0
  41. package/dist/lib/client/internal/node/http2-fetch.node.js.map +1 -0
  42. package/dist/lib/client/internal/request-builder.d.ts +15 -0
  43. package/dist/lib/client/internal/request-builder.d.ts.map +1 -0
  44. package/dist/lib/client/internal/request-builder.js +158 -0
  45. package/dist/lib/client/internal/request-builder.js.map +1 -0
  46. package/dist/lib/client/internal/sse-stream.d.ts +23 -0
  47. package/dist/lib/client/internal/sse-stream.d.ts.map +1 -0
  48. package/dist/lib/client/internal/sse-stream.js +110 -0
  49. package/dist/lib/client/internal/sse-stream.js.map +1 -0
  50. package/dist/lib/client/internal/vibes-client.d.ts +32 -0
  51. package/dist/lib/client/internal/vibes-client.d.ts.map +1 -0
  52. package/dist/lib/client/internal/vibes-client.js +120 -0
  53. package/dist/lib/client/internal/vibes-client.js.map +1 -0
  54. package/dist/lib/client/internal/wrap-fetch.d.ts +6 -0
  55. package/dist/lib/client/internal/wrap-fetch.d.ts.map +1 -0
  56. package/dist/lib/client/internal/wrap-fetch.js +46 -0
  57. package/dist/lib/client/internal/wrap-fetch.js.map +1 -0
  58. package/dist/lib/client/node.d.ts +5 -0
  59. package/dist/lib/client/node.d.ts.map +1 -0
  60. package/dist/lib/client/node.js +33 -0
  61. package/dist/lib/client/node.js.map +1 -0
  62. package/dist/lib/client/types.d.ts +145 -0
  63. package/dist/lib/client/types.d.ts.map +1 -0
  64. package/dist/lib/client/types.js +21 -0
  65. package/dist/lib/client/types.js.map +1 -0
  66. package/dist/plugin.d.ts +19 -0
  67. package/dist/plugin.d.ts.map +1 -0
  68. package/dist/plugin.js +80 -0
  69. package/dist/plugin.js.map +1 -0
  70. package/dist/schemas.d.ts +90 -0
  71. package/dist/schemas.d.ts.map +1 -0
  72. package/dist/schemas.js +9 -0
  73. package/dist/schemas.js.map +1 -0
  74. package/dist/sse-client.d.ts +39 -0
  75. package/dist/sse-client.d.ts.map +1 -0
  76. package/dist/sse-client.js +124 -0
  77. package/dist/sse-client.js.map +1 -0
  78. package/dist/tools/api-request/api-request.descriptor.d.ts +48 -0
  79. package/dist/tools/api-request/api-request.descriptor.d.ts.map +1 -0
  80. package/dist/tools/api-request/api-request.descriptor.js +27 -0
  81. package/dist/tools/api-request/api-request.descriptor.js.map +1 -0
  82. package/dist/tools/api-request/api-request.impl.consumer.d.ts +13 -0
  83. package/dist/tools/api-request/api-request.impl.consumer.d.ts.map +1 -0
  84. package/dist/tools/api-request/api-request.impl.consumer.js +51 -0
  85. package/dist/tools/api-request/api-request.impl.consumer.js.map +1 -0
  86. package/dist/tools/api-request/index.d.ts +5 -0
  87. package/dist/tools/api-request/index.d.ts.map +1 -0
  88. package/dist/tools/api-request/index.js +4 -0
  89. package/dist/tools/api-request/index.js.map +1 -0
  90. package/dist/tools/api-request/schemas/index.d.ts +33 -0
  91. package/dist/tools/api-request/schemas/index.d.ts.map +1 -0
  92. package/dist/tools/api-request/schemas/index.js +24 -0
  93. package/dist/tools/api-request/schemas/index.js.map +1 -0
  94. package/package.json +99 -0
  95. package/src/factory.ts +114 -0
  96. package/src/index.ts +15 -0
  97. package/src/lib/client/core.ts +13 -0
  98. package/src/lib/client/internal/base-client.ts +107 -0
  99. package/src/lib/client/internal/base-helpers.ts +74 -0
  100. package/src/lib/client/internal/base-types.ts +42 -0
  101. package/src/lib/client/internal/endpoint.ts +51 -0
  102. package/src/lib/client/internal/generator.ts +181 -0
  103. package/src/lib/client/internal/index.ts +4 -0
  104. package/src/lib/client/internal/node/http2-fetch.node.ts +138 -0
  105. package/src/lib/client/internal/request-builder.ts +147 -0
  106. package/src/lib/client/internal/sse-stream.ts +130 -0
  107. package/src/lib/client/internal/vibes-client.ts +167 -0
  108. package/src/lib/client/internal/wrap-fetch.ts +59 -0
  109. package/src/lib/client/node.ts +36 -0
  110. package/src/lib/client/types.ts +156 -0
  111. package/src/plugin.ts +104 -0
  112. package/src/schemas.ts +91 -0
  113. package/src/sse-client.ts +155 -0
  114. package/src/tools/api-request/api-request.descriptor.ts +28 -0
  115. package/src/tools/api-request/api-request.impl.consumer.ts +66 -0
  116. package/src/tools/api-request/index.ts +4 -0
  117. package/src/tools/api-request/schemas/index.ts +29 -0
@@ -0,0 +1,110 @@
1
+ import { ClientError } from "../types.js";
2
+ export async function* streamSSE(args) {
3
+ const options = args.options ?? {};
4
+ let url = `${args.baseUrl}${args.path}`;
5
+ if (options.params) {
6
+ for (const [key, value] of Object.entries(options.params)) {
7
+ url = url.replace(`:${key}`, String(value));
8
+ url = url.replace(`{${key}}`, String(value));
9
+ }
10
+ }
11
+ if (options.query) {
12
+ const searchParams = new URLSearchParams();
13
+ for (const [key, value] of Object.entries(options.query)) {
14
+ if (value === undefined || value === null)
15
+ continue;
16
+ if (Array.isArray(value))
17
+ value.forEach((v) => searchParams.append(key, String(v)));
18
+ else
19
+ searchParams.append(key, String(value));
20
+ }
21
+ const queryString = searchParams.toString();
22
+ if (queryString)
23
+ url += `?${queryString}`;
24
+ }
25
+ const headers = { Accept: 'text/event-stream', ...options.headers };
26
+ if (!('Content-Type' in headers))
27
+ headers['Content-Type'] = 'application/json';
28
+ if (args.auth.type === 'apiKey' && args.auth.credentials) {
29
+ headers['X-API-Key'] = args.auth.credentials;
30
+ }
31
+ else if (args.auth.type === 'bearer') {
32
+ const token = args.auth.tokenProvider ? await args.auth.tokenProvider() : args.auth.credentials;
33
+ if (token)
34
+ headers.Authorization = `Bearer ${token}`;
35
+ }
36
+ const requestOptions = {
37
+ method: options.method || 'POST',
38
+ path: args.path,
39
+ params: options.params,
40
+ query: options.query,
41
+ body: options.body,
42
+ headers: options.headers,
43
+ timeout: options.timeout
44
+ };
45
+ const requestInit = { method: requestOptions.method, headers };
46
+ if (requestOptions.timeout) {
47
+ const controller = new AbortController();
48
+ setTimeout(() => controller.abort(), requestOptions.timeout);
49
+ requestInit.signal = controller.signal;
50
+ }
51
+ if (options.body !== undefined)
52
+ requestInit.body = JSON.stringify(options.body);
53
+ const response = await args.fetchImpl(url, requestInit);
54
+ if (!response.ok) {
55
+ throw new ClientError(`SSE stream failed: ${response.statusText}`, response.status, response, requestOptions);
56
+ }
57
+ if (!response.body) {
58
+ throw new ClientError('No response body for SSE stream', response.status, response, requestOptions);
59
+ }
60
+ const reader = response.body.getReader();
61
+ const decoder = new TextDecoder();
62
+ let buffer = '';
63
+ try {
64
+ while (true) {
65
+ const { done, value } = await reader.read();
66
+ if (done)
67
+ break;
68
+ buffer += decoder.decode(value, { stream: true });
69
+ const lines = buffer.split('\n');
70
+ buffer = lines.pop() || '';
71
+ let currentEvent = {};
72
+ for (const line of lines) {
73
+ if (line.trim() === '') {
74
+ if (currentEvent.data !== undefined) {
75
+ yield currentEvent;
76
+ currentEvent = {};
77
+ }
78
+ continue;
79
+ }
80
+ if (line.startsWith('event:')) {
81
+ currentEvent.event = line.slice(6).trim();
82
+ continue;
83
+ }
84
+ if (line.startsWith('data:')) {
85
+ const dataStr = line.slice(5).trim();
86
+ if (dataStr === '[DONE]')
87
+ return;
88
+ try {
89
+ currentEvent.data = JSON.parse(dataStr);
90
+ }
91
+ catch {
92
+ currentEvent.data = dataStr;
93
+ }
94
+ continue;
95
+ }
96
+ if (line.startsWith('id:')) {
97
+ currentEvent.id = line.slice(3).trim();
98
+ continue;
99
+ }
100
+ if (line.startsWith('retry:')) {
101
+ currentEvent.retry = parseInt(line.slice(6).trim());
102
+ }
103
+ }
104
+ }
105
+ }
106
+ finally {
107
+ reader.releaseLock();
108
+ }
109
+ }
110
+ //# sourceMappingURL=sse-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse-stream.js","sourceRoot":"","sources":["../../../../src/lib/client/internal/sse-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { AuthConfig, ClientConfig, RequestOptions } from '../types.ts';
2
+ import { type OpenAPISpec } from './generator.ts';
3
+ import { type SSEEvent, type SSEStreamOptions } from './sse-stream.ts';
4
+ export declare class VibesClient {
5
+ private config;
6
+ private requestBuilder;
7
+ private apiGenerator;
8
+ private apis;
9
+ private specPromise;
10
+ constructor(config?: ClientConfig);
11
+ private initialize;
12
+ getOpenAPISpec(): Promise<OpenAPISpec>;
13
+ private fetchOpenAPISpec;
14
+ private buildAPIs;
15
+ request<T = unknown>(path: string, options?: {
16
+ method?: string;
17
+ params?: Record<string, string | number | boolean>;
18
+ query?: Record<string, string | number | boolean | string[] | undefined>;
19
+ body?: unknown;
20
+ headers?: Record<string, string>;
21
+ timeout?: number;
22
+ }): Promise<T>;
23
+ setAuth(auth: AuthConfig): void;
24
+ getResources(): string[];
25
+ hasResource(name: string): boolean;
26
+ get<T = unknown>(endpoint: string, options?: RequestOptions): Promise<T>;
27
+ post<T = unknown>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T>;
28
+ put<T = unknown>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T>;
29
+ delete<T = unknown>(endpoint: string, options?: RequestOptions): Promise<T>;
30
+ stream<T = unknown>(path: string, options?: SSEStreamOptions): AsyncIterableIterator<SSEEvent<T>>;
31
+ }
32
+ //# sourceMappingURL=vibes-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibes-client.d.ts","sourceRoot":"","sources":["../../../../src/lib/client/internal/vibes-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAe,cAAc,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGhE,OAAO,EAAa,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAYlF,qBAAa,WAAW;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,WAAW,CAAqC;gBAE5C,MAAM,GAAE,YAAiB;YA+BvB,UAAU;IAcxB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;YAKxB,gBAAgB;IAM9B,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,CAAC,GAAG,OAAO,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;QACnD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,EAAE,MAAM,CAAC;KACZ,GACJ,OAAO,CAAC,CAAC,CAAC;IAYb,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAiB/B,YAAY,IAAI,MAAM,EAAE;IAIxB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxE,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxF,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIpE,MAAM,CAAC,CAAC,GAAG,OAAO,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,gBAAqB,GAC5B,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CASrC"}
@@ -0,0 +1,120 @@
1
+ import { APIGenerator } from "./generator.js";
2
+ import { getRuntimeEnv } from '@vibesdotdev/runtime';
3
+ import { RequestBuilder } from "./request-builder.js";
4
+ import { streamSSE } from "./sse-stream.js";
5
+ import { createHookedFetch } from "./wrap-fetch.js";
6
+ export class VibesClient {
7
+ config;
8
+ requestBuilder;
9
+ apiGenerator;
10
+ apis = {};
11
+ specPromise = null;
12
+ constructor(config = {}) {
13
+ const baseUrl = config.baseUrl ||
14
+ getRuntimeEnv('VIBES_API_URL') ||
15
+ 'http://localhost:5173';
16
+ const fetchImpl = config.fetch || globalThis.fetch?.bind(globalThis);
17
+ if (!fetchImpl)
18
+ throw new Error('Fetch is not available. Please provide a fetch implementation.');
19
+ const hooks = config.hooks || {};
20
+ this.config = {
21
+ baseUrl,
22
+ auth: config.auth || { type: 'none' },
23
+ fetch: fetchImpl,
24
+ hooks,
25
+ timeout: config.timeout || 30000,
26
+ debug: config.debug || false
27
+ };
28
+ const hookedFetch = createHookedFetch({
29
+ fetchImpl: this.config.fetch,
30
+ hooks: this.config.hooks
31
+ });
32
+ this.requestBuilder = new RequestBuilder(this.config.baseUrl, this.config.auth, hookedFetch, this.config.timeout, this.config.debug);
33
+ this.apiGenerator = new APIGenerator(this.requestBuilder);
34
+ }
35
+ async initialize() {
36
+ try {
37
+ const spec = await this.getOpenAPISpec();
38
+ this.buildAPIs(spec);
39
+ }
40
+ catch (error) {
41
+ const shouldWarn = this.config.debug ||
42
+ (typeof process !== 'undefined' && process.env?.VIBES_CLIENT_WARN_OAS === 'true');
43
+ if (shouldWarn) {
44
+ console.warn('Failed to load OpenAPI spec, client will have limited functionality:', error);
45
+ }
46
+ }
47
+ }
48
+ getOpenAPISpec() {
49
+ if (!this.specPromise)
50
+ this.specPromise = this.fetchOpenAPISpec();
51
+ return this.specPromise;
52
+ }
53
+ async fetchOpenAPISpec() {
54
+ const response = await this.config.fetch(`${this.config.baseUrl}/api/docs/openapi.json`);
55
+ if (!response.ok)
56
+ throw new Error(`Failed to fetch OpenAPI spec: ${response.statusText}`);
57
+ return response.json();
58
+ }
59
+ buildAPIs(spec) {
60
+ const apis = this.apiGenerator.generateAPIs(spec);
61
+ for (const [name, api] of Object.entries(apis)) {
62
+ this.apis[name] = api;
63
+ Object.defineProperty(this, name, {
64
+ get: () => this.apis[name],
65
+ enumerable: true,
66
+ configurable: true
67
+ });
68
+ }
69
+ }
70
+ request(path, options = {}) {
71
+ return this.requestBuilder.request({
72
+ path,
73
+ method: options.method || 'GET',
74
+ params: options.params,
75
+ query: options.query,
76
+ body: options.body,
77
+ headers: options.headers,
78
+ timeout: options.timeout
79
+ });
80
+ }
81
+ setAuth(auth) {
82
+ this.config.auth = auth;
83
+ const hookedFetch = createHookedFetch({
84
+ fetchImpl: this.config.fetch,
85
+ hooks: this.config.hooks
86
+ });
87
+ this.requestBuilder = new RequestBuilder(this.config.baseUrl, auth, hookedFetch, this.config.timeout, this.config.debug);
88
+ this.apiGenerator = new APIGenerator(this.requestBuilder);
89
+ if (this.specPromise)
90
+ this.specPromise.then((spec) => this.buildAPIs(spec));
91
+ }
92
+ getResources() {
93
+ return Object.keys(this.apis);
94
+ }
95
+ hasResource(name) {
96
+ return name in this.apis;
97
+ }
98
+ get(endpoint, options) {
99
+ return this.request(endpoint, { ...options, method: 'GET' });
100
+ }
101
+ post(endpoint, body, options) {
102
+ return this.request(endpoint, { ...options, method: 'POST', body });
103
+ }
104
+ put(endpoint, body, options) {
105
+ return this.request(endpoint, { ...options, method: 'PUT', body });
106
+ }
107
+ delete(endpoint, options) {
108
+ return this.request(endpoint, { ...options, method: 'DELETE' });
109
+ }
110
+ async *stream(path, options = {}) {
111
+ yield* streamSSE({
112
+ baseUrl: this.config.baseUrl,
113
+ auth: this.config.auth,
114
+ fetchImpl: this.config.fetch,
115
+ path,
116
+ options
117
+ });
118
+ }
119
+ }
120
+ //# sourceMappingURL=vibes-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibes-client.js","sourceRoot":"","sources":["../../../../src/lib/client/internal/vibes-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type ClientHooks } from '../types.ts';
2
+ export declare function createHookedFetch(args: {
3
+ fetchImpl: typeof fetch;
4
+ hooks: ClientHooks;
5
+ }): (input: Parameters<typeof fetch>[0], init?: RequestInit) => Promise<Response>;
6
+ //# sourceMappingURL=wrap-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap-fetch.d.ts","sourceRoot":"","sources":["../../../../src/lib/client/internal/wrap-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACvC,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,KAAK,EAAE,WAAW,CAAC;CACnB,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAqDhF"}
@@ -0,0 +1,46 @@
1
+ import { ClientError } from "../types.js";
2
+ export function createHookedFetch(args) {
3
+ return async (input, init) => {
4
+ if (!args.hooks.beforeRequest) {
5
+ let response;
6
+ try {
7
+ response = await args.fetchImpl(input, init);
8
+ }
9
+ catch (error) {
10
+ if (args.hooks.onError) {
11
+ await args.hooks.onError(new ClientError(error instanceof Error ? error.message : 'Network error', 0, undefined, undefined));
12
+ }
13
+ throw error;
14
+ }
15
+ if (args.hooks.afterResponse)
16
+ response = await args.hooks.afterResponse(response);
17
+ return response;
18
+ }
19
+ const requestInput = input instanceof URL
20
+ ? new Request(input.href, init)
21
+ : typeof input === 'string'
22
+ ? new Request(input, init)
23
+ : new Request(input, init);
24
+ const modifiedRequest = await args.hooks.beforeRequest(requestInput);
25
+ const modifiedInit = {
26
+ ...init,
27
+ method: modifiedRequest.method,
28
+ headers: Object.fromEntries(modifiedRequest.headers.entries()),
29
+ ...(modifiedRequest.body !== requestInput.body && { body: modifiedRequest.body })
30
+ };
31
+ let response;
32
+ try {
33
+ response = await args.fetchImpl(modifiedRequest.url, modifiedInit);
34
+ }
35
+ catch (error) {
36
+ if (args.hooks.onError) {
37
+ await args.hooks.onError(new ClientError(error instanceof Error ? error.message : 'Network error', 0, undefined, undefined));
38
+ }
39
+ throw error;
40
+ }
41
+ if (args.hooks.afterResponse)
42
+ response = await args.hooks.afterResponse(response);
43
+ return response;
44
+ };
45
+ }
46
+ //# sourceMappingURL=wrap-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap-fetch.js","sourceRoot":"","sources":["../../../../src/lib/client/internal/wrap-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAoB,MAAM,aAAa,CAAC;AAE5D,MAAM,UAAU,iBAAiB,CAAC,IAGjC;IACA,OAAO,KAAK,EAAE,KAAkC,EAAE,IAAkB,EAAE,EAAE;QACvE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC/B,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACvB,IAAI,WAAW,CACd,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EACxD,CAAC,EACD,SAAS,EACT,SAAS,CACT,CACD,CAAC;gBACH,CAAC;gBACD,MAAM,KAAK,CAAC;YACb,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa;gBAAE,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAClF,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,YAAY,GAAG;YACxC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;YAC/B,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;gBAC1B,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;gBAC1B,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,YAAY,GAAgB;YACjC,GAAG,IAAI;YACP,MAAM,EAAE,eAAe,CAAC,MAAM;YAC9B,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC9D,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC;SACjF,CAAC;QACF,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACvB,IAAI,WAAW,CACd,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EACxD,CAAC,EACD,SAAS,EACT,SAAS,CACT,CACD,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ClientConfig } from './types.ts';
2
+ import { VibesClient } from './internal/vibes-client.ts';
3
+ export { createHttp2Fetch } from './internal/node/http2-fetch.node.ts';
4
+ export declare function createCLIClient(config?: Partial<ClientConfig>): Promise<VibesClient>;
5
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/lib/client/node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAoBvE,wBAAsB,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAW1F"}
@@ -0,0 +1,33 @@
1
+ import { getRuntimeEnv } from '@vibesdotdev/runtime';
2
+ import { VibesClient } from "./internal/vibes-client.js";
3
+ export { createHttp2Fetch } from "./internal/node/http2-fetch.node.js";
4
+ async function resolveNodeFetch(baseUrl) {
5
+ const isHttps = baseUrl.startsWith('https://');
6
+ const isLocal = baseUrl.includes('.local') || baseUrl.includes('localhost') || baseUrl.includes('127.0.0.1');
7
+ if (isHttps && isLocal) {
8
+ try {
9
+ if (!getRuntimeEnv('REJECT_UNAUTHORIZED')) {
10
+ globalThis.process?.['env'] && (globalThis.process.env.REJECT_UNAUTHORIZED = 'false');
11
+ }
12
+ const { createHttp2Fetch } = await import('./internal/node/http2-fetch.node.js');
13
+ return createHttp2Fetch(baseUrl);
14
+ }
15
+ catch {
16
+ // Fallback to regular fetch if h2 module unavailable
17
+ }
18
+ }
19
+ return globalThis.fetch;
20
+ }
21
+ export async function createCLIClient(config) {
22
+ const baseUrl = config?.baseUrl || getRuntimeEnv('VIBES_API_URL') || 'http://localhost:5173';
23
+ const fetchImpl = config?.fetch || (await resolveNodeFetch(baseUrl));
24
+ const clientConfig = {
25
+ baseUrl,
26
+ auth: config?.auth || { type: 'none' },
27
+ fetch: fetchImpl,
28
+ debug: getRuntimeEnv('VIBES_DEBUG') === 'true',
29
+ ...config
30
+ };
31
+ return new VibesClient(clientConfig);
32
+ }
33
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/lib/client/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,OAAO,GACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9F,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACJ,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC3C,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,OAAO,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;YACjF,OAAO,gBAAgB,CAAC,OAAO,CAAuC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACR,qDAAqD;QACtD,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA8B;IACnE,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,aAAa,CAAC,eAAe,CAAC,IAAI,uBAAuB,CAAC;IAC7F,MAAM,SAAS,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,YAAY,GAAiB;QAClC,OAAO;QACP,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;QACtC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,KAAK,MAAM;QAC9C,GAAG,MAAM;KACT,CAAC;IACF,OAAO,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Vibes Client Types
3
+ *
4
+ * Configuration, errors, and type contracts for the VibesClient HTTP API client.
5
+ * Extracted from libraries/vibeskit (PR #447 migration) to canonicalize as a
6
+ * pure-isomorphic @vibesdotdev/client surface.
7
+ */
8
+ /** Authentication configuration */
9
+ export interface AuthConfig {
10
+ /** Authentication type */
11
+ type: 'apiKey' | 'session' | 'bearer' | 'none';
12
+ /** Static credentials */
13
+ credentials?: string;
14
+ /** Dynamic token provider */
15
+ tokenProvider?: () => Promise<string | null>;
16
+ /** Session refresh handler for expired sessions */
17
+ refreshHandler?: () => Promise<AuthConfig | null>;
18
+ }
19
+ /** Client lifecycle hooks */
20
+ export interface ClientHooks {
21
+ /** Called before each request */
22
+ beforeRequest?: (request: Request) => Promise<Request> | Request;
23
+ /** Called after each response */
24
+ afterResponse?: (response: Response) => Promise<Response> | Response;
25
+ /** Called on request error */
26
+ onError?: (error: ClientError) => Promise<void> | void;
27
+ }
28
+ /** Request options */
29
+ export interface RequestOptions {
30
+ /** HTTP method */
31
+ method: string;
32
+ /** Request path (will be appended to baseUrl) */
33
+ path: string;
34
+ /** URL parameters */
35
+ params?: Record<string, string | number | boolean>;
36
+ /** Query parameters */
37
+ query?: Record<string, string | number | boolean | string[] | undefined>;
38
+ /** Request body */
39
+ body?: unknown;
40
+ /** Additional headers */
41
+ headers?: Record<string, string>;
42
+ /** Override timeout for this request */
43
+ timeout?: number;
44
+ }
45
+ /** Client configuration options */
46
+ export interface ClientConfig {
47
+ /** Base URL for API requests */
48
+ baseUrl?: string;
49
+ /** Authentication configuration */
50
+ auth?: AuthConfig;
51
+ /** Custom fetch implementation */
52
+ fetch?: typeof fetch;
53
+ /** Request/response hooks */
54
+ hooks?: ClientHooks;
55
+ /** Request timeout in milliseconds */
56
+ timeout?: number;
57
+ /** Enable debug logging */
58
+ debug?: boolean;
59
+ }
60
+ /** Client error with additional context */
61
+ export declare class ClientError extends Error {
62
+ status?: number | undefined;
63
+ response?: Response | undefined;
64
+ request?: RequestOptions | undefined;
65
+ constructor(message: string, status?: number | undefined, response?: Response | undefined, request?: RequestOptions | undefined);
66
+ }
67
+ /** Paginated response wrapper */
68
+ export interface PaginatedResponse<T> {
69
+ data: T[];
70
+ total: number;
71
+ page: number;
72
+ pageSize: number;
73
+ hasMore: boolean;
74
+ }
75
+ /** Standard list parameters */
76
+ export interface ListParams {
77
+ /** Page number (1-based) */
78
+ page?: number;
79
+ /** Items per page */
80
+ limit?: number;
81
+ /** Sort field */
82
+ sortBy?: string;
83
+ /** Sort direction */
84
+ sortOrder?: 'asc' | 'desc';
85
+ /** Search query */
86
+ search?: string;
87
+ /** Additional filters */
88
+ filters?: Record<string, unknown>;
89
+ }
90
+ /** OpenAPI path info (generic -- no openapi-types dependency) */
91
+ export interface PathInfo {
92
+ path: string;
93
+ method: string;
94
+ operationId?: string;
95
+ parameters?: Record<string, unknown>[];
96
+ requestBody?: Record<string, unknown>;
97
+ responses?: Record<string, unknown>;
98
+ tags?: string[];
99
+ summary?: string;
100
+ description?: string;
101
+ }
102
+ /** Grouped API resources */
103
+ export interface APIResource {
104
+ name: string;
105
+ basePath: string;
106
+ operations: Map<string, PathInfo>;
107
+ }
108
+ /**
109
+ * Migration debt: ClientUser is an auth-domain type owned by @vibesdotdev/auth.
110
+ * Defined here temporarily so @vibesdotdev/kit/client consumers can migrate.
111
+ * Target: move to packages/auth/src/shared/client-user.ts and re-export from client/core.
112
+ */
113
+ export interface ClientUser {
114
+ id: string;
115
+ email: string;
116
+ displayName?: string | null;
117
+ avatarUrl?: string | null;
118
+ isSuperuser?: boolean;
119
+ roles?: Array<{
120
+ id: string;
121
+ name: string;
122
+ description: string | null;
123
+ isSystemRole: boolean;
124
+ }>;
125
+ permissions?: string[];
126
+ }
127
+ /**
128
+ * Type helpers for schema conversion
129
+ */
130
+ export type SchemaToType<T> = T extends {
131
+ type: 'string';
132
+ } ? string : T extends {
133
+ type: 'number';
134
+ } ? number : T extends {
135
+ type: 'boolean';
136
+ } ? boolean : T extends {
137
+ type: 'array';
138
+ items: infer I;
139
+ } ? Array<SchemaToType<I>> : T extends {
140
+ type: 'object';
141
+ properties: infer P;
142
+ } ? {
143
+ [K in keyof P]: SchemaToType<P[K]>;
144
+ } : unknown;
145
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/client/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Vibes Client Types
3
+ *
4
+ * Configuration, errors, and type contracts for the VibesClient HTTP API client.
5
+ * Extracted from libraries/vibeskit (PR #447 migration) to canonicalize as a
6
+ * pure-isomorphic @vibesdotdev/client surface.
7
+ */
8
+ /** Client error with additional context */
9
+ export class ClientError extends Error {
10
+ status;
11
+ response;
12
+ request;
13
+ constructor(message, status, response, request) {
14
+ super(message);
15
+ this.status = status;
16
+ this.response = response;
17
+ this.request = request;
18
+ this.name = 'ClientError';
19
+ }
20
+ }
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/client/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0DH,2CAA2C;AAC3C,MAAM,OAAO,WAAY,SAAQ,KAAK;IAG7B;IACA;IACA;IAJR,YACC,OAAe,EACR,MAAe,EACf,QAAmB,EACnB,OAAwB;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,WAAM,GAAN,MAAM,CAAS;QACf,aAAQ,GAAR,QAAQ,CAAW;QACnB,YAAO,GAAP,OAAO,CAAiB;QAG/B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC3B,CAAC;CACD"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Client plugin — registers the `api/client` kind with the runtime.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import { getVibesRuntime } from '@vibesdotdev/runtime';
7
+ * import clientPlugin from '@vibesdotdev/client/plugin';
8
+ *
9
+ * const runtime = getVibesRuntime();
10
+ * await runtime.registerPlugin(clientPlugin);
11
+ *
12
+ * // Query a registered API client
13
+ * const authClient = await runtime.query('api/client').withId('auth').resolve();
14
+ * await authClient.get('/api/health');
15
+ * ```
16
+ */
17
+ declare const _default: import("@vibesdotdev/runtime").RuntimePlugin;
18
+ export default _default;
19
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AA4EA;;;;;;;;;;;;;;;GAeG;;AACH,wBAWG"}