@agentuity/server 0.0.4 → 0.0.6

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 (82) hide show
  1. package/AGENTS.md +29 -96
  2. package/README.md +31 -198
  3. package/dist/config.d.ts +11 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +13 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/index.d.ts +4 -5
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +4 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/server.d.ts +22 -0
  12. package/dist/server.d.ts.map +1 -0
  13. package/dist/server.js +107 -0
  14. package/dist/server.js.map +1 -0
  15. package/package.json +11 -32
  16. package/dist/_config.d.ts +0 -61
  17. package/dist/_config.d.ts.map +0 -1
  18. package/dist/_context.d.ts +0 -33
  19. package/dist/_context.d.ts.map +0 -1
  20. package/dist/_idle.d.ts +0 -7
  21. package/dist/_idle.d.ts.map +0 -1
  22. package/dist/_server.d.ts +0 -17
  23. package/dist/_server.d.ts.map +0 -1
  24. package/dist/_services.d.ts +0 -2
  25. package/dist/_services.d.ts.map +0 -1
  26. package/dist/_util.d.ts +0 -16
  27. package/dist/_util.d.ts.map +0 -1
  28. package/dist/_waituntil.d.ts +0 -20
  29. package/dist/_waituntil.d.ts.map +0 -1
  30. package/dist/agent.d.ts +0 -88
  31. package/dist/agent.d.ts.map +0 -1
  32. package/dist/app.d.ts +0 -24
  33. package/dist/app.d.ts.map +0 -1
  34. package/dist/logger/console.d.ts +0 -50
  35. package/dist/logger/console.d.ts.map +0 -1
  36. package/dist/logger/index.d.ts +0 -4
  37. package/dist/logger/index.d.ts.map +0 -1
  38. package/dist/logger/internal.d.ts +0 -79
  39. package/dist/logger/internal.d.ts.map +0 -1
  40. package/dist/logger/logger.d.ts +0 -41
  41. package/dist/logger/logger.d.ts.map +0 -1
  42. package/dist/logger/user.d.ts +0 -8
  43. package/dist/logger/user.d.ts.map +0 -1
  44. package/dist/logger/util.d.ts +0 -11
  45. package/dist/logger/util.d.ts.map +0 -1
  46. package/dist/otel/config.d.ts +0 -17
  47. package/dist/otel/config.d.ts.map +0 -1
  48. package/dist/otel/console.d.ts +0 -26
  49. package/dist/otel/console.d.ts.map +0 -1
  50. package/dist/otel/fetch.d.ts +0 -12
  51. package/dist/otel/fetch.d.ts.map +0 -1
  52. package/dist/otel/http.d.ts +0 -16
  53. package/dist/otel/http.d.ts.map +0 -1
  54. package/dist/otel/logger.d.ts +0 -36
  55. package/dist/otel/logger.d.ts.map +0 -1
  56. package/dist/otel/otel.d.ts +0 -58
  57. package/dist/otel/otel.d.ts.map +0 -1
  58. package/dist/router.d.ts +0 -37
  59. package/dist/router.d.ts.map +0 -1
  60. package/src/_config.ts +0 -101
  61. package/src/_context.ts +0 -88
  62. package/src/_idle.ts +0 -26
  63. package/src/_server.ts +0 -278
  64. package/src/_services.ts +0 -175
  65. package/src/_util.ts +0 -63
  66. package/src/_waituntil.ts +0 -246
  67. package/src/agent.ts +0 -287
  68. package/src/app.ts +0 -31
  69. package/src/index.ts +0 -5
  70. package/src/logger/console.ts +0 -111
  71. package/src/logger/index.ts +0 -3
  72. package/src/logger/internal.ts +0 -165
  73. package/src/logger/logger.ts +0 -44
  74. package/src/logger/user.ts +0 -11
  75. package/src/logger/util.ts +0 -80
  76. package/src/otel/config.ts +0 -81
  77. package/src/otel/console.ts +0 -56
  78. package/src/otel/fetch.ts +0 -103
  79. package/src/otel/http.ts +0 -51
  80. package/src/otel/logger.ts +0 -238
  81. package/src/otel/otel.ts +0 -317
  82. package/src/router.ts +0 -303
