@agentuity/runtime 0.0.50 → 0.0.52

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 (104) hide show
  1. package/dist/_config.js +99 -0
  2. package/dist/_config.js.map +1 -0
  3. package/dist/_context.js +82 -0
  4. package/dist/_context.js.map +1 -0
  5. package/dist/_idle.js +24 -0
  6. package/dist/_idle.js.map +1 -0
  7. package/dist/_server.js +489 -0
  8. package/dist/_server.js.map +1 -0
  9. package/dist/_services.js +258 -0
  10. package/dist/_services.js.map +1 -0
  11. package/dist/_tokens.js +98 -0
  12. package/dist/_tokens.js.map +1 -0
  13. package/dist/_util.js +54 -0
  14. package/dist/_util.js.map +1 -0
  15. package/dist/_waituntil.js +87 -0
  16. package/dist/_waituntil.js.map +1 -0
  17. package/dist/agent.js +507 -0
  18. package/dist/agent.js.map +1 -0
  19. package/dist/app.d.ts +6 -1
  20. package/dist/app.d.ts.map +1 -1
  21. package/dist/app.js +72 -0
  22. package/dist/app.js.map +1 -0
  23. package/dist/eval.js +2 -0
  24. package/dist/eval.js.map +1 -0
  25. package/dist/index.js +11 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/io/email.js +154 -0
  28. package/dist/io/email.js.map +1 -0
  29. package/dist/logger/console.js +274 -0
  30. package/dist/logger/console.js.map +1 -0
  31. package/dist/logger/index.js +3 -0
  32. package/dist/logger/index.js.map +1 -0
  33. package/dist/logger/internal.js +133 -0
  34. package/dist/logger/internal.js.map +1 -0
  35. package/dist/logger/logger.js +2 -0
  36. package/dist/logger/logger.js.map +1 -0
  37. package/dist/logger/user.js +7 -0
  38. package/dist/logger/user.js.map +1 -0
  39. package/dist/logger/util.js +77 -0
  40. package/dist/logger/util.js.map +1 -0
  41. package/dist/otel/config.js +23 -0
  42. package/dist/otel/config.js.map +1 -0
  43. package/dist/otel/console.js +52 -0
  44. package/dist/otel/console.js.map +1 -0
  45. package/dist/otel/exporters/index.js +4 -0
  46. package/dist/otel/exporters/index.js.map +1 -0
  47. package/dist/otel/exporters/jsonl-log-exporter.js +103 -0
  48. package/dist/otel/exporters/jsonl-log-exporter.js.map +1 -0
  49. package/dist/otel/exporters/jsonl-metric-exporter.js +104 -0
  50. package/dist/otel/exporters/jsonl-metric-exporter.js.map +1 -0
  51. package/dist/otel/exporters/jsonl-trace-exporter.js +111 -0
  52. package/dist/otel/exporters/jsonl-trace-exporter.js.map +1 -0
  53. package/dist/otel/fetch.js +81 -0
  54. package/dist/otel/fetch.js.map +1 -0
  55. package/dist/otel/http.js +44 -0
  56. package/dist/otel/http.js.map +1 -0
  57. package/dist/otel/logger.js +278 -0
  58. package/dist/otel/logger.js.map +1 -0
  59. package/dist/otel/otel.js +233 -0
  60. package/dist/otel/otel.js.map +1 -0
  61. package/dist/router.js +350 -0
  62. package/dist/router.js.map +1 -0
  63. package/dist/services/evalrun/composite.js +26 -0
  64. package/dist/services/evalrun/composite.js.map +1 -0
  65. package/dist/services/evalrun/http.js +74 -0
  66. package/dist/services/evalrun/http.js.map +1 -0
  67. package/dist/services/evalrun/index.js +5 -0
  68. package/dist/services/evalrun/index.js.map +1 -0
  69. package/dist/services/evalrun/json.js +38 -0
  70. package/dist/services/evalrun/json.js.map +1 -0
  71. package/dist/services/evalrun/local.js +22 -0
  72. package/dist/services/evalrun/local.js.map +1 -0
  73. package/dist/services/local/_db.js +144 -0
  74. package/dist/services/local/_db.js.map +1 -0
  75. package/dist/services/local/_router.js +60 -0
  76. package/dist/services/local/_router.js.map +1 -0
  77. package/dist/services/local/_util.js +42 -0
  78. package/dist/services/local/_util.js.map +1 -0
  79. package/dist/services/local/index.js +8 -0
  80. package/dist/services/local/index.js.map +1 -0
  81. package/dist/services/local/keyvalue.js +114 -0
  82. package/dist/services/local/keyvalue.js.map +1 -0
  83. package/dist/services/local/objectstore.js +117 -0
  84. package/dist/services/local/objectstore.js.map +1 -0
  85. package/dist/services/local/stream.js +218 -0
  86. package/dist/services/local/stream.js.map +1 -0
  87. package/dist/services/local/vector.js +183 -0
  88. package/dist/services/local/vector.js.map +1 -0
  89. package/dist/services/session/composite.js +26 -0
  90. package/dist/services/session/composite.js.map +1 -0
  91. package/dist/services/session/http.js +42 -0
  92. package/dist/services/session/http.js.map +1 -0
  93. package/dist/services/session/index.js +5 -0
  94. package/dist/services/session/index.js.map +1 -0
  95. package/dist/services/session/json.js +35 -0
  96. package/dist/services/session/json.js.map +1 -0
  97. package/dist/services/session/local.js +22 -0
  98. package/dist/services/session/local.js.map +1 -0
  99. package/dist/session.js +199 -0
  100. package/dist/session.js.map +1 -0
  101. package/dist/workbench.js +38 -0
  102. package/dist/workbench.js.map +1 -0
  103. package/package.json +7 -7
  104. package/src/app.ts +6 -1
