@kortyx/usage-telemetry 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/catalog.ts","../src/client.ts","../src/transport.ts"],"sourcesContent":["// Browser-safe contract and client. Node defaults live exclusively in ./node.\nexport {\n type Outcome,\n publicCatalog,\n scale,\n type UsageCatalog,\n} from \"./catalog\";\nexport {\n classifyUsageError,\n createUsageTelemetry,\n sanitizeProperties,\n type UsageContext,\n type UsageOperation,\n type UsageOptions,\n type UsageRecord,\n type UsageTelemetry,\n type UsageTransport,\n} from \"./client\";\nexport { createCollectorTransport, createPostHogTransport } from \"./transport\";\n","/** Only public product facts belong here. Other distributions register their own catalog. */\nexport const operations = [\n \"sdk.initialize\",\n \"sdk.registry\",\n \"sdk.execute\",\n \"sdk.resume\",\n \"sdk.chat.admission\",\n \"sdk.execution\",\n \"sdk.response\",\n \"sdk.model\",\n \"sdk.tool\",\n \"sdk.node\",\n \"sdk.parallel\",\n \"sdk.child\",\n \"sdk.structured\",\n \"sdk.complete_response\",\n \"sdk.prompt.resolve\",\n \"sdk.prompt.refresh\",\n \"sdk.eval\",\n \"sdk.mcp.connect\",\n \"sdk.mcp.discover\",\n \"sdk.mcp.close\",\n \"sdk.checkpoint.read\",\n \"sdk.checkpoint.list\",\n \"sdk.checkpoint.fork\",\n \"sdk.checkpoint.rollback\",\n \"sdk.export\",\n \"studio.setup\",\n \"studio.connection\",\n \"studio.read\",\n \"studio.render\",\n \"studio.navigation\",\n \"studio.inspect\",\n \"studio.filter\",\n \"studio.saved_view\",\n \"studio.live\",\n \"studio.prompt\",\n \"studio.eval\",\n \"studio.review\",\n \"studio.settings\",\n \"studio.update\",\n \"studio.ingest\",\n \"cli.topology\",\n \"cli.eval\",\n] as const;\n\nexport type Outcome =\n | \"success\"\n | \"failed\"\n | \"cancelled\"\n | \"suspended\"\n | \"denied\"\n | \"limit_reached\"\n | \"quality_failed\"\n | \"ungraded\";\nexport const outcomes: readonly Outcome[] = [\n \"success\",\n \"failed\",\n \"cancelled\",\n \"suspended\",\n \"denied\",\n \"limit_reached\",\n \"quality_failed\",\n \"ungraded\",\n];\nexport type PropertyRule = \"boolean\" | readonly string[];\nexport interface UsageCatalog {\n products: readonly string[];\n operations: readonly string[];\n properties: Readonly<Record<string, PropertyRule>>;\n errorCodes: readonly string[];\n}\n\nexport const publicCatalog: UsageCatalog = {\n products: [\"sdk\", \"oss_studio\"],\n operations,\n properties: {\n phase: [\n \"admission\",\n \"execution\",\n \"delivery\",\n \"parse\",\n \"network\",\n \"http\",\n \"configuration\",\n \"preflight\",\n \"state\",\n \"pull\",\n \"ports\",\n \"compose\",\n \"rollback\",\n \"backup\",\n \"migration\",\n \"health\",\n ],\n source: [\n \"memory\",\n \"file\",\n \"custom\",\n \"local\",\n \"studio\",\n \"cache\",\n \"fallback\",\n \"eval\",\n \"mcp\",\n \"native\",\n ],\n storage: [\"in-memory\", \"redis\", \"postgres\", \"custom\"],\n calling_mode: [\"direct\", \"model\"],\n provider: [\n \"openai\",\n \"anthropic\",\n \"google\",\n \"mistral\",\n \"groq\",\n \"deepseek\",\n \"openrouter\",\n ],\n transport: [\"stdio\", \"sse\", \"http\", \"custom\"],\n format: [\n \"text\",\n \"json\",\n \"json_schema\",\n \"set\",\n \"append\",\n \"text-delta\",\n \"final\",\n ],\n resource: [\n \"runs\",\n \"sessions\",\n \"interrupts\",\n \"workflows\",\n \"prompts\",\n \"evals\",\n \"diagnostics\",\n \"settings\",\n \"home\",\n ],\n surface: [\n \"runs\",\n \"sessions\",\n \"interrupts\",\n \"workflows\",\n \"prompts\",\n \"evals\",\n \"settings\",\n \"other\",\n ],\n action: [\n \"view\",\n \"select\",\n \"retry\",\n \"first_use\",\n \"observed\",\n \"copy\",\n \"create\",\n \"draft\",\n \"save\",\n \"discard-draft\",\n \"update\",\n \"promote\",\n \"review\",\n \"policy\",\n \"tag-set\",\n \"tag-remove\",\n \"bulk-update\",\n \"category-create\",\n \"category-update\",\n \"category-delete\",\n \"group-create\",\n \"group-update\",\n \"group-delete\",\n \"import\",\n \"export\",\n \"launch\",\n \"cancel\",\n \"compare\",\n \"inspect\",\n \"clear\",\n \"apply\",\n \"delete\",\n \"enable\",\n \"disable\",\n \"manual_refresh\",\n \"fallback_refresh\",\n \"refresh\",\n \"change\",\n ],\n tab: [\n \"overview\",\n \"trace\",\n \"events\",\n \"model-io\",\n \"calls\",\n \"feedback\",\n \"content\",\n \"versions\",\n \"reviews\",\n \"usage\",\n \"diff\",\n \"cases\",\n \"results\",\n \"definition\",\n ],\n origin: [\"foreground\", \"background\", \"server\", \"browser\", \"cli\"],\n status: [\n \"empty\",\n \"nonempty\",\n \"off\",\n \"connecting\",\n \"live\",\n \"reconnecting\",\n \"paused\",\n \"running\",\n \"completed\",\n \"failed\",\n \"interrupted\",\n \"pending\",\n \"expired\",\n ],\n filter: [\n \"search\",\n \"status\",\n \"provider\",\n \"model\",\n \"environment\",\n \"version\",\n \"duration\",\n \"cost\",\n \"tokens\",\n \"time\",\n \"sort\",\n \"other\",\n ],\n scale: [\"1\", \"2-5\", \"6-20\", \"21-100\", \"101+\"],\n error_category: [\n \"configuration\",\n \"provider\",\n \"validation\",\n \"domain\",\n \"workflow\",\n \"persistence\",\n \"request\",\n \"transport\",\n \"internal\",\n \"unknown\",\n ],\n http_status: [\n \"400\",\n \"401\",\n \"403\",\n \"404\",\n \"409\",\n \"413\",\n \"422\",\n \"429\",\n \"500\",\n \"502\",\n \"503\",\n \"504\",\n ],\n prompts: \"boolean\",\n observability: \"boolean\",\n tools: \"boolean\",\n streaming: \"boolean\",\n requested_streaming: \"boolean\",\n executed: \"boolean\",\n cache: \"boolean\",\n reused: \"boolean\",\n continue_on_disconnect: \"boolean\",\n write_available: \"boolean\",\n },\n // Built-in contracts only; application codes and provider response text are excluded.\n errorCodes: [\n \"EXECUTION_FAILED\",\n \"INVALID_REQUEST\",\n \"INVALID_RESUME\",\n \"INVALID_RESPONSE\",\n \"INVALID_SESSION\",\n \"RESUME_MISMATCH\",\n \"RESUME_FAILED\",\n \"CONTRACT_MISMATCH\",\n \"INVALID_INPUT\",\n \"INVALID_OUTPUT\",\n \"MISSING_CONTRACT\",\n \"UNKNOWN_WORKFLOW\",\n \"DOMAIN_ERROR\",\n \"PERSISTENCE_ERROR\",\n \"WORKFLOW_CONTRACT_ERROR\",\n \"PROVIDER_REFUSAL\",\n \"PROVIDER_HTTP_ERROR\",\n \"PROVIDER_INVALID_RESPONSE\",\n \"PROVIDER_TRANSPORT_ERROR\",\n \"PROVIDER_REQUEST_FAILED\",\n \"INVALID_MODEL_JSON\",\n \"MODEL_OUTPUT_SCHEMA\",\n \"OUTPUT_TRUNCATED\",\n \"SCHEMA_VALIDATION\",\n \"PARALLEL_FAILED\",\n \"EVAL_TIMEOUT\",\n \"EVAL_HOOK_FAILED\",\n \"EVAL_INTERRUPT_CLEANUP_FAILED\",\n \"PROMPT_SOURCE_NOT_CONFIGURED\",\n \"PROMPT_REASON_CONFLICT\",\n \"PROMPT_REASON_INVALID\",\n \"REASON_OUTPUT_BUDGET_EXHAUSTED\",\n \"REASON_OUTPUT_CONTRACT_CORRECTION_EXHAUSTED\",\n \"PROMPT_CACHE_INVALID\",\n \"PROMPT_ENVIRONMENT_MISMATCH\",\n \"PROMPT_EVAL_PIN_CONFLICT\",\n \"PROMPT_EVAL_SNAPSHOT_INVALID\",\n \"PROMPT_NOT_ASSIGNED\",\n \"PROMPT_NOT_FOUND\",\n \"PROMPT_NOT_REGISTERED\",\n \"PROMPT_PIN_MISMATCH\",\n \"PROMPT_REFERENCE_DUPLICATE\",\n \"PROMPT_SNAPSHOT_INVALID\",\n \"PROMPT_SNAPSHOT_LIMIT\",\n \"PROMPT_SOURCE_HTTP\",\n \"PROMPT_SOURCE_INVALID\",\n \"PROMPT_TAG_MISMATCH\",\n \"PROMPT_CONTRACT_MISMATCH\",\n \"PROMPT_REFERENCE_INVALID\",\n \"PROMPT_SCHEMA_INVALID\",\n \"PROMPT_VARIABLE_CONFIG_OVERLAP\",\n \"PROMPT_VARIABLE_MISSING\",\n \"PROMPT_VARIABLE_UNKNOWN\",\n \"PROMPT_DEPENDENCY_CYCLE\",\n \"PROMPT_DEPENDENCY_MISMATCH\",\n \"PROMPT_HASH_MISMATCH\",\n \"PROMPT_REFERENCE_LIMIT\",\n \"PROMPT_REFERENCE_MISSING\",\n \"PROMPT_REFERENCE_ROLE\",\n \"STUDIO_PROTOCOL_MISMATCH\",\n ],\n};\n\nexport function scale(value: number): string {\n return value <= 1\n ? \"1\"\n : value <= 5\n ? \"2-5\"\n : value <= 20\n ? \"6-20\"\n : value <= 100\n ? \"21-100\"\n : \"101+\";\n}\n","import {\n type Outcome,\n outcomes,\n publicCatalog,\n type UsageCatalog,\n} from \"./catalog\";\n\nexport type UsageProperties = Readonly<Record<string, unknown>>;\nexport interface UsageContext {\n product: string;\n component: string;\n version: string;\n environment?: \"production\" | \"staging\";\n identityScope?: \"installation\" | \"browser\" | \"process\";\n runtimeMode?: \"development\" | \"production\" | \"ci\" | \"unknown\";\n}\nexport interface UsageRecord {\n schema_version: 1;\n event_id: string;\n timestamp: string;\n event: \"usage.operation\" | \"usage.feature\";\n product: string;\n component: string;\n version: string;\n analytics_environment: \"production\" | \"staging\";\n runtime_mode: string;\n identity_scope: \"installation\" | \"browser\" | \"process\";\n operation: string;\n outcome: Outcome;\n properties: Record<string, string | boolean>;\n count: number;\n duration_total_ms: number;\n duration_buckets: number[];\n}\nexport type UsageTransport = (\n records: readonly UsageRecord[],\n identity: string,\n) => Promise<void>;\nexport interface UsageOptions {\n context: UsageContext;\n catalog?: UsageCatalog;\n enabled?: () => boolean;\n debug?: () => boolean;\n inspect?: (records: readonly UsageRecord[]) => void;\n identity: () =>\n | string\n | { id: string; scope: \"installation\" | \"browser\" | \"process\" }\n | Promise<\n string | { id: string; scope: \"installation\" | \"browser\" | \"process\" }\n >;\n transport: UsageTransport;\n now?: () => number;\n schedule?: (callback: () => void, ms: number) => { cancel(): void };\n flushIntervalMs?: number;\n maxGroups?: number;\n maxRecordsPerHour?: number;\n}\nexport interface UsageOperation {\n end(outcome?: Outcome, properties?: UsageProperties): void;\n fail(error: unknown, properties?: UsageProperties): void;\n}\nexport interface UsageTelemetry {\n start(operation: string, properties?: UsageProperties): UsageOperation;\n feature(operation: string, properties?: UsageProperties): void;\n measure<T>(\n operation: string,\n callback: () => T | Promise<T>,\n properties?: UsageProperties,\n outcome?: (value: T) => Outcome,\n ): Promise<T>;\n flush(): Promise<void>;\n dispose(): void;\n stats(): { pending: number; dropped: number; delivered: number };\n}\n\n/** Do not invoke arbitrary getters while classifying application errors. */\nfunction property(value: unknown, key: string): unknown {\n try {\n if (!value || typeof value !== \"object\") return undefined;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n return descriptor && \"value\" in descriptor ? descriptor.value : undefined;\n } catch {\n return undefined;\n }\n}\nexport function classifyUsageError(\n error: unknown,\n catalog = publicCatalog,\n): { outcome: Outcome; properties: UsageProperties } {\n const name = property(error, \"name\");\n const code =\n property(error, \"code\") ?? property(property(error, \"failure\"), \"code\");\n if (name === \"AbortError\" || code === \"EXECUTION_CANCELLED\")\n return { outcome: \"cancelled\", properties: {} };\n if (code === \"EXECUTION_LIMIT_REACHED\" || name === \"ExecutionLimitReached\")\n return { outcome: \"limit_reached\", properties: {} };\n if (\n name === \"GraphInterrupt\" ||\n name === \"NodeInterrupt\" ||\n name === \"Interrupt\"\n )\n return { outcome: \"suspended\", properties: {} };\n const known = typeof code === \"string\" && catalog.errorCodes.includes(code);\n const category =\n known && code !== \"EXECUTION_FAILED\"\n ? (property(error, \"category\") ??\n property(property(error, \"failure\"), \"category\") ??\n \"unknown\")\n : \"unknown\";\n const status =\n property(error, \"status\") ?? property(property(error, \"failure\"), \"status\");\n return {\n outcome: \"failed\",\n properties: {\n error_code: known ? code : \"other\",\n error_category: category,\n ...(typeof status === \"number\" ? { http_status: String(status) } : {}),\n },\n };\n}\n\nexport function sanitizeProperties(\n input: UsageProperties,\n catalog = publicCatalog,\n): Record<string, string | boolean> {\n const safe: Record<string, string | boolean> = {};\n for (const [key, rule] of Object.entries(catalog.properties)) {\n const value = property(input, key);\n if (value === undefined) continue;\n if (rule === \"boolean\") {\n if (typeof value === \"boolean\") safe[key] = value;\n } else if (typeof value === \"string\")\n safe[key] = rule.includes(value) ? value : \"other\";\n }\n const code = property(input, \"error_code\");\n if (typeof code === \"string\")\n safe.error_code = catalog.errorCodes.includes(code) ? code : \"other\";\n return safe;\n}\n\nconst durationBounds = [10, 100, 1000, 10000, 60000];\nconst noopOperation: UsageOperation = { end() {}, fail() {} };\nfunction schedule(callback: () => void, ms: number) {\n const timer = setTimeout(callback, ms);\n (timer as unknown as { unref?: () => void }).unref?.();\n return { cancel: () => clearTimeout(timer) };\n}\nexport function createUsageTelemetry(options: UsageOptions): UsageTelemetry {\n const catalog = options.catalog ?? publicCatalog;\n const now = options.now ?? Date.now;\n const pending = new Map<string, UsageRecord>();\n let timer: { cancel(): void } | undefined;\n let flight: Promise<void> | undefined;\n let disposed = false;\n let dropped = 0;\n let delivered = 0;\n let hour = Math.floor(now() / 3_600_000);\n let sent = 0;\n const active = () => {\n try {\n return !disposed && (options.enabled?.() ?? true);\n } catch {\n return false;\n }\n };\n const clear = () => {\n pending.clear();\n try {\n timer?.cancel();\n } catch {}\n timer = undefined;\n };\n const configured =\n catalog.products.includes(options.context.product) &&\n /^[a-z][a-z0-9_]{0,31}$/.test(options.context.component) &&\n /^(?:\\d+\\.\\d+\\.\\d+(?:-[a-z0-9.-]+)?|development|unknown)$/.test(\n options.context.version,\n ) &&\n options.context.version.length <= 64;\n\n const flush = async (): Promise<void> => {\n if (flight) return flight;\n if (!active() || !configured) {\n clear();\n return;\n }\n try {\n timer?.cancel();\n } catch {}\n timer = undefined;\n const records = [...pending.values()];\n pending.clear();\n if (!records.length) return;\n let attempted = records.length;\n flight = (async () => {\n try {\n if (options.debug?.()) {\n options.inspect?.(records);\n return;\n }\n const currentHour = Math.floor(now() / 3_600_000);\n if (hour !== currentHour) {\n hour = currentHour;\n sent = 0;\n }\n const allowance = Math.max(\n 0,\n (options.maxRecordsPerHour ?? 120) - sent,\n );\n const batch = records.slice(0, allowance);\n dropped += records.length - batch.length;\n attempted = batch.length;\n if (!batch.length || !active()) return;\n const identified = await options.identity();\n const identity =\n typeof identified === \"string\" ? identified : identified.id;\n if (typeof identified !== \"string\")\n for (const record of batch) record.identity_scope = identified.scope;\n if (!active() || options.debug?.()) return;\n if (\n !/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/.test(\n identity,\n )\n ) {\n dropped += batch.length;\n return;\n }\n sent += batch.length;\n await options.transport(batch, identity);\n delivered += batch.length;\n } catch {\n dropped += attempted;\n }\n })().finally(() => {\n flight = undefined;\n try {\n if (pending.size && active() && !timer)\n timer = (options.schedule ?? schedule)(\n () => void flush(),\n options.flushIntervalMs ?? 60_000,\n );\n } catch {\n clear();\n }\n });\n return flight;\n };\n\n const record = (\n event: UsageRecord[\"event\"],\n operation: string,\n outcome: Outcome,\n duration: number,\n input: UsageProperties,\n ) => {\n try {\n if (!active()) {\n clear();\n return;\n }\n if (\n !configured ||\n !catalog.operations.includes(operation) ||\n !outcomes.includes(outcome)\n )\n return;\n const properties = sanitizeProperties(input, catalog);\n const key = JSON.stringify([event, operation, outcome, properties]);\n let existing = pending.get(key);\n if (!existing) {\n if (pending.size >= (options.maxGroups ?? 64)) {\n dropped++;\n return;\n }\n existing = {\n schema_version: 1,\n event_id: crypto.randomUUID(),\n timestamp: new Date(now()).toISOString(),\n event,\n product: options.context.product,\n component: options.context.component,\n version: options.context.version,\n analytics_environment: options.context.environment ?? \"production\",\n runtime_mode: options.context.runtimeMode ?? \"unknown\",\n identity_scope: options.context.identityScope ?? \"installation\",\n operation,\n outcome,\n properties,\n count: 0,\n duration_total_ms: 0,\n duration_buckets: [0, 0, 0, 0, 0, 0],\n };\n pending.set(key, existing);\n }\n const elapsed = Math.max(\n 0,\n Math.min(86_400_000, Number.isFinite(duration) ? duration : 0),\n );\n existing.count = Math.min(Number.MAX_SAFE_INTEGER, existing.count + 1);\n existing.duration_total_ms = Math.min(\n Number.MAX_SAFE_INTEGER,\n existing.duration_total_ms + elapsed,\n );\n const index = durationBounds.findIndex((bound) => elapsed <= bound);\n const bucket = index === -1 ? durationBounds.length : index;\n existing.duration_buckets[bucket] =\n (existing.duration_buckets[bucket] ?? 0) + 1;\n if (!timer)\n timer = (options.schedule ?? schedule)(\n () => void flush(),\n options.flushIntervalMs ?? 60_000,\n );\n } catch {\n /* Usage collection cannot participate in product execution. */\n }\n };\n const start = (\n operation: string,\n properties: UsageProperties = {},\n ): UsageOperation => {\n if (!active()) {\n clear();\n return noopOperation;\n }\n try {\n const initial = sanitizeProperties(properties, catalog);\n const began = now();\n let ended = false;\n return {\n end(outcome = \"success\", extra = {}) {\n if (ended) return;\n ended = true;\n try {\n record(\"usage.operation\", operation, outcome, now() - began, {\n ...initial,\n ...sanitizeProperties(extra, catalog),\n });\n } catch {}\n },\n fail(error, extra = {}) {\n if (ended) return;\n try {\n const failure = classifyUsageError(error, catalog);\n this.end(failure.outcome, {\n ...sanitizeProperties(extra, catalog),\n ...failure.properties,\n });\n } catch {}\n },\n };\n } catch {\n return noopOperation;\n }\n };\n return {\n start,\n feature(operation, properties = {}) {\n record(\"usage.feature\", operation, \"success\", 0, properties);\n },\n async measure(operation, callback, properties = {}, outcome) {\n const operationScope = start(operation, properties);\n try {\n const result = await callback();\n let status: Outcome = \"success\";\n try {\n status = outcome?.(result) ?? status;\n } catch {}\n operationScope.end(status);\n return result;\n } catch (error) {\n operationScope.fail(error);\n throw error;\n }\n },\n flush,\n dispose() {\n disposed = true;\n clear();\n },\n stats: () => ({ pending: pending.size, dropped, delivered }),\n };\n}\n","import type { UsageTransport } from \"./client\";\n\n/** Capture keys are public. This transport never accepts a personal API token. */\nexport function createPostHogTransport(options: {\n key: string;\n host?: string;\n fetch?: typeof fetch;\n timeoutMs?: number;\n}): UsageTransport {\n if (!/^phc_[a-zA-Z0-9]+$/.test(options.key))\n throw new Error(\"Usage telemetry requires a public PostHog capture key.\");\n const host = new URL(options.host ?? \"https://eu.i.posthog.com\");\n if (host.username || host.password || host.search || host.hash)\n throw new Error(\n \"Usage endpoint must not contain credentials or query parameters.\",\n );\n if (\n host.protocol !== \"https:\" &&\n host.hostname !== \"localhost\" &&\n host.hostname !== \"127.0.0.1\"\n )\n throw new Error(\"Usage telemetry requires HTTPS.\");\n return async (records, identity) => {\n const batch = records.map((record) => ({\n event: record.event,\n timestamp: record.timestamp,\n distinct_id: identity,\n uuid: record.event_id,\n properties: {\n ...record.properties,\n schema_version: record.schema_version,\n product: record.product,\n component: record.component,\n version: record.version,\n analytics_environment: record.analytics_environment,\n runtime_mode: record.runtime_mode,\n identity_scope: record.identity_scope,\n operation: record.operation,\n outcome: record.outcome,\n count: record.count,\n duration_total_ms: record.duration_total_ms,\n duration_buckets: record.duration_buckets,\n $process_person_profile: false,\n $geoip_disable: true,\n $ip: null,\n },\n }));\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n options.timeoutMs ?? 2000,\n );\n (timeout as unknown as { unref?: () => void }).unref?.();\n try {\n const response = await (options.fetch ?? globalThis.fetch)(\n new URL(\"/batch/\", host),\n {\n method: \"POST\",\n credentials: \"omit\",\n referrerPolicy: \"no-referrer\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ api_key: options.key, batch }),\n signal: controller.signal,\n },\n );\n await response.body?.cancel();\n if (!response.ok) throw new Error(\"Usage delivery failed.\");\n } finally {\n clearTimeout(timeout);\n }\n };\n}\n\nexport function createCollectorTransport(options: {\n endpoint: string;\n fetch?: typeof fetch;\n}): UsageTransport {\n const endpoint = new URL(options.endpoint);\n if (\n endpoint.username ||\n endpoint.password ||\n endpoint.search ||\n endpoint.hash\n )\n throw new Error(\n \"Usage endpoint must not contain credentials or query parameters.\",\n );\n if (\n endpoint.protocol !== \"https:\" &&\n ![\"localhost\", \"127.0.0.1\"].includes(endpoint.hostname)\n )\n throw new Error(\"Usage telemetry requires HTTPS.\");\n return async (records, identity) => {\n const response = await (options.fetch ?? globalThis.fetch)(endpoint, {\n method: \"POST\",\n credentials: \"omit\",\n referrerPolicy: \"no-referrer\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ identity, records }),\n signal: AbortSignal.timeout(2000),\n });\n await response.body?.cancel();\n if (!response.ok) throw new Error(\"Usage delivery failed.\");\n };\n}\n"],"mappings":"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","names":["record"]}
package/dist/node.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import { U as UsageTelemetry, a as UsageOptions } from './client-rVwo4XAO.js';
2
+ export { c as createUsageTelemetry, s as scale } from './client-rVwo4XAO.js';
3
+
4
+ declare function usageDisabled(): boolean;
5
+ declare function createNodeUsageTelemetry(options: Pick<UsageOptions, "context"> & Partial<Omit<UsageOptions, "context">>): UsageTelemetry;
6
+ /** Override a component client in another distribution or in an embedding application. */
7
+ declare function configureUsageTelemetry(component: string, client: UsageTelemetry): void;
8
+ declare function getUsageTelemetry(component: string, version?: string, product?: string): UsageTelemetry;
9
+ /** Safe browser bootstrap: capture keys are public; no identity or secrets are returned. */
10
+ declare function publicUsageConfiguration(): {
11
+ endpoint?: string;
12
+ enabled: boolean;
13
+ debug: boolean;
14
+ environment: "staging" | "production";
15
+ key: string;
16
+ host: string;
17
+ };
18
+
19
+ export { UsageTelemetry, configureUsageTelemetry, createNodeUsageTelemetry, getUsageTelemetry, publicUsageConfiguration, usageDisabled };