@agentuity/runtime 0.0.51 → 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.
- package/dist/_config.js +99 -0
- package/dist/_config.js.map +1 -0
- package/dist/_context.js +82 -0
- package/dist/_context.js.map +1 -0
- package/dist/_idle.js +24 -0
- package/dist/_idle.js.map +1 -0
- package/dist/_server.js +489 -0
- package/dist/_server.js.map +1 -0
- package/dist/_services.js +258 -0
- package/dist/_services.js.map +1 -0
- package/dist/_tokens.js +98 -0
- package/dist/_tokens.js.map +1 -0
- package/dist/_util.js +54 -0
- package/dist/_util.js.map +1 -0
- package/dist/_waituntil.js +87 -0
- package/dist/_waituntil.js.map +1 -0
- package/dist/agent.js +507 -0
- package/dist/agent.js.map +1 -0
- package/dist/app.d.ts +6 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +72 -0
- package/dist/app.js.map +1 -0
- package/dist/eval.js +2 -0
- package/dist/eval.js.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/io/email.js +154 -0
- package/dist/io/email.js.map +1 -0
- package/dist/logger/console.js +274 -0
- package/dist/logger/console.js.map +1 -0
- package/dist/logger/index.js +3 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/internal.js +133 -0
- package/dist/logger/internal.js.map +1 -0
- package/dist/logger/logger.js +2 -0
- package/dist/logger/logger.js.map +1 -0
- package/dist/logger/user.js +7 -0
- package/dist/logger/user.js.map +1 -0
- package/dist/logger/util.js +77 -0
- package/dist/logger/util.js.map +1 -0
- package/dist/otel/config.js +23 -0
- package/dist/otel/config.js.map +1 -0
- package/dist/otel/console.js +52 -0
- package/dist/otel/console.js.map +1 -0
- package/dist/otel/exporters/index.js +4 -0
- package/dist/otel/exporters/index.js.map +1 -0
- package/dist/otel/exporters/jsonl-log-exporter.js +103 -0
- package/dist/otel/exporters/jsonl-log-exporter.js.map +1 -0
- package/dist/otel/exporters/jsonl-metric-exporter.js +104 -0
- package/dist/otel/exporters/jsonl-metric-exporter.js.map +1 -0
- package/dist/otel/exporters/jsonl-trace-exporter.js +111 -0
- package/dist/otel/exporters/jsonl-trace-exporter.js.map +1 -0
- package/dist/otel/fetch.js +81 -0
- package/dist/otel/fetch.js.map +1 -0
- package/dist/otel/http.js +44 -0
- package/dist/otel/http.js.map +1 -0
- package/dist/otel/logger.js +278 -0
- package/dist/otel/logger.js.map +1 -0
- package/dist/otel/otel.js +233 -0
- package/dist/otel/otel.js.map +1 -0
- package/dist/router.js +350 -0
- package/dist/router.js.map +1 -0
- package/dist/services/evalrun/composite.js +26 -0
- package/dist/services/evalrun/composite.js.map +1 -0
- package/dist/services/evalrun/http.js +74 -0
- package/dist/services/evalrun/http.js.map +1 -0
- package/dist/services/evalrun/index.js +5 -0
- package/dist/services/evalrun/index.js.map +1 -0
- package/dist/services/evalrun/json.js +38 -0
- package/dist/services/evalrun/json.js.map +1 -0
- package/dist/services/evalrun/local.js +22 -0
- package/dist/services/evalrun/local.js.map +1 -0
- package/dist/services/local/_db.js +144 -0
- package/dist/services/local/_db.js.map +1 -0
- package/dist/services/local/_router.js +60 -0
- package/dist/services/local/_router.js.map +1 -0
- package/dist/services/local/_util.js +42 -0
- package/dist/services/local/_util.js.map +1 -0
- package/dist/services/local/index.js +8 -0
- package/dist/services/local/index.js.map +1 -0
- package/dist/services/local/keyvalue.js +114 -0
- package/dist/services/local/keyvalue.js.map +1 -0
- package/dist/services/local/objectstore.js +117 -0
- package/dist/services/local/objectstore.js.map +1 -0
- package/dist/services/local/stream.js +218 -0
- package/dist/services/local/stream.js.map +1 -0
- package/dist/services/local/vector.js +183 -0
- package/dist/services/local/vector.js.map +1 -0
- package/dist/services/session/composite.js +26 -0
- package/dist/services/session/composite.js.map +1 -0
- package/dist/services/session/http.js +42 -0
- package/dist/services/session/http.js.map +1 -0
- package/dist/services/session/index.js +5 -0
- package/dist/services/session/index.js.map +1 -0
- package/dist/services/session/json.js +35 -0
- package/dist/services/session/json.js.map +1 -0
- package/dist/services/session/local.js +22 -0
- package/dist/services/session/local.js.map +1 -0
- package/dist/session.js +199 -0
- package/dist/session.js.map +1 -0
- package/dist/workbench.js +38 -0
- package/dist/workbench.js.map +1 -0
- package/package.json +5 -5
- package/src/app.ts +6 -1
package/dist/session.js
ADDED
|
@@ -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.
|
|
3
|
+
"version": "0.0.52",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Agentuity employees and contributors",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"main": "./
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
9
|
"exports": {
|
|
10
10
|
".": {
|
|
11
|
-
"import": "./
|
|
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.
|
|
29
|
-
"@agentuity/server": "0.0.
|
|
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",
|
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'];
|