@tangle-network/agent-core 0.13.1 → 0.13.3
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/auth/browser.d.ts +1 -1
- package/dist/auth/browser.js +1 -2
- package/dist/auth/index.d.ts +1 -7
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +4 -7
- package/dist/auth/index.js.map +1 -1
- package/dist/computer-use/index.d.ts +0 -6
- package/dist/computer-use/index.d.ts.map +1 -1
- package/dist/computer-use/index.js +3 -6
- package/dist/computer-use/index.js.map +1 -1
- package/dist/{errors-GuWACHTg.js → errors-B5KiSXnw.js} +2 -3
- package/dist/{errors-GuWACHTg.js.map → errors-B5KiSXnw.js.map} +1 -1
- package/dist/events/index.d.ts +1 -1
- package/dist/events/index.js +1 -2
- package/dist/{events-U7kxNUpM.js → events-C2vdiRD_.js} +4 -7
- package/dist/{events-U7kxNUpM.js.map → events-C2vdiRD_.js.map} +1 -1
- package/dist/{index-68is3nof.d.ts → index-AEKS1kB8.d.ts} +1 -9
- package/dist/index-AEKS1kB8.d.ts.map +1 -0
- package/dist/{index-Dq6SfGaX.d.ts → index-CevHCod7.d.ts} +1 -9
- package/dist/index-CevHCod7.d.ts.map +1 -0
- package/dist/{index-CKDeaS7l.d.ts → index-DWPciD1S.d.ts} +2 -8
- package/dist/index-DWPciD1S.d.ts.map +1 -0
- package/dist/{index-BFYASYJk.d.ts → index-DwvNnL6X.d.ts} +1 -3
- package/dist/index-DwvNnL6X.d.ts.map +1 -0
- package/dist/{index-CuBvSsBf.d.ts → index-OCnM4OoP.d.ts} +1 -7
- package/dist/index-OCnM4OoP.d.ts.map +1 -0
- package/dist/{index-CQPGv8jg.d.ts → index-v0euJYbX.d.ts} +10 -12
- package/dist/index-v0euJYbX.d.ts.map +1 -0
- package/dist/index.d.ts +7 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -23
- package/dist/index.js.map +1 -1
- package/dist/interactions/index.d.ts +1 -3
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/interactions/index.js +4 -7
- package/dist/interactions/index.js.map +1 -1
- package/dist/interactions/mcp-server.d.ts +1 -3
- package/dist/interactions/mcp-server.d.ts.map +1 -1
- package/dist/interactions/mcp-server.js +2 -3
- package/dist/{lifecycle-BljLcnY5.js → lifecycle-wjO8lqUZ.js} +2 -3
- package/dist/{lifecycle-BljLcnY5.js.map → lifecycle-wjO8lqUZ.js.map} +1 -1
- package/dist/node/index.d.ts +0 -2
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +1 -2
- package/dist/resilience/index.d.ts +1 -1
- package/dist/resilience/index.js +1 -2
- package/dist/{resilience-Cv5tqIDU.js → resilience-Bb1XDoKt.js} +5 -8
- package/dist/{resilience-Cv5tqIDU.js.map → resilience-Bb1XDoKt.js.map} +1 -1
- package/dist/sse/index.d.ts +0 -2
- package/dist/sse/index.d.ts.map +1 -1
- package/dist/sse/index.js +1 -2
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/telemetry/index.js +1 -2
- package/dist/{telemetry--KwUEdTv.js → telemetry-CF4pOM9u.js} +5 -9
- package/dist/{telemetry--KwUEdTv.js.map → telemetry-CF4pOM9u.js.map} +1 -1
- package/dist/{tokens-browser-DCV3-WHc.d.ts → tokens-browser-CGLWUfZ7.d.ts} +5 -11
- package/dist/tokens-browser-CGLWUfZ7.d.ts.map +1 -0
- package/dist/{tools-DeZkIW3h.d.ts → tools-C3tUmLEu.d.ts} +1 -5
- package/dist/tools-C3tUmLEu.d.ts.map +1 -0
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js +1 -2
- package/dist/{transport-DAfw3oL0.js → transport-BqEVpHWb.js} +5 -9
- package/dist/{transport-DAfw3oL0.js.map → transport-BqEVpHWb.js.map} +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +1 -2
- package/dist/{types--u-Om3vE.js → types-BKMl10eN.js} +5 -8
- package/dist/{types--u-Om3vE.js.map → types-BKMl10eN.js.map} +1 -1
- package/dist/{types-DVN5qATk.js → types-UwiuyvMA.js} +2 -3
- package/dist/{types-DVN5qATk.js.map → types-UwiuyvMA.js.map} +1 -1
- package/package.json +9 -9
- package/dist/index-68is3nof.d.ts.map +0 -1
- package/dist/index-BFYASYJk.d.ts.map +0 -1
- package/dist/index-CKDeaS7l.d.ts.map +0 -1
- package/dist/index-CQPGv8jg.d.ts.map +0 -1
- package/dist/index-CuBvSsBf.d.ts.map +0 -1
- package/dist/index-Dq6SfGaX.d.ts.map +0 -1
- package/dist/tokens-browser-DCV3-WHc.d.ts.map +0 -1
- package/dist/tools-DeZkIW3h.d.ts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/errors/index.ts
|
|
2
2
|
/** SDK error with structured metadata */
|
|
3
3
|
var SDKError = class SDKError extends Error {
|
|
4
4
|
code;
|
|
@@ -143,7 +143,6 @@ function isSDKError(error) {
|
|
|
143
143
|
function isRetryable(error) {
|
|
144
144
|
return isSDKError(error) && error.retryable;
|
|
145
145
|
}
|
|
146
|
-
//#endregion
|
|
147
146
|
export { isRetryable as n, isSDKError as r, SDKError as t };
|
|
148
147
|
|
|
149
|
-
//# sourceMappingURL=errors-
|
|
148
|
+
//# sourceMappingURL=errors-B5KiSXnw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors-
|
|
1
|
+
{"version":3,"file":"errors-B5KiSXnw.js","names":[],"sources":["../src/errors/index.ts"],"sourcesContent":["/**\n * SDK Error Types\n *\n * Structured errors with codes, retry hints, and context.\n */\n\n/** Error categories for routing and handling */\nexport type ErrorCode =\n | \"NETWORK\"\n | \"TIMEOUT\"\n | \"AUTH\"\n | \"AUTH_EXPIRED\"\n | \"VALIDATION\"\n | \"NOT_FOUND\"\n | \"RATE_LIMITED\"\n | \"SERVER\"\n | \"CANCELLED\"\n | \"UNKNOWN\";\n\n/** SDK error with structured metadata */\nexport class SDKError extends Error {\n readonly code: ErrorCode;\n readonly status?: number;\n readonly retryable: boolean;\n readonly retryAfterMs?: number;\n readonly context?: Record<string, unknown>;\n\n constructor(\n message: string,\n options: {\n code: ErrorCode;\n status?: number;\n retryable?: boolean;\n retryAfterMs?: number;\n context?: Record<string, unknown>;\n cause?: Error;\n },\n ) {\n super(message, { cause: options.cause });\n this.name = \"SDKError\";\n this.code = options.code;\n this.status = options.status;\n this.retryable =\n options.retryable ?? this.inferRetryable(options.code, options.status);\n this.retryAfterMs = options.retryAfterMs;\n this.context = options.context;\n }\n\n private inferRetryable(code: ErrorCode, status?: number): boolean {\n // Network issues and server errors are typically retryable\n if (code === \"NETWORK\" || code === \"TIMEOUT\") return true;\n if (code === \"RATE_LIMITED\") return true;\n if (code === \"SERVER\" && status && status >= 500) return true;\n // Auth expired can be retried after refresh\n if (code === \"AUTH_EXPIRED\") return true;\n // Client errors are not retryable\n return false;\n }\n\n /** Create from HTTP response */\n static fromResponse(status: number, body?: unknown): SDKError {\n const message = SDKError.extractMessageFromBody(body) ?? `HTTP ${status}`;\n\n if (status === 401) {\n return new SDKError(message, {\n code: \"AUTH\",\n status,\n retryable: false,\n context: { body },\n });\n }\n if (status === 403) {\n return new SDKError(message, {\n code: \"AUTH\",\n status,\n retryable: false,\n context: { body },\n });\n }\n if (status === 404) {\n return new SDKError(message, {\n code: \"NOT_FOUND\",\n status,\n retryable: false,\n context: { body },\n });\n }\n if (status === 422 || status === 400) {\n return new SDKError(message, {\n code: \"VALIDATION\",\n status,\n retryable: false,\n context: { body },\n });\n }\n if (status === 429) {\n const retryAfter =\n typeof body === \"object\" && body !== null && \"retryAfter\" in body\n ? Number((body as { retryAfter: unknown }).retryAfter) * 1000\n : 1000;\n return new SDKError(message, {\n code: \"RATE_LIMITED\",\n status,\n retryable: true,\n retryAfterMs: retryAfter,\n context: { body },\n });\n }\n if (status >= 500) {\n return new SDKError(message, {\n code: \"SERVER\",\n status,\n retryable: true,\n context: { body },\n });\n }\n return new SDKError(message, {\n code: \"UNKNOWN\",\n status,\n context: { body },\n });\n }\n\n /** Create from caught error */\n static fromError(error: unknown): SDKError {\n if (error instanceof SDKError) return error;\n\n if (error instanceof Error) {\n // Detect network errors\n if (error.name === \"TypeError\" && error.message.includes(\"fetch\")) {\n return new SDKError(\"Network request failed\", {\n code: \"NETWORK\",\n cause: error,\n });\n }\n if (error.name === \"AbortError\") {\n return new SDKError(\"Request cancelled\", {\n code: \"CANCELLED\",\n retryable: false,\n cause: error,\n });\n }\n if (error.message.includes(\"timeout\") || error.name === \"TimeoutError\") {\n return new SDKError(\"Request timeout\", {\n code: \"TIMEOUT\",\n cause: error,\n });\n }\n return new SDKError(error.message, { code: \"UNKNOWN\", cause: error });\n }\n\n return new SDKError(String(error), { code: \"UNKNOWN\" });\n }\n\n /**\n * Extract a human-readable message from a parsed error response body.\n *\n * Probes shapes seen across our upstreams:\n * - `{ message: \"...\" }` — most internal services\n * - `{ error: \"...\" }` — flat-error shape\n * - `{ error: { message: \"...\" } }` — Hetzner Cloud API\n * - `{ error: { details: \"...\" } }` — Hetzner field-level details\n * - `string` — non-JSON text/plain errors\n *\n * Returns null if no message-like field is present so callers can\n * fall back to \"HTTP <status>\". Without this, Hetzner 422s logged\n * as opaque \"HTTP 422\" because the message lives at\n * `body.error.message`, blocking diagnosis of every autoscaler\n * failure (issue #785).\n */\n private static extractMessageFromBody(body: unknown): string | null {\n if (typeof body === \"string\" && body.trim().length > 0) {\n return body.length > 500 ? `${body.slice(0, 500)}…` : body;\n }\n if (typeof body !== \"object\" || body === null) return null;\n\n const top = body as { message?: unknown; error?: unknown };\n if (typeof top.message === \"string\" && top.message.length > 0) {\n return top.message;\n }\n if (typeof top.error === \"string\" && top.error.length > 0) {\n return top.error;\n }\n if (typeof top.error === \"object\" && top.error !== null) {\n const inner = top.error as {\n message?: unknown;\n details?: unknown;\n code?: unknown;\n };\n const message =\n typeof inner.message === \"string\" && inner.message.length > 0\n ? inner.message\n : null;\n const details =\n typeof inner.details === \"string\" && inner.details.length > 0\n ? inner.details\n : null;\n const code =\n typeof inner.code === \"string\" && inner.code.length > 0\n ? inner.code\n : null;\n const parts = [code, message, details].filter(\n (part): part is string => part !== null,\n );\n if (parts.length > 0) return parts.join(\": \");\n }\n return null;\n }\n\n /** Check if error is retryable after token refresh */\n isAuthExpired(): boolean {\n return (\n this.code === \"AUTH_EXPIRED\" ||\n (this.code === \"AUTH\" && this.status === 401)\n );\n }\n}\n\n/** Type guard for SDKError */\nexport function isSDKError(error: unknown): error is SDKError {\n return error instanceof SDKError;\n}\n\n/** Type guard for retryable errors */\nexport function isRetryable(error: unknown): boolean {\n return isSDKError(error) && error.retryable;\n}\n"],"mappings":"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"}
|
package/dist/events/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as EventChannel, c as EventBufferConfig, i as ChannelHandler, n as EventDeduplicator, o as BufferedEvent, r as ChannelConfig, s as EventBuffer, t as DeduplicatorConfig } from "../index-
|
|
1
|
+
import { a as EventChannel, c as EventBufferConfig, i as ChannelHandler, n as EventDeduplicator, o as BufferedEvent, r as ChannelConfig, s as EventBuffer, t as DeduplicatorConfig } from "../index-OCnM4OoP.js";
|
|
2
2
|
export { type BufferedEvent, type ChannelConfig, type ChannelHandler, type DeduplicatorConfig, EventBuffer, type EventBufferConfig, EventChannel, EventDeduplicator };
|
package/dist/events/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { EventBuffer, EventChannel, EventDeduplicator };
|
|
1
|
+
export { r as EventBuffer, n as EventChannel, t as EventDeduplicator } from "../events-C2vdiRD_.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/events/buffer.ts
|
|
2
2
|
const DEFAULT_CONFIG$2 = {
|
|
3
3
|
maxSize: 1e3,
|
|
4
4
|
ttlMs: 3e5,
|
|
@@ -86,8 +86,7 @@ var EventBuffer = class {
|
|
|
86
86
|
this.cleanupTimer = setInterval(() => this.pruneExpired(), 6e4);
|
|
87
87
|
}
|
|
88
88
|
};
|
|
89
|
-
|
|
90
|
-
//#region src/events/channel.ts
|
|
89
|
+
// src/events/channel.ts
|
|
91
90
|
const DEFAULT_CONFIG$1 = {
|
|
92
91
|
maxSubscribersPerTopic: 100,
|
|
93
92
|
enableWildcards: true
|
|
@@ -181,8 +180,7 @@ var EventChannel = class {
|
|
|
181
180
|
return new RegExp(`^${escaped}$`);
|
|
182
181
|
}
|
|
183
182
|
};
|
|
184
|
-
|
|
185
|
-
//#region src/events/deduplication.ts
|
|
183
|
+
// src/events/deduplication.ts
|
|
186
184
|
const DEFAULT_CONFIG = {
|
|
187
185
|
maxSize: 1e4,
|
|
188
186
|
windowMs: 6e4
|
|
@@ -259,7 +257,6 @@ var EventDeduplicator = class {
|
|
|
259
257
|
this.cleanupTimer = setInterval(() => this.pruneExpired(), 3e4);
|
|
260
258
|
}
|
|
261
259
|
};
|
|
262
|
-
//#endregion
|
|
263
260
|
export { EventChannel as n, EventBuffer as r, EventDeduplicator as t };
|
|
264
261
|
|
|
265
|
-
//# sourceMappingURL=events-
|
|
262
|
+
//# sourceMappingURL=events-C2vdiRD_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-U7kxNUpM.js","names":["DEFAULT_CONFIG","DEFAULT_CONFIG"],"sources":["../src/events/buffer.ts","../src/events/channel.ts","../src/events/deduplication.ts"],"sourcesContent":["/**\n * Event Buffer\n *\n * Buffers events during disconnections for replay on reconnect.\n * Implements overflow handling with configurable strategies.\n */\n\nexport interface EventBufferConfig {\n /** Maximum number of events to buffer (default: 1000) */\n maxSize: number;\n /** Time-to-live in milliseconds for buffered events (default: 300000 = 5min) */\n ttlMs: number;\n /** Strategy when buffer is full: \"drop-oldest\" or \"drop-newest\" */\n overflowStrategy: \"drop-oldest\" | \"drop-newest\";\n}\n\nexport interface BufferedEvent<T = unknown> {\n id: string;\n data: T;\n timestamp: number;\n eventType?: string;\n}\n\nconst DEFAULT_CONFIG: EventBufferConfig = {\n maxSize: 1000,\n ttlMs: 300000,\n overflowStrategy: \"drop-oldest\",\n};\n\nexport class EventBuffer<T = unknown> {\n private readonly config: EventBufferConfig;\n private events: BufferedEvent<T>[] = [];\n private seenIds: Set<string> = new Set();\n private cleanupTimer?: ReturnType<typeof setInterval>;\n\n constructor(config: Partial<EventBufferConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.startCleanup();\n }\n\n /** Add an event to the buffer (deduplicates by ID) */\n push(id: string, data: T, eventType?: string): void {\n // Deduplicate by event ID to prevent duplicate events during replay\n if (this.seenIds.has(id)) {\n return;\n }\n\n const event: BufferedEvent<T> = {\n id,\n data,\n timestamp: Date.now(),\n eventType,\n };\n\n if (this.events.length >= this.config.maxSize) {\n if (this.config.overflowStrategy === \"drop-oldest\") {\n const removed = this.events.shift();\n if (removed) {\n this.seenIds.delete(removed.id);\n }\n } else {\n return; // drop-newest: don't add\n }\n }\n\n this.events.push(event);\n this.seenIds.add(id);\n }\n\n /** Get all buffered events */\n getAll(): BufferedEvent<T>[] {\n this.pruneExpired();\n return [...this.events];\n }\n\n /** Get events since a specific event ID */\n getSince(lastEventId: string): BufferedEvent<T>[] {\n this.pruneExpired();\n const index = this.events.findIndex((e) => e.id === lastEventId);\n if (index === -1) {\n return [...this.events];\n }\n return this.events.slice(index + 1);\n }\n\n /** Get events after a timestamp */\n getSinceTimestamp(timestamp: number): BufferedEvent<T>[] {\n this.pruneExpired();\n return this.events.filter((e) => e.timestamp > timestamp);\n }\n\n /** Clear all buffered events */\n clear(): void {\n this.events = [];\n this.seenIds.clear();\n }\n\n /** Get current buffer size */\n size(): number {\n return this.events.length;\n }\n\n /** Check if buffer is empty */\n isEmpty(): boolean {\n return this.events.length === 0;\n }\n\n /** Check if buffer is full */\n isFull(): boolean {\n return this.events.length >= this.config.maxSize;\n }\n\n /** Dispose of the buffer and cleanup resources */\n dispose(): void {\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = undefined;\n }\n this.clear();\n }\n\n private pruneExpired(): void {\n const cutoff = Date.now() - this.config.ttlMs;\n const expired = this.events.filter((e) => e.timestamp <= cutoff);\n for (const e of expired) {\n this.seenIds.delete(e.id);\n }\n this.events = this.events.filter((e) => e.timestamp > cutoff);\n }\n\n private startCleanup(): void {\n // Run cleanup every minute\n this.cleanupTimer = setInterval(() => this.pruneExpired(), 60000);\n }\n}\n","/**\n * Channel Pub/Sub\n *\n * Topic-based event distribution with wildcard pattern matching.\n * Supports patterns like \"message.*\", \"**\", and exact matches.\n */\n\nexport type ChannelHandler<T = unknown> = (message: T, topic: string) => void;\n\nexport interface ChannelConfig {\n /** Maximum number of subscribers per topic (default: 100) */\n maxSubscribersPerTopic: number;\n /** Enable wildcard patterns (default: true) */\n enableWildcards: boolean;\n}\n\ninterface Subscriber<T> {\n pattern: string;\n handler: ChannelHandler<T>;\n regex?: RegExp;\n}\n\nconst DEFAULT_CONFIG: ChannelConfig = {\n maxSubscribersPerTopic: 100,\n enableWildcards: true,\n};\n\nexport class EventChannel<T = unknown> {\n private readonly config: ChannelConfig;\n private readonly subscribers: Subscriber<T>[] = [];\n\n constructor(config: Partial<ChannelConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Subscribe to a topic or pattern.\n *\n * Patterns:\n * - \"exact.topic\" - matches only \"exact.topic\"\n * - \"prefix.*\" - matches \"prefix.foo\", \"prefix.bar\", etc.\n * - \"prefix.**\" - matches \"prefix.foo\", \"prefix.foo.bar\", etc.\n * - \"**\" - matches all topics\n *\n * Returns an unsubscribe function.\n */\n subscribe(pattern: string, handler: ChannelHandler<T>): () => void {\n const subscriber: Subscriber<T> = {\n pattern,\n handler,\n regex: this.config.enableWildcards\n ? this.patternToRegex(pattern)\n : undefined,\n };\n\n this.subscribers.push(subscriber);\n\n return () => {\n const index = this.subscribers.indexOf(subscriber);\n if (index !== -1) {\n this.subscribers.splice(index, 1);\n }\n };\n }\n\n /**\n * Publish a message to a topic.\n * Delivers to all matching subscribers.\n */\n publish(topic: string, message: T): number {\n let delivered = 0;\n\n for (const subscriber of this.subscribers) {\n if (this.matches(subscriber, topic)) {\n try {\n subscriber.handler(message, topic);\n delivered++;\n } catch (error) {\n console.error(`Error in channel handler for ${topic}:`, error);\n }\n }\n }\n\n return delivered;\n }\n\n /**\n * Check if any subscribers are listening to a topic.\n */\n hasSubscribers(topic: string): boolean {\n return this.subscribers.some((s) => this.matches(s, topic));\n }\n\n /**\n * Get the number of subscribers for a topic.\n */\n subscriberCount(topic: string): number {\n return this.subscribers.filter((s) => this.matches(s, topic)).length;\n }\n\n /**\n * Get all unique patterns being subscribed to.\n */\n getPatterns(): string[] {\n return [...new Set(this.subscribers.map((s) => s.pattern))];\n }\n\n /**\n * Clear all subscribers.\n */\n clear(): void {\n this.subscribers.length = 0;\n }\n\n /**\n * Get total subscriber count.\n */\n size(): number {\n return this.subscribers.length;\n }\n\n private matches(subscriber: Subscriber<T>, topic: string): boolean {\n if (!this.config.enableWildcards || !subscriber.regex) {\n return subscriber.pattern === topic;\n }\n return subscriber.regex.test(topic);\n }\n\n private patternToRegex(pattern: string): RegExp {\n // Handle special patterns\n if (pattern === \"**\") {\n return /^.*$/;\n }\n\n // Escape special regex characters except * and .\n let escaped = pattern.replace(/[+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n // Replace ** with match-all\n escaped = escaped.replace(/\\*\\*/g, \"<<<GLOBSTAR>>>\");\n\n // Replace * with single-segment match\n escaped = escaped.replace(/\\*/g, \"[^.]+\");\n\n // Restore globstar\n escaped = escaped.replace(/<<<GLOBSTAR>>>/g, \".*\");\n\n return new RegExp(`^${escaped}$`);\n }\n}\n","/**\n * Event Deduplication\n *\n * LRU-bounded set for tracking seen event IDs.\n * Prevents duplicate event processing during reconnections.\n */\n\nexport interface DeduplicatorConfig {\n /** Maximum number of event IDs to track (default: 10000) */\n maxSize: number;\n /** Time window in milliseconds for deduplication (default: 60000 = 1min) */\n windowMs: number;\n}\n\ninterface TrackedEvent {\n timestamp: number;\n}\n\nconst DEFAULT_CONFIG: DeduplicatorConfig = {\n maxSize: 10000,\n windowMs: 60000,\n};\n\nexport class EventDeduplicator {\n private readonly config: DeduplicatorConfig;\n private readonly seen: Map<string, TrackedEvent> = new Map();\n private cleanupTimer?: ReturnType<typeof setInterval>;\n\n constructor(config: Partial<DeduplicatorConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.startCleanup();\n }\n\n /**\n * Check if an event has been seen and mark it as seen.\n * Returns true if this is a duplicate, false if it's new.\n */\n isDuplicate(eventId: string): boolean {\n const now = Date.now();\n const existing = this.seen.get(eventId);\n\n if (existing && now - existing.timestamp < this.config.windowMs) {\n return true;\n }\n\n // Evict oldest if at capacity\n if (this.seen.size >= this.config.maxSize) {\n this.evictOldest();\n }\n\n this.seen.set(eventId, { timestamp: now });\n return false;\n }\n\n /**\n * Mark an event as seen without checking for duplicates.\n */\n markSeen(eventId: string): void {\n if (this.seen.size >= this.config.maxSize) {\n this.evictOldest();\n }\n this.seen.set(eventId, { timestamp: Date.now() });\n }\n\n /**\n * Check if an event has been seen (without marking).\n */\n hasSeen(eventId: string): boolean {\n const existing = this.seen.get(eventId);\n if (!existing) return false;\n return Date.now() - existing.timestamp < this.config.windowMs;\n }\n\n /**\n * Clear all tracked events.\n */\n clear(): void {\n this.seen.clear();\n }\n\n /**\n * Get the number of tracked events.\n */\n size(): number {\n return this.seen.size;\n }\n\n /**\n * Dispose of the deduplicator and cleanup resources.\n */\n dispose(): void {\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = undefined;\n }\n this.clear();\n }\n\n private evictOldest(): void {\n // Map maintains insertion order, so first entry is oldest\n const firstKey = this.seen.keys().next().value;\n if (firstKey !== undefined) {\n this.seen.delete(firstKey);\n }\n }\n\n private pruneExpired(): void {\n const cutoff = Date.now() - this.config.windowMs;\n for (const [id, entry] of this.seen) {\n if (entry.timestamp < cutoff) {\n this.seen.delete(id);\n }\n }\n }\n\n private startCleanup(): void {\n // Run cleanup every 30 seconds\n this.cleanupTimer = setInterval(() => this.pruneExpired(), 30000);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"events-C2vdiRD_.js","names":["DEFAULT_CONFIG","DEFAULT_CONFIG"],"sources":["../src/events/buffer.ts","../src/events/channel.ts","../src/events/deduplication.ts"],"sourcesContent":["/**\n * Event Buffer\n *\n * Buffers events during disconnections for replay on reconnect.\n * Implements overflow handling with configurable strategies.\n */\n\nexport interface EventBufferConfig {\n /** Maximum number of events to buffer (default: 1000) */\n maxSize: number;\n /** Time-to-live in milliseconds for buffered events (default: 300000 = 5min) */\n ttlMs: number;\n /** Strategy when buffer is full: \"drop-oldest\" or \"drop-newest\" */\n overflowStrategy: \"drop-oldest\" | \"drop-newest\";\n}\n\nexport interface BufferedEvent<T = unknown> {\n id: string;\n data: T;\n timestamp: number;\n eventType?: string;\n}\n\nconst DEFAULT_CONFIG: EventBufferConfig = {\n maxSize: 1000,\n ttlMs: 300000,\n overflowStrategy: \"drop-oldest\",\n};\n\nexport class EventBuffer<T = unknown> {\n private readonly config: EventBufferConfig;\n private events: BufferedEvent<T>[] = [];\n private seenIds: Set<string> = new Set();\n private cleanupTimer?: ReturnType<typeof setInterval>;\n\n constructor(config: Partial<EventBufferConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.startCleanup();\n }\n\n /** Add an event to the buffer (deduplicates by ID) */\n push(id: string, data: T, eventType?: string): void {\n // Deduplicate by event ID to prevent duplicate events during replay\n if (this.seenIds.has(id)) {\n return;\n }\n\n const event: BufferedEvent<T> = {\n id,\n data,\n timestamp: Date.now(),\n eventType,\n };\n\n if (this.events.length >= this.config.maxSize) {\n if (this.config.overflowStrategy === \"drop-oldest\") {\n const removed = this.events.shift();\n if (removed) {\n this.seenIds.delete(removed.id);\n }\n } else {\n return; // drop-newest: don't add\n }\n }\n\n this.events.push(event);\n this.seenIds.add(id);\n }\n\n /** Get all buffered events */\n getAll(): BufferedEvent<T>[] {\n this.pruneExpired();\n return [...this.events];\n }\n\n /** Get events since a specific event ID */\n getSince(lastEventId: string): BufferedEvent<T>[] {\n this.pruneExpired();\n const index = this.events.findIndex((e) => e.id === lastEventId);\n if (index === -1) {\n return [...this.events];\n }\n return this.events.slice(index + 1);\n }\n\n /** Get events after a timestamp */\n getSinceTimestamp(timestamp: number): BufferedEvent<T>[] {\n this.pruneExpired();\n return this.events.filter((e) => e.timestamp > timestamp);\n }\n\n /** Clear all buffered events */\n clear(): void {\n this.events = [];\n this.seenIds.clear();\n }\n\n /** Get current buffer size */\n size(): number {\n return this.events.length;\n }\n\n /** Check if buffer is empty */\n isEmpty(): boolean {\n return this.events.length === 0;\n }\n\n /** Check if buffer is full */\n isFull(): boolean {\n return this.events.length >= this.config.maxSize;\n }\n\n /** Dispose of the buffer and cleanup resources */\n dispose(): void {\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = undefined;\n }\n this.clear();\n }\n\n private pruneExpired(): void {\n const cutoff = Date.now() - this.config.ttlMs;\n const expired = this.events.filter((e) => e.timestamp <= cutoff);\n for (const e of expired) {\n this.seenIds.delete(e.id);\n }\n this.events = this.events.filter((e) => e.timestamp > cutoff);\n }\n\n private startCleanup(): void {\n // Run cleanup every minute\n this.cleanupTimer = setInterval(() => this.pruneExpired(), 60000);\n }\n}\n","/**\n * Channel Pub/Sub\n *\n * Topic-based event distribution with wildcard pattern matching.\n * Supports patterns like \"message.*\", \"**\", and exact matches.\n */\n\nexport type ChannelHandler<T = unknown> = (message: T, topic: string) => void;\n\nexport interface ChannelConfig {\n /** Maximum number of subscribers per topic (default: 100) */\n maxSubscribersPerTopic: number;\n /** Enable wildcard patterns (default: true) */\n enableWildcards: boolean;\n}\n\ninterface Subscriber<T> {\n pattern: string;\n handler: ChannelHandler<T>;\n regex?: RegExp;\n}\n\nconst DEFAULT_CONFIG: ChannelConfig = {\n maxSubscribersPerTopic: 100,\n enableWildcards: true,\n};\n\nexport class EventChannel<T = unknown> {\n private readonly config: ChannelConfig;\n private readonly subscribers: Subscriber<T>[] = [];\n\n constructor(config: Partial<ChannelConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Subscribe to a topic or pattern.\n *\n * Patterns:\n * - \"exact.topic\" - matches only \"exact.topic\"\n * - \"prefix.*\" - matches \"prefix.foo\", \"prefix.bar\", etc.\n * - \"prefix.**\" - matches \"prefix.foo\", \"prefix.foo.bar\", etc.\n * - \"**\" - matches all topics\n *\n * Returns an unsubscribe function.\n */\n subscribe(pattern: string, handler: ChannelHandler<T>): () => void {\n const subscriber: Subscriber<T> = {\n pattern,\n handler,\n regex: this.config.enableWildcards\n ? this.patternToRegex(pattern)\n : undefined,\n };\n\n this.subscribers.push(subscriber);\n\n return () => {\n const index = this.subscribers.indexOf(subscriber);\n if (index !== -1) {\n this.subscribers.splice(index, 1);\n }\n };\n }\n\n /**\n * Publish a message to a topic.\n * Delivers to all matching subscribers.\n */\n publish(topic: string, message: T): number {\n let delivered = 0;\n\n for (const subscriber of this.subscribers) {\n if (this.matches(subscriber, topic)) {\n try {\n subscriber.handler(message, topic);\n delivered++;\n } catch (error) {\n console.error(`Error in channel handler for ${topic}:`, error);\n }\n }\n }\n\n return delivered;\n }\n\n /**\n * Check if any subscribers are listening to a topic.\n */\n hasSubscribers(topic: string): boolean {\n return this.subscribers.some((s) => this.matches(s, topic));\n }\n\n /**\n * Get the number of subscribers for a topic.\n */\n subscriberCount(topic: string): number {\n return this.subscribers.filter((s) => this.matches(s, topic)).length;\n }\n\n /**\n * Get all unique patterns being subscribed to.\n */\n getPatterns(): string[] {\n return [...new Set(this.subscribers.map((s) => s.pattern))];\n }\n\n /**\n * Clear all subscribers.\n */\n clear(): void {\n this.subscribers.length = 0;\n }\n\n /**\n * Get total subscriber count.\n */\n size(): number {\n return this.subscribers.length;\n }\n\n private matches(subscriber: Subscriber<T>, topic: string): boolean {\n if (!this.config.enableWildcards || !subscriber.regex) {\n return subscriber.pattern === topic;\n }\n return subscriber.regex.test(topic);\n }\n\n private patternToRegex(pattern: string): RegExp {\n // Handle special patterns\n if (pattern === \"**\") {\n return /^.*$/;\n }\n\n // Escape special regex characters except * and .\n let escaped = pattern.replace(/[+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n // Replace ** with match-all\n escaped = escaped.replace(/\\*\\*/g, \"<<<GLOBSTAR>>>\");\n\n // Replace * with single-segment match\n escaped = escaped.replace(/\\*/g, \"[^.]+\");\n\n // Restore globstar\n escaped = escaped.replace(/<<<GLOBSTAR>>>/g, \".*\");\n\n return new RegExp(`^${escaped}$`);\n }\n}\n","/**\n * Event Deduplication\n *\n * LRU-bounded set for tracking seen event IDs.\n * Prevents duplicate event processing during reconnections.\n */\n\nexport interface DeduplicatorConfig {\n /** Maximum number of event IDs to track (default: 10000) */\n maxSize: number;\n /** Time window in milliseconds for deduplication (default: 60000 = 1min) */\n windowMs: number;\n}\n\ninterface TrackedEvent {\n timestamp: number;\n}\n\nconst DEFAULT_CONFIG: DeduplicatorConfig = {\n maxSize: 10000,\n windowMs: 60000,\n};\n\nexport class EventDeduplicator {\n private readonly config: DeduplicatorConfig;\n private readonly seen: Map<string, TrackedEvent> = new Map();\n private cleanupTimer?: ReturnType<typeof setInterval>;\n\n constructor(config: Partial<DeduplicatorConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.startCleanup();\n }\n\n /**\n * Check if an event has been seen and mark it as seen.\n * Returns true if this is a duplicate, false if it's new.\n */\n isDuplicate(eventId: string): boolean {\n const now = Date.now();\n const existing = this.seen.get(eventId);\n\n if (existing && now - existing.timestamp < this.config.windowMs) {\n return true;\n }\n\n // Evict oldest if at capacity\n if (this.seen.size >= this.config.maxSize) {\n this.evictOldest();\n }\n\n this.seen.set(eventId, { timestamp: now });\n return false;\n }\n\n /**\n * Mark an event as seen without checking for duplicates.\n */\n markSeen(eventId: string): void {\n if (this.seen.size >= this.config.maxSize) {\n this.evictOldest();\n }\n this.seen.set(eventId, { timestamp: Date.now() });\n }\n\n /**\n * Check if an event has been seen (without marking).\n */\n hasSeen(eventId: string): boolean {\n const existing = this.seen.get(eventId);\n if (!existing) return false;\n return Date.now() - existing.timestamp < this.config.windowMs;\n }\n\n /**\n * Clear all tracked events.\n */\n clear(): void {\n this.seen.clear();\n }\n\n /**\n * Get the number of tracked events.\n */\n size(): number {\n return this.seen.size;\n }\n\n /**\n * Dispose of the deduplicator and cleanup resources.\n */\n dispose(): void {\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = undefined;\n }\n this.clear();\n }\n\n private evictOldest(): void {\n // Map maintains insertion order, so first entry is oldest\n const firstKey = this.seen.keys().next().value;\n if (firstKey !== undefined) {\n this.seen.delete(firstKey);\n }\n }\n\n private pruneExpired(): void {\n const cutoff = Date.now() - this.config.windowMs;\n for (const [id, entry] of this.seen) {\n if (entry.timestamp < cutoff) {\n this.seen.delete(id);\n }\n }\n }\n\n private startCleanup(): void {\n // Run cleanup every 30 seconds\n this.cleanupTimer = setInterval(() => this.pruneExpired(), 30000);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/telemetry/content-attributes.d.ts
|
|
2
1
|
/**
|
|
3
2
|
* Content-key alias vocabulary — the single source of truth for "where does a
|
|
4
3
|
* trace producer put the human-readable CONTENT of a turn": the task, the
|
|
@@ -161,8 +160,6 @@ declare function resolveDeclaredIntent(bag0: Record<string, unknown> | null | un
|
|
|
161
160
|
* fabricates.
|
|
162
161
|
*/
|
|
163
162
|
declare function declaredTaskText(content: NormalizedContent): string | null;
|
|
164
|
-
//#endregion
|
|
165
|
-
//#region src/telemetry/genai-attributes.d.ts
|
|
166
163
|
/**
|
|
167
164
|
* OpenTelemetry GenAI semantic-convention span attributes — the vocabulary every
|
|
168
165
|
* trace producer in the stack emits and the intelligence ingest reads, so model /
|
|
@@ -227,8 +224,6 @@ interface GenAiUsage {
|
|
|
227
224
|
* mirror of {@link GEN_AI_MODEL_KEYS} / the `*_TOKEN_KEYS` reader candidates.
|
|
228
225
|
*/
|
|
229
226
|
declare function genAiUsageAttributes(usage: GenAiUsage): Record<string, string | number>;
|
|
230
|
-
//#endregion
|
|
231
|
-
//#region src/telemetry/spine-attributes.d.ts
|
|
232
227
|
/**
|
|
233
228
|
* Spine run/subject/tree + trigger span-attribute vocabulary — the single set of
|
|
234
229
|
* `tangle.*` keys that name a run, its parent, its kind, its trigger, and the
|
|
@@ -291,8 +286,6 @@ declare const SUBJECT_KEY_ATTRS: readonly string[];
|
|
|
291
286
|
declare const RUN_KIND_ATTRS: readonly string[];
|
|
292
287
|
/** Workflow-presence markers — any one present implies a `workflow` run kind. */
|
|
293
288
|
declare const WORKFLOW_MARKER_ATTRS: readonly string[];
|
|
294
|
-
//#endregion
|
|
295
|
-
//#region src/telemetry/token-usage.d.ts
|
|
296
289
|
/**
|
|
297
290
|
* Candidate field names for a producer-supplied `tokenUsage` bag on a
|
|
298
291
|
* `message.updated` trace event. Agents and SDK layers disagree on the
|
|
@@ -396,6 +389,5 @@ declare function promptTokens(usage: TokenUsageCounts): number;
|
|
|
396
389
|
* producer reported no cache information, so an unmetered path cannot be read
|
|
397
390
|
* as a 0% hit rate. */
|
|
398
391
|
declare function cacheHitRate(usage: TokenUsageCounts): number | undefined;
|
|
399
|
-
//#endregion
|
|
400
392
|
export { CONTENT_KEY_FIELD as $, TANGLE_SUBJECT_KEY as A, GEN_AI_MODEL_KEYS as B, RUN_KEY_ATTRS as C, TANGLE_RUN_ID_KEY as D, TANGLE_RUN_ID_CAMEL_KEY as E, TRIGGER_ID_ATTRS as F, GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS as G, GEN_AI_OUTPUT_TOKEN_KEYS as H, TRIGGER_SOURCE_ATTRS as I, GEN_AI_USAGE_OUTPUT_TOKENS as J, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS as K, WORKFLOW_MARKER_ATTRS as L, TANGLE_TRIGGER_KIND_KEY as M, TANGLE_TRIGGER_SOURCE_KEY as N, TANGLE_RUN_KIND_KEY as O, TANGLE_WORKFLOW_ID_KEY as P, CONTENT_KEYS as Q, GEN_AI_CONVERSATION_ID as R, PARENT_RUN_KEY_ATTRS as S, SUBJECT_KEY_ATTRS as T, GEN_AI_REQUEST_MODEL as U, GEN_AI_OPERATION_NAME as V, GEN_AI_RESPONSE_MODEL as W, genAiUsageAttributes as X, GenAiUsage as Y, CONTENT_COMPLETION_KEY as Z, promptTokens as _, TOKEN_USAGE_CACHE_READ_INCLUSIVE_KEYS as a, DeclaredIntentMatch as at, tokenCount as b, TOKEN_USAGE_COST_KEYS as c, asContentField as ct, TOKEN_USAGE_OUTPUT_KEYS as d, declaredTaskText as dt, CONTENT_PROMPT_KEY as et, TokenUsageCounts as f, extractContent as ft, firstUsageCostUsd as g, resolveDeclaredIntent as gt, firstTokenCount as h, normalizeContentAttributes as ht, TOKEN_USAGE_CACHE_READ_EXCLUSIVE_KEYS as i, ContentField as it, TANGLE_TRIGGER_ID_KEY as j, TANGLE_RUN_PARENT_ID_KEY as k, TOKEN_USAGE_DETAIL_KEYS as l, asContentString as lt, cacheHitRate as m, logRecordContentBag as mt, TOKEN_USAGE_CACHE_BAG_READ_KEYS as n, CONTENT_TOOL_NAME_KEY as nt, TOKEN_USAGE_CACHE_WRITE_EXCLUSIVE_KEYS as o, INDEXED_CONTENT_KEY_LIKE_PATTERNS as ot, addTokenUsage as p, hasContent as pt, GEN_AI_USAGE_INPUT_TOKENS as q, TOKEN_USAGE_CACHE_BAG_WRITE_KEYS as r, CONTENT_TOOL_RESULT_KEY as rt, TOKEN_USAGE_CACHE_WRITE_INCLUSIVE_KEYS as s, NormalizedContent as st, TOKEN_USAGE_CACHE_BAG_KEYS as t, CONTENT_TOOL_ARGS_KEY as tt, TOKEN_USAGE_INPUT_KEYS as u, classifyAgent as ut, readTokenCostUsd as v, RUN_KIND_ATTRS as w, tokenUsageSource as x, readTokenUsage as y, GEN_AI_INPUT_TOKEN_KEYS as z };
|
|
401
|
-
//# sourceMappingURL=index-
|
|
393
|
+
//# sourceMappingURL=index-AEKS1kB8.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-AEKS1kB8.d.ts","names":[],"sources":["../src/telemetry/content-attributes.ts","../src/telemetry/genai-attributes.ts","../src/telemetry/spine-attributes.ts","../src/telemetry/token-usage.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAiCiB;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;;;;KAMU,qBAAqB;;cAYpB;;cAEA;;cAEA;;cAEA;;cAEA;;;;;;;;cA+JA;;;;cAOA,mBAAmB,SAAS,eAAe;;;iBAKxC,eAAe;;;;iBAWf,gBAAgB;;;;;;;;;cAyKnB;;;;;;;;iBAoNG,2BACd,KAAK,6CACJ;;;;;;;iBAyGa,eACd,YAAY,6CACX;;;;;iBA0Ba,WACd,YAAY;;;;;;;;;;;;;;iBAkCE,oBACd,YAAY,4CACZ,kCACC;;;;;;;;;;;;;;iBA2Ca,cACd,KAAK;;;;;;UA6BU;EACf;;EAEA;;;;;;;;;;;;iBAac,sBACd,MAAM,6CACL;;;;;;;;;;iBA6Ba,iBAAiB,SAAS;;;;;;;;;;;;;;;;cCl4B7B;;cAEA;;cAEA;;cAEA;;;;;;cAOA;;cAIA;;cAGA;;cAEA;;cAGA;;;;;cAMA;;cAGA;;UAGI;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;;;;;iBAcc,qBACd,OAAO,aACN;;;;;;;;;;;;;;;;;;;;;;cCjEU;;cAEA;;cAEA;;cAEA;;cAEA;;cAEA;;cAEA;;cAEA;;;cAGA;;cAGA;;;;;;cAUA;;cASA;;cAOA;;;;;;cAUA;;;cAUA;;cAKA;;;;;;;;;;;;;;;;;;cC5EA;cAQA;cAQA;;;;;;;;;;;;;;;;;;;;;;;cA8BA;cAQA;cASA;cAGA;;;;cAYA;;;;;;;;;;;;;;;cAqBA;cAMA;cAIA;;;;;;;;;;;UAaI;;EAEf;EACA;;;;EAIA;;EAEA;;iBAGc,WAAW;iBAeX,gBACd,QAAQ,qCACR;iBAwBc,kBACd,QAAQ,qCACR;iBAUc,iBACd,MAAM,0BACL;iBA2Ga,eACd,MAAM,0BACL;iBA4Ba,iBACd,MAAM;iBAkBQ,cACd,SAAS,8BACT,MAAM,mBACL;;;;iBAqBa,aAAa,OAAO;;;;iBAWpB,aAAa,OAAO"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/transport/types.d.ts
|
|
2
1
|
/**
|
|
3
2
|
* Transport Types
|
|
4
3
|
*
|
|
@@ -112,8 +111,6 @@ interface TransportConfig {
|
|
|
112
111
|
}
|
|
113
112
|
/** Subscription state */
|
|
114
113
|
type SubscriptionState = "active" | "paused" | "closed";
|
|
115
|
-
//#endregion
|
|
116
|
-
//#region src/transport/connection-manager.d.ts
|
|
117
114
|
interface ConnectionManagerConfig extends ReconnectionConfig {
|
|
118
115
|
onReconnecting?: (attempt: number, maxAttempts: number) => void;
|
|
119
116
|
onReconnected?: () => void;
|
|
@@ -159,8 +156,6 @@ declare class ConnectionManager {
|
|
|
159
156
|
*/
|
|
160
157
|
runReconnectionLoop(connectFn: () => Promise<void>): Promise<boolean>;
|
|
161
158
|
}
|
|
162
|
-
//#endregion
|
|
163
|
-
//#region src/transport/interface.d.ts
|
|
164
159
|
/**
|
|
165
160
|
* SSE Subscription handle for consuming server-sent events.
|
|
166
161
|
* Supports pause/resume, async iteration, and event callbacks.
|
|
@@ -250,8 +245,6 @@ declare abstract class BaseTransportAdapter implements TransportAdapter {
|
|
|
250
245
|
protected buildUrl(path: string): string;
|
|
251
246
|
protected buildHeaders(extra?: Record<string, string>): Record<string, string>;
|
|
252
247
|
}
|
|
253
|
-
//#endregion
|
|
254
|
-
//#region src/transport/mock.d.ts
|
|
255
248
|
/** Recorded request for verification */
|
|
256
249
|
interface RecordedRequest {
|
|
257
250
|
method: string;
|
|
@@ -347,6 +340,5 @@ declare class MockTransportAdapter extends BaseTransportAdapter {
|
|
|
347
340
|
/** Simulate reconnection */
|
|
348
341
|
simulateReconnect(): void;
|
|
349
342
|
}
|
|
350
|
-
//#endregion
|
|
351
343
|
export { TransportMode as S, StreamOptions as _, RecordedRequest as a, TransportEvents as b, TransportAdapter as c, ConnectionQuality as d, ConnectionState as f, SSEEvent as g, RequestOptions as h, MockTransportConfig as i, ConnectionManager as l, ReconnectionConfig as m, MockStreamEvent as n, BaseTransportAdapter as o, DEFAULT_RECONNECTION_CONFIG as p, MockTransportAdapter as r, Subscription as s, MockResponse as t, ConnectionManagerConfig as u, SubscriptionState as v, TransportMetrics as x, TransportConfig as y };
|
|
352
|
-
//# sourceMappingURL=index-
|
|
344
|
+
//# sourceMappingURL=index-CevHCod7.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CevHCod7.d.ts","names":[],"sources":["../src/transport/types.ts","../src/transport/connection-manager.ts","../src/transport/interface.ts","../src/transport/mock.ts"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { n as SDKError } from "./index-
|
|
2
|
-
//#region src/resilience/circuit-breaker.d.ts
|
|
1
|
+
import { n as SDKError } from "./index-DwvNnL6X.js";
|
|
3
2
|
type CircuitState = "closed" | "open" | "half-open";
|
|
4
3
|
interface CircuitBreakerConfig {
|
|
5
4
|
/** Number of failures before opening circuit */
|
|
@@ -54,8 +53,6 @@ declare class CircuitBreaker {
|
|
|
54
53
|
/** Manually open the circuit */
|
|
55
54
|
open(): void;
|
|
56
55
|
}
|
|
57
|
-
//#endregion
|
|
58
|
-
//#region src/resilience/protection.d.ts
|
|
59
56
|
interface ProtectionOptions {
|
|
60
57
|
/** Timeout in milliseconds (0 or undefined = no timeout) */
|
|
61
58
|
timeoutMs?: number;
|
|
@@ -78,8 +75,6 @@ declare function withProtection<T>(fn: () => Promise<T>, options?: ProtectionOpt
|
|
|
78
75
|
* Create a protected function that always applies the same protection options.
|
|
79
76
|
*/
|
|
80
77
|
declare function createProtectedFn<TArgs extends unknown[], TResult>(fn: (...args: TArgs) => Promise<TResult>, options: ProtectionOptions): (...args: TArgs) => Promise<TResult>;
|
|
81
|
-
//#endregion
|
|
82
|
-
//#region src/resilience/timeout.d.ts
|
|
83
78
|
declare class TimeoutError extends SDKError {
|
|
84
79
|
readonly timeoutMs: number;
|
|
85
80
|
constructor(message: string, timeoutMs: number);
|
|
@@ -102,6 +97,5 @@ declare function createTimeoutController(timeoutMs: number): {
|
|
|
102
97
|
* Optionally accepts an AbortSignal for cancellation.
|
|
103
98
|
*/
|
|
104
99
|
declare function sleep(ms: number, signal?: AbortSignal): Promise<void>;
|
|
105
|
-
//#endregion
|
|
106
100
|
export { ProtectionOptions as a, CircuitBreaker as c, CircuitOpenError as d, CircuitState as f, withTimeout as i, CircuitBreakerConfig as l, createTimeoutController as n, createProtectedFn as o, sleep as r, withProtection as s, TimeoutError as t, CircuitBreakerStats as u };
|
|
107
|
-
//# sourceMappingURL=index-
|
|
101
|
+
//# sourceMappingURL=index-DWPciD1S.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DWPciD1S.d.ts","names":[],"sources":["../src/resilience/circuit-breaker.ts","../src/resilience/protection.ts","../src/resilience/timeout.ts"],"mappings":";KAeY;UAEK;;EAEf;;EAEA;;EAEA;;EAEA,iBAAiB;;UAGF;EACf,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;;cAGW,yBAAyB;WAC3B;WACA;EAEG,YAAA,cAAc;;cAaf;mBAYQ;mBACA;UAZX;UACA;UACA;UACA;UAGA;UACA;UACA;EAGW,YAAA,cACA,QAAQ;;;;;EAiBrB,QAAQ,GAAG,UAAU,QAAQ,KAAK,QAAQ;UA6BxC;UAiBA;;EAwBR,YAAY;;EAKZ,YAAY;;EAaZ;;EAcA;;EAQA;;UC5Le;;EAEf;;EAEA,UAAU;;EAEV;;;;;;;;;;;iBAYoB,eAAe,GACnC,UAAU,QAAQ,IAClB,UAAS,oBACR,QAAQ;;;;iBAoBK,kBAAkB,yBAAyB,SACzD,QAAQ,MAAM,UAAU,QAAQ,UAChC,SAAS,wBACJ,MAAM,UAAU,QAAQ;cC3ClB,qBAAqB;WACvB;EAEG,YAAA,iBAAiB;;;;;;iBAef,YAAY,GAC1B,SAAS,QAAQ,IACjB,mBACA,mBACC,QAAQ;;;;;iBA2BK,wBAAwB;EACtC,YAAY;EACZ;;;;;;iBAuBc,MAAM,YAAY,SAAS,cAAc"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/errors/index.d.ts
|
|
2
1
|
/**
|
|
3
2
|
* SDK Error Types
|
|
4
3
|
*
|
|
@@ -50,6 +49,5 @@ declare class SDKError extends Error {
|
|
|
50
49
|
declare function isSDKError(error: unknown): error is SDKError;
|
|
51
50
|
/** Type guard for retryable errors */
|
|
52
51
|
declare function isRetryable(error: unknown): boolean;
|
|
53
|
-
//#endregion
|
|
54
52
|
export { isSDKError as i, SDKError as n, isRetryable as r, ErrorCode as t };
|
|
55
|
-
//# sourceMappingURL=index-
|
|
53
|
+
//# sourceMappingURL=index-DwvNnL6X.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DwvNnL6X.d.ts","names":[],"sources":["../src/errors/index.ts"],"mappings":";;;;;;KAOY;;cAaC,iBAAiB;WACnB,MAAM;WACN;WACA;WACA;WACA,UAAU;EAGjB,YAAA,iBACA;IACE,MAAM;IACN;IACA;IACA;IACA,UAAU;IACV,QAAQ;;UAaJ;;SAYD,aAAa,gBAAgB,iBAAiB;;SAgE9C,UAAU,iBAAiB;;;;;;;;;;;;;;;;;iBA8CnB;;EAwCf;;;iBASc,WAAW,iBAAiB,SAAS;;iBAKrC,YAAY"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/events/buffer.d.ts
|
|
2
1
|
/**
|
|
3
2
|
* Event Buffer
|
|
4
3
|
*
|
|
@@ -46,8 +45,6 @@ declare class EventBuffer<T = unknown> {
|
|
|
46
45
|
private pruneExpired;
|
|
47
46
|
private startCleanup;
|
|
48
47
|
}
|
|
49
|
-
//#endregion
|
|
50
|
-
//#region src/events/channel.d.ts
|
|
51
48
|
/**
|
|
52
49
|
* Channel Pub/Sub
|
|
53
50
|
*
|
|
@@ -105,8 +102,6 @@ declare class EventChannel<T = unknown> {
|
|
|
105
102
|
private matches;
|
|
106
103
|
private patternToRegex;
|
|
107
104
|
}
|
|
108
|
-
//#endregion
|
|
109
|
-
//#region src/events/deduplication.d.ts
|
|
110
105
|
/**
|
|
111
106
|
* Event Deduplication
|
|
112
107
|
*
|
|
@@ -153,6 +148,5 @@ declare class EventDeduplicator {
|
|
|
153
148
|
private pruneExpired;
|
|
154
149
|
private startCleanup;
|
|
155
150
|
}
|
|
156
|
-
//#endregion
|
|
157
151
|
export { EventChannel as a, EventBufferConfig as c, ChannelHandler as i, EventDeduplicator as n, BufferedEvent as o, ChannelConfig as r, EventBuffer as s, DeduplicatorConfig as t };
|
|
158
|
-
//# sourceMappingURL=index-
|
|
152
|
+
//# sourceMappingURL=index-OCnM4OoP.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-OCnM4OoP.d.ts","names":[],"sources":["../src/events/buffer.ts","../src/events/channel.ts","../src/events/deduplication.ts"],"mappings":";;;;;;UAOiB;;EAEf;;EAEA;;EAEA;;UAGe,cAAc;EAC7B;EACA,MAAM;EACN;EACA;;cASW,YAAY;mBACN;UACT;UACA;UACA;EAEI,YAAA,SAAQ,QAAQ;;EAM5B,KAAK,YAAY,MAAM,GAAG;;EA6B1B,UAAU,cAAc;;EAMxB,SAAS,sBAAsB,cAAc;;EAU7C,kBAAkB,oBAAoB,cAAc;;EAMpD;;EAMA;;EAKA;;EAKA;;EAKA;UAQQ;UASA;;;;;;;;KC3HE,eAAe,gBAAgB,SAAS,GAAG;UAEtC;;EAEf;;EAEA;;cAcW,aAAa;mBACP;mBACA;EAEL,YAAA,SAAQ,QAAQ;;;;;;;;;;;;EAe5B,UAAU,iBAAiB,SAAS,eAAe;;;;;EAuBnD,QAAQ,eAAe,SAAS;;;;EAoBhC,eAAe;;;;EAOf,gBAAgB;;;;EAOhB;;;;EAOA;;;;EAOA;UAIQ;UAOA;;;;;;;;UCzHO;;EAEf;;EAEA;;cAYW;mBACM;mBACA;UACT;EAEI,YAAA,SAAQ,QAAQ;;;;;EAS5B,YAAY;;;;EAoBZ,SAAS;;;;EAUT,QAAQ;;;;EASR;;;;EAOA;;;;EAOA;UAQQ;UAQA;UASA"}
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { FilePart, Part, Part as Part$1, PartBase, ReasoningPart, StreamStatus, SubtaskPart, TextPart, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning, isFilePart, isReasoningPart, isSubtaskPart, isTextPart, isToolPart } from "@tangle-network/agent-interface";
|
|
3
|
-
//#region src/types/events.d.ts
|
|
4
3
|
declare const AgentEventTypeSchema: z.ZodEnum<{
|
|
5
|
-
"
|
|
6
|
-
|
|
4
|
+
"message.part.updated": "message.part.updated";
|
|
5
|
+
status: "status";
|
|
7
6
|
error: "error";
|
|
8
|
-
"execution.completed": "execution.completed";
|
|
9
|
-
"execution.failed": "execution.failed";
|
|
10
|
-
"execution.started": "execution.started";
|
|
11
7
|
heartbeat: "heartbeat";
|
|
12
|
-
"
|
|
8
|
+
"connection.init": "connection.init";
|
|
13
9
|
"history.replay.start": "history.replay.start";
|
|
14
|
-
"
|
|
15
|
-
|
|
10
|
+
"history.replay.end": "history.replay.end";
|
|
11
|
+
"execution.started": "execution.started";
|
|
12
|
+
"execution.completed": "execution.completed";
|
|
13
|
+
"execution.failed": "execution.failed";
|
|
16
14
|
"session.updated": "session.updated";
|
|
17
|
-
|
|
15
|
+
result: "result";
|
|
16
|
+
done: "done";
|
|
18
17
|
}>;
|
|
19
18
|
type AgentEventType = z.infer<typeof AgentEventTypeSchema>;
|
|
20
19
|
interface EventMetadata {
|
|
@@ -127,6 +126,5 @@ interface TerminalExitEvent {
|
|
|
127
126
|
terminalId: string;
|
|
128
127
|
}
|
|
129
128
|
type TerminalEvent = TerminalDataEvent | TerminalResizeEvent | TerminalExitEvent;
|
|
130
|
-
//#endregion
|
|
131
129
|
export { ToolStateCompleted as A, TerminalDataEvent as C, TextPart as D, TerminalResizeEvent as E, isReasoningPart as F, isSubtaskPart as I, isTextPart as L, ToolStatePending as M, ToolStateRunning as N, ToolPart as O, isFilePart as P, isToolPart as R, SubtaskPart as S, TerminalExitEvent as T, ReplayEndEvent as _, DoneEvent as a, SessionUpdatedEvent as b, ExecutionCompletedEvent as c, FilePart as d, HeartbeatEvent as f, ReasoningPart as g, PartBase as h, ConnectionInitEvent as i, ToolStateError as j, ToolState as k, ExecutionFailedEvent as l, Part$1 as m, AgentEventType as n, ErrorEvent as o, MessagePartUpdatedEvent as p, AgentEventTypeSchema as r, EventMetadata as s, AgentEvent as t, ExecutionStartedEvent as u, ReplayStartEvent as v, TerminalEvent as w, StatusEvent as x, ResultEvent as y };
|
|
132
|
-
//# sourceMappingURL=index-
|
|
130
|
+
//# sourceMappingURL=index-v0euJYbX.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-v0euJYbX.d.ts","names":[],"sources":["../src/types/events.ts"],"mappings":";;cAsCa,sBAAoB,EAAA;;;;;;;;;;;;;;;KAgBrB,iBAAiB,EAAE,aAAa;UAG3B;EACf;EACA;EACA;EACA;;UAOe;EACf;EACA,MAAM;EACN;EACA,QAAQ;;UAIO;EACf;EACA,QAAQ;EACR;EACA,QAAQ;;UAIO;EACf;EACA;EACA;EACA;EACA,QAAQ;;UAIO;EACf;EACA;EACA,QAAQ;;UAIO;EACf;EACA;EACA;EACA;EACA;EACA,QAAQ;;UAIO;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAIe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAIe;EACf;EACA;EACA;EACA;IAAS;IAAkB;;;UAIZ;EACf;EACA;EACA;EACA,aAAa;EACb,SAAS;EACT,WAAW;;UAII;EACf;EACA;;KAIU,aACR,0BACA,cACA,aACA,iBACA,sBACA,mBACA,iBACA,wBACA,0BACA,uBACA,sBACA,cACA;UAGa;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;;KAGU,gBACR,oBACA,sBACA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { i as isSDKError, n as SDKError, r as isRetryable, t as ErrorCode } from "./index-
|
|
2
|
-
import { C as AuthProvider, D as RefreshableTokenAuth, E as ReadTokenAuth, O as StaticTokenAuth, S as TokenValidationResult, T as NoAuth, _ as SendMessageRequest, a as BatchScopedTokenPayloadSchema, b as SessionScopedTokenPayloadSchema, c as CreateSessionResponse, d as ProductSchema, f as ProductSecrets, g as ReadTokenPayloadSchema, h as ReadTokenPayload, i as BatchScopedTokenPayload, l as Product, m as ProjectScopedTokenPayloadSchema, n as getTokenTTL, o as CreateSessionRequest, p as ProjectScopedTokenPayload, r as isTokenExpiringSoon, s as CreateSessionRequestSchema, t as decodeToken, u as ProductAuthInfo, v as SendMessageRequestSchema, w as CallbackAuth, x as TokenScope, y as SessionScopedTokenPayload } from "./tokens-browser-
|
|
1
|
+
import { i as isSDKError, n as SDKError, r as isRetryable, t as ErrorCode } from "./index-DwvNnL6X.js";
|
|
2
|
+
import { C as AuthProvider, D as RefreshableTokenAuth, E as ReadTokenAuth, O as StaticTokenAuth, S as TokenValidationResult, T as NoAuth, _ as SendMessageRequest, a as BatchScopedTokenPayloadSchema, b as SessionScopedTokenPayloadSchema, c as CreateSessionResponse, d as ProductSchema, f as ProductSecrets, g as ReadTokenPayloadSchema, h as ReadTokenPayload, i as BatchScopedTokenPayload, l as Product, m as ProjectScopedTokenPayloadSchema, n as getTokenTTL, o as CreateSessionRequest, p as ProjectScopedTokenPayload, r as isTokenExpiringSoon, s as CreateSessionRequestSchema, t as decodeToken, u as ProductAuthInfo, v as SendMessageRequestSchema, w as CallbackAuth, x as TokenScope, y as SessionScopedTokenPayload } from "./tokens-browser-CGLWUfZ7.js";
|
|
3
3
|
import { ChannelAccessResult, EnvTokenAuth, ProductAuth, ProductTokenIssuer, SidecarAuth, canBatchTokenAccessChannel, canProjectTokenAccessChannel, canSessionTokenAccessChannel, canTokenAccessChannel, extractProjectFromChannel, extractSessionFromChannel, generateApiKey, generateSecureToken, generateSigningSecret, getAllowedChannelPatterns, getTokenScope, hashApiKey, isBatchScopedToken, isProjectScopedToken, isSessionScopedToken, issueBatchScopedToken, issueProjectScopedToken, issueReadToken, issueSessionScopedToken, validateChannelSubscription, validateTokenScope, verifyApiKey, verifyReadToken } from "./auth/index.js";
|
|
4
|
-
import { a as EventChannel, c as EventBufferConfig, i as ChannelHandler, n as EventDeduplicator, o as BufferedEvent, r as ChannelConfig, s as EventBuffer, t as DeduplicatorConfig } from "./index-
|
|
5
|
-
import { S as TransportMode, _ as StreamOptions, a as RecordedRequest, b as TransportEvents, c as TransportAdapter, d as ConnectionQuality, f as ConnectionState, g as SSEEvent, h as RequestOptions, i as MockTransportConfig, l as ConnectionManager, m as ReconnectionConfig, n as MockStreamEvent, o as BaseTransportAdapter, p as DEFAULT_RECONNECTION_CONFIG, r as MockTransportAdapter, s as Subscription, t as MockResponse, u as ConnectionManagerConfig, v as SubscriptionState, x as TransportMetrics, y as TransportConfig } from "./index-
|
|
6
|
-
import { a as ProtectionOptions, c as CircuitBreaker, d as CircuitOpenError, f as CircuitState, i as withTimeout, l as CircuitBreakerConfig, n as createTimeoutController, o as createProtectedFn, r as sleep, s as withProtection, t as TimeoutError, u as CircuitBreakerStats } from "./index-
|
|
4
|
+
import { a as EventChannel, c as EventBufferConfig, i as ChannelHandler, n as EventDeduplicator, o as BufferedEvent, r as ChannelConfig, s as EventBuffer, t as DeduplicatorConfig } from "./index-OCnM4OoP.js";
|
|
5
|
+
import { S as TransportMode, _ as StreamOptions, a as RecordedRequest, b as TransportEvents, c as TransportAdapter, d as ConnectionQuality, f as ConnectionState, g as SSEEvent, h as RequestOptions, i as MockTransportConfig, l as ConnectionManager, m as ReconnectionConfig, n as MockStreamEvent, o as BaseTransportAdapter, p as DEFAULT_RECONNECTION_CONFIG, r as MockTransportAdapter, s as Subscription, t as MockResponse, u as ConnectionManagerConfig, v as SubscriptionState, x as TransportMetrics, y as TransportConfig } from "./index-CevHCod7.js";
|
|
6
|
+
import { a as ProtectionOptions, c as CircuitBreaker, d as CircuitOpenError, f as CircuitState, i as withTimeout, l as CircuitBreakerConfig, n as createTimeoutController, o as createProtectedFn, r as sleep, s as withProtection, t as TimeoutError, u as CircuitBreakerStats } from "./index-DWPciD1S.js";
|
|
7
7
|
import { ParsedSSEEvent, SSEChunkParser, SSEEventData, SSEParserOptions, StreamTokenUsage, StreamUsageAccumulator, StreamUsageExtractor, consumeSSEStream, createStreamUsageExtractor, createUsageCallback, parseSSEData, parseSSEStream } from "./sse/index.js";
|
|
8
|
-
import { $ as CONTENT_KEY_FIELD, A as TANGLE_SUBJECT_KEY, B as GEN_AI_MODEL_KEYS, C as RUN_KEY_ATTRS, D as TANGLE_RUN_ID_KEY, E as TANGLE_RUN_ID_CAMEL_KEY, F as TRIGGER_ID_ATTRS, G as GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS, H as GEN_AI_OUTPUT_TOKEN_KEYS, I as TRIGGER_SOURCE_ATTRS, J as GEN_AI_USAGE_OUTPUT_TOKENS, K as GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS, L as WORKFLOW_MARKER_ATTRS, M as TANGLE_TRIGGER_KIND_KEY, N as TANGLE_TRIGGER_SOURCE_KEY, O as TANGLE_RUN_KIND_KEY, P as TANGLE_WORKFLOW_ID_KEY, Q as CONTENT_KEYS, R as GEN_AI_CONVERSATION_ID, S as PARENT_RUN_KEY_ATTRS, T as SUBJECT_KEY_ATTRS, U as GEN_AI_REQUEST_MODEL, V as GEN_AI_OPERATION_NAME, W as GEN_AI_RESPONSE_MODEL, X as genAiUsageAttributes, Y as GenAiUsage, Z as CONTENT_COMPLETION_KEY, _ as promptTokens, a as TOKEN_USAGE_CACHE_READ_INCLUSIVE_KEYS, at as DeclaredIntentMatch, b as tokenCount, c as TOKEN_USAGE_COST_KEYS, ct as asContentField, d as TOKEN_USAGE_OUTPUT_KEYS, dt as declaredTaskText, et as CONTENT_PROMPT_KEY, f as TokenUsageCounts, ft as extractContent, g as firstUsageCostUsd, gt as resolveDeclaredIntent, h as firstTokenCount, ht as normalizeContentAttributes, i as TOKEN_USAGE_CACHE_READ_EXCLUSIVE_KEYS, it as ContentField, j as TANGLE_TRIGGER_ID_KEY, k as TANGLE_RUN_PARENT_ID_KEY, l as TOKEN_USAGE_DETAIL_KEYS, lt as asContentString, m as cacheHitRate, mt as logRecordContentBag, n as TOKEN_USAGE_CACHE_BAG_READ_KEYS, nt as CONTENT_TOOL_NAME_KEY, o as TOKEN_USAGE_CACHE_WRITE_EXCLUSIVE_KEYS, ot as INDEXED_CONTENT_KEY_LIKE_PATTERNS, p as addTokenUsage, pt as hasContent, q as GEN_AI_USAGE_INPUT_TOKENS, r as TOKEN_USAGE_CACHE_BAG_WRITE_KEYS, rt as CONTENT_TOOL_RESULT_KEY, s as TOKEN_USAGE_CACHE_WRITE_INCLUSIVE_KEYS, st as NormalizedContent, t as TOKEN_USAGE_CACHE_BAG_KEYS, tt as CONTENT_TOOL_ARGS_KEY, u as TOKEN_USAGE_INPUT_KEYS, ut as classifyAgent, v as readTokenCostUsd, w as RUN_KIND_ATTRS, x as tokenUsageSource, y as readTokenUsage, z as GEN_AI_INPUT_TOKEN_KEYS } from "./index-
|
|
9
|
-
import { A as ToolStateCompleted, C as TerminalDataEvent, D as TextPart, E as TerminalResizeEvent, F as isReasoningPart, I as isSubtaskPart, L as isTextPart, M as ToolStatePending, N as ToolStateRunning, O as ToolPart, P as isFilePart, R as isToolPart, S as SubtaskPart, T as TerminalExitEvent, _ as ReplayEndEvent, a as DoneEvent, b as SessionUpdatedEvent, c as ExecutionCompletedEvent, d as FilePart, f as HeartbeatEvent, g as ReasoningPart, h as PartBase, i as ConnectionInitEvent, j as ToolStateError, k as ToolState, l as ExecutionFailedEvent, m as Part, n as AgentEventType, o as ErrorEvent, p as MessagePartUpdatedEvent, r as AgentEventTypeSchema, s as EventMetadata, t as AgentEvent, u as ExecutionStartedEvent, v as ReplayStartEvent, w as TerminalEvent, x as StatusEvent, y as ResultEvent } from "./index-
|
|
10
|
-
//#region src/cache/index.d.ts
|
|
8
|
+
import { $ as CONTENT_KEY_FIELD, A as TANGLE_SUBJECT_KEY, B as GEN_AI_MODEL_KEYS, C as RUN_KEY_ATTRS, D as TANGLE_RUN_ID_KEY, E as TANGLE_RUN_ID_CAMEL_KEY, F as TRIGGER_ID_ATTRS, G as GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS, H as GEN_AI_OUTPUT_TOKEN_KEYS, I as TRIGGER_SOURCE_ATTRS, J as GEN_AI_USAGE_OUTPUT_TOKENS, K as GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS, L as WORKFLOW_MARKER_ATTRS, M as TANGLE_TRIGGER_KIND_KEY, N as TANGLE_TRIGGER_SOURCE_KEY, O as TANGLE_RUN_KIND_KEY, P as TANGLE_WORKFLOW_ID_KEY, Q as CONTENT_KEYS, R as GEN_AI_CONVERSATION_ID, S as PARENT_RUN_KEY_ATTRS, T as SUBJECT_KEY_ATTRS, U as GEN_AI_REQUEST_MODEL, V as GEN_AI_OPERATION_NAME, W as GEN_AI_RESPONSE_MODEL, X as genAiUsageAttributes, Y as GenAiUsage, Z as CONTENT_COMPLETION_KEY, _ as promptTokens, a as TOKEN_USAGE_CACHE_READ_INCLUSIVE_KEYS, at as DeclaredIntentMatch, b as tokenCount, c as TOKEN_USAGE_COST_KEYS, ct as asContentField, d as TOKEN_USAGE_OUTPUT_KEYS, dt as declaredTaskText, et as CONTENT_PROMPT_KEY, f as TokenUsageCounts, ft as extractContent, g as firstUsageCostUsd, gt as resolveDeclaredIntent, h as firstTokenCount, ht as normalizeContentAttributes, i as TOKEN_USAGE_CACHE_READ_EXCLUSIVE_KEYS, it as ContentField, j as TANGLE_TRIGGER_ID_KEY, k as TANGLE_RUN_PARENT_ID_KEY, l as TOKEN_USAGE_DETAIL_KEYS, lt as asContentString, m as cacheHitRate, mt as logRecordContentBag, n as TOKEN_USAGE_CACHE_BAG_READ_KEYS, nt as CONTENT_TOOL_NAME_KEY, o as TOKEN_USAGE_CACHE_WRITE_EXCLUSIVE_KEYS, ot as INDEXED_CONTENT_KEY_LIKE_PATTERNS, p as addTokenUsage, pt as hasContent, q as GEN_AI_USAGE_INPUT_TOKENS, r as TOKEN_USAGE_CACHE_BAG_WRITE_KEYS, rt as CONTENT_TOOL_RESULT_KEY, s as TOKEN_USAGE_CACHE_WRITE_INCLUSIVE_KEYS, st as NormalizedContent, t as TOKEN_USAGE_CACHE_BAG_KEYS, tt as CONTENT_TOOL_ARGS_KEY, u as TOKEN_USAGE_INPUT_KEYS, ut as classifyAgent, v as readTokenCostUsd, w as RUN_KIND_ATTRS, x as tokenUsageSource, y as readTokenUsage, z as GEN_AI_INPUT_TOKEN_KEYS } from "./index-AEKS1kB8.js";
|
|
9
|
+
import { A as ToolStateCompleted, C as TerminalDataEvent, D as TextPart, E as TerminalResizeEvent, F as isReasoningPart, I as isSubtaskPart, L as isTextPart, M as ToolStatePending, N as ToolStateRunning, O as ToolPart, P as isFilePart, R as isToolPart, S as SubtaskPart, T as TerminalExitEvent, _ as ReplayEndEvent, a as DoneEvent, b as SessionUpdatedEvent, c as ExecutionCompletedEvent, d as FilePart, f as HeartbeatEvent, g as ReasoningPart, h as PartBase, i as ConnectionInitEvent, j as ToolStateError, k as ToolState, l as ExecutionFailedEvent, m as Part, n as AgentEventType, o as ErrorEvent, p as MessagePartUpdatedEvent, r as AgentEventTypeSchema, s as EventMetadata, t as AgentEvent, u as ExecutionStartedEvent, v as ReplayStartEvent, w as TerminalEvent, x as StatusEvent, y as ResultEvent } from "./index-v0euJYbX.js";
|
|
11
10
|
/**
|
|
12
11
|
* Response Caching
|
|
13
12
|
*
|
|
@@ -85,8 +84,6 @@ export declare class ResponseCache<T = unknown> {
|
|
|
85
84
|
noStore?: boolean;
|
|
86
85
|
};
|
|
87
86
|
}
|
|
88
|
-
//#endregion
|
|
89
|
-
//#region src/middleware/index.d.ts
|
|
90
87
|
/** Request context passed through interceptor chain */
|
|
91
88
|
interface RequestContext {
|
|
92
89
|
/** Original request options */
|
|
@@ -161,8 +158,6 @@ export declare function createMetricsInterceptor(onMetric: (metric: {
|
|
|
161
158
|
}) => void): Interceptor;
|
|
162
159
|
/** Header injection interceptor */
|
|
163
160
|
export declare function createHeaderInterceptor(headers: Record<string, string> | (() => Record<string, string> | Promise<Record<string, string>>)): Interceptor;
|
|
164
|
-
//#endregion
|
|
165
|
-
//#region src/storage/index.d.ts
|
|
166
161
|
/**
|
|
167
162
|
* Offline Storage Abstraction
|
|
168
163
|
*
|
|
@@ -237,8 +232,6 @@ export declare class OfflineQueue {
|
|
|
237
232
|
}
|
|
238
233
|
/** Detect available storage */
|
|
239
234
|
export declare function detectStorage(): Storage;
|
|
240
|
-
//#endregion
|
|
241
|
-
//#region src/platform/index.d.ts
|
|
242
235
|
/**
|
|
243
236
|
* Secure credential storage interface.
|
|
244
237
|
* Implementations should use platform-specific secure storage:
|
|
@@ -390,8 +383,6 @@ export declare function createDefaultPlatformAdapter(): PlatformAdapter;
|
|
|
390
383
|
export declare function createPlatformAdapter(config: Partial<PlatformAdapter> & {
|
|
391
384
|
capabilities: PlatformCapabilities;
|
|
392
385
|
}): PlatformAdapter;
|
|
393
|
-
//#endregion
|
|
394
|
-
//#region src/retry/index.d.ts
|
|
395
386
|
/** Retry configuration */
|
|
396
387
|
interface RetryConfig {
|
|
397
388
|
/** Max retry attempts (default: 3) */
|
|
@@ -419,8 +410,6 @@ export declare function withRetry<T>(fn: (attempt: number) => Promise<T>, config
|
|
|
419
410
|
export declare function generateIdempotencyKey(): string;
|
|
420
411
|
/** Retry decorator for class methods */
|
|
421
412
|
export declare function Retryable(config?: RetryConfig): <T>(_target: object, _propertyKey: string, descriptor: TypedPropertyDescriptor<(...args: unknown[]) => Promise<T>>) => TypedPropertyDescriptor<(...args: unknown[]) => Promise<T>>;
|
|
422
|
-
//#endregion
|
|
423
|
-
//#region src/utils/channel-matching.d.ts
|
|
424
413
|
/**
|
|
425
414
|
* Channel Pattern Matching
|
|
426
415
|
*
|
|
@@ -450,12 +439,8 @@ export declare function matchesChannel(pattern: string, channel: string): boolea
|
|
|
450
439
|
* @returns true if any pattern matches the channel
|
|
451
440
|
*/
|
|
452
441
|
export declare function matchesAnyChannel(subscribedChannels: Set<string> | string[], channel: string): boolean;
|
|
453
|
-
//#endregion
|
|
454
|
-
//#region src/utils/record.d.ts
|
|
455
442
|
/** True for a non-null, non-array object, the shape parsed JSON objects take. */
|
|
456
443
|
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
457
|
-
//#endregion
|
|
458
|
-
//#region src/utils/session-translator.d.ts
|
|
459
444
|
/**
|
|
460
445
|
* Session ID Translator
|
|
461
446
|
*
|
|
@@ -488,6 +473,5 @@ export declare function createSessionTranslator(translation: SessionTranslation)
|
|
|
488
473
|
* Handles different event formats that may contain session information.
|
|
489
474
|
*/
|
|
490
475
|
export declare function extractSessionId(event: unknown): string | null;
|
|
491
|
-
//#endregion
|
|
492
476
|
export { type AgentEvent, type AgentEventType, AgentEventTypeSchema, type AuthProvider, BaseTransportAdapter, type BatchScopedTokenPayload, BatchScopedTokenPayloadSchema, type BufferedEvent, CONTENT_COMPLETION_KEY, CONTENT_KEYS, CONTENT_KEY_FIELD, CONTENT_PROMPT_KEY, CONTENT_TOOL_ARGS_KEY, CONTENT_TOOL_NAME_KEY, CONTENT_TOOL_RESULT_KEY, type CacheConfig, type CacheStorage, CallbackAuth, type ChannelAccessResult, type ChannelConfig, type ChannelHandler, CircuitBreaker, type CircuitBreakerConfig, type CircuitBreakerStats, CircuitOpenError, type CircuitState, type ConnectionInitEvent, ConnectionManager, type ConnectionManagerConfig, type ConnectionQuality, type ConnectionState, type ContentField, type CreateSessionRequest, CreateSessionRequestSchema, type CreateSessionResponse, DEFAULT_RECONNECTION_CONFIG, type DeclaredIntentMatch, type DeduplicatorConfig, type DoneEvent, EnvTokenAuth, type ErrorCode, type ErrorContext, type ErrorEvent, EventBuffer, type EventBufferConfig, EventChannel, EventDeduplicator, type EventMetadata, type ExecutionCompletedEvent, type ExecutionFailedEvent, type ExecutionStartedEvent, type FilePart, GEN_AI_CONVERSATION_ID, GEN_AI_INPUT_TOKEN_KEYS, GEN_AI_MODEL_KEYS, GEN_AI_OPERATION_NAME, GEN_AI_OUTPUT_TOKEN_KEYS, GEN_AI_REQUEST_MODEL, GEN_AI_RESPONSE_MODEL, GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS, GEN_AI_USAGE_INPUT_TOKENS, GEN_AI_USAGE_OUTPUT_TOKENS, type GenAiUsage, type HeartbeatEvent, INDEXED_CONTENT_KEY_LIKE_PATTERNS, type Interceptor, type MessagePartUpdatedEvent, type MockResponse, type MockStreamEvent, MockTransportAdapter, type MockTransportConfig, type NetworkInfo, NoAuth, type NormalizedContent, PARENT_RUN_KEY_ATTRS, type ParsedSSEEvent, type Part, type PartBase, type PersistenceAdapter, type PlatformAdapter, type PlatformCapabilities, type Product, ProductAuth, type ProductAuthInfo, ProductSchema, type ProductSecrets, ProductTokenIssuer, type ProjectScopedTokenPayload, ProjectScopedTokenPayloadSchema, type ProtectionOptions, type QueuedRequest, RUN_KEY_ATTRS, RUN_KIND_ATTRS, ReadTokenAuth, type ReadTokenPayload, ReadTokenPayloadSchema, type ReasoningPart, type ReconnectionConfig, type RecordedRequest, RefreshableTokenAuth, type ReplayEndEvent, type ReplayStartEvent, type RequestContext, type RequestOptions, type ResponseContext, type ResultEvent, type RetryConfig, SDKError, SSEChunkParser, type SSEEvent, type SSEEventData, type SSEParserOptions, SUBJECT_KEY_ATTRS, type SecureStorage, type SendMessageRequest, SendMessageRequestSchema, type SessionScopedTokenPayload, SessionScopedTokenPayloadSchema, type SessionTranslation, type SessionUpdatedEvent, SidecarAuth, StaticTokenAuth, type StatusEvent, type Storage, type StreamOptions, type StreamTokenUsage, type StreamUsageAccumulator, StreamUsageExtractor, type Subscription, type SubscriptionState, type SubtaskPart, TANGLE_RUN_ID_CAMEL_KEY, TANGLE_RUN_ID_KEY, TANGLE_RUN_KIND_KEY, TANGLE_RUN_PARENT_ID_KEY, TANGLE_SUBJECT_KEY, TANGLE_TRIGGER_ID_KEY, TANGLE_TRIGGER_KIND_KEY, TANGLE_TRIGGER_SOURCE_KEY, TANGLE_WORKFLOW_ID_KEY, TOKEN_USAGE_CACHE_BAG_KEYS, TOKEN_USAGE_CACHE_BAG_READ_KEYS, TOKEN_USAGE_CACHE_BAG_WRITE_KEYS, TOKEN_USAGE_CACHE_READ_EXCLUSIVE_KEYS, TOKEN_USAGE_CACHE_READ_INCLUSIVE_KEYS, TOKEN_USAGE_CACHE_WRITE_EXCLUSIVE_KEYS, TOKEN_USAGE_CACHE_WRITE_INCLUSIVE_KEYS, TOKEN_USAGE_COST_KEYS, TOKEN_USAGE_DETAIL_KEYS, TOKEN_USAGE_INPUT_KEYS, TOKEN_USAGE_OUTPUT_KEYS, TRIGGER_ID_ATTRS, TRIGGER_SOURCE_ATTRS, type TerminalDataEvent, type TerminalEvent, type TerminalExitEvent, type TerminalResizeEvent, type TextPart, TimeoutError, type TokenScope, type TokenUsageCounts, type TokenValidationResult, type ToolPart, type ToolState, type ToolStateCompleted, type ToolStateError, type ToolStatePending, type ToolStateRunning, type TransportAdapter, type TransportConfig, type TransportEvents, type TransportMetrics, type TransportMode, WORKFLOW_MARKER_ATTRS, addTokenUsage, asContentField, asContentString, cacheHitRate, canBatchTokenAccessChannel, canProjectTokenAccessChannel, canSessionTokenAccessChannel, canTokenAccessChannel, classifyAgent, consumeSSEStream, createProtectedFn, createStreamUsageExtractor, createTimeoutController, createUsageCallback, declaredTaskText, decodeToken, extractContent, extractProjectFromChannel, extractSessionFromChannel, firstTokenCount, firstUsageCostUsd, genAiUsageAttributes, generateApiKey, generateSecureToken, generateSigningSecret, getAllowedChannelPatterns, getTokenScope, getTokenTTL, hasContent, hashApiKey, isBatchScopedToken, isFilePart, isProjectScopedToken, isReasoningPart, isRetryable, isSDKError, isSessionScopedToken, isSubtaskPart, isTextPart, isTokenExpiringSoon, isToolPart, issueBatchScopedToken, issueProjectScopedToken, issueReadToken, issueSessionScopedToken, logRecordContentBag, normalizeContentAttributes, parseSSEData, parseSSEStream, promptTokens, readTokenCostUsd, readTokenUsage, resolveDeclaredIntent, sleep, tokenCount, tokenUsageSource, validateChannelSubscription, validateTokenScope, verifyApiKey, verifyReadToken, withProtection, withTimeout };
|
|
493
477
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/cache/index.ts","../src/middleware/index.ts","../src/storage/index.ts","../src/platform/index.ts","../src/retry/index.ts","../src/utils/channel-matching.ts","../src/utils/record.ts","../src/utils/session-translator.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/cache/index.ts","../src/middleware/index.ts","../src/storage/index.ts","../src/platform/index.ts","../src/retry/index.ts","../src/utils/channel-matching.ts","../src/utils/record.ts","../src/utils/session-translator.ts"],"mappings":"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"}
|