@@ -0,0 +1,199 @@
1
+ import { getCookie, setCookie } from 'hono/cookie';
2
+ import { fireEvent } from './app';
3
+ // WeakMap to store event listeners for Thread and Session instances
4
+ const threadEventListeners = new WeakMap();
5
+ const sessionEventListeners = new WeakMap();
6
+ // Helper to fire thread event listeners
7
+ async function fireThreadEvent(thread, eventName) {
8
+ const listeners = threadEventListeners.get(thread);
9
+ if (!listeners)
10
+ return;
11
+ const callbacks = listeners.get(eventName);
12
+ if (!callbacks || callbacks.size === 0)
13
+ return;
14
+ for (const callback of callbacks) {
15
+ await callback(eventName, thread);
16
+ }
17
+ }
18
+ // Helper to fire session event listeners
19
+ async function fireSessionEvent(session, eventName) {
20
+ const listeners = sessionEventListeners.get(session);
21
+ if (!listeners)
22
+ return;
23
+ const callbacks = listeners.get(eventName);
24
+ if (!callbacks || callbacks.size === 0)
25
+ return;
26
+ for (const callback of callbacks) {
27
+ await callback(eventName, session);
28
+ }
29
+ }
30
+ // Generate thread or session ID
31
+ export function generateId(prefix) {
32
+ const arr = new Uint8Array(16);
33
+ crypto.getRandomValues(arr);
34
+ return `${prefix}${prefix ? '_' : ''}${arr.toHex()}`;
35
+ }
36
+ export class DefaultThread {
37
+ #lastUsed;
38
+ id;
39
+ state;
40
+ provider;
41
+ constructor(provider, id) {
42
+ this.provider = provider;
43
+ this.id = id;
44
+ this.state = new Map();
45
+ this.#lastUsed = Date.now();
46
+ }
47
+ addEventListener(eventName, callback) {
48
+ let listeners = threadEventListeners.get(this);
49
+ if (!listeners) {
50
+ listeners = new Map();
51
+ threadEventListeners.set(this, listeners);
52
+ }
53
+ let callbacks = listeners.get(eventName);
54
+ if (!callbacks) {
55
+ callbacks = new Set();
56
+ listeners.set(eventName, callbacks);
57
+ }
58
+ callbacks.add(callback);
59
+ }
60
+ removeEventListener(eventName, callback) {
61
+ const listeners = threadEventListeners.get(this);
62
+ if (!listeners)
63
+ return;
64
+ const callbacks = listeners.get(eventName);
65
+ if (!callbacks)
66
+ return;
67
+ callbacks.delete(callback);
68
+ }
69
+ async fireEvent(eventName) {
70
+ await fireThreadEvent(this, eventName);
71
+ }
72
+ async destroy() {
73
+ this.provider.destroy(this);
74
+ }
75
+ touch() {
76
+ this.#lastUsed = Date.now();
77
+ }
78
+ expired() {
79
+ return Date.now() - this.#lastUsed >= 3.6e6; // 1 hour
80
+ }
81
+ }
82
+ export class DefaultSession {
83
+ id;
84
+ thread;
85
+ state;
86
+ constructor(thread, id) {
87
+ this.id = id;
88
+ this.thread = thread;
89
+ this.state = new Map();
90
+ }
91
+ addEventListener(eventName, callback) {
92
+ let listeners = sessionEventListeners.get(this);
93
+ if (!listeners) {
94
+ listeners = new Map();
95
+ sessionEventListeners.set(this, listeners);
96
+ }
97
+ let callbacks = listeners.get(eventName);
98
+ if (!callbacks) {
99
+ callbacks = new Set();
100
+ listeners.set(eventName, callbacks);
101
+ }
102
+ callbacks.add(callback);
103
+ }
104
+ removeEventListener(eventName, callback) {
105
+ const listeners = sessionEventListeners.get(this);
106
+ if (!listeners)
107
+ return;
108
+ const callbacks = listeners.get(eventName);
109
+ if (!callbacks)
110
+ return;
111
+ callbacks.delete(callback);
112
+ }
113
+ async fireEvent(eventName) {
114
+ await fireSessionEvent(this, eventName);
115
+ }
116
+ }
117
+ export class DefaultThreadProvider {
118
+ threads = new Map();
119
+ async initialize() {
120
+ setInterval(() => {
121
+ for (const [, thread] of this.threads) {
122
+ if (thread.expired()) {
123
+ void (async () => {
124
+ try {
125
+ await this.destroy(thread);
126
+ }
127
+ catch (err) {
128
+ console.error('Failed to destroy expired thread', err);
129
+ }
130
+ })();
131
+ }
132
+ }
133
+ }, 60_000).unref();
134
+ }
135
+ async restore(ctx) {
136
+ const cookie = getCookie(ctx);
137
+ let threadId;
138
+ if (cookie.atid?.startsWith('thrd_')) {
139
+ threadId = cookie.atid;
140
+ }
141
+ threadId = threadId || generateId('thrd');
142
+ if (threadId) {
143
+ setCookie(ctx, 'atid', threadId);
144
+ const existing = this.threads.get(threadId);
145
+ if (existing) {
146
+ return existing;
147
+ }
148
+ }
149
+ const thread = new DefaultThread(this, threadId);
150
+ this.threads.set(thread.id, thread);
151
+ await fireEvent('thread.created', thread);
152
+ return thread;
153
+ }
154
+ async save(thread) {
155
+ if (thread instanceof DefaultThread) {
156
+ thread.touch();
157
+ }
158
+ }
159
+ async destroy(thread) {
160
+ if (thread instanceof DefaultThread) {
161
+ try {
162
+ await thread.fireEvent('destroyed');
163
+ await fireEvent('thread.destroyed', thread);
164
+ }
165
+ finally {
166
+ this.threads.delete(thread.id);
167
+ threadEventListeners.delete(thread);
168
+ }
169
+ }
170
+ }
171
+ }
172
+ export class DefaultSessionProvider {
173
+ sessions = new Map();
174
+ async initialize() {
175
+ // No initialization needed for in-memory provider
176
+ }
177
+ async restore(thread, sessionId) {
178
+ let session = this.sessions.get(sessionId);
179
+ if (!session) {
180
+ session = new DefaultSession(thread, sessionId);
181
+ this.sessions.set(sessionId, session);
182
+ await fireEvent('session.started', session);
183
+ }
184
+ return session;
185
+ }
186
+ async save(session) {
187
+ if (session instanceof DefaultSession) {
188
+ try {
189
+ await session.fireEvent('completed');
190
+ await fireEvent('session.completed', session);
191
+ }
192
+ finally {
193
+ this.sessions.delete(session.id);
194
+ sessionEventListeners.delete(session);
195
+ }
196
+ }
197
+ }
198
+ }
199
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { z } from 'zod';
2
+ import { timingSafeEqual } from 'node:crypto';
3
+ import { getAgents } from './agent';
4
+ export const createWorkbenchMetadataRoute = () => {
5
+ const authHeader = process.env.AGENTUITY_WORKBENCH_APIKEY
6
+ ? `Bearer ${process.env.AGENTUITY_WORKBENCH_APIKEY}`
7
+ : undefined;
8
+ const agents = getAgents();
9
+ return async (ctx) => {
10
+ if (authHeader) {
11
+ try {
12
+ const authValue = ctx.req.header('Authorization');
13
+ if (!authValue ||
14
+ !timingSafeEqual(Buffer.from(authValue, 'utf-8'), Buffer.from(authHeader, 'utf-8'))) {
15
+ return ctx.text('Unauthorized', { status: 401 });
16
+ }
17
+ }
18
+ catch {
19
+ // timing safe equals will throw if the input/output lengths are mismatched
20
+ // so we treat all exceptions as invalid
21
+ return ctx.text('Unauthorized', { status: 401 });
22
+ }
23
+ }
24
+ const schemas = { agents: {} };
25
+ // TODO: this is going to only work for zod schema for now. need a way to handle others
26
+ for (const [, agent] of agents) {
27
+ schemas.agents[agent.metadata.name] = {
28
+ schema: {
29
+ input: agent.inputSchema ? z.toJSONSchema(agent.inputSchema) : undefined,
30
+ output: agent.outputSchema ? z.toJSONSchema(agent.outputSchema) : undefined,
31
+ },
32
+ metadata: agent.metadata,
33
+ };
34
+ }
35
+ return ctx.json(schemas);
36
+ };
37
+ };
38
+ //# sourceMappingURL=workbench.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench.js","sourceRoot":"","sources":["../src/workbench.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAY,EAAE;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B;QACxD,CAAC,CAAC,UAAU,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE;QACpD,CAAC,CAAC,SAAS,CAAC;IACb,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE;QACpB,IAAI,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC;gBACJ,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBAClD,IACC,CAAC,SAAS;oBACV,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAClF,CAAC;oBACF,OAAO,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBAClD,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,2EAA2E;gBAC3E,wCAAwC;gBACxC,OAAO,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAClD,CAAC;QACF,CAAC;QACD,MAAM,OAAO,GAAwC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACpE,uFAAuF;QACvF,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;gBACrC,MAAM,EAAE;oBACP,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;oBACxE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC3E;gBACD,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACxB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC;AACH,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@agentuity/runtime",
3
- "version": "0.0.50",
3
+ "version": "0.0.52",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Agentuity employees and contributors",
6
6
  "type": "module",