package/src/router.ts DELETED
@@ -1,303 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @typescript-eslint/no-empty-object-type */
3
- /* eslint-disable @typescript-eslint/no-unused-vars */
4
- import { type Context, Hono, type Input, type MiddlewareHandler, type Schema } from 'hono';
5
- import { stream as honoStream, streamSSE as honoStreamSSE } from 'hono/streaming';
6
- import { upgradeWebSocket as honoUpgradeWebSocket } from 'hono/bun';
7
- import { hash, returnResponse } from './_util';
8
- import type { Env } from './app';
9
-
10
- type AgentHandler<E extends Env = Env, P extends string = string, I extends Input = {}> = (
11
- c: Context<E, P, I>
12
- ) => any | Promise<any>;
13
-
14
- type StreamHandler<E extends Env = Env, P extends string = string, I extends Input = {}> = (
15
- c: Context<E, P, I>
16
- ) => ReadableStream<any> | Promise<ReadableStream<any>>;
17
-
18
- interface WebSocketConnection {
19
- onOpen: (handler: (event: any) => void | Promise<void>) => void;
20
- onMessage: (handler: (event: any) => void | Promise<void>) => void;
21
- onClose: (handler: (event: any) => void | Promise<void>) => void;
22
- send: (data: string | ArrayBuffer | Uint8Array) => void;
23
- }
24
-
25
- type WebSocketHandler<E extends Env = Env, P extends string = string, I extends Input = {}> = (
26
- c: Context<E, P, I>
27
- ) => (ws: WebSocketConnection) => void | Promise<void>;
28
-
29
- type SSEHandler<E extends Env = Env, P extends string = string, I extends Input = {}> = (
30
- c: Context<E, P, I>
31
- ) => (stream: any) => void | Promise<void>;
32
-
33
- type HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options';
34
-
35
- type ExtendedHono<E extends Env = Env, S extends Schema = {}> = {
36
- [K in Exclude<keyof Hono<E, S>, HttpMethod>]: Hono<E, S>[K];
37
- } & {
38
- [K in HttpMethod]: {
39
- <P extends string = string>(path: P, handler: AgentHandler<E, P>): Hono<E, S>;
40
- <P extends string = string, I extends Input = {}>(
41
- path: P,
42
- middleware: MiddlewareHandler<E, P, I>,
43
- handler: AgentHandler<E, P, I>
44
- ): Hono<E, S>;
45
- <P extends string = string, I extends Input = {}>(
46
- path: P,
47
- middleware: MiddlewareHandler<E, P, I>
48
- ): Hono<E, S>;
49
- };
50
- } & {
51
- email(address: string, handler: AgentHandler): Hono<E, S>;
52
- sms(params: { number: string }, handler: AgentHandler): Hono<E, S>;
53
- cron(schedule: string, handler: AgentHandler): Hono<E, S>;
54
- stream<P extends string = string>(path: P, handler: StreamHandler<E, P>): Hono<E, S>;
55
- stream<P extends string = string, I extends Input = {}>(
56
- path: P,
57
- middleware: MiddlewareHandler<E, P, I>,
58
- handler: StreamHandler<E, P, I>
59
- ): Hono<E, S>;
60
- websocket<P extends string = string>(path: P, handler: WebSocketHandler<E, P>): Hono<E, S>;
61
- websocket<P extends string = string, I extends Input = {}>(
62
- path: P,
63
- middleware: MiddlewareHandler<E, P, I>,
64
- handler: WebSocketHandler<E, P, I>
65
- ): Hono<E, S>;
66
- sse<P extends string = string>(path: P, handler: SSEHandler<E, P>): Hono<E, S>;
67
- sse<P extends string = string, I extends Input = {}>(
68
- path: P,
69
- middleware: MiddlewareHandler<E, P, I>,
70
- handler: SSEHandler<E, P, I>
71
- ): Hono<E, S>;
72
- };
73
-
74
- export const createRouter = <E extends Env = Env, S extends Schema = Schema>(): ExtendedHono<
75
- E,
76
- S
77
- > => {
78
- const router = new Hono<E, S>();
79
- // tslint:disable-next-line:no-any no-unused-variable
80
- // biome-ignore lint:no-any
81
- const _router = router as any;
82
-
83
- for (const method of ['get', 'put', 'post', 'delete', 'options', 'patch']) {
84
- const _originalInvoker = _router[method].bind(router);
85
- _router[method] = (path: string, ...args: any[]) => {
86
- if (args.length === 1) {
87
- const arg = args[0];
88
- // Check if it's a middleware (not our agent handler)
89
- if (typeof arg === 'function' && arg.length === 2) {
90
- // Middleware only: (path, middleware)
91
- return _originalInvoker(path, arg);
92
- }
93
- // 2-arg: (path, handler)
94
- const handler = arg;
95
- const wrapper = async (c: Context): Promise<Response> => {
96
- let result = handler(c);
97
- if (result instanceof Promise) result = await result;
98
- return returnResponse(c, result);
99
- };
100
- return _originalInvoker(path, wrapper);
101
- } else {
102
- // 3-arg: (path, middleware, handler)
103
- const middleware = args[0];
104
- const handler = args[1];
105
- const wrapper = async (c: Context): Promise<Response> => {
106
- let result = handler(c);
107
- if (result instanceof Promise) result = await result;
108
- return returnResponse(c, result);
109
- };
110
- return _originalInvoker(path, middleware, wrapper);
111
- }
112
- };
113
- }
114
-
115
- // shim in special routes
116
- _router.email = (address: string, handler: AgentHandler) => {
117
- const id = hash(address);
118
- const path = `/email/${id}`;
119
- // registerEmailHandler(address)
120
- const wrapper = async (c: Context): Promise<Response> => {
121
- let result = handler(c);
122
- if (result instanceof Promise) result = await result;
123
- return returnResponse(c, result);
124
- };
125
- return router.post(path, wrapper);
126
- };
127
-
128
- _router.sms = ({ number }: { number: string }, handler: AgentHandler) => {
129
- const id = hash(number);
130
- const path = `/sms/${id}`;
131
- // registerSMSHandler(number)
132
- const wrapper = async (c: Context): Promise<Response> => {
133
- let result = handler(c);
134
- if (result instanceof Promise) result = await result;
135
- return returnResponse(c, result);
136
- };
137
- return router.post(path, wrapper);
138
- };
139
-
140
- _router.cron = (schedule: string, handler: AgentHandler) => {
141
- const id = hash(schedule);
142
- const path = `/cron/${id}`;
143
- // registerCronHandler(schedule)
144
- const wrapper = async (c: Context): Promise<Response> => {
145
- let result = handler(c);
146
- if (result instanceof Promise) result = await result;
147
- return returnResponse(c, result);
148
- };
149
- return router.post(path, wrapper);
150
- };
151
-
152
- _router.stream = (path: string, ...args: any[]) => {
153
- let middleware: MiddlewareHandler | undefined;
154
- let handler: StreamHandler;
155
-
156
- if (args.length === 1) {
157
- handler = args[0];
158
- } else {
159
- middleware = args[0];
160
- handler = args[1];
161
- }
162
-
163
- const wrapper = (c: Context) => {
164
- return honoStream(c, async (s: any) => {
165
- try {
166
- let streamResult = handler(c);
167
- if (streamResult instanceof Promise) streamResult = await streamResult;
168
- await s.pipe(streamResult);
169
- } catch (err) {
170
- console.error('Stream error:', err);
171
- throw err;
172
- }
173
- });
174
- };
175
-
176
- if (middleware) {
177
- return router.get(path, middleware, wrapper);
178
- } else {
179
- return router.get(path, wrapper);
180
- }
181
- };
182
-
183
- _router.websocket = (path: string, ...args: any[]) => {
184
- let middleware: MiddlewareHandler | undefined;
185
- let handler: WebSocketHandler;
186
-
187
- if (args.length === 1) {
188
- handler = args[0];
189
- } else {
190
- middleware = args[0];
191
- handler = args[1];
192
- }
193
-
194
- const wrapper = honoUpgradeWebSocket((c: Context) => {
195
- let openHandler: ((event: any) => void | Promise<void>) | undefined;
196
- let messageHandler: ((event: any) => void | Promise<void>) | undefined;
197
- let closeHandler: ((event: any) => void | Promise<void>) | undefined;
198
- let initialized = false;
199
-
200
- const wsConnection: WebSocketConnection = {
201
- onOpen: (h) => {
202
- openHandler = h;
203
- },
204
- onMessage: (h) => {
205
- messageHandler = h;
206
- },
207
- onClose: (h) => {
208
- closeHandler = h;
209
- },
210
- send: (_data: string | ArrayBuffer | Uint8Array) => {
211
- // This will be bound to the actual ws in the handlers
212
- },
213
- };
214
-
215
- const setupResult = handler(c);
216
- const setupFn = typeof setupResult === 'function' ? setupResult : null;
217
-
218
- return {
219
- onOpen: async (event: any, ws: any) => {
220
- if (!initialized && setupFn) {
221
- wsConnection.send = (data) => ws.send(data);
222
- const result = setupFn(wsConnection);
223
- if (result instanceof Promise) await result;
224
- initialized = true;
225
- }
226
- if (openHandler) {
227
- await openHandler(event);
228
- }
229
- },
230
- onMessage: async (event: any, ws: any) => {
231
- if (!initialized && setupFn) {
232
- wsConnection.send = (data) => ws.send(data);
233
- const result = setupFn(wsConnection);
234
- if (result instanceof Promise) await result;
235
- initialized = true;
236
- }
237
- if (messageHandler) {
238
- await messageHandler(event);
239
- }
240
- },
241
- onClose: async (event: any, _ws: any) => {
242
- if (closeHandler) {
243
- await closeHandler(event);
244
- }
245
- },
246
- };
247
- });
248
-
249
- if (middleware) {
250
- return router.get(path, middleware, wrapper);
251
- } else {
252
- return router.get(path, wrapper);
253
- }
254
- };
255
-
256
- _router.sse = (path: string, ...args: any[]) => {
257
- let middleware: MiddlewareHandler | undefined;
258
- let handler: SSEHandler;
259
-
260
- if (args.length === 1) {
261
- handler = args[0];
262
- } else {
263
- middleware = args[0];
264
- handler = args[1];
265
- }
266
-
267
- const wrapper = (c: Context) => {
268
- return honoStreamSSE(c, async (stream: any) => {
269
- // Wrap the stream to intercept write() calls
270
- const wrappedStream = {
271
- ...stream,
272
- write: async (data: any) => {
273
- // Convert simple write to writeSSE format
274
- if (
275
- typeof data === 'string' ||
276
- typeof data === 'number' ||
277
- typeof data === 'boolean'
278
- ) {
279
- return stream.writeSSE({ data: String(data) });
280
- } else if (typeof data === 'object' && data !== null) {
281
- // If it's already an SSE message object, pass it through
282
- return stream.writeSSE(data);
283
- }
284
- return stream.writeSSE({ data: String(data) });
285
- },
286
- writeSSE: stream.writeSSE.bind(stream),
287
- onAbort: stream.onAbort.bind(stream),
288
- close: stream.close?.bind(stream),
289
- };
290
-
291
- await handler(c)(wrappedStream);
292
- });
293
- };
294
-
295
- if (middleware) {
296
- return router.get(path, middleware, wrapper);
297
- } else {
298
- return router.get(path, wrapper);
299
- }
300
- };
301
-
302
- return router as unknown as ExtendedHono<E, S>;
303
- };