@agentuity/runtime 0.0.69 → 0.0.70
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 +88 -10
- package/README.md +0 -2
- package/dist/_config.d.ts +16 -0
- package/dist/_config.d.ts.map +1 -1
- package/dist/_config.js +16 -0
- package/dist/_config.js.map +1 -1
- package/dist/_context.d.ts +17 -15
- package/dist/_context.d.ts.map +1 -1
- package/dist/_context.js +17 -8
- package/dist/_context.js.map +1 -1
- package/dist/_server.d.ts.map +1 -1
- package/dist/_server.js +23 -14
- package/dist/_server.js.map +1 -1
- package/dist/_services.d.ts.map +1 -1
- package/dist/_services.js +2 -29
- package/dist/_services.js.map +1 -1
- package/dist/_validation.d.ts +3 -3
- package/dist/_validation.d.ts.map +1 -1
- package/dist/_validation.js.map +1 -1
- package/dist/agent.d.ts +289 -107
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +206 -149
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts +6 -18
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +1 -1
- package/dist/app.js.map +1 -1
- package/dist/eval.d.ts +4 -4
- package/dist/eval.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/otel/config.d.ts.map +1 -1
- package/dist/otel/config.js +5 -2
- package/dist/otel/config.js.map +1 -1
- package/dist/otel/console.d.ts +10 -6
- package/dist/otel/console.d.ts.map +1 -1
- package/dist/otel/console.js +31 -13
- package/dist/otel/console.js.map +1 -1
- package/dist/otel/logger.d.ts.map +1 -1
- package/dist/otel/logger.js +0 -19
- package/dist/otel/logger.js.map +1 -1
- package/dist/otel/otel.d.ts +2 -1
- package/dist/otel/otel.d.ts.map +1 -1
- package/dist/otel/otel.js +28 -15
- package/dist/otel/otel.js.map +1 -1
- package/dist/services/local/_db.d.ts.map +1 -1
- package/dist/services/local/_db.js +1 -22
- package/dist/services/local/_db.js.map +1 -1
- package/dist/services/local/_router.d.ts.map +1 -1
- package/dist/services/local/_router.js +0 -32
- package/dist/services/local/_router.js.map +1 -1
- package/dist/services/local/index.d.ts +0 -1
- package/dist/services/local/index.d.ts.map +1 -1
- package/dist/services/local/index.js +0 -1
- package/dist/services/local/index.js.map +1 -1
- package/dist/session.d.ts +2 -2
- package/dist/validator.d.ts +140 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +146 -0
- package/dist/validator.js.map +1 -0
- package/dist/workbench.d.ts.map +1 -1
- package/dist/workbench.js +38 -29
- package/dist/workbench.js.map +1 -1
- package/package.json +6 -6
- package/src/_config.ts +19 -0
- package/src/_context.ts +25 -31
- package/src/_server.ts +26 -14
- package/src/_services.ts +0 -28
- package/src/_validation.ts +3 -7
- package/src/agent.ts +555 -348
- package/src/app.ts +5 -18
- package/src/eval.ts +6 -6
- package/src/index.ts +2 -1
- package/src/otel/config.ts +5 -2
- package/src/otel/console.ts +34 -20
- package/src/otel/logger.ts +0 -18
- package/src/otel/otel.ts +43 -29
- package/src/services/local/_db.ts +1 -27
- package/src/services/local/_router.ts +0 -46
- package/src/services/local/index.ts +0 -1
- package/src/session.ts +2 -2
- package/src/validator.ts +277 -0
- package/src/workbench.ts +38 -32
- package/dist/agent.validator.test.d.ts +0 -2
- package/dist/agent.validator.test.d.ts.map +0 -1
- package/dist/agent.validator.test.js +0 -508
- package/dist/agent.validator.test.js.map +0 -1
- package/dist/services/local/objectstore.d.ts +0 -19
- package/dist/services/local/objectstore.d.ts.map +0 -1
- package/dist/services/local/objectstore.js +0 -117
- package/dist/services/local/objectstore.js.map +0 -1
- package/src/agent.validator.test.ts +0 -587
- package/src/services/local/objectstore.ts +0 -177
package/dist/workbench.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { s } from '@agentuity/schema';
|
|
2
3
|
import { timingSafeEqual } from 'node:crypto';
|
|
3
4
|
import { getAgents, createAgentMiddleware } from './agent';
|
|
4
5
|
import { createRouter } from './router';
|
|
6
|
+
import { privateContext } from './_server';
|
|
5
7
|
export const createWorkbenchExecutionRoute = () => {
|
|
6
8
|
const authHeader = process.env.AGENTUITY_WORKBENCH_APIKEY
|
|
7
9
|
? `Bearer ${process.env.AGENTUITY_WORKBENCH_APIKEY}`
|
|
@@ -34,10 +36,10 @@ export const createWorkbenchExecutionRoute = () => {
|
|
|
34
36
|
return ctx.json({ error: 'Invalid JSON in request body' }, { status: 400 });
|
|
35
37
|
}
|
|
36
38
|
// Get agents registry and find the agent
|
|
37
|
-
const
|
|
39
|
+
const allAgents = getAgents();
|
|
38
40
|
let agentObj;
|
|
39
41
|
let agentName;
|
|
40
|
-
for (const [name, agent] of
|
|
42
|
+
for (const [name, agent] of allAgents) {
|
|
41
43
|
if (agent.metadata.id === agentId) {
|
|
42
44
|
agentObj = agent;
|
|
43
45
|
agentName = name;
|
|
@@ -47,34 +49,23 @@ export const createWorkbenchExecutionRoute = () => {
|
|
|
47
49
|
if (!agentObj || !agentName) {
|
|
48
50
|
return ctx.text('Agent not found', { status: 404 });
|
|
49
51
|
}
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
if (agentObj.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return ctx.json({
|
|
56
|
-
error: 'Validation failed',
|
|
57
|
-
issues: inputResult.issues,
|
|
58
|
-
}, { status: 400 });
|
|
59
|
-
}
|
|
60
|
-
validatedInput = inputResult.value;
|
|
61
|
-
console.log('✅ [Workbench] Input validation passed');
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
console.log('ℹ️ [Workbench] No input schema, skipping validation');
|
|
65
|
-
}
|
|
66
|
-
// Get agent runner from context.var.agent (should be available via middleware)
|
|
67
|
-
const agentRunner = ctx.var.agent[agentName];
|
|
68
|
-
if (!agentRunner) {
|
|
69
|
-
return ctx.text('Agent runner not found', { status: 404 });
|
|
52
|
+
// Track agent ID for telemetry (otelMiddleware sets up agentIds)
|
|
53
|
+
const _ctx = privateContext(ctx);
|
|
54
|
+
if (agentObj.metadata?.id) {
|
|
55
|
+
_ctx.var.agentIds.add(agentObj.metadata.id);
|
|
56
|
+
_ctx.var.agentIds.add(agentObj.metadata.agentId);
|
|
70
57
|
}
|
|
71
|
-
// Execute the agent
|
|
58
|
+
// Execute the agent handler directly
|
|
59
|
+
// The agentMiddleware has already set up the AsyncLocalStorage context
|
|
60
|
+
// so the handler can access it via getAgentContext()
|
|
72
61
|
let result;
|
|
73
62
|
if (agentObj.inputSchema) {
|
|
74
|
-
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
64
|
+
result = await agentObj.handler(input);
|
|
75
65
|
}
|
|
76
66
|
else {
|
|
77
|
-
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
68
|
+
result = await agentObj.handler();
|
|
78
69
|
}
|
|
79
70
|
// Handle cases where result might be undefined/null
|
|
80
71
|
if (result === undefined || result === null) {
|
|
@@ -125,6 +116,25 @@ export const createWorkbenchRouter = () => {
|
|
|
125
116
|
router.post('/_agentuity/workbench/execute', createWorkbenchExecutionRoute());
|
|
126
117
|
return router;
|
|
127
118
|
};
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
120
|
+
const toJSONSchema = (schema) => {
|
|
121
|
+
// Check if it's an Agentuity schema via StandardSchemaV1 vendor
|
|
122
|
+
if (schema?.['~standard']?.vendor === 'agentuity') {
|
|
123
|
+
return s.toJSONSchema(schema);
|
|
124
|
+
}
|
|
125
|
+
// Check if it's a Zod schema
|
|
126
|
+
if (schema?._def?.typeName) {
|
|
127
|
+
try {
|
|
128
|
+
return z.toJSONSchema(schema);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return {};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// TODO: this is going to only work for zod schema for now. need a way to handle others
|
|
135
|
+
// Unknown schema type
|
|
136
|
+
return {};
|
|
137
|
+
};
|
|
128
138
|
export const createWorkbenchMetadataRoute = () => {
|
|
129
139
|
const authHeader = process.env.AGENTUITY_WORKBENCH_APIKEY
|
|
130
140
|
? `Bearer ${process.env.AGENTUITY_WORKBENCH_APIKEY}`
|
|
@@ -146,20 +156,19 @@ export const createWorkbenchMetadataRoute = () => {
|
|
|
146
156
|
}
|
|
147
157
|
}
|
|
148
158
|
const schemas = { agents: {} };
|
|
149
|
-
// TODO: this is going to only work for zod schema for now. need a way to handle others
|
|
150
159
|
for (const [, agent] of agents) {
|
|
151
|
-
schemas.agents[agent.metadata.
|
|
160
|
+
schemas.agents[agent.metadata.id] = {
|
|
152
161
|
schema: {
|
|
153
162
|
input: agent.inputSchema
|
|
154
163
|
? {
|
|
155
164
|
code: agent.metadata.inputSchemaCode || undefined,
|
|
156
|
-
json:
|
|
165
|
+
json: toJSONSchema(agent.inputSchema),
|
|
157
166
|
}
|
|
158
167
|
: undefined,
|
|
159
168
|
output: agent.outputSchema
|
|
160
169
|
? {
|
|
161
170
|
code: agent.metadata.outputSchemaCode || undefined,
|
|
162
|
-
json:
|
|
171
|
+
json: toJSONSchema(agent.outputSchema),
|
|
163
172
|
}
|
|
164
173
|
: undefined,
|
|
165
174
|
},
|
package/dist/workbench.js.map
CHANGED
|
@@ -1 +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,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"workbench.js","sourceRoot":"","sources":["../src/workbench.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/runtime",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.70",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Agentuity employees and contributors",
|
|
6
6
|
"type": "module",
|
|
@@ -22,11 +22,12 @@
|
|
|
22
22
|
"clean": "rm -rf dist",
|
|
23
23
|
"build": "bunx tsc --build --force",
|
|
24
24
|
"typecheck": "bunx tsc --noEmit",
|
|
25
|
+
"typecheck:tests": "bunx tsc --noEmit --project tsconfig.test.json",
|
|
25
26
|
"prepublishOnly": "bun run clean && bun run build"
|
|
26
27
|
},
|
|
27
28
|
"dependencies": {
|
|
28
|
-
"@agentuity/core": "0.0.
|
|
29
|
-
"@agentuity/server": "0.0.
|
|
29
|
+
"@agentuity/core": "0.0.70",
|
|
30
|
+
"@agentuity/server": "0.0.70",
|
|
30
31
|
"@opentelemetry/api": "^1.9.0",
|
|
31
32
|
"@opentelemetry/api-logs": "^0.207.0",
|
|
32
33
|
"@opentelemetry/auto-instrumentations-node": "^0.66.0",
|
|
@@ -44,16 +45,15 @@
|
|
|
44
45
|
"@opentelemetry/semantic-conventions": "^1.37.0",
|
|
45
46
|
"@traceloop/ai-semantic-conventions": "0.21.0",
|
|
46
47
|
"@traceloop/node-server-sdk": "0.21.1",
|
|
48
|
+
"hono": "^4.7.13",
|
|
47
49
|
"zod": "^4.1.12",
|
|
48
50
|
"mailparser": "^3.7.1",
|
|
49
51
|
"@types/mailparser": "^3.4.6",
|
|
50
52
|
"ws": "^8.18.0",
|
|
51
53
|
"@types/ws": "^8.5.13"
|
|
52
54
|
},
|
|
53
|
-
"peerDependencies": {
|
|
54
|
-
"hono": "^4.10.3"
|
|
55
|
-
},
|
|
56
55
|
"devDependencies": {
|
|
56
|
+
"@agentuity/test-utils": "0.0.70",
|
|
57
57
|
"@types/bun": "latest",
|
|
58
58
|
"@types/react": "^19.2.2",
|
|
59
59
|
"@types/react-dom": "^19.2.2",
|
package/src/_config.ts
CHANGED
|
@@ -115,3 +115,22 @@ export function getEnvironment(): string {
|
|
|
115
115
|
export function isAuthenticated(): boolean {
|
|
116
116
|
return !!process.env.AGENTUITY_SDK_KEY;
|
|
117
117
|
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Symbol for accessing internal runtime state.
|
|
121
|
+
* Defined here to avoid circular dependency.
|
|
122
|
+
*/
|
|
123
|
+
export const AGENT_RUNTIME = Symbol('AGENT_RUNTIME');
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Symbol for accessing internal agent from AgentRunner.
|
|
127
|
+
* @internal
|
|
128
|
+
*/
|
|
129
|
+
export const INTERNAL_AGENT = Symbol('INTERNAL_AGENT');
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Symbol for tracking the current executing agent (for telemetry).
|
|
133
|
+
* Not exposed on public AgentContext interface.
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
export const CURRENT_AGENT = Symbol('CURRENT_AGENT');
|
package/src/_context.ts
CHANGED
|
@@ -4,11 +4,11 @@ import type { Tracer } from '@opentelemetry/api';
|
|
|
4
4
|
import {
|
|
5
5
|
StructuredError,
|
|
6
6
|
type KeyValueStorage,
|
|
7
|
-
type ObjectStorage,
|
|
8
7
|
type StreamStorage,
|
|
9
8
|
type VectorStorage,
|
|
10
9
|
} from '@agentuity/core';
|
|
11
|
-
import type { AgentContext,
|
|
10
|
+
import type { AgentContext, AgentRegistry, AgentRunner, AgentRuntimeState } from './agent';
|
|
11
|
+
import { AGENT_RUNTIME, CURRENT_AGENT } from './_config';
|
|
12
12
|
import type { Logger } from './logger';
|
|
13
13
|
import type WaitUntilHandler from './_waituntil';
|
|
14
14
|
import { registerServices } from './_services';
|
|
@@ -16,18 +16,11 @@ import type { Thread, Session } from './session';
|
|
|
16
16
|
|
|
17
17
|
export interface RequestAgentContextArgs<
|
|
18
18
|
TAgentMap extends AgentRegistry = AgentRegistry,
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
-
TCurrent extends AgentRunner<any, any, any> | undefined = AgentRunner<any, any, any> | undefined,
|
|
21
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
-
TParent extends AgentRunner<any, any, any> | undefined = AgentRunner<any, any, any> | undefined,
|
|
23
19
|
TConfig = unknown,
|
|
24
20
|
TAppState = Record<string, never>,
|
|
25
21
|
> {
|
|
26
22
|
sessionId: string;
|
|
27
23
|
agent: TAgentMap;
|
|
28
|
-
current: TCurrent;
|
|
29
|
-
parent: TParent;
|
|
30
|
-
agentName: AgentName;
|
|
31
24
|
logger: Logger;
|
|
32
25
|
tracer: Tracer;
|
|
33
26
|
session: Session;
|
|
@@ -35,27 +28,20 @@ export interface RequestAgentContextArgs<
|
|
|
35
28
|
handler: WaitUntilHandler;
|
|
36
29
|
config: TConfig;
|
|
37
30
|
app: TAppState;
|
|
31
|
+
runtime: AgentRuntimeState;
|
|
38
32
|
}
|
|
39
33
|
|
|
40
34
|
export class RequestAgentContext<
|
|
41
35
|
TAgentMap extends AgentRegistry = AgentRegistry,
|
|
42
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
-
TCurrent extends AgentRunner<any, any, any> | undefined = AgentRunner<any, any, any> | undefined,
|
|
44
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
|
-
TParent extends AgentRunner<any, any, any> | undefined = AgentRunner<any, any, any> | undefined,
|
|
46
36
|
TConfig = unknown,
|
|
47
37
|
TAppState = Record<string, never>,
|
|
48
|
-
> implements AgentContext<TAgentMap,
|
|
38
|
+
> implements AgentContext<TAgentMap, TConfig, TAppState>
|
|
49
39
|
{
|
|
50
40
|
agent: TAgentMap;
|
|
51
|
-
current: TCurrent;
|
|
52
|
-
parent: TParent;
|
|
53
|
-
agentName: AgentName;
|
|
54
41
|
logger: Logger;
|
|
55
42
|
sessionId: string;
|
|
56
43
|
tracer: Tracer;
|
|
57
44
|
kv!: KeyValueStorage;
|
|
58
|
-
objectstore!: ObjectStorage;
|
|
59
45
|
stream!: StreamStorage;
|
|
60
46
|
vector!: VectorStorage;
|
|
61
47
|
state: Map<string, unknown>;
|
|
@@ -63,13 +49,11 @@ export class RequestAgentContext<
|
|
|
63
49
|
thread: Thread;
|
|
64
50
|
config: TConfig;
|
|
65
51
|
app: TAppState;
|
|
52
|
+
[AGENT_RUNTIME]: AgentRuntimeState;
|
|
66
53
|
private handler: WaitUntilHandler;
|
|
67
54
|
|
|
68
|
-
constructor(args: RequestAgentContextArgs<TAgentMap,
|
|
55
|
+
constructor(args: RequestAgentContextArgs<TAgentMap, TConfig, TAppState>) {
|
|
69
56
|
this.agent = args.agent;
|
|
70
|
-
this.current = args.current;
|
|
71
|
-
this.parent = args.parent;
|
|
72
|
-
this.agentName = args.agentName;
|
|
73
57
|
this.logger = args.logger;
|
|
74
58
|
this.sessionId = args.sessionId;
|
|
75
59
|
this.tracer = args.tracer;
|
|
@@ -77,6 +61,7 @@ export class RequestAgentContext<
|
|
|
77
61
|
this.session = args.session;
|
|
78
62
|
this.config = args.config;
|
|
79
63
|
this.app = args.app;
|
|
64
|
+
this[AGENT_RUNTIME] = args.runtime;
|
|
80
65
|
this.state = new Map<string, unknown>();
|
|
81
66
|
this.handler = args.handler;
|
|
82
67
|
registerServices(this, false); // agents already populated via args.agent
|
|
@@ -88,7 +73,7 @@ export class RequestAgentContext<
|
|
|
88
73
|
}
|
|
89
74
|
|
|
90
75
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
91
|
-
const agentAsyncLocalStorage = new AsyncLocalStorage<AgentContext<any, any, any
|
|
76
|
+
const agentAsyncLocalStorage = new AsyncLocalStorage<AgentContext<any, any, any>>();
|
|
92
77
|
const httpAsyncLocalStorage = new AsyncLocalStorage<HonoContext>();
|
|
93
78
|
|
|
94
79
|
export const inAgentContext = (): boolean => {
|
|
@@ -107,7 +92,7 @@ const AgentContextNotAvailableError = StructuredError(
|
|
|
107
92
|
);
|
|
108
93
|
|
|
109
94
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
110
|
-
export const getAgentContext = (): AgentContext<any, any, any
|
|
95
|
+
export const getAgentContext = (): AgentContext<any, any, any> => {
|
|
111
96
|
const context = agentAsyncLocalStorage.getStore();
|
|
112
97
|
if (!context) {
|
|
113
98
|
throw new AgentContextNotAvailableError();
|
|
@@ -131,20 +116,29 @@ export const getHTTPContext = (): HonoContext => {
|
|
|
131
116
|
export const getAgentAsyncLocalStorage = () => agentAsyncLocalStorage;
|
|
132
117
|
export const getHTTPAsyncLocalStorage = () => httpAsyncLocalStorage;
|
|
133
118
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
119
|
+
/**
|
|
120
|
+
* Get the current executing agent's metadata (for internal telemetry use only).
|
|
121
|
+
* Returns undefined if not in an agent context or no agent is executing.
|
|
122
|
+
* @internal
|
|
123
|
+
*/
|
|
124
|
+
export const getCurrentAgentMetadata = (): AgentRunner['metadata'] | undefined => {
|
|
125
|
+
const context = agentAsyncLocalStorage.getStore();
|
|
126
|
+
if (!context) return undefined;
|
|
127
|
+
// Access internal symbol property
|
|
138
128
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
139
|
-
|
|
129
|
+
return (context as any)[CURRENT_AGENT]?.metadata;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
export const setupRequestAgentContext = <
|
|
133
|
+
TAgentMap extends AgentRegistry = AgentRegistry,
|
|
140
134
|
TConfig = unknown,
|
|
141
135
|
TAppState = Record<string, never>,
|
|
142
136
|
>(
|
|
143
137
|
ctxObject: Record<string, unknown>,
|
|
144
|
-
args: RequestAgentContextArgs<TAgentMap,
|
|
138
|
+
args: RequestAgentContextArgs<TAgentMap, TConfig, TAppState>,
|
|
145
139
|
next: () => Promise<void>
|
|
146
140
|
) => {
|
|
147
|
-
const ctx = new RequestAgentContext<TAgentMap,
|
|
141
|
+
const ctx = new RequestAgentContext<TAgentMap, TConfig, TAppState>(args);
|
|
148
142
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
149
143
|
const _ctx = ctx as any;
|
|
150
144
|
Object.getOwnPropertyNames(ctx).forEach((k) => {
|
package/src/_server.ts
CHANGED
|
@@ -26,7 +26,8 @@ import { register } from './otel/config';
|
|
|
26
26
|
import type { Logger } from './logger';
|
|
27
27
|
import { isIdle } from './_idle';
|
|
28
28
|
import * as runtimeConfig from './_config';
|
|
29
|
-
import { inAgentContext,
|
|
29
|
+
import { inAgentContext, runInHTTPContext } from './_context';
|
|
30
|
+
import { runAgentShutdowns, createAgentMiddleware } from './agent';
|
|
30
31
|
import {
|
|
31
32
|
createServices,
|
|
32
33
|
getThreadProvider,
|
|
@@ -107,12 +108,14 @@ function registerAgentuitySpanProcessor() {
|
|
|
107
108
|
'@agentuity/environment': environment,
|
|
108
109
|
};
|
|
109
110
|
if (inAgentContext()) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
attrs['@agentuity/
|
|
115
|
-
attrs['@agentuity/
|
|
111
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
112
|
+
const { getCurrentAgentMetadata } = require('./_context');
|
|
113
|
+
const current = getCurrentAgentMetadata();
|
|
114
|
+
if (current) {
|
|
115
|
+
attrs['@agentuity/agentId'] = current.id;
|
|
116
|
+
attrs['@agentuity/agentInstanceId'] = current.agentId;
|
|
117
|
+
attrs['@agentuity/agentDescription'] = current.description;
|
|
118
|
+
attrs['@agentuity/agentName'] = current.name;
|
|
116
119
|
}
|
|
117
120
|
}
|
|
118
121
|
span.setAttributes(attrs);
|
|
@@ -294,9 +297,14 @@ export const createServer = async <TAppState>(
|
|
|
294
297
|
}
|
|
295
298
|
const file = Bun.file(routeMappingPath);
|
|
296
299
|
if (!(await file.exists())) {
|
|
297
|
-
c.var.logger.
|
|
300
|
+
c.var.logger.warn(
|
|
301
|
+
'Route mapping file not found at %s. Route tracking will be disabled.',
|
|
302
|
+
routeMappingPath
|
|
303
|
+
);
|
|
304
|
+
routeMapping = {}; // Empty mapping, no route tracking
|
|
305
|
+
} else {
|
|
306
|
+
routeMapping = (await file.json()) as Record<string, string>;
|
|
298
307
|
}
|
|
299
|
-
routeMapping = (await file.json()) as Record<string, string>;
|
|
300
308
|
}
|
|
301
309
|
const matches = matchedRoutes(c).filter(
|
|
302
310
|
(m) => m.method !== 'ALL' && (m.path.startsWith('/api') || m.path.startsWith('/agent/'))
|
|
@@ -316,12 +324,10 @@ export const createServer = async <TAppState>(
|
|
|
316
324
|
return next();
|
|
317
325
|
});
|
|
318
326
|
|
|
319
|
-
router.use('/agent/*', routePathMapper);
|
|
320
327
|
router.use('/api/*', routePathMapper);
|
|
321
328
|
|
|
322
329
|
// Attach services and agent registry to context for API routes
|
|
323
330
|
router.use('/api/*', async (c, next) => {
|
|
324
|
-
const { createAgentMiddleware } = await import('./agent');
|
|
325
331
|
// Use a null agent name to just populate the agent registry without setting current agent
|
|
326
332
|
return createAgentMiddleware('')(c, next);
|
|
327
333
|
});
|
|
@@ -334,11 +340,18 @@ export const createServer = async <TAppState>(
|
|
|
334
340
|
await next();
|
|
335
341
|
});
|
|
336
342
|
router.use(`/api/${trigger}/*`, middleware);
|
|
337
|
-
router.use(`/agent/${trigger}/*`, middleware);
|
|
338
343
|
}
|
|
339
344
|
|
|
340
345
|
router.use('/api/*', otelMiddleware);
|
|
341
|
-
|
|
346
|
+
|
|
347
|
+
// Apply otelMiddleware to workbench routes for full telemetry and session tracking
|
|
348
|
+
if (config?.services?.workbench) {
|
|
349
|
+
router.use('/_agentuity/workbench/*', async (c, next) => {
|
|
350
|
+
// Use a null agent name to just populate the agent registry without setting current agent
|
|
351
|
+
return createAgentMiddleware('')(c, next);
|
|
352
|
+
});
|
|
353
|
+
router.use('/_agentuity/workbench/*', otelMiddleware);
|
|
354
|
+
}
|
|
342
355
|
|
|
343
356
|
const shutdown = async () => {
|
|
344
357
|
if (isShutdown) {
|
|
@@ -370,7 +383,6 @@ export const createServer = async <TAppState>(
|
|
|
370
383
|
otel.logger.debug('no more pending connections');
|
|
371
384
|
|
|
372
385
|
// Run agent shutdowns first
|
|
373
|
-
const { runAgentShutdowns } = await import('./agent');
|
|
374
386
|
await runAgentShutdowns(globalAppState);
|
|
375
387
|
|
|
376
388
|
// Run app shutdown if provided
|
package/src/_services.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { context, SpanKind, SpanStatusCode, trace } from '@opentelemetry/api';
|
|
2
2
|
import {
|
|
3
3
|
KeyValueStorageService,
|
|
4
|
-
ObjectStorageService,
|
|
5
4
|
StreamStorageService,
|
|
6
5
|
VectorStorageService,
|
|
7
6
|
type FetchAdapter,
|
|
8
7
|
type KeyValueStorage,
|
|
9
|
-
type ObjectStorage,
|
|
10
8
|
type StreamStorage,
|
|
11
9
|
type VectorStorage,
|
|
12
10
|
type ListStreamsResponse,
|
|
@@ -42,7 +40,6 @@ import {
|
|
|
42
40
|
} from './session';
|
|
43
41
|
import {
|
|
44
42
|
LocalKeyValueStorage,
|
|
45
|
-
LocalObjectStorage,
|
|
46
43
|
LocalStreamStorage,
|
|
47
44
|
LocalVectorStorage,
|
|
48
45
|
getLocalDB,
|
|
@@ -58,7 +55,6 @@ const serviceUrls = getServiceUrls(process.env.AGENTUITY_REGION ?? 'usc');
|
|
|
58
55
|
const kvBaseUrl = serviceUrls.keyvalue;
|
|
59
56
|
const streamBaseUrl = serviceUrls.stream;
|
|
60
57
|
const vectorBaseUrl = serviceUrls.vector;
|
|
61
|
-
const objectBaseUrl = serviceUrls.objectstore;
|
|
62
58
|
const catalystBaseUrl = serviceUrls.catalyst;
|
|
63
59
|
|
|
64
60
|
let adapter: FetchAdapter;
|
|
@@ -157,22 +153,6 @@ const createFetchAdapter = (logger: Logger) =>
|
|
|
157
153
|
}
|
|
158
154
|
break;
|
|
159
155
|
}
|
|
160
|
-
case 'agentuity.objectstore.get': {
|
|
161
|
-
if (result.response.status === 404) {
|
|
162
|
-
span?.addEvent('miss');
|
|
163
|
-
} else if (result.response.ok) {
|
|
164
|
-
span?.addEvent('hit');
|
|
165
|
-
}
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
case 'agentuity.objectstore.delete': {
|
|
169
|
-
if (result.response.status === 404) {
|
|
170
|
-
span?.addEvent('not_found', { deleted: false });
|
|
171
|
-
} else if (result.response.ok) {
|
|
172
|
-
span?.addEvent('deleted', { deleted: true });
|
|
173
|
-
}
|
|
174
|
-
break;
|
|
175
|
-
}
|
|
176
156
|
}
|
|
177
157
|
},
|
|
178
158
|
},
|
|
@@ -180,7 +160,6 @@ const createFetchAdapter = (logger: Logger) =>
|
|
|
180
160
|
);
|
|
181
161
|
|
|
182
162
|
let kv: KeyValueStorage;
|
|
183
|
-
let objectStore: ObjectStorage;
|
|
184
163
|
let stream: StreamStorage;
|
|
185
164
|
let vector: VectorStorage;
|
|
186
165
|
let session: SessionProvider;
|
|
@@ -217,7 +196,6 @@ export function createServices(logger: Logger, config?: AppConfig<any>, serverUr
|
|
|
217
196
|
logger.info('Using local services (development only)');
|
|
218
197
|
|
|
219
198
|
kv = config?.services?.keyvalue || new LocalKeyValueStorage(db, projectPath);
|
|
220
|
-
objectStore = config?.services?.object || new LocalObjectStorage(db, projectPath, serverUrl);
|
|
221
199
|
stream = config?.services?.stream || new LocalStreamStorage(db, projectPath, serverUrl);
|
|
222
200
|
vector = config?.services?.vector || new LocalVectorStorage(db, projectPath);
|
|
223
201
|
session = config?.services?.session || new DefaultSessionProvider();
|
|
@@ -245,7 +223,6 @@ export function createServices(logger: Logger, config?: AppConfig<any>, serverUr
|
|
|
245
223
|
|
|
246
224
|
// At this point we must be authenticated (since !authenticated would trigger local services above)
|
|
247
225
|
kv = config?.services?.keyvalue || new KeyValueStorageService(kvBaseUrl, adapter);
|
|
248
|
-
objectStore = config?.services?.object || new ObjectStorageService(objectBaseUrl, adapter);
|
|
249
226
|
stream = config?.services?.stream || new StreamStorageService(streamBaseUrl, adapter);
|
|
250
227
|
vector = config?.services?.vector || new VectorStorageService(vectorBaseUrl, adapter);
|
|
251
228
|
session = config?.services?.session || new DefaultSessionProvider();
|
|
@@ -304,11 +281,6 @@ export function registerServices(o: any, includeAgents = false) {
|
|
|
304
281
|
enumerable: false,
|
|
305
282
|
configurable: false,
|
|
306
283
|
});
|
|
307
|
-
Object.defineProperty(o, 'objectstore', {
|
|
308
|
-
get: () => objectStore,
|
|
309
|
-
enumerable: false,
|
|
310
|
-
configurable: false,
|
|
311
|
-
});
|
|
312
284
|
Object.defineProperty(o, 'stream', {
|
|
313
285
|
get: () => stream,
|
|
314
286
|
enumerable: false,
|
package/src/_validation.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import type { StandardSchemaV1 } from '@agentuity/core';
|
|
2
|
+
import type { StandardSchemaV1, InferInput, InferOutput } from '@agentuity/core';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Schema definition for routes that can have input (POST, PUT, PATCH, DELETE).
|
|
@@ -50,9 +50,7 @@ export type GetRouteSchema<
|
|
|
50
50
|
*
|
|
51
51
|
* @template T - Schema type
|
|
52
52
|
*/
|
|
53
|
-
export type InferSchemaInput<T> = T extends StandardSchemaV1
|
|
54
|
-
? StandardSchemaV1.InferInput<T>
|
|
55
|
-
: undefined;
|
|
53
|
+
export type InferSchemaInput<T> = T extends StandardSchemaV1 ? InferInput<T> : undefined;
|
|
56
54
|
|
|
57
55
|
/**
|
|
58
56
|
* Infer the output type from a StandardSchema.
|
|
@@ -60,9 +58,7 @@ export type InferSchemaInput<T> = T extends StandardSchemaV1
|
|
|
60
58
|
*
|
|
61
59
|
* @template T - Schema type
|
|
62
60
|
*/
|
|
63
|
-
export type InferSchemaOutput<T> = T extends StandardSchemaV1
|
|
64
|
-
? StandardSchemaV1.InferOutput<T>
|
|
65
|
-
: undefined;
|
|
61
|
+
export type InferSchemaOutput<T> = T extends StandardSchemaV1 ? InferOutput<T> : undefined;
|
|
66
62
|
|
|
67
63
|
/**
|
|
68
64
|
* Extract input schema from RouteSchema or GetRouteSchema.
|