@agentuity/hono 3.0.0-alpha.0
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/index.d.ts +89 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +119 -0
- package/dist/index.js.map +1 -0
- package/package.json +55 -0
- package/src/index.ts +173 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentuity/hono - Agentuity middleware for Hono
|
|
3
|
+
*
|
|
4
|
+
* Provides the `agentuity()` middleware that initializes telemetry and service clients,
|
|
5
|
+
* injecting them into Hono's context variables.
|
|
6
|
+
*
|
|
7
|
+
* @example Basic usage (auto-configured from env vars):
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { Hono } from 'hono';
|
|
10
|
+
* import { agentuity } from '@agentuity/hono';
|
|
11
|
+
*
|
|
12
|
+
* const app = new Hono();
|
|
13
|
+
* app.use('*', agentuity());
|
|
14
|
+
*
|
|
15
|
+
* app.get('/data', async (c) => {
|
|
16
|
+
* const { kv, logger } = c.var;
|
|
17
|
+
* const data = await kv.get('namespace', 'key');
|
|
18
|
+
* return c.json(data);
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import { type TelemetryConfig, type TelemetryResponse, type Logger } from '@agentuity/telemetry';
|
|
23
|
+
import { KeyValueClient, type KeyValueClientOptions } from '@agentuity/keyvalue';
|
|
24
|
+
import { VectorClient, type VectorClientOptions } from '@agentuity/vector';
|
|
25
|
+
import { StreamClient, type StreamClientOptions } from '@agentuity/stream';
|
|
26
|
+
import { QueueClient, type QueueClientOptions } from '@agentuity/queue';
|
|
27
|
+
import { EmailClient, type EmailClientOptions } from '@agentuity/email';
|
|
28
|
+
import { TaskClient, type TaskClientOptions } from '@agentuity/task';
|
|
29
|
+
import { ScheduleClient, type ScheduleClientOptions } from '@agentuity/schedule';
|
|
30
|
+
import { SandboxClient, type SandboxClientOptions } from '@agentuity/sandbox';
|
|
31
|
+
export interface ServicesConfig {
|
|
32
|
+
/** Logger instance */
|
|
33
|
+
logger?: Logger;
|
|
34
|
+
/** Service client options */
|
|
35
|
+
clients?: {
|
|
36
|
+
kv?: KeyValueClientOptions;
|
|
37
|
+
vector?: VectorClientOptions;
|
|
38
|
+
stream?: StreamClientOptions;
|
|
39
|
+
queue?: QueueClientOptions;
|
|
40
|
+
email?: EmailClientOptions;
|
|
41
|
+
task?: TaskClientOptions;
|
|
42
|
+
schedule?: ScheduleClientOptions;
|
|
43
|
+
sandbox?: SandboxClientOptions;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export interface Services {
|
|
47
|
+
kv: KeyValueClient;
|
|
48
|
+
stream: StreamClient;
|
|
49
|
+
vector: VectorClient;
|
|
50
|
+
sandbox: SandboxClient;
|
|
51
|
+
queue: QueueClient;
|
|
52
|
+
email: EmailClient;
|
|
53
|
+
schedule: ScheduleClient;
|
|
54
|
+
task: TaskClient;
|
|
55
|
+
}
|
|
56
|
+
export interface AgentuityOptions {
|
|
57
|
+
/** Telemetry configuration overrides */
|
|
58
|
+
telemetry?: Partial<TelemetryConfig>;
|
|
59
|
+
/** Services configuration */
|
|
60
|
+
services?: ServicesConfig;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get initialized services. Throws if not initialized.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getServices(): Services;
|
|
66
|
+
/**
|
|
67
|
+
* Reset global state (for testing).
|
|
68
|
+
*/
|
|
69
|
+
export declare function resetServices(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Create the Agentuity middleware for Hono.
|
|
72
|
+
*
|
|
73
|
+
* Initializes telemetry and services at middleware composition time,
|
|
74
|
+
* making them available via Hono's context variables.
|
|
75
|
+
*
|
|
76
|
+
* Telemetry auto-configures from AGENTUITY_* environment variables.
|
|
77
|
+
* Services auto-configure from AGENTUITY_SDK_KEY.
|
|
78
|
+
*/
|
|
79
|
+
export declare function agentuity(options?: AgentuityOptions): import("hono/types").MiddlewareHandler<any, string, {}, Response>;
|
|
80
|
+
/**
|
|
81
|
+
* Get the telemetry instance. Available after agentuity() is composed.
|
|
82
|
+
*/
|
|
83
|
+
export declare function getTelemetry(): TelemetryResponse | null;
|
|
84
|
+
/**
|
|
85
|
+
* Reset global state (for testing).
|
|
86
|
+
*/
|
|
87
|
+
export declare function reset(): void;
|
|
88
|
+
export type { TelemetryConfig, TelemetryResponse, Logger } from '@agentuity/telemetry';
|
|
89
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAEN,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC9B,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,OAAO,CAAC,EAAE;QACT,EAAE,CAAC,EAAE,qBAAqB,CAAC;QAC3B,MAAM,CAAC,EAAE,mBAAmB,CAAC;QAC7B,MAAM,CAAC,EAAE,mBAAmB,CAAC;QAC7B,KAAK,CAAC,EAAE,kBAAkB,CAAC;QAC3B,KAAK,CAAC,EAAE,kBAAkB,CAAC;QAC3B,IAAI,CAAC,EAAE,iBAAiB,CAAC;QACzB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;QACjC,OAAO,CAAC,EAAE,oBAAoB,CAAC;KAC/B,CAAC;CACF;AAED,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,cAAc,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAChC,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACrC,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC1B;AA0BD;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAKtC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,qEAgCnD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,iBAAiB,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,IAAI,CAG5B;AAGD,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentuity/hono - Agentuity middleware for Hono
|
|
3
|
+
*
|
|
4
|
+
* Provides the `agentuity()` middleware that initializes telemetry and service clients,
|
|
5
|
+
* injecting them into Hono's context variables.
|
|
6
|
+
*
|
|
7
|
+
* @example Basic usage (auto-configured from env vars):
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { Hono } from 'hono';
|
|
10
|
+
* import { agentuity } from '@agentuity/hono';
|
|
11
|
+
*
|
|
12
|
+
* const app = new Hono();
|
|
13
|
+
* app.use('*', agentuity());
|
|
14
|
+
*
|
|
15
|
+
* app.get('/data', async (c) => {
|
|
16
|
+
* const { kv, logger } = c.var;
|
|
17
|
+
* const data = await kv.get('namespace', 'key');
|
|
18
|
+
* return c.json(data);
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import { createMiddleware } from 'hono/factory';
|
|
23
|
+
import { register, } from '@agentuity/telemetry';
|
|
24
|
+
import { KeyValueClient } from '@agentuity/keyvalue';
|
|
25
|
+
import { VectorClient } from '@agentuity/vector';
|
|
26
|
+
import { StreamClient } from '@agentuity/stream';
|
|
27
|
+
import { QueueClient } from '@agentuity/queue';
|
|
28
|
+
import { EmailClient } from '@agentuity/email';
|
|
29
|
+
import { TaskClient } from '@agentuity/task';
|
|
30
|
+
import { ScheduleClient } from '@agentuity/schedule';
|
|
31
|
+
import { SandboxClient } from '@agentuity/sandbox';
|
|
32
|
+
// Global state (initialized once at composition time)
|
|
33
|
+
let telemetryInstance = null;
|
|
34
|
+
let globalServices = null;
|
|
35
|
+
/**
|
|
36
|
+
* Initialize service clients.
|
|
37
|
+
*/
|
|
38
|
+
function initServices(config) {
|
|
39
|
+
if (globalServices)
|
|
40
|
+
return globalServices;
|
|
41
|
+
globalServices = {
|
|
42
|
+
kv: new KeyValueClient({ logger: config?.logger, ...config?.clients?.kv }),
|
|
43
|
+
stream: new StreamClient({ logger: config?.logger, ...config?.clients?.stream }),
|
|
44
|
+
vector: new VectorClient({ logger: config?.logger, ...config?.clients?.vector }),
|
|
45
|
+
queue: new QueueClient({ logger: config?.logger, ...config?.clients?.queue }),
|
|
46
|
+
email: new EmailClient({ logger: config?.logger, ...config?.clients?.email }),
|
|
47
|
+
task: new TaskClient({ logger: config?.logger, ...config?.clients?.task }),
|
|
48
|
+
schedule: new ScheduleClient({ logger: config?.logger, ...config?.clients?.schedule }),
|
|
49
|
+
sandbox: new SandboxClient({ logger: config?.logger, ...config?.clients?.sandbox }),
|
|
50
|
+
};
|
|
51
|
+
return globalServices;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get initialized services. Throws if not initialized.
|
|
55
|
+
*/
|
|
56
|
+
export function getServices() {
|
|
57
|
+
if (!globalServices) {
|
|
58
|
+
throw new Error('Services not initialized. Call agentuity() first.');
|
|
59
|
+
}
|
|
60
|
+
return globalServices;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Reset global state (for testing).
|
|
64
|
+
*/
|
|
65
|
+
export function resetServices() {
|
|
66
|
+
globalServices = null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create the Agentuity middleware for Hono.
|
|
70
|
+
*
|
|
71
|
+
* Initializes telemetry and services at middleware composition time,
|
|
72
|
+
* making them available via Hono's context variables.
|
|
73
|
+
*
|
|
74
|
+
* Telemetry auto-configures from AGENTUITY_* environment variables.
|
|
75
|
+
* Services auto-configure from AGENTUITY_SDK_KEY.
|
|
76
|
+
*/
|
|
77
|
+
export function agentuity(options) {
|
|
78
|
+
// Initialize telemetry (auto-configures from env vars)
|
|
79
|
+
if (!telemetryInstance) {
|
|
80
|
+
telemetryInstance = register(options?.telemetry);
|
|
81
|
+
}
|
|
82
|
+
// Initialize services
|
|
83
|
+
initServices({
|
|
84
|
+
logger: telemetryInstance.logger,
|
|
85
|
+
...options?.services,
|
|
86
|
+
});
|
|
87
|
+
// Return the middleware handler
|
|
88
|
+
return createMiddleware(async (c, next) => {
|
|
89
|
+
// Inject telemetry into context
|
|
90
|
+
c.set('tracer', telemetryInstance.tracer);
|
|
91
|
+
c.set('logger', telemetryInstance.logger);
|
|
92
|
+
c.set('meter', telemetryInstance.meter);
|
|
93
|
+
// Inject services into context
|
|
94
|
+
const services = getServices();
|
|
95
|
+
c.set('kv', services.kv);
|
|
96
|
+
c.set('stream', services.stream);
|
|
97
|
+
c.set('vector', services.vector);
|
|
98
|
+
c.set('queue', services.queue);
|
|
99
|
+
c.set('email', services.email);
|
|
100
|
+
c.set('schedule', services.schedule);
|
|
101
|
+
c.set('task', services.task);
|
|
102
|
+
c.set('sandbox', services.sandbox);
|
|
103
|
+
await next();
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get the telemetry instance. Available after agentuity() is composed.
|
|
108
|
+
*/
|
|
109
|
+
export function getTelemetry() {
|
|
110
|
+
return telemetryInstance;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Reset global state (for testing).
|
|
114
|
+
*/
|
|
115
|
+
export function reset() {
|
|
116
|
+
telemetryInstance = null;
|
|
117
|
+
resetServices();
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agentuity/hono",
|
|
3
|
+
"version": "3.0.0-alpha.0",
|
|
4
|
+
"license": "Apache-2.0",
|
|
5
|
+
"author": "Agentuity employees and contributors",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"src",
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
21
|
+
"build": "bunx tsc --build",
|
|
22
|
+
"typecheck": "bunx tsc --noEmit",
|
|
23
|
+
"prepublishOnly": "bun run clean && bun run build"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@agentuity/telemetry": "3.0.0-alpha.0",
|
|
27
|
+
"@agentuity/keyvalue": "3.0.0-alpha.0",
|
|
28
|
+
"@agentuity/vector": "3.0.0-alpha.0",
|
|
29
|
+
"@agentuity/stream": "3.0.0-alpha.0",
|
|
30
|
+
"@agentuity/queue": "3.0.0-alpha.0",
|
|
31
|
+
"@agentuity/email": "3.0.0-alpha.0",
|
|
32
|
+
"@agentuity/task": "3.0.0-alpha.0",
|
|
33
|
+
"@agentuity/schedule": "3.0.0-alpha.0",
|
|
34
|
+
"@agentuity/sandbox": "3.0.0-alpha.0",
|
|
35
|
+
"@opentelemetry/api": "^1.9.0",
|
|
36
|
+
"hono": "^4.7.13"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/bun": "latest",
|
|
40
|
+
"bun-types": "latest",
|
|
41
|
+
"typescript": "^5.9.0"
|
|
42
|
+
},
|
|
43
|
+
"peerDependencies": {
|
|
44
|
+
"hono": "^4.0.0"
|
|
45
|
+
},
|
|
46
|
+
"publishConfig": {
|
|
47
|
+
"access": "public"
|
|
48
|
+
},
|
|
49
|
+
"sideEffects": false,
|
|
50
|
+
"repository": {
|
|
51
|
+
"type": "git",
|
|
52
|
+
"url": "https://github.com/agentuity/sdk.git",
|
|
53
|
+
"directory": "packages/hono"
|
|
54
|
+
}
|
|
55
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentuity/hono - Agentuity middleware for Hono
|
|
3
|
+
*
|
|
4
|
+
* Provides the `agentuity()` middleware that initializes telemetry and service clients,
|
|
5
|
+
* injecting them into Hono's context variables.
|
|
6
|
+
*
|
|
7
|
+
* @example Basic usage (auto-configured from env vars):
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { Hono } from 'hono';
|
|
10
|
+
* import { agentuity } from '@agentuity/hono';
|
|
11
|
+
*
|
|
12
|
+
* const app = new Hono();
|
|
13
|
+
* app.use('*', agentuity());
|
|
14
|
+
*
|
|
15
|
+
* app.get('/data', async (c) => {
|
|
16
|
+
* const { kv, logger } = c.var;
|
|
17
|
+
* const data = await kv.get('namespace', 'key');
|
|
18
|
+
* return c.json(data);
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import { createMiddleware } from 'hono/factory';
|
|
24
|
+
import {
|
|
25
|
+
register,
|
|
26
|
+
type TelemetryConfig,
|
|
27
|
+
type TelemetryResponse,
|
|
28
|
+
type Logger,
|
|
29
|
+
} from '@agentuity/telemetry';
|
|
30
|
+
import { KeyValueClient, type KeyValueClientOptions } from '@agentuity/keyvalue';
|
|
31
|
+
import { VectorClient, type VectorClientOptions } from '@agentuity/vector';
|
|
32
|
+
import { StreamClient, type StreamClientOptions } from '@agentuity/stream';
|
|
33
|
+
import { QueueClient, type QueueClientOptions } from '@agentuity/queue';
|
|
34
|
+
import { EmailClient, type EmailClientOptions } from '@agentuity/email';
|
|
35
|
+
import { TaskClient, type TaskClientOptions } from '@agentuity/task';
|
|
36
|
+
import { ScheduleClient, type ScheduleClientOptions } from '@agentuity/schedule';
|
|
37
|
+
import { SandboxClient, type SandboxClientOptions } from '@agentuity/sandbox';
|
|
38
|
+
|
|
39
|
+
export interface ServicesConfig {
|
|
40
|
+
/** Logger instance */
|
|
41
|
+
logger?: Logger;
|
|
42
|
+
/** Service client options */
|
|
43
|
+
clients?: {
|
|
44
|
+
kv?: KeyValueClientOptions;
|
|
45
|
+
vector?: VectorClientOptions;
|
|
46
|
+
stream?: StreamClientOptions;
|
|
47
|
+
queue?: QueueClientOptions;
|
|
48
|
+
email?: EmailClientOptions;
|
|
49
|
+
task?: TaskClientOptions;
|
|
50
|
+
schedule?: ScheduleClientOptions;
|
|
51
|
+
sandbox?: SandboxClientOptions;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface Services {
|
|
56
|
+
kv: KeyValueClient;
|
|
57
|
+
stream: StreamClient;
|
|
58
|
+
vector: VectorClient;
|
|
59
|
+
sandbox: SandboxClient;
|
|
60
|
+
queue: QueueClient;
|
|
61
|
+
email: EmailClient;
|
|
62
|
+
schedule: ScheduleClient;
|
|
63
|
+
task: TaskClient;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface AgentuityOptions {
|
|
67
|
+
/** Telemetry configuration overrides */
|
|
68
|
+
telemetry?: Partial<TelemetryConfig>;
|
|
69
|
+
/** Services configuration */
|
|
70
|
+
services?: ServicesConfig;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Global state (initialized once at composition time)
|
|
74
|
+
let telemetryInstance: TelemetryResponse | null = null;
|
|
75
|
+
let globalServices: Services | null = null;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Initialize service clients.
|
|
79
|
+
*/
|
|
80
|
+
function initServices(config?: ServicesConfig): Services {
|
|
81
|
+
if (globalServices) return globalServices;
|
|
82
|
+
|
|
83
|
+
globalServices = {
|
|
84
|
+
kv: new KeyValueClient({ logger: config?.logger, ...config?.clients?.kv }),
|
|
85
|
+
stream: new StreamClient({ logger: config?.logger, ...config?.clients?.stream }),
|
|
86
|
+
vector: new VectorClient({ logger: config?.logger, ...config?.clients?.vector }),
|
|
87
|
+
queue: new QueueClient({ logger: config?.logger, ...config?.clients?.queue }),
|
|
88
|
+
email: new EmailClient({ logger: config?.logger, ...config?.clients?.email }),
|
|
89
|
+
task: new TaskClient({ logger: config?.logger, ...config?.clients?.task }),
|
|
90
|
+
schedule: new ScheduleClient({ logger: config?.logger, ...config?.clients?.schedule }),
|
|
91
|
+
sandbox: new SandboxClient({ logger: config?.logger, ...config?.clients?.sandbox }),
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
return globalServices;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Get initialized services. Throws if not initialized.
|
|
99
|
+
*/
|
|
100
|
+
export function getServices(): Services {
|
|
101
|
+
if (!globalServices) {
|
|
102
|
+
throw new Error('Services not initialized. Call agentuity() first.');
|
|
103
|
+
}
|
|
104
|
+
return globalServices;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Reset global state (for testing).
|
|
109
|
+
*/
|
|
110
|
+
export function resetServices(): void {
|
|
111
|
+
globalServices = null;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Create the Agentuity middleware for Hono.
|
|
116
|
+
*
|
|
117
|
+
* Initializes telemetry and services at middleware composition time,
|
|
118
|
+
* making them available via Hono's context variables.
|
|
119
|
+
*
|
|
120
|
+
* Telemetry auto-configures from AGENTUITY_* environment variables.
|
|
121
|
+
* Services auto-configure from AGENTUITY_SDK_KEY.
|
|
122
|
+
*/
|
|
123
|
+
export function agentuity(options?: AgentuityOptions) {
|
|
124
|
+
// Initialize telemetry (auto-configures from env vars)
|
|
125
|
+
if (!telemetryInstance) {
|
|
126
|
+
telemetryInstance = register(options?.telemetry);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Initialize services
|
|
130
|
+
initServices({
|
|
131
|
+
logger: telemetryInstance.logger,
|
|
132
|
+
...options?.services,
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
// Return the middleware handler
|
|
136
|
+
return createMiddleware(async (c, next) => {
|
|
137
|
+
// Inject telemetry into context
|
|
138
|
+
c.set('tracer', telemetryInstance!.tracer as any);
|
|
139
|
+
c.set('logger', telemetryInstance!.logger as any);
|
|
140
|
+
c.set('meter', telemetryInstance!.meter as any);
|
|
141
|
+
|
|
142
|
+
// Inject services into context
|
|
143
|
+
const services = getServices();
|
|
144
|
+
c.set('kv', services.kv as any);
|
|
145
|
+
c.set('stream', services.stream as any);
|
|
146
|
+
c.set('vector', services.vector as any);
|
|
147
|
+
c.set('queue', services.queue as any);
|
|
148
|
+
c.set('email', services.email as any);
|
|
149
|
+
c.set('schedule', services.schedule as any);
|
|
150
|
+
c.set('task', services.task as any);
|
|
151
|
+
c.set('sandbox', services.sandbox as any);
|
|
152
|
+
|
|
153
|
+
await next();
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Get the telemetry instance. Available after agentuity() is composed.
|
|
159
|
+
*/
|
|
160
|
+
export function getTelemetry(): TelemetryResponse | null {
|
|
161
|
+
return telemetryInstance;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Reset global state (for testing).
|
|
166
|
+
*/
|
|
167
|
+
export function reset(): void {
|
|
168
|
+
telemetryInstance = null;
|
|
169
|
+
resetServices();
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Re-export types
|
|
173
|
+
export type { TelemetryConfig, TelemetryResponse, Logger } from '@agentuity/telemetry';
|