7
- "main": "./src/index.ts",
7
+ "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
9
  "exports": {
10
10
  ".": {
11
- "import": "./src/index.ts",
11
+ "import": "./dist/index.js",
12
12
  "types": "./dist/index.d.ts"
13
13
  }
14
14
  },
@@ -25,8 +25,8 @@
25
25
  "prepublishOnly": "bun run clean && bun run build"
26
26
  },
27
27
  "dependencies": {
28
- "@agentuity/core": "0.0.50",
29
- "@agentuity/server": "0.0.50",
28
+ "@agentuity/core": "0.0.52",
29
+ "@agentuity/server": "0.0.52",
30
30
  "@opentelemetry/api": "^1.9.0",
31
31
  "@opentelemetry/api-logs": "^0.207.0",
32
32
  "@opentelemetry/auto-instrumentations-node": "^0.66.0",
@@ -44,7 +44,8 @@
44
44
  "@opentelemetry/semantic-conventions": "^1.37.0",
45
45
  "@traceloop/ai-semantic-conventions": "0.19.0",
46
46
  "@traceloop/node-server-sdk": "^0.19.1",
47
- "mailparser": "^3.7.1"
47
+ "mailparser": "^3.7.1",
48
+ "@types/mailparser": "^3.4.6"
48
49
  },
