@agentuity/frontend 1.0.48 → 2.0.0-beta.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.
- package/AGENTS.md +7 -31
- package/dist/beacon-script.js +1 -1
- package/dist/beacon.js +1 -1
- package/dist/dev-ws.d.ts +11 -0
- package/dist/dev-ws.d.ts.map +1 -0
- package/dist/dev-ws.js +34 -0
- package/dist/dev-ws.js.map +1 -0
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/dev-ws.ts +33 -0
- package/src/index.ts +1 -18
- package/dist/client/eventstream.d.ts +0 -12
- package/dist/client/eventstream.d.ts.map +0 -1
- package/dist/client/eventstream.js +0 -39
- package/dist/client/eventstream.js.map +0 -1
- package/dist/client/index.d.ts +0 -33
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js +0 -230
- package/dist/client/index.js.map +0 -1
- package/dist/client/stream.d.ts +0 -6
- package/dist/client/stream.d.ts.map +0 -1
- package/dist/client/stream.js +0 -49
- package/dist/client/stream.js.map +0 -1
- package/dist/client/types.d.ts +0 -168
- package/dist/client/types.d.ts.map +0 -1
- package/dist/client/types.js +0 -5
- package/dist/client/types.js.map +0 -1
- package/dist/client/websocket.d.ts +0 -6
- package/dist/client/websocket.d.ts.map +0 -1
- package/dist/client/websocket.js +0 -49
- package/dist/client/websocket.js.map +0 -1
- package/dist/types.d.ts +0 -42
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/src/client/eventstream.ts +0 -52
- package/src/client/index.ts +0 -267
- package/src/client/stream.ts +0 -61
- package/src/client/types.ts +0 -237
- package/src/client/websocket.ts +0 -61
- package/src/types.ts +0 -56
package/dist/client/index.js
DELETED
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
import { createWebSocketClient } from './websocket';
|
|
2
|
-
import { createEventStreamClient } from './eventstream';
|
|
3
|
-
import { createStreamClient } from './stream';
|
|
4
|
-
/**
|
|
5
|
-
* Default base URL (empty = relative URLs).
|
|
6
|
-
*/
|
|
7
|
-
const defaultBaseUrl = '';
|
|
8
|
-
/**
|
|
9
|
-
* Resolve baseUrl - if it's a function, call it; otherwise return the string.
|
|
10
|
-
*/
|
|
11
|
-
function resolveBaseUrl(baseUrl) {
|
|
12
|
-
return typeof baseUrl === 'function' ? baseUrl() : baseUrl;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Resolve headers - if it's a function, call it; otherwise return the object.
|
|
16
|
-
*/
|
|
17
|
-
function resolveHeaders(headers) {
|
|
18
|
-
return typeof headers === 'function' ? headers() : headers;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Escape special regex characters in a string.
|
|
22
|
-
*/
|
|
23
|
-
function escapeRegExp(str) {
|
|
24
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Substitute path parameters in a URL path template.
|
|
28
|
-
* E.g., '/api/users/:id' with { id: '123' } becomes '/api/users/123'
|
|
29
|
-
*/
|
|
30
|
-
function substitutePathParams(pathTemplate, pathParams) {
|
|
31
|
-
if (!pathParams)
|
|
32
|
-
return pathTemplate;
|
|
33
|
-
let result = pathTemplate;
|
|
34
|
-
for (const [key, value] of Object.entries(pathParams)) {
|
|
35
|
-
const escapedKey = escapeRegExp(key);
|
|
36
|
-
result = result.replace(new RegExp(`:${escapedKey}\\??`, 'g'), encodeURIComponent(value));
|
|
37
|
-
result = result.replace(new RegExp(`\\*${escapedKey}`, 'g'), encodeURIComponent(value));
|
|
38
|
-
}
|
|
39
|
-
return result;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Build URL with query params.
|
|
43
|
-
*/
|
|
44
|
-
function buildUrlWithQuery(baseUrl, path, query) {
|
|
45
|
-
const url = `${baseUrl}${path}`;
|
|
46
|
-
if (!query || Object.keys(query).length === 0)
|
|
47
|
-
return url;
|
|
48
|
-
const params = new URLSearchParams(query);
|
|
49
|
-
return `${url}?${params.toString()}`;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Create a type-safe API client from a RouteRegistry.
|
|
53
|
-
*
|
|
54
|
-
* Uses a Proxy to build up the path as you navigate the object,
|
|
55
|
-
* then executes the request when you call a terminal method (.post(), .get(), .websocket(), etc.).
|
|
56
|
-
*
|
|
57
|
-
* @example
|
|
58
|
-
* ```typescript
|
|
59
|
-
* import { createClient } from '@agentuity/frontend';
|
|
60
|
-
* import type { RPCRouteRegistry } from './generated/routes';
|
|
61
|
-
*
|
|
62
|
-
* const client = createClient<RPCRouteRegistry>();
|
|
63
|
-
*
|
|
64
|
-
* // Type-safe API call
|
|
65
|
-
* const result = await client.hello.post({ name: 'World' });
|
|
66
|
-
*
|
|
67
|
-
* // WebSocket
|
|
68
|
-
* const ws = client.chat.websocket();
|
|
69
|
-
* ws.on('message', (msg) => console.log(msg));
|
|
70
|
-
*
|
|
71
|
-
* // Server-Sent Events
|
|
72
|
-
* const es = client.events.eventstream();
|
|
73
|
-
* es.on('message', (event) => console.log(event.data));
|
|
74
|
-
*
|
|
75
|
-
* // Streaming response
|
|
76
|
-
* const stream = await client.data.stream({ query: 'foo' });
|
|
77
|
-
* stream.on('chunk', (chunk) => console.log(chunk));
|
|
78
|
-
* ```
|
|
79
|
-
*/
|
|
80
|
-
export function createClient(options = {}, metadata) {
|
|
81
|
-
const { baseUrl = defaultBaseUrl, headers, contentType = 'application/json', signal } = options;
|
|
82
|
-
// Default headers to empty object if not provided
|
|
83
|
-
const defaultHeaders = headers || {};
|
|
84
|
-
const handler = {
|
|
85
|
-
get(target, prop) {
|
|
86
|
-
const currentPath = target.__path;
|
|
87
|
-
const newPath = [...currentPath, prop];
|
|
88
|
-
// Check if this is a terminal method
|
|
89
|
-
const httpMethods = ['get', 'post', 'put', 'delete', 'patch', 'head', 'options'];
|
|
90
|
-
const streamMethods = ['websocket', 'eventstream', 'stream'];
|
|
91
|
-
const isHttpMethod = httpMethods.includes(prop);
|
|
92
|
-
const isStreamMethod = streamMethods.includes(prop);
|
|
93
|
-
const isTerminalMethod = isHttpMethod || isStreamMethod;
|
|
94
|
-
// Terminal: method at the end (minimum 1 path segment required)
|
|
95
|
-
// Examples: client.hello.post(), client.echo.websocket(), client.events.eventstream()
|
|
96
|
-
if (isTerminalMethod && currentPath.length >= 1) {
|
|
97
|
-
const method = prop;
|
|
98
|
-
const pathSegments = currentPath;
|
|
99
|
-
// Look up route metadata
|
|
100
|
-
let routeType = 'api';
|
|
101
|
-
let routePath;
|
|
102
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
103
|
-
let metaNode = metadata;
|
|
104
|
-
if (isStreamMethod) {
|
|
105
|
-
// Stream methods directly specify the route type
|
|
106
|
-
if (method === 'websocket')
|
|
107
|
-
routeType = 'websocket';
|
|
108
|
-
else if (method === 'eventstream')
|
|
109
|
-
routeType = 'sse';
|
|
110
|
-
else if (method === 'stream')
|
|
111
|
-
routeType = 'stream';
|
|
112
|
-
}
|
|
113
|
-
if (metadata) {
|
|
114
|
-
for (const segment of pathSegments) {
|
|
115
|
-
if (metaNode && typeof metaNode === 'object') {
|
|
116
|
-
metaNode = metaNode[segment];
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
if (metaNode && typeof metaNode === 'object' && metaNode[method]) {
|
|
120
|
-
if (metaNode[method].type) {
|
|
121
|
-
routeType = metaNode[method].type;
|
|
122
|
-
}
|
|
123
|
-
if (metaNode[method].path) {
|
|
124
|
-
routePath = metaNode[method].path;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
// Fallback URL path if no metadata
|
|
129
|
-
const fallbackPath = '/api/' + pathSegments.join('/');
|
|
130
|
-
return (...args) => {
|
|
131
|
-
const resolvedBaseUrl = resolveBaseUrl(baseUrl);
|
|
132
|
-
const resolvedHeaders = resolveHeaders(defaultHeaders);
|
|
133
|
-
// Get path param names from metadata if available
|
|
134
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
135
|
-
const pathParamNames = metaNode?.[method]?.pathParams;
|
|
136
|
-
const hasPathParams = pathParamNames && pathParamNames.length > 0;
|
|
137
|
-
let pathParams;
|
|
138
|
-
let input;
|
|
139
|
-
let query;
|
|
140
|
-
if (hasPathParams) {
|
|
141
|
-
// Route has path params - positional arguments API
|
|
142
|
-
// Args are: param1, param2, ..., [options?]
|
|
143
|
-
// Example: client.user.get('123', 12) or client.user.get('123', 12, { query: {...} })
|
|
144
|
-
pathParams = {};
|
|
145
|
-
for (let i = 0; i < pathParamNames.length; i++) {
|
|
146
|
-
const paramName = pathParamNames[i];
|
|
147
|
-
if (paramName === undefined)
|
|
148
|
-
continue;
|
|
149
|
-
const arg = args[i];
|
|
150
|
-
if (arg === undefined || arg === null) {
|
|
151
|
-
throw new Error(`Missing required path parameter '${paramName}' at position ${i + 1}. ` +
|
|
152
|
-
`Expected ${pathParamNames.length} path parameter(s): ${pathParamNames.join(', ')}`);
|
|
153
|
-
}
|
|
154
|
-
pathParams[paramName] = String(arg);
|
|
155
|
-
}
|
|
156
|
-
// Check if there's an options object after the path params
|
|
157
|
-
const optionsArg = args[pathParamNames.length];
|
|
158
|
-
if (optionsArg && typeof optionsArg === 'object') {
|
|
159
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
160
|
-
const opts = optionsArg;
|
|
161
|
-
input = opts.input;
|
|
162
|
-
query = opts.query;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
// No path params - use existing behavior
|
|
167
|
-
const options = args[0];
|
|
168
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
169
|
-
const opts = options;
|
|
170
|
-
const isOptionsObject = opts && typeof opts === 'object' && ('input' in opts || 'query' in opts);
|
|
171
|
-
input = isOptionsObject ? opts.input : options;
|
|
172
|
-
query = isOptionsObject ? opts.query : undefined;
|
|
173
|
-
}
|
|
174
|
-
// Substitute path params in the route path
|
|
175
|
-
const basePath = routePath || fallbackPath;
|
|
176
|
-
const urlPath = substitutePathParams(basePath, pathParams);
|
|
177
|
-
// WebSocket endpoint
|
|
178
|
-
if (routeType === 'websocket') {
|
|
179
|
-
const wsBaseUrl = resolvedBaseUrl.replace(/^http/, 'ws');
|
|
180
|
-
const wsUrl = buildUrlWithQuery(wsBaseUrl, urlPath, query);
|
|
181
|
-
const ws = createWebSocketClient(wsUrl);
|
|
182
|
-
if (input) {
|
|
183
|
-
ws.on('open', () => ws.send(input));
|
|
184
|
-
}
|
|
185
|
-
return ws;
|
|
186
|
-
}
|
|
187
|
-
// SSE endpoint
|
|
188
|
-
if (routeType === 'sse') {
|
|
189
|
-
const sseUrl = buildUrlWithQuery(resolvedBaseUrl, urlPath, query);
|
|
190
|
-
return createEventStreamClient(sseUrl, {
|
|
191
|
-
withCredentials: Object.keys(resolvedHeaders).length > 0,
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
// Stream endpoint
|
|
195
|
-
if (routeType === 'stream') {
|
|
196
|
-
const streamUrl = buildUrlWithQuery(resolvedBaseUrl, urlPath, query);
|
|
197
|
-
return fetch(streamUrl, {
|
|
198
|
-
method: method.toUpperCase(),
|
|
199
|
-
headers: { 'Content-Type': contentType, ...resolvedHeaders },
|
|
200
|
-
body: input ? JSON.stringify(input) : undefined,
|
|
201
|
-
signal,
|
|
202
|
-
}).then((res) => {
|
|
203
|
-
if (!res.ok)
|
|
204
|
-
throw new Error(`HTTP ${res.status}: ${res.statusText}`);
|
|
205
|
-
return createStreamClient(res);
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
// Regular API endpoint
|
|
209
|
-
const apiUrl = buildUrlWithQuery(resolvedBaseUrl, urlPath, query);
|
|
210
|
-
return fetch(apiUrl, {
|
|
211
|
-
method: method.toUpperCase(),
|
|
212
|
-
headers: { 'Content-Type': contentType, ...resolvedHeaders },
|
|
213
|
-
body: method.toUpperCase() !== 'GET' && input ? JSON.stringify(input) : undefined,
|
|
214
|
-
signal,
|
|
215
|
-
}).then(async (res) => {
|
|
216
|
-
if (!res.ok)
|
|
217
|
-
throw new Error(`HTTP ${res.status}: ${res.statusText}`);
|
|
218
|
-
if (res.status === 204)
|
|
219
|
-
return undefined;
|
|
220
|
-
return res.json();
|
|
221
|
-
});
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
// Otherwise, return a new proxy with extended path
|
|
225
|
-
return new Proxy({ __path: newPath }, handler);
|
|
226
|
-
},
|
|
227
|
-
};
|
|
228
|
-
return new Proxy({ __path: [] }, handler);
|
|
229
|
-
}
|
|
230
|
-
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/client/stream.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/client/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAuDnE"}
|
package/dist/client/stream.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Create a streaming response reader with event-based API.
|
|
3
|
-
*/
|
|
4
|
-
export function createStreamClient(response) {
|
|
5
|
-
const handlers = {
|
|
6
|
-
chunk: new Set(),
|
|
7
|
-
close: new Set(),
|
|
8
|
-
error: new Set(),
|
|
9
|
-
};
|
|
10
|
-
const reader = response.body?.getReader();
|
|
11
|
-
let cancelled = false;
|
|
12
|
-
// Start reading the stream
|
|
13
|
-
const readStream = async () => {
|
|
14
|
-
if (!reader) {
|
|
15
|
-
const error = new Error('Response body is not readable');
|
|
16
|
-
handlers.error.forEach((handler) => handler(error));
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
try {
|
|
20
|
-
while (!cancelled) {
|
|
21
|
-
const { done, value } = await reader.read();
|
|
22
|
-
if (done) {
|
|
23
|
-
handlers.close.forEach((handler) => handler());
|
|
24
|
-
break;
|
|
25
|
-
}
|
|
26
|
-
if (value) {
|
|
27
|
-
handlers.chunk.forEach((handler) => handler(value));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
33
|
-
handlers.error.forEach((handler) => handler(err));
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
// Start reading immediately
|
|
37
|
-
readStream();
|
|
38
|
-
return {
|
|
39
|
-
on: ((event, handler) => {
|
|
40
|
-
handlers[event].add(handler);
|
|
41
|
-
}),
|
|
42
|
-
async cancel() {
|
|
43
|
-
cancelled = true;
|
|
44
|
-
await reader?.cancel();
|
|
45
|
-
handlers.close.forEach((handler) => handler());
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=stream.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/client/stream.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACpD,MAAM,QAAQ,GAIV;QACH,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,KAAK,EAAE,IAAI,GAAG,EAAE;KAChB,CAAC;IAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;IAC1C,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,2BAA2B;IAC3B,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACzD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,OAAO;QACR,CAAC;QAED,IAAI,CAAC;YACJ,OAAO,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAE5C,IAAI,IAAI,EAAE,CAAC;oBACV,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC/C,MAAM;gBACP,CAAC;gBAED,IAAI,KAAK,EAAE,CAAC;oBACX,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACrD,CAAC;YACF,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;IACF,CAAC,CAAC;IAEF,4BAA4B;IAC5B,UAAU,EAAE,CAAC;IAEb,OAAO;QACN,EAAE,EAAE,CAAC,CAAC,KAAkC,EAAE,OAAqB,EAAE,EAAE;YAClE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAkD,CAAC,CAAC;QACzE,CAAC,CAAuB;QAExB,KAAK,CAAC,MAAM;YACX,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM,MAAM,EAAE,MAAM,EAAE,CAAC;YACvB,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/dist/client/types.d.ts
DELETED
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type-safe API client types for RPC-style invocations.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Options for creating a client.
|
|
6
|
-
*/
|
|
7
|
-
export interface ClientOptions {
|
|
8
|
-
/**
|
|
9
|
-
* Base URL for API requests (e.g., "https://p1234567890.agenuity.run").
|
|
10
|
-
* Defaults to empty string (relative URLs).
|
|
11
|
-
* Can be a string or a function that returns a string for lazy resolution.
|
|
12
|
-
*/
|
|
13
|
-
baseUrl?: string | (() => string);
|
|
14
|
-
/**
|
|
15
|
-
* Default headers to include in all requests.
|
|
16
|
-
* Can be a static object or a function that returns headers for dynamic resolution (e.g., auth tokens).
|
|
17
|
-
*/
|
|
18
|
-
headers?: Record<string, string> | (() => Record<string, string>);
|
|
19
|
-
/**
|
|
20
|
-
* Content-Type header for request bodies.
|
|
21
|
-
* @default "application/json"
|
|
22
|
-
*/
|
|
23
|
-
contentType?: string;
|
|
24
|
-
/**
|
|
25
|
-
* AbortSignal for request cancellation.
|
|
26
|
-
*/
|
|
27
|
-
signal?: AbortSignal;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Event handler for streaming responses.
|
|
31
|
-
*/
|
|
32
|
-
export type EventHandler<T = unknown> = (data: T) => void;
|
|
33
|
-
/**
|
|
34
|
-
* WebSocket wrapper with event-based API.
|
|
35
|
-
*/
|
|
36
|
-
export interface WebSocketClient {
|
|
37
|
-
/**
|
|
38
|
-
* Register an event handler.
|
|
39
|
-
*/
|
|
40
|
-
on: {
|
|
41
|
-
(event: 'message', handler: EventHandler<unknown>): void;
|
|
42
|
-
(event: 'open', handler: EventHandler<Event>): void;
|
|
43
|
-
(event: 'close', handler: EventHandler<CloseEvent>): void;
|
|
44
|
-
(event: 'error', handler: EventHandler<Event>): void;
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* Send data through the WebSocket.
|
|
48
|
-
*/
|
|
49
|
-
send(data: unknown): void;
|
|
50
|
-
/**
|
|
51
|
-
* Close the WebSocket connection.
|
|
52
|
-
*/
|
|
53
|
-
close(code?: number, reason?: string): void;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Server-Sent Events (SSE) client with event-based API.
|
|
57
|
-
*/
|
|
58
|
-
export interface EventStreamClient {
|
|
59
|
-
/**
|
|
60
|
-
* Register an event handler.
|
|
61
|
-
*/
|
|
62
|
-
on: {
|
|
63
|
-
(event: 'message', handler: EventHandler<MessageEvent>): void;
|
|
64
|
-
(event: 'open', handler: EventHandler<Event>): void;
|
|
65
|
-
(event: 'error', handler: EventHandler<Event>): void;
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Close the EventSource connection.
|
|
69
|
-
*/
|
|
70
|
-
close(): void;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Streaming response reader with event-based API.
|
|
74
|
-
*/
|
|
75
|
-
export interface StreamClient {
|
|
76
|
-
/**
|
|
77
|
-
* Register an event handler.
|
|
78
|
-
*/
|
|
79
|
-
on: {
|
|
80
|
-
(event: 'chunk', handler: EventHandler<Uint8Array>): void;
|
|
81
|
-
(event: 'close', handler: EventHandler<void>): void;
|
|
82
|
-
(event: 'error', handler: EventHandler<Error>): void;
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* Cancel the stream.
|
|
86
|
-
*/
|
|
87
|
-
cancel(): Promise<void>;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Options object for endpoints without path params (optional query support).
|
|
91
|
-
*/
|
|
92
|
-
export interface EndpointOptionsWithQuery<Input = unknown, Query = Record<string, string>> {
|
|
93
|
-
input?: Input;
|
|
94
|
-
query?: Query;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Additional options that can be passed after positional path params.
|
|
98
|
-
*/
|
|
99
|
-
export interface EndpointExtraOptions<Input = unknown, Query = Record<string, string>> {
|
|
100
|
-
input?: Input;
|
|
101
|
-
query?: Query;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Convert a path params object to a tuple of its value types.
|
|
105
|
-
* Used for positional argument typing.
|
|
106
|
-
* Note: For proper ordering, we rely on the generated PathParamsTuple type.
|
|
107
|
-
*/
|
|
108
|
-
export type PathParamsToTuple<P> = P extends readonly [infer First, ...infer Rest] ? [First, ...PathParamsToTuple<Rest>] : P extends readonly [] ? [] : string[];
|
|
109
|
-
/**
|
|
110
|
-
* API endpoint - callable function for regular HTTP calls.
|
|
111
|
-
* - Without path params: accepts input directly OR options object with query
|
|
112
|
-
* - With path params: accepts positional arguments followed by optional options object
|
|
113
|
-
*
|
|
114
|
-
* @example
|
|
115
|
-
* // No path params
|
|
116
|
-
* client.hello.post({ name: 'World' })
|
|
117
|
-
*
|
|
118
|
-
* // Single path param
|
|
119
|
-
* client.users.userId.get('123')
|
|
120
|
-
*
|
|
121
|
-
* // Multiple path params
|
|
122
|
-
* client.orgs.orgId.members.memberId.get('org-1', 'user-2')
|
|
123
|
-
*
|
|
124
|
-
* // With additional options
|
|
125
|
-
* client.users.userId.get('123', { query: { include: 'posts' } })
|
|
126
|
-
*/
|
|
127
|
-
export type APIEndpoint<Input = unknown, Output = unknown, PathParams = never, PathParamsTuple extends unknown[] = string[]> = [PathParams] extends [never] ? (inputOrOptions?: Input | EndpointOptionsWithQuery<Input>) => Promise<Output> : (...args: [...PathParamsTuple, options?: EndpointExtraOptions<Input>]) => Promise<Output>;
|
|
128
|
-
/**
|
|
129
|
-
* WebSocket endpoint - callable function that returns WebSocket client.
|
|
130
|
-
*/
|
|
131
|
-
export type WebSocketEndpoint<Input = unknown, _Output = unknown, PathParams = never, PathParamsTuple extends unknown[] = string[]> = [PathParams] extends [never] ? (inputOrOptions?: Input | EndpointOptionsWithQuery<Input>) => WebSocketClient : (...args: [...PathParamsTuple, options?: EndpointExtraOptions<Input>]) => WebSocketClient;
|
|
132
|
-
/**
|
|
133
|
-
* Server-Sent Events endpoint - callable function that returns EventStream client.
|
|
134
|
-
*/
|
|
135
|
-
export type SSEEndpoint<Input = unknown, _Output = unknown, PathParams = never, PathParamsTuple extends unknown[] = string[]> = [PathParams] extends [never] ? (inputOrOptions?: Input | EndpointOptionsWithQuery<Input>) => EventStreamClient : (...args: [...PathParamsTuple, options?: EndpointExtraOptions<Input>]) => EventStreamClient;
|
|
136
|
-
/**
|
|
137
|
-
* Streaming endpoint - callable function that returns Stream client.
|
|
138
|
-
*/
|
|
139
|
-
export type StreamEndpoint<Input = unknown, _Output = unknown, PathParams = never, PathParamsTuple extends unknown[] = string[]> = [PathParams] extends [never] ? (inputOrOptions?: Input | EndpointOptionsWithQuery<Input>) => StreamClient : (...args: [...PathParamsTuple, options?: EndpointExtraOptions<Input>]) => StreamClient;
|
|
140
|
-
/**
|
|
141
|
-
* Route endpoint - discriminated union based on route type.
|
|
142
|
-
*/
|
|
143
|
-
export type RouteEndpoint<Input = unknown, Output = unknown, Type extends string = 'api', PathParams = never, PathParamsTuple extends unknown[] = []> = Type extends 'websocket' ? WebSocketEndpoint<Input, Output, PathParams, PathParamsTuple> : Type extends 'sse' ? SSEEndpoint<Input, Output, PathParams, PathParamsTuple> : Type extends 'stream' ? StreamEndpoint<Input, Output, PathParams, PathParamsTuple> : APIEndpoint<Input, Output, PathParams, PathParamsTuple>;
|
|
144
|
-
/**
|
|
145
|
-
* Recursively build the client proxy type from a RouteRegistry.
|
|
146
|
-
*/
|
|
147
|
-
export type Client<R> = {
|
|
148
|
-
[K in keyof R]: R[K] extends {
|
|
149
|
-
input: infer I;
|
|
150
|
-
output: infer O;
|
|
151
|
-
type: infer T;
|
|
152
|
-
params: infer P;
|
|
153
|
-
paramsTuple: infer PT;
|
|
154
|
-
} ? PT extends unknown[] ? RouteEndpoint<I, O, T extends string ? T : 'api', P, PT> : RouteEndpoint<I, O, T extends string ? T : 'api', P> : R[K] extends {
|
|
155
|
-
input: infer I;
|
|
156
|
-
output: infer O;
|
|
157
|
-
type: infer T;
|
|
158
|
-
params: infer P;
|
|
159
|
-
} ? RouteEndpoint<I, O, T extends string ? T : 'api', P> : R[K] extends {
|
|
160
|
-
input: infer I;
|
|
161
|
-
output: infer O;
|
|
162
|
-
type: infer T;
|
|
163
|
-
} ? RouteEndpoint<I, O, T extends string ? T : 'api'> : R[K] extends {
|
|
164
|
-
input: infer I;
|
|
165
|
-
output: infer O;
|
|
166
|
-
} ? RouteEndpoint<I, O, 'api'> : R[K] extends object ? Client<R[K]> : never;
|
|
167
|
-
};
|
|
168
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
package/dist/client/types.js
DELETED
package/dist/client/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { WebSocketClient } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Create a WebSocket client wrapper with event-based API.
|
|
4
|
-
*/
|
|
5
|
-
export declare function createWebSocketClient(url: string, protocols?: string | string[]): WebSocketClient;
|
|
6
|
-
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/client/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,eAAe,EAAE,MAAM,SAAS,CAAC;AAE7D;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,eAAe,CAuDjG"}
|
package/dist/client/websocket.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Create a WebSocket client wrapper with event-based API.
|
|
3
|
-
*/
|
|
4
|
-
export function createWebSocketClient(url, protocols) {
|
|
5
|
-
const ws = new WebSocket(url, protocols);
|
|
6
|
-
const handlers = {
|
|
7
|
-
message: new Set(),
|
|
8
|
-
open: new Set(),
|
|
9
|
-
close: new Set(),
|
|
10
|
-
error: new Set(),
|
|
11
|
-
};
|
|
12
|
-
// Set up native WebSocket event listeners
|
|
13
|
-
ws.addEventListener('message', (event) => {
|
|
14
|
-
let data = event.data;
|
|
15
|
-
// Try to parse JSON if data is a string
|
|
16
|
-
if (typeof event.data === 'string') {
|
|
17
|
-
try {
|
|
18
|
-
data = JSON.parse(event.data);
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
// Keep as string if not valid JSON
|
|
22
|
-
data = event.data;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
handlers.message.forEach((handler) => handler(data));
|
|
26
|
-
});
|
|
27
|
-
ws.addEventListener('open', (event) => {
|
|
28
|
-
handlers.open.forEach((handler) => handler(event));
|
|
29
|
-
});
|
|
30
|
-
ws.addEventListener('close', (event) => {
|
|
31
|
-
handlers.close.forEach((handler) => handler(event));
|
|
32
|
-
});
|
|
33
|
-
ws.addEventListener('error', (event) => {
|
|
34
|
-
handlers.error.forEach((handler) => handler(event));
|
|
35
|
-
});
|
|
36
|
-
return {
|
|
37
|
-
on: ((event, handler) => {
|
|
38
|
-
handlers[event].add(handler);
|
|
39
|
-
}),
|
|
40
|
-
send(data) {
|
|
41
|
-
const payload = typeof data === 'string' ? data : JSON.stringify(data);
|
|
42
|
-
ws.send(payload);
|
|
43
|
-
},
|
|
44
|
-
close(code, reason) {
|
|
45
|
-
ws.close(code, reason);
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=websocket.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/client/websocket.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,SAA6B;IAC/E,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,QAAQ,GAKV;QACH,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,IAAI,EAAE,IAAI,GAAG,EAAE;QACf,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,KAAK,EAAE,IAAI,GAAG,EAAE;KAChB,CAAC;IAEF,0CAA0C;IAC1C,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAmB,EAAE,EAAE;QACtD,IAAI,IAAI,GAAY,KAAK,CAAC,IAAI,CAAC;QAC/B,wCAAwC;QACxC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC;gBACJ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACR,mCAAmC;gBACnC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACnB,CAAC;QACF,CAAC;QACD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,KAAY,EAAE,EAAE;QAC5C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAiB,EAAE,EAAE;QAClD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;QAC7C,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,OAAO;QACN,EAAE,EAAE,CAAC,CAAC,KAA6C,EAAE,OAAqB,EAAE,EAAE;YAC7E,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAqD,CAAC,CAAC;QAC5E,CAAC,CAA0B;QAE3B,IAAI,CAAC,IAAa;YACjB,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,IAAa,EAAE,MAAe;YACnC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxB,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Route registry containing all typed API routes in the application.
|
|
3
|
-
* Auto-generated by the build tool from routes that use validator() middleware.
|
|
4
|
-
*
|
|
5
|
-
* @remarks
|
|
6
|
-
* This interface is augmented by generated code via `declare module '@agentuity/frontend'`.
|
|
7
|
-
* The augmentation provides type-safe routing for useAPI and other hooks.
|
|
8
|
-
*/
|
|
9
|
-
export interface RouteRegistry {
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* WebSocket route registry containing all typed WebSocket routes in the application.
|
|
13
|
-
* Auto-generated by the build tool from routes that use validator() middleware.
|
|
14
|
-
*
|
|
15
|
-
* @remarks
|
|
16
|
-
* This interface is augmented by generated code via `declare module '@agentuity/frontend'`.
|
|
17
|
-
* The augmentation provides type-safe routing for useWebsocket and other hooks.
|
|
18
|
-
*/
|
|
19
|
-
export interface WebSocketRouteRegistry {
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* SSE route registry containing all typed SSE routes in the application.
|
|
23
|
-
* Auto-generated by the build tool from routes that use validator() middleware.
|
|
24
|
-
*
|
|
25
|
-
* @remarks
|
|
26
|
-
* This interface is augmented by generated code via `declare module '@agentuity/frontend'`.
|
|
27
|
-
* The augmentation provides type-safe routing for useEventStream and other hooks.
|
|
28
|
-
*/
|
|
29
|
-
export interface SSERouteRegistry {
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* RPC route registry containing all typed RPC routes in the application.
|
|
33
|
-
* Used by createClient() and createAPIClient() for type-safe RPC-style API calls.
|
|
34
|
-
* Auto-generated by the build tool from route discovery.
|
|
35
|
-
*
|
|
36
|
-
* @remarks
|
|
37
|
-
* This interface is augmented by generated code via `declare module '@agentuity/frontend'`.
|
|
38
|
-
* The augmentation provides type-safe routing for createClient and createAPIClient.
|
|
39
|
-
*/
|
|
40
|
-
export interface RPCRouteRegistry {
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,aAAa;CAG7B;AAED;;;;;;;GAOG;AAEH,MAAM,WAAW,sBAAsB;CAGtC;AAED;;;;;;;GAOG;AAEH,MAAM,WAAW,gBAAgB;CAGhC;AAED;;;;;;;;GAQG;AAEH,MAAM,WAAW,gBAAgB;CAGhC"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|