@agentuity/runtime 0.1.14 → 0.1.16
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/_config.d.ts +100 -0
- package/dist/_config.d.ts.map +1 -0
- package/dist/_config.js +147 -0
- package/dist/_config.js.map +1 -0
- package/dist/_context.d.ts +76 -0
- package/dist/_context.d.ts.map +1 -0
- package/dist/_context.js +147 -0
- package/dist/_context.js.map +1 -0
- package/dist/_events.d.ts +64 -0
- package/dist/_events.d.ts.map +1 -0
- package/dist/_events.js +92 -0
- package/dist/_events.js.map +1 -0
- package/dist/_idle.d.ts +7 -0
- package/dist/_idle.d.ts.map +1 -0
- package/dist/_idle.js +10 -0
- package/dist/_idle.js.map +1 -0
- package/dist/_metadata.d.ts +117 -0
- package/dist/_metadata.d.ts.map +1 -0
- package/dist/_metadata.js +246 -0
- package/dist/_metadata.js.map +1 -0
- package/dist/_process-protection.d.ts +25 -0
- package/dist/_process-protection.d.ts.map +1 -0
- package/dist/_process-protection.js +65 -0
- package/dist/_process-protection.js.map +1 -0
- package/dist/_server.d.ts +46 -0
- package/dist/_server.d.ts.map +1 -0
- package/dist/_server.js +85 -0
- package/dist/_server.js.map +1 -0
- package/dist/_services.d.ts +21 -0
- package/dist/_services.d.ts.map +1 -0
- package/dist/_services.js +248 -0
- package/dist/_services.js.map +1 -0
- package/dist/_standalone.d.ts +208 -0
- package/dist/_standalone.d.ts.map +1 -0
- package/dist/_standalone.js +569 -0
- package/dist/_standalone.js.map +1 -0
- package/dist/_tokens.d.ts +12 -0
- package/dist/_tokens.d.ts.map +1 -0
- package/dist/_tokens.js +96 -0
- package/dist/_tokens.js.map +1 -0
- package/dist/_util.d.ts +16 -0
- package/dist/_util.d.ts.map +1 -0
- package/dist/_util.js +54 -0
- package/dist/_util.js.map +1 -0
- package/dist/_validation.d.ts +89 -0
- package/dist/_validation.d.ts.map +1 -0
- package/dist/_validation.js +29 -0
- package/dist/_validation.js.map +1 -0
- package/dist/_waituntil.d.ts +18 -0
- package/dist/_waituntil.d.ts.map +1 -0
- package/dist/_waituntil.js +97 -0
- package/dist/_waituntil.js.map +1 -0
- package/dist/agent.d.ts +1210 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +903 -0
- package/dist/agent.js.map +1 -0
- package/dist/app.d.ts +322 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +160 -0
- package/dist/app.js.map +1 -0
- package/dist/bun-s3-patch.d.ts +37 -0
- package/dist/bun-s3-patch.d.ts.map +1 -0
- package/dist/bun-s3-patch.js +139 -0
- package/dist/bun-s3-patch.js.map +1 -0
- package/dist/cors.d.ts +42 -0
- package/dist/cors.d.ts.map +1 -0
- package/dist/cors.js +117 -0
- package/dist/cors.js.map +1 -0
- package/dist/devmode.d.ts +3 -0
- package/dist/devmode.d.ts.map +1 -0
- package/dist/devmode.js +167 -0
- package/dist/devmode.js.map +1 -0
- package/dist/eval.d.ts +91 -0
- package/dist/eval.d.ts.map +1 -0
- package/dist/eval.js +16 -0
- package/dist/eval.js.map +1 -0
- package/dist/handlers/cron.d.ts +47 -0
- package/dist/handlers/cron.d.ts.map +1 -0
- package/dist/handlers/cron.js +49 -0
- package/dist/handlers/cron.js.map +1 -0
- package/dist/handlers/index.d.ts +5 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +5 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/sse.d.ts +91 -0
- package/dist/handlers/sse.d.ts.map +1 -0
- package/dist/handlers/sse.js +213 -0
- package/dist/handlers/sse.js.map +1 -0
- package/dist/handlers/stream.d.ts +52 -0
- package/dist/handlers/stream.d.ts.map +1 -0
- package/dist/handlers/stream.js +116 -0
- package/dist/handlers/stream.js.map +1 -0
- package/dist/handlers/websocket.d.ts +49 -0
- package/dist/handlers/websocket.d.ts.map +1 -0
- package/dist/handlers/websocket.js +143 -0
- package/dist/handlers/websocket.js.map +1 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/logger/console.d.ts +70 -0
- package/dist/logger/console.d.ts.map +1 -0
- package/dist/logger/console.js +274 -0
- package/dist/logger/console.js.map +1 -0
- package/dist/logger/index.d.ts +3 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +3 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/internal.d.ts +79 -0
- package/dist/logger/internal.d.ts.map +1 -0
- package/dist/logger/internal.js +133 -0
- package/dist/logger/internal.js.map +1 -0
- package/dist/logger/logger.d.ts +41 -0
- package/dist/logger/logger.d.ts.map +1 -0
- package/dist/logger/logger.js +2 -0
- package/dist/logger/logger.js.map +1 -0
- package/dist/logger/user.d.ts +8 -0
- package/dist/logger/user.d.ts.map +1 -0
- package/dist/logger/user.js +7 -0
- package/dist/logger/user.js.map +1 -0
- package/dist/logger/util.d.ts +11 -0
- package/dist/logger/util.d.ts.map +1 -0
- package/dist/logger/util.js +77 -0
- package/dist/logger/util.js.map +1 -0
- package/dist/middleware.d.ts +112 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +507 -0
- package/dist/middleware.js.map +1 -0
- package/dist/otel/config.d.ts +19 -0
- package/dist/otel/config.d.ts.map +1 -0
- package/dist/otel/config.js +26 -0
- package/dist/otel/config.js.map +1 -0
- package/dist/otel/console.d.ts +33 -0
- package/dist/otel/console.d.ts.map +1 -0
- package/dist/otel/console.js +86 -0
- package/dist/otel/console.js.map +1 -0
- package/dist/otel/exporters/index.d.ts +4 -0
- package/dist/otel/exporters/index.d.ts.map +1 -0
- package/dist/otel/exporters/index.js +4 -0
- package/dist/otel/exporters/index.js.map +1 -0
- package/dist/otel/exporters/jsonl-log-exporter.d.ts +36 -0
- package/dist/otel/exporters/jsonl-log-exporter.d.ts.map +1 -0
- package/dist/otel/exporters/jsonl-log-exporter.js +103 -0
- package/dist/otel/exporters/jsonl-log-exporter.js.map +1 -0
- package/dist/otel/exporters/jsonl-metric-exporter.d.ts +40 -0
- package/dist/otel/exporters/jsonl-metric-exporter.d.ts.map +1 -0
- package/dist/otel/exporters/jsonl-metric-exporter.js +104 -0
- package/dist/otel/exporters/jsonl-metric-exporter.js.map +1 -0
- package/dist/otel/exporters/jsonl-trace-exporter.d.ts +36 -0
- package/dist/otel/exporters/jsonl-trace-exporter.d.ts.map +1 -0
- package/dist/otel/exporters/jsonl-trace-exporter.js +111 -0
- package/dist/otel/exporters/jsonl-trace-exporter.js.map +1 -0
- package/dist/otel/fetch.d.ts +12 -0
- package/dist/otel/fetch.d.ts.map +1 -0
- package/dist/otel/fetch.js +82 -0
- package/dist/otel/fetch.js.map +1 -0
- package/dist/otel/http.d.ts +16 -0
- package/dist/otel/http.d.ts.map +1 -0
- package/dist/otel/http.js +44 -0
- package/dist/otel/http.js.map +1 -0
- package/dist/otel/logger.d.ts +37 -0
- package/dist/otel/logger.d.ts.map +1 -0
- package/dist/otel/logger.js +268 -0
- package/dist/otel/logger.js.map +1 -0
- package/dist/otel/otel.d.ts +65 -0
- package/dist/otel/otel.d.ts.map +1 -0
- package/dist/otel/otel.js +261 -0
- package/dist/otel/otel.js.map +1 -0
- package/dist/router.d.ts +100 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +163 -0
- package/dist/router.js.map +1 -0
- package/dist/services/evalrun/composite.d.ts +21 -0
- package/dist/services/evalrun/composite.d.ts.map +1 -0
- package/dist/services/evalrun/composite.js +26 -0
- package/dist/services/evalrun/composite.js.map +1 -0
- package/dist/services/evalrun/http.d.ts +24 -0
- package/dist/services/evalrun/http.d.ts.map +1 -0
- package/dist/services/evalrun/http.js +86 -0
- package/dist/services/evalrun/http.js.map +1 -0
- package/dist/services/evalrun/index.d.ts +5 -0
- package/dist/services/evalrun/index.d.ts.map +1 -0
- package/dist/services/evalrun/index.js +5 -0
- package/dist/services/evalrun/index.js.map +1 -0
- package/dist/services/evalrun/json.d.ts +21 -0
- package/dist/services/evalrun/json.d.ts.map +1 -0
- package/dist/services/evalrun/json.js +38 -0
- package/dist/services/evalrun/json.js.map +1 -0
- package/dist/services/evalrun/local.d.ts +19 -0
- package/dist/services/evalrun/local.d.ts.map +1 -0
- package/dist/services/evalrun/local.js +22 -0
- package/dist/services/evalrun/local.js.map +1 -0
- package/dist/services/local/_db.d.ts +4 -0
- package/dist/services/local/_db.d.ts.map +1 -0
- package/dist/services/local/_db.js +123 -0
- package/dist/services/local/_db.js.map +1 -0
- package/dist/services/local/_router.d.ts +3 -0
- package/dist/services/local/_router.d.ts.map +1 -0
- package/dist/services/local/_router.js +28 -0
- package/dist/services/local/_router.js.map +1 -0
- package/dist/services/local/_util.d.ts +18 -0
- package/dist/services/local/_util.d.ts.map +1 -0
- package/dist/services/local/_util.js +44 -0
- package/dist/services/local/_util.js.map +1 -0
- package/dist/services/local/index.d.ts +7 -0
- package/dist/services/local/index.d.ts.map +1 -0
- package/dist/services/local/index.js +7 -0
- package/dist/services/local/index.js.map +1 -0
- package/dist/services/local/keyvalue.d.ts +17 -0
- package/dist/services/local/keyvalue.d.ts.map +1 -0
- package/dist/services/local/keyvalue.js +125 -0
- package/dist/services/local/keyvalue.js.map +1 -0
- package/dist/services/local/stream.d.ts +12 -0
- package/dist/services/local/stream.d.ts.map +1 -0
- package/dist/services/local/stream.js +262 -0
- package/dist/services/local/stream.js.map +1 -0
- package/dist/services/local/vector.d.ts +17 -0
- package/dist/services/local/vector.d.ts.map +1 -0
- package/dist/services/local/vector.js +303 -0
- package/dist/services/local/vector.js.map +1 -0
- package/dist/services/sandbox/http.d.ts +13 -0
- package/dist/services/sandbox/http.d.ts.map +1 -0
- package/dist/services/sandbox/http.js +130 -0
- package/dist/services/sandbox/http.js.map +1 -0
- package/dist/services/sandbox/index.d.ts +2 -0
- package/dist/services/sandbox/index.d.ts.map +1 -0
- package/dist/services/sandbox/index.js +2 -0
- package/dist/services/sandbox/index.js.map +1 -0
- package/dist/services/session/composite.d.ts +21 -0
- package/dist/services/session/composite.d.ts.map +1 -0
- package/dist/services/session/composite.js +26 -0
- package/dist/services/session/composite.js.map +1 -0
- package/dist/services/session/http.d.ts +34 -0
- package/dist/services/session/http.d.ts.map +1 -0
- package/dist/services/session/http.js +80 -0
- package/dist/services/session/http.js.map +1 -0
- package/dist/services/session/index.d.ts +5 -0
- package/dist/services/session/index.d.ts.map +1 -0
- package/dist/services/session/index.js +5 -0
- package/dist/services/session/index.js.map +1 -0
- package/dist/services/session/json.d.ts +22 -0
- package/dist/services/session/json.d.ts.map +1 -0
- package/dist/services/session/json.js +35 -0
- package/dist/services/session/json.js.map +1 -0
- package/dist/services/session/local.d.ts +19 -0
- package/dist/services/session/local.d.ts.map +1 -0
- package/dist/services/session/local.js +23 -0
- package/dist/services/session/local.js.map +1 -0
- package/dist/services/thread/local.d.ts +20 -0
- package/dist/services/thread/local.d.ts.map +1 -0
- package/dist/services/thread/local.js +158 -0
- package/dist/services/thread/local.js.map +1 -0
- package/dist/session.d.ts +734 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +1139 -0
- package/dist/session.js.map +1 -0
- package/dist/validator.d.ts +142 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +149 -0
- package/dist/validator.js.map +1 -0
- package/dist/web.d.ts +8 -0
- package/dist/web.d.ts.map +1 -0
- package/dist/web.js +66 -0
- package/dist/web.js.map +1 -0
- package/dist/workbench.d.ts +17 -0
- package/dist/workbench.d.ts.map +1 -0
- package/dist/workbench.js +507 -0
- package/dist/workbench.js.map +1 -0
- package/package.json +8 -8
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
import { context, SpanKind, SpanStatusCode, trace } from '@opentelemetry/api';
|
|
2
|
+
import { TraceState } from '@opentelemetry/core';
|
|
3
|
+
import { AGENT_RUNTIME, AGENT_IDS, isInsideAgentRuntime } from './_config';
|
|
4
|
+
import { generateId } from './session';
|
|
5
|
+
import WaitUntilHandler from './_waituntil';
|
|
6
|
+
import { registerServices, createServices } from './_services';
|
|
7
|
+
import { getAgentAsyncLocalStorage } from './_context';
|
|
8
|
+
import { getLogger, getTracer, setGlobalLogger, setGlobalTracer } from './_server';
|
|
9
|
+
import { getAppState } from './app';
|
|
10
|
+
import { getThreadProvider, getSessionProvider, getSessionEventProvider } from './_services';
|
|
11
|
+
import * as runtimeConfig from './_config';
|
|
12
|
+
/**
|
|
13
|
+
* Flag to track if standalone initialization has already been performed.
|
|
14
|
+
* Prevents duplicate initialization across multiple createAgentContext() calls.
|
|
15
|
+
*/
|
|
16
|
+
let standaloneInitialized = false;
|
|
17
|
+
/**
|
|
18
|
+
* Create a minimal console-based logger for standalone mode.
|
|
19
|
+
* This logger outputs to console without OpenTelemetry integration.
|
|
20
|
+
*/
|
|
21
|
+
function createStandaloneLogger() {
|
|
22
|
+
const logLevel = (process.env.AGENTUITY_LOG_LEVEL || 'info');
|
|
23
|
+
const levels = ['trace', 'debug', 'info', 'warn', 'error'];
|
|
24
|
+
const currentLevelIndex = levels.indexOf(logLevel);
|
|
25
|
+
const shouldLog = (level) => levels.indexOf(level) >= currentLevelIndex;
|
|
26
|
+
const logger = {
|
|
27
|
+
trace: (message, ...args) => {
|
|
28
|
+
if (shouldLog('trace'))
|
|
29
|
+
console.debug('[TRACE]', message, ...args);
|
|
30
|
+
},
|
|
31
|
+
debug: (message, ...args) => {
|
|
32
|
+
if (shouldLog('debug'))
|
|
33
|
+
console.debug('[DEBUG]', message, ...args);
|
|
34
|
+
},
|
|
35
|
+
info: (message, ...args) => {
|
|
36
|
+
if (shouldLog('info'))
|
|
37
|
+
console.info('[INFO]', message, ...args);
|
|
38
|
+
},
|
|
39
|
+
warn: (message, ...args) => {
|
|
40
|
+
if (shouldLog('warn'))
|
|
41
|
+
console.warn('[WARN]', message, ...args);
|
|
42
|
+
},
|
|
43
|
+
error: (message, ...args) => {
|
|
44
|
+
if (shouldLog('error'))
|
|
45
|
+
console.error('[ERROR]', message, ...args);
|
|
46
|
+
},
|
|
47
|
+
fatal: (message, ...args) => {
|
|
48
|
+
console.error('[FATAL]', message, ...args);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
},
|
|
51
|
+
child: () => logger,
|
|
52
|
+
};
|
|
53
|
+
return logger;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Initialize standalone runtime globals.
|
|
57
|
+
* This sets up minimal logger, tracer, and services for standalone execution.
|
|
58
|
+
* Called automatically by createAgentContext() when not running inside agent runtime.
|
|
59
|
+
*/
|
|
60
|
+
function initializeStandaloneRuntime() {
|
|
61
|
+
if (standaloneInitialized) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const logger = createStandaloneLogger();
|
|
65
|
+
const tracer = trace.getTracer('standalone-agent');
|
|
66
|
+
// Set global state
|
|
67
|
+
setGlobalLogger(logger);
|
|
68
|
+
setGlobalTracer(tracer);
|
|
69
|
+
// Set minimal app state if not already set
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
71
|
+
if (!globalThis.__AGENTUITY_APP_STATE__) {
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
73
|
+
globalThis.__AGENTUITY_APP_STATE__ = {};
|
|
74
|
+
}
|
|
75
|
+
// Initialize services (will use local services since not authenticated)
|
|
76
|
+
const serverUrl = `http://127.0.0.1:${process.env.PORT || '3500'}`;
|
|
77
|
+
createServices(logger, undefined, serverUrl);
|
|
78
|
+
standaloneInitialized = true;
|
|
79
|
+
logger.debug('Standalone runtime initialized');
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Standalone agent context for executing agents outside of HTTP requests.
|
|
83
|
+
*
|
|
84
|
+
* This context provides the same infrastructure as HTTP request contexts:
|
|
85
|
+
* - OpenTelemetry tracing with proper span hierarchy
|
|
86
|
+
* - Session and thread management (save/restore)
|
|
87
|
+
* - Background task handling (waitUntil)
|
|
88
|
+
* - Session event tracking (start/complete)
|
|
89
|
+
* - Access to all services (kv, stream, vector)
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* import { createAgentContext } from '@agentuity/runtime';
|
|
94
|
+
* import myAgent from './agents/my-agent';
|
|
95
|
+
*
|
|
96
|
+
* // Simple usage:
|
|
97
|
+
* const ctx = createAgentContext();
|
|
98
|
+
* const result = await ctx.invoke(() => myAgent.run(input));
|
|
99
|
+
*
|
|
100
|
+
* // With custom session tracking:
|
|
101
|
+
* const ctx = createAgentContext({
|
|
102
|
+
* sessionId: discordMessage.id,
|
|
103
|
+
* trigger: 'discord'
|
|
104
|
+
* });
|
|
105
|
+
* const result = await ctx.invoke(() => myAgent.run(input));
|
|
106
|
+
*
|
|
107
|
+
* // Reuse context for multiple agents:
|
|
108
|
+
* const ctx = createAgentContext();
|
|
109
|
+
* const result1 = await ctx.invoke(() => agent1.run(input1));
|
|
110
|
+
* const result2 = await ctx.invoke(() => agent2.run(result1));
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export class StandaloneAgentContext {
|
|
114
|
+
// Immutable context properties (safe for concurrent access)
|
|
115
|
+
agent = {};
|
|
116
|
+
logger;
|
|
117
|
+
tracer;
|
|
118
|
+
kv;
|
|
119
|
+
stream;
|
|
120
|
+
vector;
|
|
121
|
+
sandbox;
|
|
122
|
+
config;
|
|
123
|
+
app;
|
|
124
|
+
current;
|
|
125
|
+
[AGENT_RUNTIME];
|
|
126
|
+
// Note: The following are mutable and will be set per-invocation via AsyncLocalStorage
|
|
127
|
+
// They exist on the interface for compatibility but are overwritten during invoke()
|
|
128
|
+
sessionId;
|
|
129
|
+
state;
|
|
130
|
+
session;
|
|
131
|
+
thread;
|
|
132
|
+
auth;
|
|
133
|
+
[AGENT_IDS];
|
|
134
|
+
// Immutable options stored from constructor
|
|
135
|
+
parentContext;
|
|
136
|
+
trigger;
|
|
137
|
+
initialSessionId;
|
|
138
|
+
constructor(options) {
|
|
139
|
+
// Auto-initialize if not inside agent runtime and globals are not set
|
|
140
|
+
let logger = getLogger();
|
|
141
|
+
let tracer = getTracer();
|
|
142
|
+
let app = getAppState();
|
|
143
|
+
if (!logger || !tracer) {
|
|
144
|
+
// Check if we're inside the agent runtime (dev server or cloud)
|
|
145
|
+
if (isInsideAgentRuntime()) {
|
|
146
|
+
// Inside runtime but globals not set - this is an error
|
|
147
|
+
throw new Error('Global state not initialized. This should not happen inside the agent runtime. ' +
|
|
148
|
+
'Please report this issue.');
|
|
149
|
+
}
|
|
150
|
+
// Not inside runtime - auto-initialize for standalone use
|
|
151
|
+
initializeStandaloneRuntime();
|
|
152
|
+
// Re-fetch globals after initialization
|
|
153
|
+
logger = getLogger();
|
|
154
|
+
tracer = getTracer();
|
|
155
|
+
app = getAppState();
|
|
156
|
+
}
|
|
157
|
+
this.logger = logger;
|
|
158
|
+
this.tracer = tracer;
|
|
159
|
+
this.app = app;
|
|
160
|
+
this.config = {};
|
|
161
|
+
this.state = new Map();
|
|
162
|
+
this.parentContext = options?.parentContext ?? context.active();
|
|
163
|
+
this.trigger = options?.trigger ?? 'manual';
|
|
164
|
+
this.initialSessionId = options?.sessionId;
|
|
165
|
+
// Session ID will be set properly in invoke() after span is created
|
|
166
|
+
this.sessionId = options?.sessionId ?? 'pending';
|
|
167
|
+
// Thread and session will be restored in invoke()
|
|
168
|
+
this.thread =
|
|
169
|
+
options?.thread ??
|
|
170
|
+
{
|
|
171
|
+
id: 'pending',
|
|
172
|
+
state: {
|
|
173
|
+
loaded: false,
|
|
174
|
+
dirty: false,
|
|
175
|
+
get: async () => undefined,
|
|
176
|
+
set: async () => { },
|
|
177
|
+
has: async () => false,
|
|
178
|
+
delete: async () => { },
|
|
179
|
+
clear: async () => { },
|
|
180
|
+
entries: async () => [],
|
|
181
|
+
keys: async () => [],
|
|
182
|
+
values: async () => [],
|
|
183
|
+
size: async () => 0,
|
|
184
|
+
push: async () => { },
|
|
185
|
+
},
|
|
186
|
+
getMetadata: async () => ({}),
|
|
187
|
+
setMetadata: async () => { },
|
|
188
|
+
addEventListener: () => { },
|
|
189
|
+
removeEventListener: () => { },
|
|
190
|
+
destroy: async () => { },
|
|
191
|
+
empty: async () => true,
|
|
192
|
+
};
|
|
193
|
+
this.session =
|
|
194
|
+
options?.session ??
|
|
195
|
+
{
|
|
196
|
+
id: 'pending',
|
|
197
|
+
thread: this.thread,
|
|
198
|
+
state: new Map(),
|
|
199
|
+
metadata: {},
|
|
200
|
+
addEventListener: () => { },
|
|
201
|
+
removeEventListener: () => { },
|
|
202
|
+
serializeUserData: () => undefined,
|
|
203
|
+
};
|
|
204
|
+
this.auth = null;
|
|
205
|
+
// Create isolated runtime state
|
|
206
|
+
this[AGENT_RUNTIME] = {
|
|
207
|
+
agents: new Map(),
|
|
208
|
+
agentConfigs: new Map(),
|
|
209
|
+
agentEventListeners: new WeakMap(),
|
|
210
|
+
};
|
|
211
|
+
// Register services (kv, stream, vector)
|
|
212
|
+
registerServices(this, true); // true = populate agents registry
|
|
213
|
+
}
|
|
214
|
+
waitUntil(_callback) {
|
|
215
|
+
// This will be called from within invoke() where waitUntilHandler is in scope
|
|
216
|
+
// We need to access the per-call waitUntilHandler from the current invocation
|
|
217
|
+
// This is handled by updating the context during invoke() via AsyncLocalStorage
|
|
218
|
+
throw new Error('waitUntil must be called from within invoke() execution context');
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Execute a function within this agent context.
|
|
222
|
+
*
|
|
223
|
+
* This method:
|
|
224
|
+
* 1. Creates an OpenTelemetry span for the invocation
|
|
225
|
+
* 2. Restores/creates session and thread
|
|
226
|
+
* 3. Sends session start event
|
|
227
|
+
* 4. Executes the function within AsyncLocalStorage context
|
|
228
|
+
* 5. Waits for background tasks (waitUntil)
|
|
229
|
+
* 6. Saves session and thread
|
|
230
|
+
* 7. Sends session complete event
|
|
231
|
+
*
|
|
232
|
+
* @param fn - Function to execute (typically () => agent.run(input))
|
|
233
|
+
* @param options - Optional configuration for the invocation
|
|
234
|
+
* @returns Promise that resolves to the function's return value
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* ```typescript
|
|
238
|
+
* const result = await ctx.invoke(() => myAgent.run({ userId: '123' }));
|
|
239
|
+
* ```
|
|
240
|
+
*
|
|
241
|
+
* @example
|
|
242
|
+
* ```typescript
|
|
243
|
+
* // Multiple agents in sequence:
|
|
244
|
+
* const result = await ctx.invoke(async () => {
|
|
245
|
+
* const step1 = await agent1.run(input);
|
|
246
|
+
* return agent2.run(step1);
|
|
247
|
+
* });
|
|
248
|
+
* ```
|
|
249
|
+
*/
|
|
250
|
+
async invoke(fn, options) {
|
|
251
|
+
const threadProvider = getThreadProvider();
|
|
252
|
+
const sessionProvider = getSessionProvider();
|
|
253
|
+
const sessionEventProvider = getSessionEventProvider();
|
|
254
|
+
const storage = getAgentAsyncLocalStorage();
|
|
255
|
+
// Create per-invocation state (prevents race conditions on concurrent calls)
|
|
256
|
+
const waitUntilHandler = new WaitUntilHandler(this.tracer);
|
|
257
|
+
const agentIds = new Set();
|
|
258
|
+
let invocationSessionId = this.initialSessionId ?? 'pending';
|
|
259
|
+
let invocationThread;
|
|
260
|
+
let invocationSession;
|
|
261
|
+
const invocationState = new Map();
|
|
262
|
+
// Create a per-call context that inherits from this but has isolated mutable state
|
|
263
|
+
const callContext = Object.create(this);
|
|
264
|
+
callContext.sessionId = invocationSessionId;
|
|
265
|
+
callContext.state = invocationState;
|
|
266
|
+
callContext[AGENT_IDS] = agentIds;
|
|
267
|
+
callContext.waitUntil = (callback) => {
|
|
268
|
+
waitUntilHandler.waitUntil(callback);
|
|
269
|
+
};
|
|
270
|
+
// Execute within parent context (for distributed tracing)
|
|
271
|
+
return await context.with(this.parentContext, async () => {
|
|
272
|
+
// Create a span for this invocation (similar to otelMiddleware's HTTP span)
|
|
273
|
+
return await trace.getTracer('standalone-agent').startActiveSpan(options?.spanName ?? 'agent-invocation', {
|
|
274
|
+
kind: SpanKind.INTERNAL, // Not HTTP, but internal invocation
|
|
275
|
+
attributes: {
|
|
276
|
+
trigger: this.trigger,
|
|
277
|
+
},
|
|
278
|
+
}, async (span) => {
|
|
279
|
+
const sctx = span.spanContext();
|
|
280
|
+
// Generate sessionId from traceId if not provided
|
|
281
|
+
invocationSessionId =
|
|
282
|
+
this.initialSessionId ??
|
|
283
|
+
(sctx?.traceId ? `sess_${sctx.traceId}` : generateId('sess'));
|
|
284
|
+
callContext.sessionId = invocationSessionId;
|
|
285
|
+
// Add to tracestate (like otelMiddleware does)
|
|
286
|
+
// Note: SpanContext.traceState is readonly, so we update it by setting the span with a new context
|
|
287
|
+
let traceState = sctx.traceState ?? new TraceState();
|
|
288
|
+
const projectId = runtimeConfig.getProjectId();
|
|
289
|
+
const orgId = runtimeConfig.getOrganizationId();
|
|
290
|
+
const deploymentId = runtimeConfig.getDeploymentId();
|
|
291
|
+
const isDevMode = runtimeConfig.isDevMode();
|
|
292
|
+
if (projectId) {
|
|
293
|
+
traceState = traceState.set('pid', projectId);
|
|
294
|
+
}
|
|
295
|
+
if (orgId) {
|
|
296
|
+
traceState = traceState.set('oid', orgId);
|
|
297
|
+
}
|
|
298
|
+
if (isDevMode) {
|
|
299
|
+
traceState = traceState.set('d', '1');
|
|
300
|
+
}
|
|
301
|
+
// Update the active context with the new trace state
|
|
302
|
+
// We do this by setting the span in the context with updated trace state
|
|
303
|
+
// Note: This creates a new context but we don't need to use it directly
|
|
304
|
+
// as the span already has the trace state we need for propagation
|
|
305
|
+
trace.setSpan(context.active(), trace.wrapSpanContext({
|
|
306
|
+
...sctx,
|
|
307
|
+
traceState,
|
|
308
|
+
}));
|
|
309
|
+
// Restore thread and session (like otelMiddleware does)
|
|
310
|
+
// For standalone contexts, we create a simple thread/session if not provided
|
|
311
|
+
// The threadProvider.restore expects a Hono context with cookie/header access
|
|
312
|
+
// For standalone contexts without HTTP, we just create a new thread
|
|
313
|
+
const { DefaultThread, generateId: genId } = await import('./session');
|
|
314
|
+
const threadId = genId('thrd');
|
|
315
|
+
// Create a no-op restore function for standalone contexts
|
|
316
|
+
const restoreFn = async () => ({ state: new Map(), metadata: {} });
|
|
317
|
+
invocationThread = new DefaultThread(threadProvider, threadId, restoreFn);
|
|
318
|
+
callContext.thread = invocationThread;
|
|
319
|
+
invocationSession = await sessionProvider.restore(invocationThread, invocationSessionId);
|
|
320
|
+
callContext.session = invocationSession;
|
|
321
|
+
// Send session start event (if configured)
|
|
322
|
+
const shouldSendSession = !!(orgId && projectId);
|
|
323
|
+
let canSendSessionEvents = true;
|
|
324
|
+
if (shouldSendSession) {
|
|
325
|
+
await sessionEventProvider
|
|
326
|
+
.start({
|
|
327
|
+
id: invocationSessionId,
|
|
328
|
+
orgId,
|
|
329
|
+
projectId,
|
|
330
|
+
threadId: invocationThread.id,
|
|
331
|
+
routeId: 'standalone', // No route for standalone contexts
|
|
332
|
+
deploymentId,
|
|
333
|
+
devmode: isDevMode,
|
|
334
|
+
environment: runtimeConfig.getEnvironment(),
|
|
335
|
+
method: 'STANDALONE',
|
|
336
|
+
url: '',
|
|
337
|
+
trigger: this.trigger,
|
|
338
|
+
metadata: Object.keys(invocationSession.metadata).length > 0
|
|
339
|
+
? invocationSession.metadata
|
|
340
|
+
: undefined,
|
|
341
|
+
})
|
|
342
|
+
.catch((ex) => {
|
|
343
|
+
canSendSessionEvents = false;
|
|
344
|
+
this.logger.error('error sending session start event: %s', ex);
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
let hasPendingWaits = false;
|
|
348
|
+
try {
|
|
349
|
+
// Execute function within AsyncLocalStorage context with per-call context
|
|
350
|
+
const result = await storage.run(callContext, fn);
|
|
351
|
+
// Wait for background tasks (like otelMiddleware does)
|
|
352
|
+
if (waitUntilHandler.hasPending()) {
|
|
353
|
+
hasPendingWaits = true;
|
|
354
|
+
waitUntilHandler
|
|
355
|
+
.waitUntilAll(this.logger, invocationSessionId)
|
|
356
|
+
.then(async () => {
|
|
357
|
+
this.logger.debug('wait until finished for session %s', invocationSessionId);
|
|
358
|
+
await sessionProvider.save(invocationSession);
|
|
359
|
+
await threadProvider.save(invocationThread);
|
|
360
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
361
|
+
if (shouldSendSession && canSendSessionEvents) {
|
|
362
|
+
const userData = invocationSession.serializeUserData();
|
|
363
|
+
sessionEventProvider
|
|
364
|
+
.complete({
|
|
365
|
+
id: invocationSessionId,
|
|
366
|
+
threadId: (await invocationThread.empty())
|
|
367
|
+
? null
|
|
368
|
+
: invocationThread.id,
|
|
369
|
+
statusCode: 200, // Success
|
|
370
|
+
agentIds: Array.from(agentIds),
|
|
371
|
+
userData,
|
|
372
|
+
metadata: Object.keys(invocationSession.metadata).length > 0
|
|
373
|
+
? invocationSession.metadata
|
|
374
|
+
: undefined,
|
|
375
|
+
})
|
|
376
|
+
.then(() => { })
|
|
377
|
+
.catch((ex) => this.logger.error(ex));
|
|
378
|
+
}
|
|
379
|
+
})
|
|
380
|
+
.catch(async (ex) => {
|
|
381
|
+
this.logger.error('wait until errored for session %s. %s', invocationSessionId, ex);
|
|
382
|
+
if (ex instanceof Error) {
|
|
383
|
+
span.recordException(ex);
|
|
384
|
+
}
|
|
385
|
+
const message = ex.message ?? String(ex);
|
|
386
|
+
span.setStatus({
|
|
387
|
+
code: SpanStatusCode.ERROR,
|
|
388
|
+
message,
|
|
389
|
+
});
|
|
390
|
+
this.logger.error(message);
|
|
391
|
+
if (shouldSendSession && canSendSessionEvents) {
|
|
392
|
+
const userData = invocationSession.serializeUserData();
|
|
393
|
+
sessionEventProvider
|
|
394
|
+
.complete({
|
|
395
|
+
id: invocationSessionId,
|
|
396
|
+
threadId: (await invocationThread.empty())
|
|
397
|
+
? null
|
|
398
|
+
: invocationThread.id,
|
|
399
|
+
statusCode: 500, // Error
|
|
400
|
+
error: message,
|
|
401
|
+
agentIds: Array.from(agentIds),
|
|
402
|
+
userData,
|
|
403
|
+
metadata: Object.keys(invocationSession.metadata).length > 0
|
|
404
|
+
? invocationSession.metadata
|
|
405
|
+
: undefined,
|
|
406
|
+
})
|
|
407
|
+
.then(() => { })
|
|
408
|
+
.catch((ex) => this.logger.error(ex));
|
|
409
|
+
}
|
|
410
|
+
})
|
|
411
|
+
.finally(() => {
|
|
412
|
+
span.end();
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
else {
|
|
416
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
417
|
+
if (shouldSendSession && canSendSessionEvents) {
|
|
418
|
+
const userData = invocationSession.serializeUserData();
|
|
419
|
+
sessionEventProvider
|
|
420
|
+
.complete({
|
|
421
|
+
id: invocationSessionId,
|
|
422
|
+
threadId: (await invocationThread.empty())
|
|
423
|
+
? null
|
|
424
|
+
: invocationThread.id,
|
|
425
|
+
statusCode: 200,
|
|
426
|
+
agentIds: Array.from(agentIds),
|
|
427
|
+
userData,
|
|
428
|
+
metadata: Object.keys(invocationSession.metadata).length > 0
|
|
429
|
+
? invocationSession.metadata
|
|
430
|
+
: undefined,
|
|
431
|
+
})
|
|
432
|
+
.then(() => { })
|
|
433
|
+
.catch((ex) => this.logger.error(ex));
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return result;
|
|
437
|
+
}
|
|
438
|
+
catch (ex) {
|
|
439
|
+
if (ex instanceof Error) {
|
|
440
|
+
span.recordException(ex);
|
|
441
|
+
}
|
|
442
|
+
const message = ex.message ?? String(ex);
|
|
443
|
+
span.setStatus({
|
|
444
|
+
code: SpanStatusCode.ERROR,
|
|
445
|
+
message,
|
|
446
|
+
});
|
|
447
|
+
this.logger.error(message);
|
|
448
|
+
if (shouldSendSession && canSendSessionEvents) {
|
|
449
|
+
const userData = invocationSession.serializeUserData();
|
|
450
|
+
sessionEventProvider
|
|
451
|
+
.complete({
|
|
452
|
+
id: invocationSessionId,
|
|
453
|
+
threadId: (await invocationThread.empty()) ? null : invocationThread.id,
|
|
454
|
+
statusCode: 500,
|
|
455
|
+
error: message,
|
|
456
|
+
agentIds: Array.from(agentIds),
|
|
457
|
+
userData,
|
|
458
|
+
metadata: Object.keys(invocationSession.metadata).length > 0
|
|
459
|
+
? invocationSession.metadata
|
|
460
|
+
: undefined,
|
|
461
|
+
})
|
|
462
|
+
.then(() => { })
|
|
463
|
+
.catch((ex) => this.logger.error(ex));
|
|
464
|
+
}
|
|
465
|
+
throw ex;
|
|
466
|
+
}
|
|
467
|
+
finally {
|
|
468
|
+
if (!hasPendingWaits) {
|
|
469
|
+
try {
|
|
470
|
+
await sessionProvider.save(invocationSession);
|
|
471
|
+
await threadProvider.save(invocationThread);
|
|
472
|
+
}
|
|
473
|
+
finally {
|
|
474
|
+
span.end();
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Execute an agent with the given input within this context.
|
|
483
|
+
*
|
|
484
|
+
* This is a convenience method that wraps `invoke()` for cleaner syntax
|
|
485
|
+
* when running a single agent.
|
|
486
|
+
*
|
|
487
|
+
* @param agent - The agent to execute (must have a `run` method)
|
|
488
|
+
* @param input - Input to pass to the agent (if agent requires input)
|
|
489
|
+
* @returns Promise that resolves to the agent's output
|
|
490
|
+
*
|
|
491
|
+
* @example
|
|
492
|
+
* ```typescript
|
|
493
|
+
* import { createAgentContext } from '@agentuity/runtime';
|
|
494
|
+
* import myAgent from './agents/my-agent';
|
|
495
|
+
*
|
|
496
|
+
* const ctx = createAgentContext();
|
|
497
|
+
* const result = await ctx.run(myAgent, { name: 'World' });
|
|
498
|
+
* ```
|
|
499
|
+
*
|
|
500
|
+
* @example
|
|
501
|
+
* ```typescript
|
|
502
|
+
* // Agent without input
|
|
503
|
+
* const result = await ctx.run(statusAgent);
|
|
504
|
+
* ```
|
|
505
|
+
*
|
|
506
|
+
* @example
|
|
507
|
+
* ```typescript
|
|
508
|
+
* // Multiple agents in sequence
|
|
509
|
+
* const ctx = createAgentContext();
|
|
510
|
+
* const step1 = await ctx.run(preprocessAgent, rawData);
|
|
511
|
+
* const step2 = await ctx.run(processAgent, step1);
|
|
512
|
+
* const result = await ctx.run(postprocessAgent, step2);
|
|
513
|
+
* ```
|
|
514
|
+
*/
|
|
515
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
516
|
+
async run(agent, input) {
|
|
517
|
+
// Handle both agents with and without input
|
|
518
|
+
// The agent.run type varies based on whether input schema is defined
|
|
519
|
+
const runFn = agent.run;
|
|
520
|
+
return this.invoke(() => runFn(input));
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Create a standalone agent context for executing agents outside of HTTP requests.
|
|
525
|
+
*
|
|
526
|
+
* This is useful for Discord bots, cron jobs, CLI scripts, sandboxes, or any scenario
|
|
527
|
+
* where you need to run agents but don't have an HTTP request context.
|
|
528
|
+
*
|
|
529
|
+
* **Auto-initialization**: When running outside of the Agentuity runtime (dev server or cloud),
|
|
530
|
+
* this function automatically initializes minimal runtime globals. No manual setup required.
|
|
531
|
+
*
|
|
532
|
+
* @param options - Optional configuration for the context
|
|
533
|
+
* @returns A StandaloneAgentContext instance
|
|
534
|
+
*
|
|
535
|
+
* @example
|
|
536
|
+
* ```typescript
|
|
537
|
+
* import { createAgentContext } from '@agentuity/runtime';
|
|
538
|
+
* import myAgent from './agents/my-agent';
|
|
539
|
+
*
|
|
540
|
+
* // Simple usage with ctx.run() (recommended):
|
|
541
|
+
* const ctx = createAgentContext();
|
|
542
|
+
* const result = await ctx.run(myAgent, { name: 'World' });
|
|
543
|
+
*
|
|
544
|
+
* // Discord bot example:
|
|
545
|
+
* client.on('messageCreate', async (message) => {
|
|
546
|
+
* const ctx = createAgentContext({
|
|
547
|
+
* sessionId: message.id,
|
|
548
|
+
* trigger: 'discord'
|
|
549
|
+
* });
|
|
550
|
+
* const response = await ctx.run(chatAgent, { message: message.content });
|
|
551
|
+
* await message.reply(response.text);
|
|
552
|
+
* });
|
|
553
|
+
*
|
|
554
|
+
* // Cron job example:
|
|
555
|
+
* cron.schedule('0 * * * *', async () => {
|
|
556
|
+
* const ctx = createAgentContext({ trigger: 'cron' });
|
|
557
|
+
* await ctx.run(cleanupAgent);
|
|
558
|
+
* });
|
|
559
|
+
*
|
|
560
|
+
* // Multiple agents in sequence:
|
|
561
|
+
* const ctx = createAgentContext();
|
|
562
|
+
* const step1 = await ctx.run(preprocessAgent, rawData);
|
|
563
|
+
* const result = await ctx.run(processAgent, step1);
|
|
564
|
+
* ```
|
|
565
|
+
*/
|
|
566
|
+
export function createAgentContext(options) {
|
|
567
|
+
return new StandaloneAgentContext(options);
|
|
568
|
+
}
|
|
569
|
+
//# sourceMappingURL=_standalone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_standalone.js","sourceRoot":"","sources":["../src/_standalone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAgB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAejD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,gBAAgB,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,aAAa,MAAM,WAAW,CAAC;AAE3C;;;GAGG;AACH,IAAI,qBAAqB,GAAG,KAAK,CAAC;AAElC;;;GAGG;AACH,SAAS,sBAAsB;IAC9B,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,MAAM,CAKjD,CAAC;IACX,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC;IAEhF,MAAM,MAAM,GAAW;QACtB,KAAK,EAAE,CAAC,OAAgB,EAAE,GAAG,IAAe,EAAE,EAAE;YAC/C,IAAI,SAAS,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,EAAE,CAAC,OAAgB,EAAE,GAAG,IAAe,EAAE,EAAE;YAC/C,IAAI,SAAS,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,EAAE,CAAC,OAAgB,EAAE,GAAG,IAAe,EAAE,EAAE;YAC9C,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,EAAE,CAAC,OAAgB,EAAE,GAAG,IAAe,EAAE,EAAE;YAC9C,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,EAAE,CAAC,OAAgB,EAAE,GAAG,IAAe,EAAE,EAAE;YAC/C,IAAI,SAAS,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,EAAE,CAAC,OAAgB,EAAE,GAAG,IAAe,EAAS,EAAE;YACtD,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM;KACnB,CAAC;IAEF,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,2BAA2B;IACnC,IAAI,qBAAqB,EAAE,CAAC;QAC3B,OAAO;IACR,CAAC;IAED,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAEnD,mBAAmB;IACnB,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,eAAe,CAAC,MAAM,CAAC,CAAC;IAExB,2CAA2C;IAC3C,8DAA8D;IAC9D,IAAI,CAAE,UAAkB,CAAC,uBAAuB,EAAE,CAAC;QAClD,8DAA8D;QAC7D,UAAkB,CAAC,uBAAuB,GAAG,EAAE,CAAC;IAClD,CAAC;IAED,wEAAwE;IACxE,MAAM,SAAS,GAAG,oBAAoB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;IACnE,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAE7C,qBAAqB,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;AAChD,CAAC;AAwCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,OAAO,sBAAsB;IAMlC,4DAA4D;IAC5D,KAAK,GAAc,EAAe,CAAC;IACnC,MAAM,CAAS;IACf,MAAM,CAAsC;IAC5C,EAAE,CAAmB;IACrB,MAAM,CAAiB;IACvB,MAAM,CAAiB;IACvB,OAAO,CAAkB;IACzB,MAAM,CAAU;IAChB,GAAG,CAAY;IACf,OAAO,CAAiB;IACxB,CAAC,aAAa,CAAC,CAAoB;IAEnC,uFAAuF;IACvF,oFAAoF;IACpF,SAAS,CAAS;IAClB,KAAK,CAAuB;IAC5B,OAAO,CAAU;IACjB,MAAM,CAAS;IACf,IAAI,CAAuD;IAC3D,CAAC,SAAS,CAAC,CAAe;IAE1B,4CAA4C;IAC3B,aAAa,CAAU;IACvB,OAAO,CAAyD;IAChE,gBAAgB,CAAU;IAE3C,YAAY,OAAkC;QAC7C,sEAAsE;QACtE,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,WAAW,EAAE,CAAC;QAExB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,gEAAgE;YAChE,IAAI,oBAAoB,EAAE,EAAE,CAAC;gBAC5B,wDAAwD;gBACxD,MAAM,IAAI,KAAK,CACd,iFAAiF;oBAChF,2BAA2B,CAC5B,CAAC;YACH,CAAC;YAED,0DAA0D;YAC1D,2BAA2B,EAAE,CAAC;YAE9B,wCAAwC;YACxC,MAAM,GAAG,SAAS,EAAG,CAAC;YACtB,MAAM,GAAG,SAAS,EAAG,CAAC;YACtB,GAAG,GAAG,WAAW,EAAE,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAgB,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,EAAa,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAChE,IAAI,CAAC,OAAO,GAAI,OAAO,EAAE,OAA+B,IAAI,QAAQ,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,OAAO,EAAE,SAAS,CAAC;QAE3C,oEAAoE;QACpE,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,SAAS,CAAC;QAEjD,kDAAkD;QAClD,IAAI,CAAC,MAAM;YACV,OAAO,EAAE,MAAM;gBACd;oBACA,EAAE,EAAE,SAAS;oBACb,KAAK,EAAE;wBACN,MAAM,EAAE,KAAK;wBACb,KAAK,EAAE,KAAK;wBACZ,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS;wBAC1B,GAAG,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;wBACnB,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;wBACtB,MAAM,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;wBACtB,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;wBACrB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;wBACvB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;wBACpB,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;wBACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;wBACnB,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;qBACpB;oBACD,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC7B,WAAW,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;oBAC3B,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC;oBAC1B,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC;oBAC7B,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;oBACvB,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;iBACZ,CAAC;QAEd,IAAI,CAAC,OAAO;YACX,OAAO,EAAE,OAAO;gBACf;oBACA,EAAE,EAAE,SAAS;oBACb,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,KAAK,EAAE,IAAI,GAAG,EAAE;oBAChB,QAAQ,EAAE,EAAE;oBACZ,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC;oBAC1B,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC;oBAC7B,iBAAiB,EAAE,GAAG,EAAE,CAAC,SAAS;iBACtB,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,gCAAgC;QAChC,IAAI,CAAC,aAAa,CAAC,GAAG;YACrB,MAAM,EAAE,IAAI,GAAG,EAAE;YACjB,YAAY,EAAE,IAAI,GAAG,EAAE;YACvB,mBAAmB,EAAE,IAAI,OAAO,EAAE;SAClC,CAAC;QAEF,yCAAyC;QACzC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,kCAAkC;IACjE,CAAC;IAED,SAAS,CAAC,SAAuD;QAChE,8EAA8E;QAC9E,8EAA8E;QAC9E,gFAAgF;QAChF,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACpF,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,KAAK,CAAC,MAAM,CAAI,EAAoB,EAAE,OAAuB;QAC5D,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;QAC3C,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;QAC7C,MAAM,oBAAoB,GAAG,uBAAuB,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,yBAAyB,EAAE,CAAC;QAE5C,6EAA6E;QAC7E,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,IAAI,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,IAAI,SAAS,CAAC;QAC7D,IAAI,gBAAwB,CAAC;QAC7B,IAAI,iBAA0B,CAAC;QAC/B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAC;QAEnD,mFAAmF;QACnF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAIrC,CAAC;QACF,WAAW,CAAC,SAAS,GAAG,mBAAmB,CAAC;QAC5C,WAAW,CAAC,KAAK,GAAG,eAAe,CAAC;QACpC,WAAW,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;QAClC,WAAW,CAAC,SAAS,GAAG,CAAC,QAAsD,EAAE,EAAE;YAClF,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,0DAA0D;QAC1D,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YACxD,4EAA4E;YAC5E,OAAO,MAAM,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,eAAe,CAC/D,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EACvC;gBACC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,oCAAoC;gBAC7D,UAAU,EAAE;oBACX,OAAO,EAAE,IAAI,CAAC,OAAO;iBACrB;aACD,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;gBACd,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAEhC,kDAAkD;gBAClD,mBAAmB;oBAClB,IAAI,CAAC,gBAAgB;wBACrB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/D,WAAW,CAAC,SAAS,GAAG,mBAAmB,CAAC;gBAE5C,+CAA+C;gBAC/C,mGAAmG;gBACnG,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,UAAU,EAAE,CAAC;gBACrD,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;gBAC/C,MAAM,KAAK,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC;gBAChD,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;gBACrD,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;gBAC5C,IAAI,SAAS,EAAE,CAAC;oBACf,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACX,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC3C,CAAC;gBACD,IAAI,SAAS,EAAE,CAAC;oBACf,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACvC,CAAC;gBAED,qDAAqD;gBACrD,yEAAyE;gBACzE,wEAAwE;gBACxE,kEAAkE;gBAClE,KAAK,CAAC,OAAO,CACZ,OAAO,CAAC,MAAM,EAAE,EAChB,KAAK,CAAC,eAAe,CAAC;oBACrB,GAAG,IAAI;oBACP,UAAU;iBACV,CAAC,CACF,CAAC;gBAEF,wDAAwD;gBACxD,6EAA6E;gBAC7E,8EAA8E;gBAC9E,oEAAoE;gBACpE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC/B,0DAA0D;gBAC1D,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnE,gBAAgB,GAAG,IAAI,aAAa,CAAC,cAAc,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC1E,WAAW,CAAC,MAAM,GAAG,gBAAgB,CAAC;gBAEtC,iBAAiB,GAAG,MAAM,eAAe,CAAC,OAAO,CAChD,gBAAgB,EAChB,mBAAmB,CACnB,CAAC;gBACF,WAAW,CAAC,OAAO,GAAG,iBAAiB,CAAC;gBAExC,2CAA2C;gBAC3C,MAAM,iBAAiB,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;gBACjD,IAAI,oBAAoB,GAAG,IAAI,CAAC;gBAEhC,IAAI,iBAAiB,EAAE,CAAC;oBACvB,MAAM,oBAAoB;yBACxB,KAAK,CAAC;wBACN,EAAE,EAAE,mBAAmB;wBACvB,KAAK;wBACL,SAAS;wBACT,QAAQ,EAAE,gBAAgB,CAAC,EAAE;wBAC7B,OAAO,EAAE,YAAY,EAAE,mCAAmC;wBAC1D,YAAY;wBACZ,OAAO,EAAE,SAAS;wBAClB,WAAW,EAAE,aAAa,CAAC,cAAc,EAAE;wBAC3C,MAAM,EAAE,YAAY;wBACpB,GAAG,EAAE,EAAE;wBACP,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,QAAQ,EACP,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;4BACjD,CAAC,CAAC,iBAAiB,CAAC,QAAQ;4BAC5B,CAAC,CAAC,SAAS;qBACb,CAAC;yBACD,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;wBACb,oBAAoB,GAAG,KAAK,CAAC;wBAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,EAAE,CAAC,CAAC;oBAChE,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,eAAe,GAAG,KAAK,CAAC;gBAE5B,IAAI,CAAC;oBACJ,0EAA0E;oBAC1E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oBAElD,uDAAuD;oBACvD,IAAI,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC;wBACnC,eAAe,GAAG,IAAI,CAAC;wBACvB,gBAAgB;6BACd,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC;6BAC9C,IAAI,CAAC,KAAK,IAAI,EAAE;4BAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,oCAAoC,EACpC,mBAAmB,CACnB,CAAC;4BACF,MAAM,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;4BAC9C,MAAM,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;4BAC5C,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC5C,IAAI,iBAAiB,IAAI,oBAAoB,EAAE,CAAC;gCAC/C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;gCACvD,oBAAoB;qCAClB,QAAQ,CAAC;oCACT,EAAE,EAAE,mBAAmB;oCACvB,QAAQ,EAAE,CAAC,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAC;wCACzC,CAAC,CAAC,IAAI;wCACN,CAAC,CAAC,gBAAgB,CAAC,EAAE;oCACtB,UAAU,EAAE,GAAG,EAAE,UAAU;oCAC3B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;oCAC9B,QAAQ;oCACR,QAAQ,EACP,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;wCACjD,CAAC,CAAC,iBAAiB,CAAC,QAAQ;wCAC5B,CAAC,CAAC,SAAS;iCACb,CAAC;qCACD,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;qCACd,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;4BACxC,CAAC;wBACF,CAAC,CAAC;6BACD,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;4BACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,uCAAuC,EACvC,mBAAmB,EACnB,EAAE,CACF,CAAC;4BACF,IAAI,EAAE,YAAY,KAAK,EAAE,CAAC;gCACzB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;4BAC1B,CAAC;4BACD,MAAM,OAAO,GAAI,EAAY,CAAC,OAAO,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;4BACpD,IAAI,CAAC,SAAS,CAAC;gCACd,IAAI,EAAE,cAAc,CAAC,KAAK;gCAC1B,OAAO;6BACP,CAAC,CAAC;4BACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;4BAC3B,IAAI,iBAAiB,IAAI,oBAAoB,EAAE,CAAC;gCAC/C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;gCACvD,oBAAoB;qCAClB,QAAQ,CAAC;oCACT,EAAE,EAAE,mBAAmB;oCACvB,QAAQ,EAAE,CAAC,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAC;wCACzC,CAAC,CAAC,IAAI;wCACN,CAAC,CAAC,gBAAgB,CAAC,EAAE;oCACtB,UAAU,EAAE,GAAG,EAAE,QAAQ;oCACzB,KAAK,EAAE,OAAO;oCACd,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;oCAC9B,QAAQ;oCACR,QAAQ,EACP,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;wCACjD,CAAC,CAAC,iBAAiB,CAAC,QAAQ;wCAC5B,CAAC,CAAC,SAAS;iCACb,CAAC;qCACD,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;qCACd,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;4BACxC,CAAC;wBACF,CAAC,CAAC;6BACD,OAAO,CAAC,GAAG,EAAE;4BACb,IAAI,CAAC,GAAG,EAAE,CAAC;wBACZ,CAAC,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACP,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC5C,IAAI,iBAAiB,IAAI,oBAAoB,EAAE,CAAC;4BAC/C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;4BACvD,oBAAoB;iCAClB,QAAQ,CAAC;gCACT,EAAE,EAAE,mBAAmB;gCACvB,QAAQ,EAAE,CAAC,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAC;oCACzC,CAAC,CAAC,IAAI;oCACN,CAAC,CAAC,gBAAgB,CAAC,EAAE;gCACtB,UAAU,EAAE,GAAG;gCACf,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;gCAC9B,QAAQ;gCACR,QAAQ,EACP,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;oCACjD,CAAC,CAAC,iBAAiB,CAAC,QAAQ;oCAC5B,CAAC,CAAC,SAAS;6BACb,CAAC;iCACD,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;iCACd,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;wBACxC,CAAC;oBACF,CAAC;oBAED,OAAO,MAAM,CAAC;gBACf,CAAC;gBAAC,OAAO,EAAE,EAAE,CAAC;oBACb,IAAI,EAAE,YAAY,KAAK,EAAE,CAAC;wBACzB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;oBAC1B,CAAC;oBACD,MAAM,OAAO,GAAI,EAAY,CAAC,OAAO,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;oBACpD,IAAI,CAAC,SAAS,CAAC;wBACd,IAAI,EAAE,cAAc,CAAC,KAAK;wBAC1B,OAAO;qBACP,CAAC,CAAC;oBACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC3B,IAAI,iBAAiB,IAAI,oBAAoB,EAAE,CAAC;wBAC/C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;wBACvD,oBAAoB;6BAClB,QAAQ,CAAC;4BACT,EAAE,EAAE,mBAAmB;4BACvB,QAAQ,EAAE,CAAC,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE;4BACvE,UAAU,EAAE,GAAG;4BACf,KAAK,EAAE,OAAO;4BACd,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;4BAC9B,QAAQ;4BACR,QAAQ,EACP,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;gCACjD,CAAC,CAAC,iBAAiB,CAAC,QAAQ;gCAC5B,CAAC,CAAC,SAAS;yBACb,CAAC;6BACD,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;6BACd,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;oBACxC,CAAC;oBACD,MAAM,EAAE,CAAC;gBACV,CAAC;wBAAS,CAAC;oBACV,IAAI,CAAC,eAAe,EAAE,CAAC;wBACtB,IAAI,CAAC;4BACJ,MAAM,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;4BAC9C,MAAM,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;wBAC7C,CAAC;gCAAS,CAAC;4BACV,IAAI,CAAC,GAAG,EAAE,CAAC;wBACZ,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC,CACD,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,8DAA8D;IAC9D,KAAK,CAAC,GAAG,CAAU,KAAiC,EAAE,KAAe;QACpE,4CAA4C;QAC5C,qEAAqE;QACrE,MAAM,KAAK,GAAG,KAAK,CAAC,GAA4C,CAAC;QACjE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;CACD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,kBAAkB,CACjC,OAAkC;IAElC,OAAO,IAAI,sBAAsB,CAAoC,OAAO,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|