@agentuity/hono 3.1.5 → 3.1.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACnD,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,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,GAAG,EACpE,OAAO,CAAC,EAAE,gBAAgB,GACxB,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAqCzB;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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACnD,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;AA8CD;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAMtC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,GAAG,EACpE,OAAO,CAAC,EAAE,gBAAgB,GACxB,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CA0CzB;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 CHANGED
@@ -29,16 +29,31 @@ import { EmailClient } from '@agentuity/email';
29
29
  import { TaskClient } from '@agentuity/task';
30
30
  import { ScheduleClient } from '@agentuity/schedule';
31
31
  import { SandboxClient } from '@agentuity/sandbox';
32
- // Global state (initialized once at composition time)
33
- let telemetryInstance = null;
34
- let globalServices = null;
32
+ // Process-global state (survives bun --hot module re-evaluation)
33
+ const telemetryInstanceKey = Symbol.for('@agentuity/hono:telemetry');
34
+ const servicesInstanceKey = Symbol.for('@agentuity/hono:services');
35
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
+ const g = globalThis;
37
+ function getTelemetryInstance() {
38
+ return g[telemetryInstanceKey] ?? null;
39
+ }
40
+ function setTelemetryInstance(value) {
41
+ g[telemetryInstanceKey] = value;
42
+ }
43
+ function getGlobalServices() {
44
+ return g[servicesInstanceKey] ?? null;
45
+ }
46
+ function setGlobalServices(value) {
47
+ g[servicesInstanceKey] = value;
48
+ }
35
49
  /**
36
50
  * Initialize service clients.
37
51
  */
