@agentuity/runtime 0.1.13 → 0.1.14
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/package.json +8 -8
- package/src/_config.ts +13 -0
- package/src/_standalone.ts +167 -19
- package/src/index.ts +1 -0
- package/dist/_config.d.ts +0 -90
- package/dist/_config.d.ts.map +0 -1
- package/dist/_config.js +0 -135
- package/dist/_config.js.map +0 -1
- package/dist/_context.d.ts +0 -76
- package/dist/_context.d.ts.map +0 -1
- package/dist/_context.js +0 -147
- package/dist/_context.js.map +0 -1
- package/dist/_events.d.ts +0 -64
- package/dist/_events.d.ts.map +0 -1
- package/dist/_events.js +0 -92
- package/dist/_events.js.map +0 -1
- package/dist/_idle.d.ts +0 -7
- package/dist/_idle.d.ts.map +0 -1
- package/dist/_idle.js +0 -10
- package/dist/_idle.js.map +0 -1
- package/dist/_metadata.d.ts +0 -117
- package/dist/_metadata.d.ts.map +0 -1
- package/dist/_metadata.js +0 -246
- package/dist/_metadata.js.map +0 -1
- package/dist/_process-protection.d.ts +0 -25
- package/dist/_process-protection.d.ts.map +0 -1
- package/dist/_process-protection.js +0 -65
- package/dist/_process-protection.js.map +0 -1
- package/dist/_server.d.ts +0 -46
- package/dist/_server.d.ts.map +0 -1
- package/dist/_server.js +0 -85
- package/dist/_server.js.map +0 -1
- package/dist/_services.d.ts +0 -21
- package/dist/_services.d.ts.map +0 -1
- package/dist/_services.js +0 -248
- package/dist/_services.js.map +0 -1
- package/dist/_standalone.d.ts +0 -168
- package/dist/_standalone.d.ts.map +0 -1
- package/dist/_standalone.js +0 -441
- package/dist/_standalone.js.map +0 -1
- package/dist/_tokens.d.ts +0 -12
- package/dist/_tokens.d.ts.map +0 -1
- package/dist/_tokens.js +0 -96
- package/dist/_tokens.js.map +0 -1
- package/dist/_util.d.ts +0 -16
- package/dist/_util.d.ts.map +0 -1
- package/dist/_util.js +0 -54
- package/dist/_util.js.map +0 -1
- package/dist/_validation.d.ts +0 -89
- package/dist/_validation.d.ts.map +0 -1
- package/dist/_validation.js +0 -29
- package/dist/_validation.js.map +0 -1
- package/dist/_waituntil.d.ts +0 -18
- package/dist/_waituntil.d.ts.map +0 -1
- package/dist/_waituntil.js +0 -97
- package/dist/_waituntil.js.map +0 -1
- package/dist/agent.d.ts +0 -1210
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -903
- package/dist/agent.js.map +0 -1
- package/dist/app.d.ts +0 -322
- package/dist/app.d.ts.map +0 -1
- package/dist/app.js +0 -160
- package/dist/app.js.map +0 -1
- package/dist/bun-s3-patch.d.ts +0 -37
- package/dist/bun-s3-patch.d.ts.map +0 -1
- package/dist/bun-s3-patch.js +0 -139
- package/dist/bun-s3-patch.js.map +0 -1
- package/dist/cors.d.ts +0 -42
- package/dist/cors.d.ts.map +0 -1
- package/dist/cors.js +0 -117
- package/dist/cors.js.map +0 -1
- package/dist/devmode.d.ts +0 -3
- package/dist/devmode.d.ts.map +0 -1
- package/dist/devmode.js +0 -167
- package/dist/devmode.js.map +0 -1
- package/dist/eval.d.ts +0 -91
- package/dist/eval.d.ts.map +0 -1
- package/dist/eval.js +0 -16
- package/dist/eval.js.map +0 -1
- package/dist/handlers/cron.d.ts +0 -47
- package/dist/handlers/cron.d.ts.map +0 -1
- package/dist/handlers/cron.js +0 -49
- package/dist/handlers/cron.js.map +0 -1
- package/dist/handlers/index.d.ts +0 -5
- package/dist/handlers/index.d.ts.map +0 -1
- package/dist/handlers/index.js +0 -5
- package/dist/handlers/index.js.map +0 -1
- package/dist/handlers/sse.d.ts +0 -91
- package/dist/handlers/sse.d.ts.map +0 -1
- package/dist/handlers/sse.js +0 -213
- package/dist/handlers/sse.js.map +0 -1
- package/dist/handlers/stream.d.ts +0 -52
- package/dist/handlers/stream.d.ts.map +0 -1
- package/dist/handlers/stream.js +0 -116
- package/dist/handlers/stream.js.map +0 -1
- package/dist/handlers/websocket.d.ts +0 -49
- package/dist/handlers/websocket.d.ts.map +0 -1
- package/dist/handlers/websocket.js +0 -143
- package/dist/handlers/websocket.js.map +0 -1
- package/dist/index.d.ts +0 -71
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -58
- package/dist/index.js.map +0 -1
- package/dist/logger/console.d.ts +0 -70
- package/dist/logger/console.d.ts.map +0 -1
- package/dist/logger/console.js +0 -274
- package/dist/logger/console.js.map +0 -1
- package/dist/logger/index.d.ts +0 -3
- package/dist/logger/index.d.ts.map +0 -1
- package/dist/logger/index.js +0 -3
- package/dist/logger/index.js.map +0 -1
- package/dist/logger/internal.d.ts +0 -79
- package/dist/logger/internal.d.ts.map +0 -1
- package/dist/logger/internal.js +0 -133
- package/dist/logger/internal.js.map +0 -1
- package/dist/logger/logger.d.ts +0 -41
- package/dist/logger/logger.d.ts.map +0 -1
- package/dist/logger/logger.js +0 -2
- package/dist/logger/logger.js.map +0 -1
- package/dist/logger/user.d.ts +0 -8
- package/dist/logger/user.d.ts.map +0 -1
- package/dist/logger/user.js +0 -7
- package/dist/logger/user.js.map +0 -1
- package/dist/logger/util.d.ts +0 -11
- package/dist/logger/util.d.ts.map +0 -1
- package/dist/logger/util.js +0 -77
- package/dist/logger/util.js.map +0 -1
- package/dist/middleware.d.ts +0 -112
- package/dist/middleware.d.ts.map +0 -1
- package/dist/middleware.js +0 -507
- package/dist/middleware.js.map +0 -1
- package/dist/otel/config.d.ts +0 -19
- package/dist/otel/config.d.ts.map +0 -1
- package/dist/otel/config.js +0 -26
- package/dist/otel/config.js.map +0 -1
- package/dist/otel/console.d.ts +0 -33
- package/dist/otel/console.d.ts.map +0 -1
- package/dist/otel/console.js +0 -86
- package/dist/otel/console.js.map +0 -1
- package/dist/otel/exporters/index.d.ts +0 -4
- package/dist/otel/exporters/index.d.ts.map +0 -1
- package/dist/otel/exporters/index.js +0 -4
- package/dist/otel/exporters/index.js.map +0 -1
- package/dist/otel/exporters/jsonl-log-exporter.d.ts +0 -36
- package/dist/otel/exporters/jsonl-log-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-log-exporter.js +0 -103
- package/dist/otel/exporters/jsonl-log-exporter.js.map +0 -1
- package/dist/otel/exporters/jsonl-metric-exporter.d.ts +0 -40
- package/dist/otel/exporters/jsonl-metric-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-metric-exporter.js +0 -104
- package/dist/otel/exporters/jsonl-metric-exporter.js.map +0 -1
- package/dist/otel/exporters/jsonl-trace-exporter.d.ts +0 -36
- package/dist/otel/exporters/jsonl-trace-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-trace-exporter.js +0 -111
- package/dist/otel/exporters/jsonl-trace-exporter.js.map +0 -1
- package/dist/otel/fetch.d.ts +0 -12
- package/dist/otel/fetch.d.ts.map +0 -1
- package/dist/otel/fetch.js +0 -82
- package/dist/otel/fetch.js.map +0 -1
- package/dist/otel/http.d.ts +0 -16
- package/dist/otel/http.d.ts.map +0 -1
- package/dist/otel/http.js +0 -44
- package/dist/otel/http.js.map +0 -1
- package/dist/otel/logger.d.ts +0 -37
- package/dist/otel/logger.d.ts.map +0 -1
- package/dist/otel/logger.js +0 -268
- package/dist/otel/logger.js.map +0 -1
- package/dist/otel/otel.d.ts +0 -65
- package/dist/otel/otel.d.ts.map +0 -1
- package/dist/otel/otel.js +0 -261
- package/dist/otel/otel.js.map +0 -1
- package/dist/router.d.ts +0 -100
- package/dist/router.d.ts.map +0 -1
- package/dist/router.js +0 -163
- package/dist/router.js.map +0 -1
- package/dist/services/evalrun/composite.d.ts +0 -21
- package/dist/services/evalrun/composite.d.ts.map +0 -1
- package/dist/services/evalrun/composite.js +0 -26
- package/dist/services/evalrun/composite.js.map +0 -1
- package/dist/services/evalrun/http.d.ts +0 -24
- package/dist/services/evalrun/http.d.ts.map +0 -1
- package/dist/services/evalrun/http.js +0 -86
- package/dist/services/evalrun/http.js.map +0 -1
- package/dist/services/evalrun/index.d.ts +0 -5
- package/dist/services/evalrun/index.d.ts.map +0 -1
- package/dist/services/evalrun/index.js +0 -5
- package/dist/services/evalrun/index.js.map +0 -1
- package/dist/services/evalrun/json.d.ts +0 -21
- package/dist/services/evalrun/json.d.ts.map +0 -1
- package/dist/services/evalrun/json.js +0 -38
- package/dist/services/evalrun/json.js.map +0 -1
- package/dist/services/evalrun/local.d.ts +0 -19
- package/dist/services/evalrun/local.d.ts.map +0 -1
- package/dist/services/evalrun/local.js +0 -22
- package/dist/services/evalrun/local.js.map +0 -1
- package/dist/services/local/_db.d.ts +0 -4
- package/dist/services/local/_db.d.ts.map +0 -1
- package/dist/services/local/_db.js +0 -123
- package/dist/services/local/_db.js.map +0 -1
- package/dist/services/local/_router.d.ts +0 -3
- package/dist/services/local/_router.d.ts.map +0 -1
- package/dist/services/local/_router.js +0 -28
- package/dist/services/local/_router.js.map +0 -1
- package/dist/services/local/_util.d.ts +0 -18
- package/dist/services/local/_util.d.ts.map +0 -1
- package/dist/services/local/_util.js +0 -44
- package/dist/services/local/_util.js.map +0 -1
- package/dist/services/local/index.d.ts +0 -7
- package/dist/services/local/index.d.ts.map +0 -1
- package/dist/services/local/index.js +0 -7
- package/dist/services/local/index.js.map +0 -1
- package/dist/services/local/keyvalue.d.ts +0 -17
- package/dist/services/local/keyvalue.d.ts.map +0 -1
- package/dist/services/local/keyvalue.js +0 -125
- package/dist/services/local/keyvalue.js.map +0 -1
- package/dist/services/local/stream.d.ts +0 -12
- package/dist/services/local/stream.d.ts.map +0 -1
- package/dist/services/local/stream.js +0 -262
- package/dist/services/local/stream.js.map +0 -1
- package/dist/services/local/vector.d.ts +0 -17
- package/dist/services/local/vector.d.ts.map +0 -1
- package/dist/services/local/vector.js +0 -303
- package/dist/services/local/vector.js.map +0 -1
- package/dist/services/sandbox/http.d.ts +0 -13
- package/dist/services/sandbox/http.d.ts.map +0 -1
- package/dist/services/sandbox/http.js +0 -130
- package/dist/services/sandbox/http.js.map +0 -1
- package/dist/services/sandbox/index.d.ts +0 -2
- package/dist/services/sandbox/index.d.ts.map +0 -1
- package/dist/services/sandbox/index.js +0 -2
- package/dist/services/sandbox/index.js.map +0 -1
- package/dist/services/session/composite.d.ts +0 -21
- package/dist/services/session/composite.d.ts.map +0 -1
- package/dist/services/session/composite.js +0 -26
- package/dist/services/session/composite.js.map +0 -1
- package/dist/services/session/http.d.ts +0 -34
- package/dist/services/session/http.d.ts.map +0 -1
- package/dist/services/session/http.js +0 -80
- package/dist/services/session/http.js.map +0 -1
- package/dist/services/session/index.d.ts +0 -5
- package/dist/services/session/index.d.ts.map +0 -1
- package/dist/services/session/index.js +0 -5
- package/dist/services/session/index.js.map +0 -1
- package/dist/services/session/json.d.ts +0 -22
- package/dist/services/session/json.d.ts.map +0 -1
- package/dist/services/session/json.js +0 -35
- package/dist/services/session/json.js.map +0 -1
- package/dist/services/session/local.d.ts +0 -19
- package/dist/services/session/local.d.ts.map +0 -1
- package/dist/services/session/local.js +0 -23
- package/dist/services/session/local.js.map +0 -1
- package/dist/services/thread/local.d.ts +0 -20
- package/dist/services/thread/local.d.ts.map +0 -1
- package/dist/services/thread/local.js +0 -158
- package/dist/services/thread/local.js.map +0 -1
- package/dist/session.d.ts +0 -734
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js +0 -1139
- package/dist/session.js.map +0 -1
- package/dist/validator.d.ts +0 -142
- package/dist/validator.d.ts.map +0 -1
- package/dist/validator.js +0 -149
- package/dist/validator.js.map +0 -1
- package/dist/web.d.ts +0 -8
- package/dist/web.d.ts.map +0 -1
- package/dist/web.js +0 -66
- package/dist/web.js.map +0 -1
- package/dist/workbench.d.ts +0 -17
- package/dist/workbench.d.ts.map +0 -1
- package/dist/workbench.js +0 -507
- package/dist/workbench.js.map +0 -1
package/dist/_standalone.js
DELETED
|
@@ -1,441 +0,0 @@
|
|
|
1
|
-
import { context, SpanKind, SpanStatusCode, trace } from '@opentelemetry/api';
|
|
2
|
-
import { TraceState } from '@opentelemetry/core';
|
|
3
|
-
import { AGENT_RUNTIME, AGENT_IDS } from './_config';
|
|
4
|
-
import { generateId } from './session';
|
|
5
|
-
import WaitUntilHandler from './_waituntil';
|
|
6
|
-
import { registerServices } from './_services';
|
|
7
|
-
import { getAgentAsyncLocalStorage } from './_context';
|
|
8
|
-
import { getLogger, getTracer } from './_server';
|
|
9
|
-
import { getAppState } from './app';
|
|
10
|
-
import { getThreadProvider, getSessionProvider, getSessionEventProvider } from './_services';
|
|
11
|
-
import * as runtimeConfig from './_config';
|
|
12
|
-
/**
|
|
13
|
-
* Standalone agent context for executing agents outside of HTTP requests.
|
|
14
|
-
*
|
|
15
|
-
* This context provides the same infrastructure as HTTP request contexts:
|
|
16
|
-
* - OpenTelemetry tracing with proper span hierarchy
|
|
17
|
-
* - Session and thread management (save/restore)
|
|
18
|
-
* - Background task handling (waitUntil)
|
|
19
|
-
* - Session event tracking (start/complete)
|
|
20
|
-
* - Access to all services (kv, stream, vector)
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* import { createAgentContext } from '@agentuity/runtime';
|
|
25
|
-
* import myAgent from './agents/my-agent';
|
|
26
|
-
*
|
|
27
|
-
* // Simple usage:
|
|
28
|
-
* const ctx = createAgentContext();
|
|
29
|
-
* const result = await ctx.invoke(() => myAgent.run(input));
|
|
30
|
-
*
|
|
31
|
-
* // With custom session tracking:
|
|
32
|
-
* const ctx = createAgentContext({
|
|
33
|
-
* sessionId: discordMessage.id,
|
|
34
|
-
* trigger: 'discord'
|
|
35
|
-
* });
|
|
36
|
-
* const result = await ctx.invoke(() => myAgent.run(input));
|
|
37
|
-
*
|
|
38
|
-
* // Reuse context for multiple agents:
|
|
39
|
-
* const ctx = createAgentContext();
|
|
40
|
-
* const result1 = await ctx.invoke(() => agent1.run(input1));
|
|
41
|
-
* const result2 = await ctx.invoke(() => agent2.run(result1));
|
|
42
|
-
* ```
|
|
43
|
-
*/
|
|
44
|
-
export class StandaloneAgentContext {
|
|
45
|
-
// Immutable context properties (safe for concurrent access)
|
|
46
|
-
agent = {};
|
|
47
|
-
logger;
|
|
48
|
-
tracer;
|
|
49
|
-
kv;
|
|
50
|
-
stream;
|
|
51
|
-
vector;
|
|
52
|
-
sandbox;
|
|
53
|
-
config;
|
|
54
|
-
app;
|
|
55
|
-
current;
|
|
56
|
-
[AGENT_RUNTIME];
|
|
57
|
-
// Note: The following are mutable and will be set per-invocation via AsyncLocalStorage
|
|
58
|
-
// They exist on the interface for compatibility but are overwritten during invoke()
|
|
59
|
-
sessionId;
|
|
60
|
-
state;
|
|
61
|
-
session;
|
|
62
|
-
thread;
|
|
63
|
-
auth;
|
|
64
|
-
[AGENT_IDS];
|
|
65
|
-
// Immutable options stored from constructor
|
|
66
|
-
parentContext;
|
|
67
|
-
trigger;
|
|
68
|
-
initialSessionId;
|
|
69
|
-
constructor(options) {
|
|
70
|
-
const logger = getLogger();
|
|
71
|
-
const tracer = getTracer();
|
|
72
|
-
const app = getAppState();
|
|
73
|
-
if (!logger || !tracer || !app) {
|
|
74
|
-
throw new Error('Global state not initialized. Make sure createServer() has been called before createAgentContext().');
|
|
75
|
-
}
|
|
76
|
-
this.logger = logger;
|
|
77
|
-
this.tracer = tracer;
|
|
78
|
-
this.app = app;
|
|
79
|
-
this.config = {};
|
|
80
|
-
this.state = new Map();
|
|
81
|
-
this.parentContext = options?.parentContext ?? context.active();
|
|
82
|
-
this.trigger = options?.trigger ?? 'manual';
|
|
83
|
-
this.initialSessionId = options?.sessionId;
|
|
84
|
-
// Session ID will be set properly in invoke() after span is created
|
|
85
|
-
this.sessionId = options?.sessionId ?? 'pending';
|
|
86
|
-
// Thread and session will be restored in invoke()
|
|
87
|
-
this.thread =
|
|
88
|
-
options?.thread ??
|
|
89
|
-
{
|
|
90
|
-
id: 'pending',
|
|
91
|
-
state: {
|
|
92
|
-
loaded: false,
|
|
93
|
-
dirty: false,
|
|
94
|
-
get: async () => undefined,
|
|
95
|
-
set: async () => { },
|
|
96
|
-
has: async () => false,
|
|
97
|
-
delete: async () => { },
|
|
98
|
-
clear: async () => { },
|
|
99
|
-
entries: async () => [],
|
|
100
|
-
keys: async () => [],
|
|
101
|
-
values: async () => [],
|
|
102
|
-
size: async () => 0,
|
|
103
|
-
push: async () => { },
|
|
104
|
-
},
|
|
105
|
-
getMetadata: async () => ({}),
|
|
106
|
-
setMetadata: async () => { },
|
|
107
|
-
addEventListener: () => { },
|
|
108
|
-
removeEventListener: () => { },
|
|
109
|
-
destroy: async () => { },
|
|
110
|
-
empty: async () => true,
|
|
111
|
-
};
|
|
112
|
-
this.session =
|
|
113
|
-
options?.session ??
|
|
114
|
-
{
|
|
115
|
-
id: 'pending',
|
|
116
|
-
thread: this.thread,
|
|
117
|
-
state: new Map(),
|
|
118
|
-
metadata: {},
|
|
119
|
-
addEventListener: () => { },
|
|
120
|
-
removeEventListener: () => { },
|
|
121
|
-
serializeUserData: () => undefined,
|
|
122
|
-
};
|
|
123
|
-
this.auth = null;
|
|
124
|
-
// Create isolated runtime state
|
|
125
|
-
this[AGENT_RUNTIME] = {
|
|
126
|
-
agents: new Map(),
|
|
127
|
-
agentConfigs: new Map(),
|
|
128
|
-
agentEventListeners: new WeakMap(),
|
|
129
|
-
};
|
|
130
|
-
// Register services (kv, stream, vector)
|
|
131
|
-
registerServices(this, true); // true = populate agents registry
|
|
132
|
-
}
|
|
133
|
-
waitUntil(_callback) {
|
|
134
|
-
// This will be called from within invoke() where waitUntilHandler is in scope
|
|
135
|
-
// We need to access the per-call waitUntilHandler from the current invocation
|
|
136
|
-
// This is handled by updating the context during invoke() via AsyncLocalStorage
|
|
137
|
-
throw new Error('waitUntil must be called from within invoke() execution context');
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Execute a function within this agent context.
|
|
141
|
-
*
|
|
142
|
-
* This method:
|
|
143
|
-
* 1. Creates an OpenTelemetry span for the invocation
|
|
144
|
-
* 2. Restores/creates session and thread
|
|
145
|
-
* 3. Sends session start event
|
|
146
|
-
* 4. Executes the function within AsyncLocalStorage context
|
|
147
|
-
* 5. Waits for background tasks (waitUntil)
|
|
148
|
-
* 6. Saves session and thread
|
|
149
|
-
* 7. Sends session complete event
|
|
150
|
-
*
|
|
151
|
-
* @param fn - Function to execute (typically () => agent.run(input))
|
|
152
|
-
* @param options - Optional configuration for the invocation
|
|
153
|
-
* @returns Promise that resolves to the function's return value
|
|
154
|
-
*
|
|
155
|
-
* @example
|
|
156
|
-
* ```typescript
|
|
157
|
-
* const result = await ctx.invoke(() => myAgent.run({ userId: '123' }));
|
|
158
|
-
* ```
|
|
159
|
-
*
|
|
160
|
-
* @example
|
|
161
|
-
* ```typescript
|
|
162
|
-
* // Multiple agents in sequence:
|
|
163
|
-
* const result = await ctx.invoke(async () => {
|
|
164
|
-
* const step1 = await agent1.run(input);
|
|
165
|
-
* return agent2.run(step1);
|
|
166
|
-
* });
|
|
167
|
-
* ```
|
|
168
|
-
*/
|
|
169
|
-
async invoke(fn, options) {
|
|
170
|
-
const threadProvider = getThreadProvider();
|
|
171
|
-
const sessionProvider = getSessionProvider();
|
|
172
|
-
const sessionEventProvider = getSessionEventProvider();
|
|
173
|
-
const storage = getAgentAsyncLocalStorage();
|
|
174
|
-
// Create per-invocation state (prevents race conditions on concurrent calls)
|
|
175
|
-
const waitUntilHandler = new WaitUntilHandler(this.tracer);
|
|
176
|
-
const agentIds = new Set();
|
|
177
|
-
let invocationSessionId = this.initialSessionId ?? 'pending';
|
|
178
|
-
let invocationThread;
|
|
179
|
-
let invocationSession;
|
|
180
|
-
const invocationState = new Map();
|
|
181
|
-
// Create a per-call context that inherits from this but has isolated mutable state
|
|
182
|
-
const callContext = Object.create(this);
|
|
183
|
-
callContext.sessionId = invocationSessionId;
|
|
184
|
-
callContext.state = invocationState;
|
|
185
|
-
callContext[AGENT_IDS] = agentIds;
|
|
186
|
-
callContext.waitUntil = (callback) => {
|
|
187
|
-
waitUntilHandler.waitUntil(callback);
|
|
188
|
-
};
|
|
189
|
-
// Execute within parent context (for distributed tracing)
|
|
190
|
-
return await context.with(this.parentContext, async () => {
|
|
191
|
-
// Create a span for this invocation (similar to otelMiddleware's HTTP span)
|
|
192
|
-
return await trace.getTracer('standalone-agent').startActiveSpan(options?.spanName ?? 'agent-invocation', {
|
|
193
|
-
kind: SpanKind.INTERNAL, // Not HTTP, but internal invocation
|
|
194
|
-
attributes: {
|
|
195
|
-
trigger: this.trigger,
|
|
196
|
-
},
|
|
197
|
-
}, async (span) => {
|
|
198
|
-
const sctx = span.spanContext();
|
|
199
|
-
// Generate sessionId from traceId if not provided
|
|
200
|
-
invocationSessionId =
|
|
201
|
-
this.initialSessionId ??
|
|
202
|
-
(sctx?.traceId ? `sess_${sctx.traceId}` : generateId('sess'));
|
|
203
|
-
callContext.sessionId = invocationSessionId;
|
|
204
|
-
// Add to tracestate (like otelMiddleware does)
|
|
205
|
-
// Note: SpanContext.traceState is readonly, so we update it by setting the span with a new context
|
|
206
|
-
let traceState = sctx.traceState ?? new TraceState();
|
|
207
|
-
const projectId = runtimeConfig.getProjectId();
|
|
208
|
-
const orgId = runtimeConfig.getOrganizationId();
|
|
209
|
-
const deploymentId = runtimeConfig.getDeploymentId();
|
|
210
|
-
const isDevMode = runtimeConfig.isDevMode();
|
|
211
|
-
if (projectId) {
|
|
212
|
-
traceState = traceState.set('pid', projectId);
|
|
213
|
-
}
|
|
214
|
-
if (orgId) {
|
|
215
|
-
traceState = traceState.set('oid', orgId);
|
|
216
|
-
}
|
|
217
|
-
if (isDevMode) {
|
|
218
|
-
traceState = traceState.set('d', '1');
|
|
219
|
-
}
|
|
220
|
-
// Update the active context with the new trace state
|
|
221
|
-
// We do this by setting the span in the context with updated trace state
|
|
222
|
-
// Note: This creates a new context but we don't need to use it directly
|
|
223
|
-
// as the span already has the trace state we need for propagation
|
|
224
|
-
trace.setSpan(context.active(), trace.wrapSpanContext({
|
|
225
|
-
...sctx,
|
|
226
|
-
traceState,
|
|
227
|
-
}));
|
|
228
|
-
// Restore thread and session (like otelMiddleware does)
|
|
229
|
-
// For standalone contexts, we create a simple thread/session if not provided
|
|
230
|
-
// The threadProvider.restore expects a Hono context with cookie/header access
|
|
231
|
-
// For standalone contexts without HTTP, we just create a new thread
|
|
232
|
-
const { DefaultThread, generateId: genId } = await import('./session');
|
|
233
|
-
const threadId = genId('thrd');
|
|
234
|
-
// Create a no-op restore function for standalone contexts
|
|
235
|
-
const restoreFn = async () => ({ state: new Map(), metadata: {} });
|
|
236
|
-
invocationThread = new DefaultThread(threadProvider, threadId, restoreFn);
|
|
237
|
-
callContext.thread = invocationThread;
|
|
238
|
-
invocationSession = await sessionProvider.restore(invocationThread, invocationSessionId);
|
|
239
|
-
callContext.session = invocationSession;
|
|
240
|
-
// Send session start event (if configured)
|
|
241
|
-
const shouldSendSession = !!(orgId && projectId);
|
|
242
|
-
let canSendSessionEvents = true;
|
|
243
|
-
if (shouldSendSession) {
|
|
244
|
-
await sessionEventProvider
|
|
245
|
-
.start({
|
|
246
|
-
id: invocationSessionId,
|
|
247
|
-
orgId,
|
|
248
|
-
projectId,
|
|
249
|
-
threadId: invocationThread.id,
|
|
250
|
-
routeId: 'standalone', // No route for standalone contexts
|
|
251
|
-
deploymentId,
|
|
252
|
-
devmode: isDevMode,
|
|
253
|
-
environment: runtimeConfig.getEnvironment(),
|
|
254
|
-
method: 'STANDALONE',
|
|
255
|
-
url: '',
|
|
256
|
-
trigger: this.trigger,
|
|
257
|
-
metadata: Object.keys(invocationSession.metadata).length > 0
|
|
258
|
-
? invocationSession.metadata
|
|
259
|
-
: undefined,
|
|
260
|
-
})
|
|
261
|
-
.catch((ex) => {
|
|
262
|
-
canSendSessionEvents = false;
|
|
263
|
-
this.logger.error('error sending session start event: %s', ex);
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
let hasPendingWaits = false;
|
|
267
|
-
try {
|
|
268
|
-
// Execute function within AsyncLocalStorage context with per-call context
|
|
269
|
-
const result = await storage.run(callContext, fn);
|
|
270
|
-
// Wait for background tasks (like otelMiddleware does)
|
|
271
|
-
if (waitUntilHandler.hasPending()) {
|
|
272
|
-
hasPendingWaits = true;
|
|
273
|
-
waitUntilHandler
|
|
274
|
-
.waitUntilAll(this.logger, invocationSessionId)
|
|
275
|
-
.then(async () => {
|
|
276
|
-
this.logger.debug('wait until finished for session %s', invocationSessionId);
|
|
277
|
-
await sessionProvider.save(invocationSession);
|
|
278
|
-
await threadProvider.save(invocationThread);
|
|
279
|
-
span.setStatus({ code: SpanStatusCode.OK });
|
|
280
|
-
if (shouldSendSession && canSendSessionEvents) {
|
|
281
|
-
const userData = invocationSession.serializeUserData();
|
|
282
|
-
sessionEventProvider
|
|
283
|
-
.complete({
|
|
284
|
-
id: invocationSessionId,
|
|
285
|
-
threadId: (await invocationThread.empty())
|
|
286
|
-
? null
|
|
287
|
-
: invocationThread.id,
|
|
288
|
-
statusCode: 200, // Success
|
|
289
|
-
agentIds: Array.from(agentIds),
|
|
290
|
-
userData,
|
|
291
|
-
metadata: Object.keys(invocationSession.metadata).length > 0
|
|
292
|
-
? invocationSession.metadata
|
|
293
|
-
: undefined,
|
|
294
|
-
})
|
|
295
|
-
.then(() => { })
|
|
296
|
-
.catch((ex) => this.logger.error(ex));
|
|
297
|
-
}
|
|
298
|
-
})
|
|
299
|
-
.catch(async (ex) => {
|
|
300
|
-
this.logger.error('wait until errored for session %s. %s', invocationSessionId, ex);
|
|
301
|
-
if (ex instanceof Error) {
|
|
302
|
-
span.recordException(ex);
|
|
303
|
-
}
|
|
304
|
-
const message = ex.message ?? String(ex);
|
|
305
|
-
span.setStatus({
|
|
306
|
-
code: SpanStatusCode.ERROR,
|
|
307
|
-
message,
|
|
308
|
-
});
|
|
309
|
-
this.logger.error(message);
|
|
310
|
-
if (shouldSendSession && canSendSessionEvents) {
|
|
311
|
-
const userData = invocationSession.serializeUserData();
|
|
312
|
-
sessionEventProvider
|
|
313
|
-
.complete({
|
|
314
|
-
id: invocationSessionId,
|
|
315
|
-
threadId: (await invocationThread.empty())
|
|
316
|
-
? null
|
|
317
|
-
: invocationThread.id,
|
|
318
|
-
statusCode: 500, // Error
|
|
319
|
-
error: message,
|
|
320
|
-
agentIds: Array.from(agentIds),
|
|
321
|
-
userData,
|
|
322
|
-
metadata: Object.keys(invocationSession.metadata).length > 0
|
|
323
|
-
? invocationSession.metadata
|
|
324
|
-
: undefined,
|
|
325
|
-
})
|
|
326
|
-
.then(() => { })
|
|
327
|
-
.catch((ex) => this.logger.error(ex));
|
|
328
|
-
}
|
|
329
|
-
})
|
|
330
|
-
.finally(() => {
|
|
331
|
-
span.end();
|
|
332
|
-
});
|
|
333
|
-
}
|
|
334
|
-
else {
|
|
335
|
-
span.setStatus({ code: SpanStatusCode.OK });
|
|
336
|
-
if (shouldSendSession && canSendSessionEvents) {
|
|
337
|
-
const userData = invocationSession.serializeUserData();
|
|
338
|
-
sessionEventProvider
|
|
339
|
-
.complete({
|
|
340
|
-
id: invocationSessionId,
|
|
341
|
-
threadId: (await invocationThread.empty())
|
|
342
|
-
? null
|
|
343
|
-
: invocationThread.id,
|
|
344
|
-
statusCode: 200,
|
|
345
|
-
agentIds: Array.from(agentIds),
|
|
346
|
-
userData,
|
|
347
|
-
metadata: Object.keys(invocationSession.metadata).length > 0
|
|
348
|
-
? invocationSession.metadata
|
|
349
|
-
: undefined,
|
|
350
|
-
})
|
|
351
|
-
.then(() => { })
|
|
352
|
-
.catch((ex) => this.logger.error(ex));
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
return result;
|
|
356
|
-
}
|
|
357
|
-
catch (ex) {
|
|
358
|
-
if (ex instanceof Error) {
|
|
359
|
-
span.recordException(ex);
|
|
360
|
-
}
|
|
361
|
-
const message = ex.message ?? String(ex);
|
|
362
|
-
span.setStatus({
|
|
363
|
-
code: SpanStatusCode.ERROR,
|
|
364
|
-
message,
|
|
365
|
-
});
|
|
366
|
-
this.logger.error(message);
|
|
367
|
-
if (shouldSendSession && canSendSessionEvents) {
|
|
368
|
-
const userData = invocationSession.serializeUserData();
|
|
369
|
-
sessionEventProvider
|
|
370
|
-
.complete({
|
|
371
|
-
id: invocationSessionId,
|
|
372
|
-
threadId: (await invocationThread.empty()) ? null : invocationThread.id,
|
|
373
|
-
statusCode: 500,
|
|
374
|
-
error: message,
|
|
375
|
-
agentIds: Array.from(agentIds),
|
|
376
|
-
userData,
|
|
377
|
-
metadata: Object.keys(invocationSession.metadata).length > 0
|
|
378
|
-
? invocationSession.metadata
|
|
379
|
-
: undefined,
|
|
380
|
-
})
|
|
381
|
-
.then(() => { })
|
|
382
|
-
.catch((ex) => this.logger.error(ex));
|
|
383
|
-
}
|
|
384
|
-
throw ex;
|
|
385
|
-
}
|
|
386
|
-
finally {
|
|
387
|
-
if (!hasPendingWaits) {
|
|
388
|
-
try {
|
|
389
|
-
await sessionProvider.save(invocationSession);
|
|
390
|
-
await threadProvider.save(invocationThread);
|
|
391
|
-
}
|
|
392
|
-
finally {
|
|
393
|
-
span.end();
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
});
|
|
398
|
-
});
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
/**
|
|
402
|
-
* Create a standalone agent context for executing agents outside of HTTP requests.
|
|
403
|
-
*
|
|
404
|
-
* This is useful for Discord bots, cron jobs, WebSocket callbacks, or any scenario
|
|
405
|
-
* where you need to run agents but don't have an HTTP request context.
|
|
406
|
-
*
|
|
407
|
-
* @param options - Optional configuration for the context
|
|
408
|
-
* @returns A StandaloneAgentContext instance
|
|
409
|
-
*
|
|
410
|
-
* @example
|
|
411
|
-
* ```typescript
|
|
412
|
-
* import { createAgentContext } from '@agentuity/runtime';
|
|
413
|
-
* import myAgent from './agents/my-agent';
|
|
414
|
-
*
|
|
415
|
-
* // Simple usage:
|
|
416
|
-
* const ctx = createAgentContext();
|
|
417
|
-
* const result = await ctx.invoke(() => myAgent.run(input));
|
|
418
|
-
*
|
|
419
|
-
* // Discord bot example:
|
|
420
|
-
* client.on('messageCreate', async (message) => {
|
|
421
|
-
* const ctx = createAgentContext({
|
|
422
|
-
* sessionId: message.id,
|
|
423
|
-
* trigger: 'discord'
|
|
424
|
-
* });
|
|
425
|
-
* const response = await ctx.invoke(() =>
|
|
426
|
-
* chatAgent.run({ message: message.content })
|
|
427
|
-
* );
|
|
428
|
-
* await message.reply(response.text);
|
|
429
|
-
* });
|
|
430
|
-
*
|
|
431
|
-
* // Cron job example:
|
|
432
|
-
* cron.schedule('0 * * * *', async () => {
|
|
433
|
-
* const ctx = createAgentContext({ trigger: 'cron' });
|
|
434
|
-
* await ctx.invoke(() => cleanupAgent.run());
|
|
435
|
-
* });
|
|
436
|
-
* ```
|
|
437
|
-
*/
|
|
438
|
-
export function createAgentContext(options) {
|
|
439
|
-
return new StandaloneAgentContext(options);
|
|
440
|
-
}
|
|
441
|
-
//# sourceMappingURL=_standalone.js.map
|
package/dist/_standalone.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_standalone.js","sourceRoot":"","sources":["../src/_standalone.ts"],"names":[],"mappings":"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"}
|
package/dist/_tokens.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Context } from '@opentelemetry/api';
|
|
2
|
-
import type { Span } from '@opentelemetry/sdk-trace-base';
|
|
3
|
-
import type { SpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
4
|
-
export declare const TOKENS_HEADER = "x-agentuity-tokens";
|
|
5
|
-
export declare const DURATION_HEADER = "x-agentuity-duration";
|
|
6
|
-
export declare class TokenSpanProcessor implements SpanProcessor {
|
|
7
|
-
onStart(_span: Span, _context: Context): void;
|
|
8
|
-
onEnd(span: Span): void;
|
|
9
|
-
forceFlush(): Promise<void>;
|
|
10
|
-
shutdown(): Promise<void>;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=_tokens.d.ts.map
|
package/dist/_tokens.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_tokens.d.ts","sourceRoot":"","sources":["../src/_tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAInE,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAClD,eAAO,MAAM,eAAe,yBAAyB,CAAC;AA6CtD,qBAAa,kBAAmB,YAAW,aAAa;IACvD,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO;IAItC,KAAK,CAAC,IAAI,EAAE,IAAI;IA+ChB,UAAU;IAIV,QAAQ;CAGR"}
|
package/dist/_tokens.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { inAgentContext, inHTTPContext, getHTTPContext } from './_context';
|
|
2
|
-
import { SpanAttributes } from '@traceloop/ai-semantic-conventions';
|
|
3
|
-
export const TOKENS_HEADER = 'x-agentuity-tokens';
|
|
4
|
-
export const DURATION_HEADER = 'x-agentuity-duration';
|
|
5
|
-
// AI SDK span names: ai.generateText, ai.streamText, ai.generateObject, ai.streamObject, ai.embed, ai.embedMany
|
|
6
|
-
const AI_SDK_SPAN_PREFIX = 'ai.';
|
|
7
|
-
const AI_SDK_MODEL_NAME = 'ai.model.id';
|
|
8
|
-
const AI_SDK_USAGE_PROMPT_TOKENS = 'ai.usage.promptTokens';
|
|
9
|
-
const AI_SDK_USAGE_COMPLETION_TOKENS = 'ai.usage.completionTokens';
|
|
10
|
-
const parseTokenHeader = (val) => {
|
|
11
|
-
const kv = new Map();
|
|
12
|
-
if (val) {
|
|
13
|
-
// format is: [model]:[count] [model:count]
|
|
14
|
-
const tok = val.split(' ');
|
|
15
|
-
for (const entry of tok) {
|
|
16
|
-
const [name, count] = entry.split(':');
|
|
17
|
-
if (name) {
|
|
18
|
-
kv.set(name, parseInt(count ?? '0') ?? 0);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return kv;
|
|
23
|
-
};
|
|
24
|
-
const serializeTokenHeader = (kv) => {
|
|
25
|
-
const lines = [];
|
|
26
|
-
for (const [k, v] of kv) {
|
|
27
|
-
lines.push(`${k}:${v}`);
|
|
28
|
-
}
|
|
29
|
-
return lines.join(' ');
|
|
30
|
-
};
|
|
31
|
-
const getTokenValue = (val) => {
|
|
32
|
-
if (val) {
|
|
33
|
-
const v = val.valueOf();
|
|
34
|
-
switch (typeof v) {
|
|
35
|
-
case 'number':
|
|
36
|
-
return v;
|
|
37
|
-
case 'string':
|
|
38
|
-
return parseInt(v, 10);
|
|
39
|
-
default:
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return 0;
|
|
43
|
-
};
|
|
44
|
-
export class TokenSpanProcessor {
|
|
45
|
-
onStart(_span, _context) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
onEnd(span) {
|
|
49
|
-
if (inAgentContext() && inHTTPContext()) {
|
|
50
|
-
const ctx = getHTTPContext();
|
|
51
|
-
const tokenLine = ctx.res.headers.get(TOKENS_HEADER) ?? undefined;
|
|
52
|
-
const tokens = parseTokenHeader(tokenLine);
|
|
53
|
-
let mutated = false;
|
|
54
|
-
// AI SDK uses ai.* span names but doesn't use the semantic attribute names
|
|
55
|
-
if (span.name.startsWith(AI_SDK_SPAN_PREFIX) && AI_SDK_MODEL_NAME in span.attributes) {
|
|
56
|
-
const model = span.attributes[AI_SDK_MODEL_NAME].toString();
|
|
57
|
-
let totalTokens = tokens.get(model) ?? 0;
|
|
58
|
-
if (AI_SDK_USAGE_PROMPT_TOKENS in span.attributes) {
|
|
59
|
-
totalTokens += getTokenValue(span.attributes[AI_SDK_USAGE_PROMPT_TOKENS]);
|
|
60
|
-
}
|
|
61
|
-
if (AI_SDK_USAGE_COMPLETION_TOKENS in span.attributes) {
|
|
62
|
-
totalTokens += getTokenValue(span.attributes[AI_SDK_USAGE_COMPLETION_TOKENS]);
|
|
63
|
-
}
|
|
64
|
-
if (totalTokens > 0) {
|
|
65
|
-
tokens.set(model, totalTokens);
|
|
66
|
-
mutated = true;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else if (SpanAttributes.LLM_SYSTEM in span.attributes &&
|
|
70
|
-
SpanAttributes.LLM_RESPONSE_MODEL in span.attributes) {
|
|
71
|
-
const model = span.attributes[SpanAttributes.LLM_RESPONSE_MODEL].toString();
|
|
72
|
-
let totalTokens = tokens.get(model) ?? 0;
|
|
73
|
-
if (SpanAttributes.LLM_USAGE_PROMPT_TOKENS in span.attributes) {
|
|
74
|
-
totalTokens += getTokenValue(span.attributes[SpanAttributes.LLM_USAGE_PROMPT_TOKENS]);
|
|
75
|
-
}
|
|
76
|
-
if (SpanAttributes.LLM_USAGE_COMPLETION_TOKENS in span.attributes) {
|
|
77
|
-
totalTokens += getTokenValue(span.attributes[SpanAttributes.LLM_USAGE_COMPLETION_TOKENS]);
|
|
78
|
-
}
|
|
79
|
-
if (totalTokens > 0) {
|
|
80
|
-
tokens.set(model, totalTokens);
|
|
81
|
-
mutated = true;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
if (mutated) {
|
|
85
|
-
ctx.header(TOKENS_HEADER, serializeTokenHeader(tokens));
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
forceFlush() {
|
|
90
|
-
return Promise.resolve();
|
|
91
|
-
}
|
|
92
|
-
shutdown() {
|
|
93
|
-
return Promise.resolve();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=_tokens.js.map
|
package/dist/_tokens.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_tokens.js","sourceRoot":"","sources":["../src/_tokens.ts"],"names":[],"mappings":"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"}
|
package/dist/_util.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { Context } from 'hono';
|
|
2
|
-
export declare function returnResponse(ctx: Context, result: unknown): Response;
|
|
3
|
-
/**
|
|
4
|
-
* SHA256 hash of the given values
|
|
5
|
-
*
|
|
6
|
-
* @param val one or more strings to hash
|
|
7
|
-
* @returns hash string in hex format
|
|
8
|
-
*/
|
|
9
|
-
export declare function hash(...val: string[]): string;
|
|
10
|
-
/**
|
|
11
|
-
* Safely stringify an object to JSON, handling circular references
|
|
12
|
-
* @param obj - The object to stringify
|
|
13
|
-
* @returns JSON string representation
|
|
14
|
-
*/
|
|
15
|
-
export declare function safeStringify(obj: unknown): string;
|
|
16
|
-
//# sourceMappingURL=_util.d.ts.map
|
package/dist/_util.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_util.d.ts","sourceRoot":"","sources":["../src/_util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,YAM3D;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAI7C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAkClD"}
|
package/dist/_util.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
export function returnResponse(ctx, result) {
|
|
2
|
-
if (result instanceof ReadableStream)
|
|
3
|
-
return ctx.body(result);
|
|
4
|
-
if (result instanceof Response)
|
|
5
|
-
return result;
|
|
6
|
-
if (typeof result === 'string')
|
|
7
|
-
return ctx.text(result);
|
|
8
|
-
if (typeof result === 'number' || typeof result === 'boolean')
|
|
9
|
-
return ctx.text(String(result));
|
|
10
|
-
return ctx.json(result);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* SHA256 hash of the given values
|
|
14
|
-
*
|
|
15
|
-
* @param val one or more strings to hash
|
|
16
|
-
* @returns hash string in hex format
|
|
17
|
-
*/
|
|
18
|
-
export function hash(...val) {
|
|
19
|
-
const hasher = new Bun.CryptoHasher('sha256');
|
|
20
|
-
val.map((val) => hasher.update(val));
|
|
21
|
-
return hasher.digest().toHex();
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Safely stringify an object to JSON, handling circular references
|
|
25
|
-
* @param obj - The object to stringify
|
|
26
|
-
* @returns JSON string representation
|
|
27
|
-
*/
|
|
28
|
-
export function safeStringify(obj) {
|
|
29
|
-
const stack = [];
|
|
30
|
-
function replacer(_key, value) {
|
|
31
|
-
if (typeof value === 'bigint') {
|
|
32
|
-
return value.toString();
|
|
33
|
-
}
|
|
34
|
-
if (typeof value === 'object' && value !== null) {
|
|
35
|
-
// Check if this object is already in our ancestor chain
|
|
36
|
-
if (stack.includes(value)) {
|
|
37
|
-
return '[Circular]';
|
|
38
|
-
}
|
|
39
|
-
// Add to stack before processing
|
|
40
|
-
stack.push(value);
|
|
41
|
-
// Process the object
|
|
42
|
-
const result = Array.isArray(value) ? [] : {};
|
|
43
|
-
for (const [k, v] of Object.entries(value)) {
|
|
44
|
-
result[k] = replacer(k, v);
|
|
45
|
-
}
|
|
46
|
-
// Remove from stack after processing
|
|
47
|
-
stack.pop();
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
50
|
-
return value;
|
|
51
|
-
}
|
|
52
|
-
return JSON.stringify(replacer('', obj));
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=_util.js.map
|
package/dist/_util.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_util.js","sourceRoot":"","sources":["../src/_util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,MAAe;IAC3D,IAAI,MAAM,YAAY,cAAc;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,IAAI,MAAM,YAAY,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/F,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAAC,GAAG,GAAa;IACpC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACzC,MAAM,KAAK,GAAc,EAAE,CAAC;IAE5B,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAc;QAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACjD,wDAAwD;YACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,YAAY,CAAC;YACrB,CAAC;YAED,iCAAiC;YACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAElB,qBAAqB;YACrB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAE9C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,MAAkC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzD,CAAC;YAED,qCAAqC;YACrC,KAAK,CAAC,GAAG,EAAE,CAAC;YAEZ,OAAO,MAAM,CAAC;QACf,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC"}
|