@agentuity/runtime 0.0.100 → 0.0.102
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 +34 -212
- package/dist/_metadata.d.ts +107 -0
- package/dist/_metadata.d.ts.map +1 -0
- package/dist/_metadata.js +179 -0
- package/dist/_metadata.js.map +1 -0
- package/dist/_process-protection.d.ts.map +1 -1
- package/dist/_process-protection.js +4 -0
- package/dist/_process-protection.js.map +1 -1
- package/dist/_services.d.ts.map +1 -1
- package/dist/_services.js +18 -17
- package/dist/_services.js.map +1 -1
- package/dist/_standalone.d.ts.map +1 -1
- package/dist/_standalone.js +17 -0
- package/dist/_standalone.js.map +1 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +53 -12
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts +61 -10
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js.map +1 -1
- package/dist/devmode.d.ts.map +1 -1
- package/dist/devmode.js +13 -5
- package/dist/devmode.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware.d.ts +61 -5
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +192 -25
- package/dist/middleware.js.map +1 -1
- package/dist/services/evalrun/http.d.ts.map +1 -1
- package/dist/services/evalrun/http.js +14 -4
- package/dist/services/evalrun/http.js.map +1 -1
- package/dist/services/local/vector.d.ts +5 -1
- package/dist/services/local/vector.d.ts.map +1 -1
- package/dist/services/local/vector.js +112 -0
- package/dist/services/local/vector.js.map +1 -1
- package/dist/services/session/http.d.ts.map +1 -1
- package/dist/services/session/http.js +7 -0
- package/dist/services/session/http.js.map +1 -1
- package/dist/services/session/local.d.ts +2 -2
- package/dist/services/session/local.d.ts.map +1 -1
- package/dist/services/session/local.js +5 -4
- package/dist/services/session/local.js.map +1 -1
- package/dist/session.d.ts +30 -4
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +90 -13
- package/dist/session.js.map +1 -1
- package/dist/workbench.d.ts.map +1 -1
- package/dist/workbench.js +13 -20
- package/dist/workbench.js.map +1 -1
- package/package.json +5 -5
- package/src/_metadata.ts +307 -0
- package/src/_process-protection.ts +6 -0
- package/src/_services.ts +23 -21
- package/src/_standalone.ts +22 -0
- package/src/agent.ts +63 -12
- package/src/app.ts +65 -9
- package/src/devmode.ts +16 -5
- package/src/index.ts +12 -2
- package/src/middleware.ts +221 -29
- package/src/services/evalrun/http.ts +15 -4
- package/src/services/local/vector.ts +160 -0
- package/src/services/session/http.ts +11 -0
- package/src/services/session/local.ts +9 -4
- package/src/session.ts +142 -13
- package/src/workbench.ts +13 -26
package/AGENTS.md
CHANGED
|
@@ -2,99 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
## Package Overview
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Hono-based server runtime for Agentuity applications, optimized for Bun with OpenTelemetry observability.
|
|
6
6
|
|
|
7
7
|
## Commands
|
|
8
8
|
|
|
9
|
-
- **Build**: `bun run build`
|
|
10
|
-
- **Typecheck**: `bun run typecheck`
|
|
11
|
-
- **
|
|
9
|
+
- **Build**: `bun run build`
|
|
10
|
+
- **Typecheck**: `bun run typecheck`
|
|
11
|
+
- **Test**: `bun test`
|
|
12
|
+
- **Clean**: `bun run clean`
|
|
12
13
|
|
|
13
14
|
## Architecture
|
|
14
15
|
|
|
15
|
-
- **Runtime**: Bun
|
|
16
|
-
- **Framework**: Hono
|
|
17
|
-
- **Build target**: Bun runtime
|
|
16
|
+
- **Runtime**: Bun (required for native WebSocket)
|
|
17
|
+
- **Framework**: Hono
|
|
18
18
|
- **Dependencies**: `@agentuity/core`, Hono, OpenTelemetry
|
|
19
|
-
- **
|
|
20
|
-
- **WebSocket**: Native Bun WebSocket via `hono/bun` (production and development)
|
|
21
|
-
- **Dev Mode**: Integrates with Vite asset server for HMR (proxied through Bun server)
|
|
19
|
+
- **Features**: WebSocket, SSE, streaming, storage abstractions (kv, vector, stream)
|
|
22
20
|
|
|
23
|
-
##
|
|
21
|
+
## Code Conventions
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
├── agent.ts # Agent types and createAgent()
|
|
30
|
-
├── router.ts # createRouter() with extended methods
|
|
31
|
-
├── logger.ts # Logging utilities
|
|
32
|
-
├── _server.ts # Internal server creation
|
|
33
|
-
├── _context.ts # Internal context management
|
|
34
|
-
└── _util.ts # Internal utilities
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Code Style
|
|
38
|
-
|
|
39
|
-
- **Hono patterns** - Follow Hono's context-based API design
|
|
40
|
-
- **Type safety** - Extensive use of TypeScript generics
|
|
41
|
-
- **Middleware pattern** - Support Hono middleware
|
|
42
|
-
- **Async handlers** - All handlers can be async
|
|
43
|
-
- **OpenTelemetry** - Use tracer/logger from context
|
|
44
|
-
|
|
45
|
-
## Important Conventions
|
|
46
|
-
|
|
47
|
-
- **Agent context** - Every agent handler receives `AgentContext` as first parameter
|
|
48
|
-
- **Schema validation** - Support StandardSchemaV1 (works with Zod, Valibot, etc.)
|
|
49
|
-
- **Route validation** - Use `agent.validator()` for automatic input validation with full type safety
|
|
50
|
-
- **Streaming support** - Agents can return ReadableStream for streaming responses
|
|
51
|
-
- **WebSocket support** - Use `router.websocket()` for WebSocket routes
|
|
52
|
-
- **SSE support** - Use `router.sse()` for Server-Sent Events
|
|
53
|
-
- **Session tracking** - Each request gets unique sessionId
|
|
54
|
-
- **Storage abstractions** - Provide kv, stream, vector interfaces
|
|
55
|
-
|
|
56
|
-
## Route Validation
|
|
23
|
+
- **Agent context**: Every handler receives `AgentContext` with logger, tracer, storage
|
|
24
|
+
- **Schema validation**: Use `agent.validator()` for automatic input validation
|
|
25
|
+
- **Observability**: Use `ctx.logger` not `console.log`
|
|
26
|
+
- **Type inference**: Let TypeScript infer handler types from schemas
|
|
57
27
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
```typescript
|
|
61
|
-
import { createRouter } from '@agentuity/runtime';
|
|
62
|
-
import myAgent from './my-agent';
|
|
63
|
-
|
|
64
|
-
const router = createRouter();
|
|
65
|
-
|
|
66
|
-
// Automatic validation using agent's input schema
|
|
67
|
-
router.post('/', myAgent.validator(), async (c) => {
|
|
68
|
-
const data = c.req.valid('json'); // Fully typed from agent schema!
|
|
69
|
-
const output = await myAgent.run(data);
|
|
70
|
-
return c.json(output);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
// Override with custom schema
|
|
74
|
-
router.post(
|
|
75
|
-
'/custom',
|
|
76
|
-
agent.validator({
|
|
77
|
-
input: z.object({ custom: z.string() }),
|
|
78
|
-
}),
|
|
79
|
-
async (c) => {
|
|
80
|
-
const data = c.req.valid('json'); // Typed as { custom: string }
|
|
81
|
-
return c.json(data);
|
|
82
|
-
}
|
|
83
|
-
);
|
|
84
|
-
|
|
85
|
-
// GET routes don't need validation
|
|
86
|
-
router.get('/', async (c) => {
|
|
87
|
-
return c.json({ hello: 'world' });
|
|
88
|
-
});
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
The validator supports three overload signatures:
|
|
92
|
-
|
|
93
|
-
- `agent.validator()` - Uses agent's input/output schemas
|
|
94
|
-
- `agent.validator({ output: schema })` - Output-only validation (GET-compatible)
|
|
95
|
-
- `agent.validator({ input: schema, output?: schema })` - Custom input/output schemas
|
|
96
|
-
|
|
97
|
-
## Agent Definition Pattern
|
|
28
|
+
## Agent Pattern
|
|
98
29
|
|
|
99
30
|
```typescript
|
|
100
31
|
import { createAgent } from '@agentuity/runtime';
|
|
@@ -103,150 +34,41 @@ import { s } from '@agentuity/schema';
|
|
|
103
34
|
export default createAgent('my-agent', {
|
|
104
35
|
description: 'What this agent does',
|
|
105
36
|
schema: {
|
|
106
|
-
input: s.object({
|
|
107
|
-
|
|
108
|
-
}),
|
|
109
|
-
output: s.object({
|
|
110
|
-
/* ... */
|
|
111
|
-
}),
|
|
37
|
+
input: s.object({ name: s.string() }),
|
|
38
|
+
output: s.object({ id: s.string() }),
|
|
112
39
|
},
|
|
113
40
|
handler: async (ctx, input) => {
|
|
114
|
-
// ctx.logger, ctx.
|
|
115
|
-
return
|
|
41
|
+
// ctx.logger, ctx.kv, ctx.tracer available
|
|
42
|
+
return { id: `user-${input.name}` };
|
|
116
43
|
},
|
|
117
44
|
});
|
|
118
45
|
```
|
|
119
46
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
## Router Extensions
|
|
123
|
-
|
|
124
|
-
The `createRouter()` function returns an extended Hono instance with:
|
|
125
|
-
|
|
126
|
-
- **Standard HTTP methods**: `get`, `post`, `put`, `delete`, `patch`
|
|
127
|
-
- **Streaming**: `stream(path, handler)` - Returns ReadableStream
|
|
128
|
-
- **WebSocket**: `websocket(path, handler)` - WebSocket connections
|
|
129
|
-
- **SSE**: `sse(path, handler)` - Server-Sent Events
|
|
130
|
-
|
|
131
|
-
## AgentContext API
|
|
132
|
-
|
|
133
|
-
Every agent handler receives:
|
|
47
|
+
## Route Validation
|
|
134
48
|
|
|
135
49
|
```typescript
|
|
136
|
-
|
|
137
|
-
logger: Logger; // Structured logger
|
|
138
|
-
tracer: Tracer; // OpenTelemetry tracer
|
|
139
|
-
sessionId: string; // Unique session ID
|
|
140
|
-
kv: KeyValueStorage; // Key-value storage
|
|
141
|
-
stream: StreamStorage; // Stream storage
|
|
142
|
-
vector: VectorStorage; // Vector storage
|
|
143
|
-
state: Map<string, unknown>; // Request-scoped state
|
|
144
|
-
thread: Thread; // Thread information
|
|
145
|
-
session: Session; // Session information
|
|
146
|
-
config: TConfig; // Agent-specific config from setup
|
|
147
|
-
app: TAppState; // Application state from createApp
|
|
148
|
-
waitUntil: (promise) => void; // Background tasks
|
|
149
|
-
}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
## Observability
|
|
153
|
-
|
|
154
|
-
- **Logging**: Use `ctx.logger.info/warn/error()` not console.log
|
|
155
|
-
- **Tracing**: Create spans with `ctx.tracer.startSpan()`
|
|
156
|
-
- **Metrics**: Access via `c.var.meter` in Hono context
|
|
157
|
-
- **Environment**: Metrics/traces sent to OTLP endpoints
|
|
158
|
-
|
|
159
|
-
## Type Safety
|
|
160
|
-
|
|
161
|
-
**End-to-end type safety is a core feature of the runtime.** When you use `createAgent()` with schemas and `agent.validator()` in routes, TypeScript automatically infers correct types throughout your application.
|
|
162
|
-
|
|
163
|
-
### What IS Type-Safe ✅
|
|
164
|
-
|
|
165
|
-
1. **Route handler input types** - `c.req.valid('json')` is automatically typed from agent schema
|
|
166
|
-
2. **Agent handler types** - Both `ctx` and `input` parameters are fully typed
|
|
167
|
-
3. **Runtime validation** - Input/output validation happens automatically
|
|
168
|
-
4. **Schema overrides** - Custom schemas in `agent.validator({ input, output })` maintain type safety
|
|
169
|
-
5. **Multiple agents** - Each route maintains independent type safety
|
|
170
|
-
|
|
171
|
-
### Type Inference Best Practices
|
|
172
|
-
|
|
173
|
-
**CRITICAL:** Do NOT add type annotations to agent handler parameters - let TypeScript infer them:
|
|
50
|
+
const router = createRouter();
|
|
174
51
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
input: z.object({ name: z.string(), age: z.number() }),
|
|
180
|
-
output: z.object({ id: z.string() }),
|
|
181
|
-
},
|
|
182
|
-
handler: async (ctx, input) => {
|
|
183
|
-
// ctx is typed as AgentContext
|
|
184
|
-
// input is typed as { name: string, age: number }
|
|
185
|
-
return { id: `user-${input.name}` };
|
|
186
|
-
},
|
|
52
|
+
// Automatic validation from agent schema
|
|
53
|
+
router.post('/', myAgent.validator(), async (c) => {
|
|
54
|
+
const data = c.req.valid('json'); // Fully typed!
|
|
55
|
+
return c.json(await myAgent.run(data));
|
|
187
56
|
});
|
|
188
|
-
|
|
189
|
-
// ❌ WRONG: Explicit types defeat inference
|
|
190
|
-
handler: async (ctx: AgentContext, input: any) => { ... }
|
|
191
57
|
```
|
|
192
58
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
For best type inference with Hono, use method chaining:
|
|
196
|
-
|
|
197
|
-
```typescript
|
|
198
|
-
// ✅ RECOMMENDED: Method chaining preserves types
|
|
199
|
-
const app = new Hono()
|
|
200
|
-
.post('/users', userAgent.validator(), handler)
|
|
201
|
-
.get('/users/:id', userAgent.validator({ output: UserSchema }), handler);
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
### Testing Type Safety
|
|
205
|
-
|
|
206
|
-
**IMPORTANT:** Due to Hono's `testClient()` type inference limitations with method-chained apps, use `app.request()` for testing:
|
|
59
|
+
## Type Safety
|
|
207
60
|
|
|
208
|
-
|
|
209
|
-
// ✅ CORRECT: Use app.request() for testing
|
|
210
|
-
test('creates user', async () => {
|
|
211
|
-
const app = new Hono().post('/users', agent.validator(), async (c) => {
|
|
212
|
-
const data = c.req.valid('json'); // Fully typed!
|
|
213
|
-
return c.json({ id: `user-${data.name}` });
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
const res = await app.request('/users', {
|
|
217
|
-
method: 'POST',
|
|
218
|
-
headers: { 'Content-Type': 'application/json' },
|
|
219
|
-
body: JSON.stringify({ name: 'Alice', age: 30 }),
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
expect(res.status).toBe(200);
|
|
223
|
-
const result = await res.json();
|
|
224
|
-
expect(result.id).toBe('user-Alice');
|
|
225
|
-
});
|
|
61
|
+
**CRITICAL:** Do NOT add type annotations to handler parameters - let TypeScript infer them.
|
|
226
62
|
|
|
227
|
-
|
|
228
|
-
import { testClient } from 'hono/testing';
|
|
229
|
-
const client = testClient(app); // Returns unknown type
|
|
230
|
-
```
|
|
63
|
+
See [TYPE_SAFETY.md](TYPE_SAFETY.md) for detailed documentation.
|
|
231
64
|
|
|
232
|
-
|
|
65
|
+
## Testing
|
|
233
66
|
|
|
234
|
-
|
|
67
|
+
- Use `app.request()` for route testing (NOT `testClient()`)
|
|
68
|
+
- Mock contexts from `test/helpers/test-context.ts`
|
|
69
|
+
- Import from `../src/` in tests
|
|
235
70
|
|
|
236
|
-
##
|
|
71
|
+
## Publishing
|
|
237
72
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
- **Test imports**: Import from `../src/` not `../`
|
|
241
|
-
- **Mock contexts**: Use `TestAgentContext` from `test/helpers/test-context.ts`
|
|
242
|
-
- **Mock services**: Use mock storage interfaces (kv, stream, vector, etc.)
|
|
243
|
-
- **Route testing**: Use `app.request()` for testing routes (NOT `testClient()`)
|
|
244
|
-
- **Type verification**: Let TypeScript infer agent handler types - do NOT add type annotations
|
|
245
|
-
|
|
246
|
-
## Publishing Checklist
|
|
247
|
-
|
|
248
|
-
1. Run `bun run build` to compile for Bun runtime
|
|
249
|
-
2. Verify OpenTelemetry dependencies are correct versions
|
|
250
|
-
3. Test with real Hono server
|
|
251
|
-
4. Must publish **after** @agentuity/core
|
|
252
|
-
5. Ensure React is only in devDependencies (for type checking web components)
|
|
73
|
+
1. Run build, typecheck, test
|
|
74
|
+
2. Publish **after** `@agentuity/core`
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build metadata utilities
|
|
3
|
+
* Provides cached access to agentuity.metadata.json
|
|
4
|
+
*/
|
|
5
|
+
export interface BuildMetadataAgent {
|
|
6
|
+
filename: string;
|
|
7
|
+
id: string;
|
|
8
|
+
agentId: string;
|
|
9
|
+
version: string;
|
|
10
|
+
name: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
projectId?: string;
|
|
13
|
+
schema?: {
|
|
14
|
+
input?: string;
|
|
15
|
+
output?: string;
|
|
16
|
+
};
|
|
17
|
+
evals?: Array<{
|
|
18
|
+
filename: string;
|
|
19
|
+
id: string;
|
|
20
|
+
evalId: string;
|
|
21
|
+
name: string;
|
|
22
|
+
version: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
agentIdentifier?: string;
|
|
25
|
+
projectId?: string;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
export interface BuildMetadataRoute {
|
|
29
|
+
id: string;
|
|
30
|
+
filename: string;
|
|
31
|
+
path: string;
|
|
32
|
+
method: 'get' | 'post' | 'put' | 'delete' | 'patch';
|
|
33
|
+
version: string;
|
|
34
|
+
type?: string;
|
|
35
|
+
agentIds?: string[];
|
|
36
|
+
config?: Record<string, unknown>;
|
|
37
|
+
schema?: {
|
|
38
|
+
input?: string;
|
|
39
|
+
output?: string;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export interface BuildMetadata {
|
|
43
|
+
routes: BuildMetadataRoute[];
|
|
44
|
+
agents: BuildMetadataAgent[];
|
|
45
|
+
assets?: string[];
|
|
46
|
+
project: {
|
|
47
|
+
id: string;
|
|
48
|
+
name: string;
|
|
49
|
+
version?: string;
|
|
50
|
+
description?: string;
|
|
51
|
+
keywords?: string[];
|
|
52
|
+
orgId?: string;
|
|
53
|
+
};
|
|
54
|
+
deployment: {
|
|
55
|
+
id: string;
|
|
56
|
+
date: string;
|
|
57
|
+
build: {
|
|
58
|
+
bun: string;
|
|
59
|
+
agentuity: string;
|
|
60
|
+
arch: string;
|
|
61
|
+
platform: string;
|
|
62
|
+
};
|
|
63
|
+
git?: {
|
|
64
|
+
branch?: string;
|
|
65
|
+
repo?: string;
|
|
66
|
+
provider?: string;
|
|
67
|
+
tags?: string[];
|
|
68
|
+
commit?: string;
|
|
69
|
+
message?: string;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get the path to agentuity.metadata.json
|
|
75
|
+
*/
|
|
76
|
+
export declare function getMetadataPath(): string;
|
|
77
|
+
/**
|
|
78
|
+
* Load and cache the build metadata from agentuity.metadata.json
|
|
79
|
+
* Returns undefined if the file doesn't exist or can't be parsed
|
|
80
|
+
*/
|
|
81
|
+
export declare function loadBuildMetadata(): BuildMetadata | undefined;
|
|
82
|
+
export type BuildMetadataEval = NonNullable<BuildMetadataAgent['evals']>[number];
|
|
83
|
+
/**
|
|
84
|
+
* Look up agent metadata by name
|
|
85
|
+
*/
|
|
86
|
+
export declare function getAgentMetadataByName(agentName: string): BuildMetadataAgent | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* Look up agent metadata by agentId
|
|
89
|
+
*/
|
|
90
|
+
export declare function getAgentMetadataByAgentId(agentId: string): BuildMetadataAgent | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Look up eval metadata by agent name and eval name
|
|
93
|
+
*/
|
|
94
|
+
export declare function getEvalMetadata(agentName: string, evalName: string): BuildMetadataEval | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* Look up eval metadata by agentId and eval name
|
|
97
|
+
*/
|
|
98
|
+
export declare function getEvalMetadataByAgentId(agentId: string, evalName: string): BuildMetadataEval | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Check if metadata file exists (uses cache)
|
|
101
|
+
*/
|
|
102
|
+
export declare function hasMetadata(): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Clear the metadata cache (useful for testing or hot reload)
|
|
105
|
+
*/
|
|
106
|
+
export declare function clearMetadataCache(): void;
|
|
107
|
+
//# sourceMappingURL=_metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_metadata.d.ts","sourceRoot":"","sources":["../src/_metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build metadata utilities
|
|
3
|
+
* Provides cached access to agentuity.metadata.json
|
|
4
|
+
*/
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
7
|
+
import { internal } from './logger/internal';
|
|
8
|
+
// Cached metadata - null means not yet loaded, undefined means file not found
|
|
9
|
+
let _metadataCache = null;
|
|
10
|
+
/**
|
|
11
|
+
* Get the path to agentuity.metadata.json
|
|
12
|
+
*/
|
|
13
|
+
export function getMetadataPath() {
|
|
14
|
+
return join(process.cwd(), '.agentuity', 'agentuity.metadata.json');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Load and cache the build metadata from agentuity.metadata.json
|
|
18
|
+
* Returns undefined if the file doesn't exist or can't be parsed
|
|
19
|
+
*/
|
|
20
|
+
export function loadBuildMetadata() {
|
|
21
|
+
// Return cached value if already loaded
|
|
22
|
+
if (_metadataCache !== null) {
|
|
23
|
+
internal.info('[metadata] loadBuildMetadata: returning cached value (exists: %s)', _metadataCache !== undefined);
|
|
24
|
+
return _metadataCache;
|
|
25
|
+
}
|
|
26
|
+
const metadataPath = getMetadataPath();
|
|
27
|
+
internal.info('[metadata] loadBuildMetadata: checking path %s', metadataPath);
|
|
28
|
+
internal.info('[metadata] loadBuildMetadata: cwd=%s', process.cwd());
|
|
29
|
+
if (!existsSync(metadataPath)) {
|
|
30
|
+
internal.info('[metadata] agentuity.metadata.json not found at %s', metadataPath);
|
|
31
|
+
_metadataCache = undefined;
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
internal.info('[metadata] loadBuildMetadata: file exists, reading...');
|
|
36
|
+
const content = readFileSync(metadataPath, 'utf-8');
|
|
37
|
+
const metadata = JSON.parse(content);
|
|
38
|
+
_metadataCache = metadata;
|
|
39
|
+
// Log agent and eval counts
|
|
40
|
+
let totalEvals = 0;
|
|
41
|
+
for (const agent of metadata.agents ?? []) {
|
|
42
|
+
totalEvals += agent.evals?.length ?? 0;
|
|
43
|
+
}
|
|
44
|
+
internal.info('[metadata] loaded agentuity.metadata.json: %d agents, %d routes, %d total evals', metadata.agents?.length ?? 0, metadata.routes?.length ?? 0, totalEvals);
|
|
45
|
+
// Log agent names and their eval counts
|
|
46
|
+
for (const agent of metadata.agents ?? []) {
|
|
47
|
+
internal.info('[metadata] agent: %s (evals: %d)', agent.name, agent.evals?.length ?? 0);
|
|
48
|
+
}
|
|
49
|
+
return metadata;
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
internal.info('[metadata] failed to load agentuity.metadata.json: %s', err);
|
|
53
|
+
_metadataCache = undefined;
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Agent lookup cache - built lazily from metadata
|
|
58
|
+
let _agentsByName = null;
|
|
59
|
+
let _agentsByAgentId = null;
|
|
60
|
+
// Eval lookup cache - nested map: agentName -> evalName -> evalMetadata
|
|
61
|
+
let _evalsByAgentName = null;
|
|
62
|
+
let _evalsByAgentId = null;
|
|
63
|
+
// Track if we've already attempted a reload for empty eval map
|
|
64
|
+
let _evalReloadAttempted = false;
|
|
65
|
+
/**
|
|
66
|
+
* Build agent lookup maps from metadata
|
|
67
|
+
*/
|
|
68
|
+
function ensureAgentMaps() {
|
|
69
|
+
if (_agentsByName !== null) {
|
|
70
|
+
internal.info(`[metadata] ensureAgentMaps: already initialized, skipping`);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
internal.info(`[metadata] ensureAgentMaps: initializing agent and eval maps`);
|
|
74
|
+
_agentsByName = new Map();
|
|
75
|
+
_agentsByAgentId = new Map();
|
|
76
|
+
_evalsByAgentName = new Map();
|
|
77
|
+
_evalsByAgentId = new Map();
|
|
78
|
+
const metadata = loadBuildMetadata();
|
|
79
|
+
if (!metadata?.agents) {
|
|
80
|
+
internal.info(`[metadata] ensureAgentMaps: no metadata or no agents found`);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
internal.info(`[metadata] ensureAgentMaps: processing ${metadata.agents.length} agents`);
|
|
84
|
+
for (const agent of metadata.agents) {
|
|
85
|
+
if (agent.name) {
|
|
86
|
+
_agentsByName.set(agent.name, agent);
|
|
87
|
+
}
|
|
88
|
+
if (agent.agentId) {
|
|
89
|
+
_agentsByAgentId.set(agent.agentId, agent);
|
|
90
|
+
}
|
|
91
|
+
// Build eval lookup maps
|
|
92
|
+
if (agent.evals && agent.evals.length > 0) {
|
|
93
|
+
const evalsByName = new Map();
|
|
94
|
+
for (const evalMeta of agent.evals) {
|
|
95
|
+
if (evalMeta.name) {
|
|
96
|
+
evalsByName.set(evalMeta.name, evalMeta);
|
|
97
|
+
internal.info(`[metadata] Indexed eval: agent='${agent.name}' eval='${evalMeta.name}' evalId='${evalMeta.evalId}'`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (agent.name) {
|
|
101
|
+
_evalsByAgentName.set(agent.name, evalsByName);
|
|
102
|
+
}
|
|
103
|
+
if (agent.agentId) {
|
|
104
|
+
_evalsByAgentId.set(agent.agentId, evalsByName);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
internal.info(`[metadata] Agent '${agent.name}' has no evals`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
internal.info(`[metadata] Eval maps built: ${_evalsByAgentName?.size ?? 0} agents with evals`);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Look up agent metadata by name
|
|
115
|
+
*/
|
|
116
|
+
export function getAgentMetadataByName(agentName) {
|
|
117
|
+
ensureAgentMaps();
|
|
118
|
+
return _agentsByName?.get(agentName);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Look up agent metadata by agentId
|
|
122
|
+
*/
|
|
123
|
+
export function getAgentMetadataByAgentId(agentId) {
|
|
124
|
+
ensureAgentMaps();
|
|
125
|
+
return _agentsByAgentId?.get(agentId);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Look up eval metadata by agent name and eval name
|
|
129
|
+
*/
|
|
130
|
+
export function getEvalMetadata(agentName, evalName) {
|
|
131
|
+
ensureAgentMaps();
|
|
132
|
+
// If eval map is empty, the cache may have been built before metadata was ready
|
|
133
|
+
// Try clearing and reloading once (only attempt once to avoid repeated reloads)
|
|
134
|
+
if (_evalsByAgentName?.size === 0 && !_evalReloadAttempted) {
|
|
135
|
+
_evalReloadAttempted = true;
|
|
136
|
+
internal.info(`[metadata] getEvalMetadata: eval map is empty, attempting cache clear and reload`);
|
|
137
|
+
clearMetadataCache();
|
|
138
|
+
ensureAgentMaps();
|
|
139
|
+
internal.info(`[metadata] getEvalMetadata: after reload, eval map size: ${_evalsByAgentName?.size ?? 0}`);
|
|
140
|
+
}
|
|
141
|
+
const agentEvals = _evalsByAgentName?.get(agentName);
|
|
142
|
+
internal.info(`[metadata] getEvalMetadata('${agentName}', '${evalName}'): agentEvals=${agentEvals ? `Map(${agentEvals.size})` : 'undefined'}`);
|
|
143
|
+
if (agentEvals) {
|
|
144
|
+
internal.info(`[metadata] Available evals for agent '${agentName}': [${[...agentEvals.keys()].join(', ')}]`);
|
|
145
|
+
}
|
|
146
|
+
if (!agentEvals) {
|
|
147
|
+
internal.info(`[metadata] Available agents in eval map: [${[...(_evalsByAgentName?.keys() ?? [])].join(', ')}]`);
|
|
148
|
+
}
|
|
149
|
+
const result = agentEvals?.get(evalName);
|
|
150
|
+
internal.info(`[metadata] getEvalMetadata result: ${result ? `found evalId=${result.evalId}` : 'not found'}`);
|
|
151
|
+
return result;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Look up eval metadata by agentId and eval name
|
|
155
|
+
*/
|
|
156
|
+
export function getEvalMetadataByAgentId(agentId, evalName) {
|
|
157
|
+
ensureAgentMaps();
|
|
158
|
+
return _evalsByAgentId?.get(agentId)?.get(evalName);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Check if metadata file exists (uses cache)
|
|
162
|
+
*/
|
|
163
|
+
export function hasMetadata() {
|
|
164
|
+
return loadBuildMetadata() !== undefined;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Clear the metadata cache (useful for testing or hot reload)
|
|
168
|
+
*/
|
|
169
|
+
export function clearMetadataCache() {
|
|
170
|
+
internal.info('[metadata] clearMetadataCache: clearing all caches');
|
|
171
|
+
_metadataCache = null;
|
|
172
|
+
_agentsByName = null;
|
|
173
|
+
_agentsByAgentId = null;
|
|
174
|
+
_evalsByAgentName = null;
|
|
175
|
+
_evalsByAgentId = null;
|
|
176
|
+
// Note: _evalReloadAttempted is intentionally NOT reset here
|
|
177
|
+
// to prevent infinite reload loops in getEvalMetadata
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=_metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_metadata.js","sourceRoot":"","sources":["../src/_metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_process-protection.d.ts","sourceRoot":"","sources":["../src/_process-protection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"_process-protection.d.ts","sourceRoot":"","sources":["../src/_process-protection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAelD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAUnD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAEjD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C"}
|
|
@@ -19,6 +19,8 @@ export function enableProcessExitProtection() {
|
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
21
|
protectionEnabled = true;
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
|
+
globalThis.AGENTUITY_PROCESS_EXIT = originalExit;
|
|
22
24
|
// Replace process.exit with a function that throws
|
|
23
25
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
26
|
process.exit = function (code) {
|
|
@@ -32,6 +34,8 @@ export function disableProcessExitProtection() {
|
|
|
32
34
|
if (!protectionEnabled) {
|
|
33
35
|
return;
|
|
34
36
|
}
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
+
globalThis.AGENTUITY_PROCESS_EXIT = undefined;
|
|
35
39
|
protectionEnabled = false;
|
|
36
40
|
process.exit = originalExit;
|
|
37
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_process-protection.js","sourceRoot":"","sources":["../src/_process-protection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,kCAAkC;AAClC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEhD,yCAAyC;AACzC,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAE9B,MAAM,uBAAuB,GAAG,eAAe,CAC9C,yBAAyB,EACzB,yGAAyG,CACzG,EAEG,CAAC;AAEL;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IAC1C,IAAI,iBAAiB,EAAE,CAAC;QACvB,OAAO;IACR,CAAC;IAED,iBAAiB,GAAG,IAAI,CAAC;IAEzB,mDAAmD;IACnD,8DAA8D;IAC7D,OAAe,CAAC,IAAI,GAAG,UAAU,IAAyC;QAC1E,MAAM,IAAI,uBAAuB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC3C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxB,OAAO;IACR,CAAC;IAED,iBAAiB,GAAG,KAAK,CAAC;IAC1B,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa;IACzC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IAClC,OAAO,iBAAiB,CAAC;AAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"_process-protection.js","sourceRoot":"","sources":["../src/_process-protection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,kCAAkC;AAClC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEhD,yCAAyC;AACzC,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAE9B,MAAM,uBAAuB,GAAG,eAAe,CAC9C,yBAAyB,EACzB,yGAAyG,CACzG,EAEG,CAAC;AAEL;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IAC1C,IAAI,iBAAiB,EAAE,CAAC;QACvB,OAAO;IACR,CAAC;IAED,iBAAiB,GAAG,IAAI,CAAC;IAEzB,8DAA8D;IAC7D,UAAkB,CAAC,sBAAsB,GAAG,YAAY,CAAC;IAE1D,mDAAmD;IACnD,8DAA8D;IAC7D,OAAe,CAAC,IAAI,GAAG,UAAU,IAAyC;QAC1E,MAAM,IAAI,uBAAuB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC3C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxB,OAAO;IACR,CAAC;IAED,8DAA8D;IAC7D,UAAkB,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAEvD,iBAAiB,GAAG,KAAK,CAAC;IAC1B,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa;IACzC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IAClC,OAAO,iBAAiB,CAAC;AAC1B,CAAC"}
|
package/dist/_services.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_services.d.ts","sourceRoot":"","sources":["../src/_services.ts"],"names":[],"mappings":"AACA,OAAO,EAKN,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAIlB,KAAK,MAAM,EACX,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAEzB,MAAM,iBAAiB,CAAC;AAmBzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAGN,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"_services.d.ts","sourceRoot":"","sources":["../src/_services.ts"],"names":[],"mappings":"AACA,OAAO,EAKN,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAIlB,KAAK,MAAM,EACX,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAEzB,MAAM,iBAAiB,CAAC;AAmBzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAGN,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,MAAM,WAAW,CAAC;AA6InB,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM;;;;EA4EzF;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAGD,wBAAgB,cAAc,IAAI,GAAG,GAAG,IAAI,CAE3C;AAED,wBAAgB,uBAAuB,yBAEtC;AAED,wBAAgB,uBAAuB,yBAEtC;AAED,wBAAgB,WAAW;;;;EAE1B;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,UAAQ,QAkC7D"}
|