38
52
  function initServices(config) {
39
- if (globalServices)
40
- return globalServices;
41
- globalServices = {
53
+ const existing = getGlobalServices();
54
+ if (existing)
55
+ return existing;
56
+ const services = {
42
57
  kv: new KeyValueClient({ logger: config?.logger, ...config?.clients?.kv }),
43
58
  stream: new StreamClient({ logger: config?.logger, ...config?.clients?.stream }),
44
59
  vector: new VectorClient({ logger: config?.logger, ...config?.clients?.vector }),
@@ -48,22 +63,24 @@ function initServices(config) {
48
63
  schedule: new ScheduleClient({ logger: config?.logger, ...config?.clients?.schedule }),
49
64
  sandbox: new SandboxClient({ logger: config?.logger, ...config?.clients?.sandbox }),
50
65
  };
51
- return globalServices;
66
+ setGlobalServices(services);
67
+ return services;
52
68
  }
53
69
  /**
54
70
  * Get initialized services. Throws if not initialized.
55
71
  */
56
72
  export function getServices() {
57
- if (!globalServices) {
73
+ const services = getGlobalServices();
74
+ if (!services) {
58
75
  throw new Error('Services not initialized. Call agentuity() first.');
59
76
  }
60
- return globalServices;
77
+ return services;
61
78
  }
62
79
  /**
63
80
  * Reset global state (for testing).
64
81
  */
65
82
  export function resetServices() {
66
- globalServices = null;
83
+ setGlobalServices(null);
67
84
  }
68
85
  /**
69
86
  * Create the Agentuity middleware for Hono.
@@ -75,9 +92,12 @@ export function resetServices() {
75
92
  * Services auto-configure from AGENTUITY_SDK_KEY.
76
93
  */
77
94
  export function agentuity(options) {
78
- // Initialize telemetry (auto-configures from env vars)
95
+ // Initialize telemetry (auto-configures from env vars).
96
+ // Stored on globalThis so bun --hot does not re-register and re-patch console.
97
+ let telemetryInstance = getTelemetryInstance();
79
98
  if (!telemetryInstance) {
80
99
  telemetryInstance = register(options?.telemetry);
100
+ setTelemetryInstance(telemetryInstance);
81
101
  }
82
102
  // Initialize services
83
103
  initServices({
@@ -90,10 +110,11 @@ export function agentuity(options) {
90
110
  // consuming app's Variables map. Set by string here so typed apps can
91
111
  // choose the subset of Agentuity variables they want to expose.
92
112
  const setVar = c.set;
113
+ const activeTelemetry = getTelemetryInstance() ?? telemetryInstance;
93
114
  // Inject telemetry into context
94
- setVar('tracer', telemetryInstance.tracer);
95
- setVar('logger', telemetryInstance.logger);
96
- setVar('meter', telemetryInstance.meter);
115
+ setVar('tracer', activeTelemetry.tracer);
116
+ setVar('logger', activeTelemetry.logger);
117
+ setVar('meter', activeTelemetry.meter);
97
118
  // Inject services into context
98
119
  const services = getServices();
99
120
  setVar('kv', services.kv);
@@ -111,13 +132,13 @@ export function agentuity(options) {
111
132
  * Get the telemetry instance. Available after agentuity() is composed.
112
133
  */
113
134
  export function getTelemetry() {
114
- return telemetryInstance;
135
+ return getTelemetryInstance();
115
136
  }
116
137
  /**
117
138
  * Reset global state (for testing).
118
139
  */
119
140
  export function reset() {
120
- telemetryInstance = null;
141
+ setTelemetryInstance(null);
121
142
  resetServices();
122
143
  }
123
144
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentuity/hono",
3
- "version": "3.1.5",
3
+ "version": "3.1.7",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Agentuity employees and contributors",
6
6
  "type": "module",
@@ -24,15 +24,15 @@
24
24
  "test": "bun test"
25
25
  },
26
26
  "dependencies": {
27
- "@agentuity/telemetry": "3.1.5",
28
- "@agentuity/keyvalue": "3.1.5",
29
- "@agentuity/vector": "3.1.5",
30
- "@agentuity/stream": "3.1.5",
31
- "@agentuity/queue": "3.1.5",
32
- "@agentuity/email": "3.1.5",
33
- "@agentuity/task": "3.1.5",
34
- "@agentuity/schedule": "3.1.5",
35
- "@agentuity/sandbox": "3.1.5",
27
+ "@agentuity/telemetry": "3.1.7",
28
+ "@agentuity/keyvalue": "3.1.7",
29
+ "@agentuity/vector": "3.1.7",
30
+ "@agentuity/stream": "3.1.7",
31
+ "@agentuity/queue": "3.1.7",
32
+ "@agentuity/email": "3.1.7",
33
+ "@agentuity/task": "3.1.7",
34
+ "@agentuity/schedule": "3.1.7",
35
+ "@agentuity/sandbox": "3.1.7",
36
36
  "hono": "^4.7.13"
37
37
  },
38
38
  "devDependencies": {
package/src/index.ts CHANGED
@@ -71,17 +71,37 @@ export interface AgentuityOptions {
71
71
  services?: ServicesConfig;
72
72
  }
73
73
 
74
- // Global state (initialized once at composition time)
75
- let telemetryInstance: TelemetryResponse | null = null;
76
- let globalServices: Services | null = null;
74
+ // Process-global state (survives bun --hot module re-evaluation)
75
+ const telemetryInstanceKey = Symbol.for('@agentuity/hono:telemetry');
76
+ const servicesInstanceKey = Symbol.for('@agentuity/hono:services');
77
+
78
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
+ const g = globalThis as any;
80
+
81
+ function getTelemetryInstance(): TelemetryResponse | null {
82
+ return (g[telemetryInstanceKey] as TelemetryResponse | undefined) ?? null;
83
+ }
84
+
85
+ function setTelemetryInstance(value: TelemetryResponse | null): void {
86
+ g[telemetryInstanceKey] = value;
87
+ }
88
+
89
+ function getGlobalServices(): Services | null {
90
+ return (g[servicesInstanceKey] as Services | undefined) ?? null;
91
+ }
92
+
93
+ function setGlobalServices(value: Services | null): void {
94
+ g[servicesInstanceKey] = value;
95
+ }
77
96
 
78
97
  /**
79
98
  * Initialize service clients.
80
99
  */
81
100
  function initServices(config?: ServicesConfig): Services {
82
- if (globalServices) return globalServices;
101
+ const existing = getGlobalServices();
102
+ if (existing) return existing;
83
103
 
84
- globalServices = {
104
+ const services: Services = {
85
105
  kv: new KeyValueClient({ logger: config?.logger, ...config?.clients?.kv }),
86
106
  stream: new StreamClient({ logger: config?.logger, ...config?.clients?.stream }),
87
107
  vector: new VectorClient({ logger: config?.logger, ...config?.clients?.vector }),
@@ -91,25 +111,26 @@ function initServices(config?: ServicesConfig): Services {
91
111
  schedule: new ScheduleClient({ logger: config?.logger, ...config?.clients?.schedule }),
92
112
  sandbox: new SandboxClient({ logger: config?.logger, ...config?.clients?.sandbox }),
93
113
  };
94
-
95
- return globalServices;
114
+ setGlobalServices(services);
115
+ return services;
96
116
  }
97
117
 
98
118
  /**
99
119
  * Get initialized services. Throws if not initialized.
100
120
  */
101
121
  export function getServices(): Services {
102
- if (!globalServices) {
122
+ const services = getGlobalServices();
123
+ if (!services) {
103
124
  throw new Error('Services not initialized. Call agentuity() first.');
104
125
  }
105
- return globalServices;
126
+ return services;
106
127
  }
107
128
 
108
129
  /**
109
130
  * Reset global state (for testing).
110
131
  */
111
132
  export function resetServices(): void {
112
- globalServices = null;
133
+ setGlobalServices(null);
113
134
  }
114
135
 
115
136
  /**
@@ -124,9 +145,12 @@ export function resetServices(): void {
124
145
  export function agentuity<E extends Env = any, P extends string = any>(
125
146
  options?: AgentuityOptions
126
147
  ): MiddlewareHandler<E, P> {
127
- // Initialize telemetry (auto-configures from env vars)
148
+ // Initialize telemetry (auto-configures from env vars).
149
+ // Stored on globalThis so bun --hot does not re-register and re-patch console.
150
+ let telemetryInstance = getTelemetryInstance();
128
151
  if (!telemetryInstance) {
129
152
  telemetryInstance = register(options?.telemetry);
153
+ setTelemetryInstance(telemetryInstance);
130
154
  }
131
155
 
132
156
  // Initialize services
@@ -142,10 +166,12 @@ export function agentuity<E extends Env = any, P extends string = any>(
142
166
  // choose the subset of Agentuity variables they want to expose.
143
167
  const setVar = c.set as (key: string, value: unknown) => void;
144
168
 
169
+ const activeTelemetry = getTelemetryInstance() ?? telemetryInstance;
170
+
145
171
  // Inject telemetry into context
146
- setVar('tracer', telemetryInstance!.tracer);
147
- setVar('logger', telemetryInstance!.logger);
148
- setVar('meter', telemetryInstance!.meter);
172
+ setVar('tracer', activeTelemetry.tracer);
173
+ setVar('logger', activeTelemetry.logger);
174
+ setVar('meter', activeTelemetry.meter);
149
175
 
150
176
  // Inject services into context
151
177
  const services = getServices();
@@ -166,14 +192,14 @@ export function agentuity<E extends Env = any, P extends string = any>(
166
192
  * Get the telemetry instance. Available after agentuity() is composed.
167
193
  */
168
194
  export function getTelemetry(): TelemetryResponse | null {
169
- return telemetryInstance;
195
+ return getTelemetryInstance();
170
196
  }
171
197
 
172
198
  /**
173
199
  * Reset global state (for testing).
174
200
  */
175
201
  export function reset(): void {
176
- telemetryInstance = null;
202
+ setTelemetryInstance(null);
177
203
  resetServices();
178
204
  }
179
205