49
50
  "peerDependencies": {
50
51
  "hono": "^4.10.3"
@@ -52,7 +53,6 @@
52
53
  "devDependencies": {
53
54
  "@types/bun": "latest",
54
55
  "bun-types": "latest",
55
- "@types/mailparser": "^3.4.6",
56
56
  "@types/react": "^19.2.2",
57
57
  "@types/react-dom": "^19.2.2",
58
58
  "react": "^19.2.0",
package/src/app.ts CHANGED
@@ -15,7 +15,7 @@ import type {
15
15
  SessionStartEvent,
16
16
  } from '@agentuity/core';
17
17
  import type { Email } from './io/email';
18
- import type { Agent, AgentContext } from './agent';
18
+ import type { Agent, AgentContext, AgentRegistry } from './agent';
19
19
  import type { ThreadProvider, SessionProvider, Session, Thread } from './session';
20
20
  import type WaitUntilHandler from './_waituntil';
21
21
 
@@ -77,6 +77,11 @@ export interface Variables {
77
77
  sessionId: string;
78
78
  thread: Thread;
79
79
  session: Session;
80
+ agent: AgentRegistry;
81
+ kv: KeyValueStorage;
82
+ objectstore: ObjectStorage;
83
+ stream: StreamStorage;
84
+ vector: VectorStorage;
80
85
  }
81
86
 
82
87
  export type TriggerType = SessionStartEvent['trigger'];