@kortyx/hooks 0.35.0 → 0.35.1

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/internal.js CHANGED
@@ -145,7 +145,7 @@ var import_node = require("@kortyx/usage-telemetry/node");
145
145
  // package.json
146
146
  var package_default = {
147
147
  name: "@kortyx/hooks",
148
- version: "0.35.0",
148
+ version: "0.35.1",
149
149
  private: false,
150
150
  description: "Lifecycle hooks and extension points for Kortyx.",
151
151
  keywords: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal.ts","../src/diagnostic-capture.ts","../src/error-diagnostics.ts","../src/reason-engine.ts","../src/safe-tracing.ts","../src/usage.ts","../package.json","../src/telemetry-privacy.ts"],"sourcesContent":["export { summarizeDiagnostic } from \"@kortyx/telemetry-contracts\";\nexport { captureDiagnosticContent } from \"./diagnostic-capture\";\nexport {\n errorDiagnostics,\n exceptionDiagnostics,\n isModelTraceSpan,\n} from \"./error-diagnostics\";\nexport type {\n RunReasonEngineArgs,\n RunReasonEngineResult,\n} from \"./reason-engine\";\nexport { runReasonEngine } from \"./reason-engine\";\nexport { safeSpan, safeStartSpan, withSafeTraceSpan } from \"./safe-tracing\";\nexport { safeTelemetryMetadata } from \"./telemetry-privacy\";\nexport type {\n KortyxTelemetryConfig,\n KortyxTraceAdapter,\n KortyxTraceMetadata,\n ReasonTraceAdapter,\n} from \"./tracing\";\n","export { captureDiagnosticContent } from \"@kortyx/telemetry-contracts\";\n","import { summarizeDiagnostic } from \"@kortyx/telemetry-contracts\";\nimport { captureDiagnosticContent } from \"./diagnostic-capture\";\nimport type { KortyxErrorDetails, KortyxTraceErrorProjection } from \"./tracing\";\n\n/** Redacted observer diagnostic; bounded summaries are produced separately. */\nexport function exceptionDiagnostics(\n error: unknown,\n project?: KortyxTraceErrorProjection,\n): KortyxErrorDetails | null {\n const content = captureDiagnosticContent(error, project);\n return !content || content.capture.status === \"failed\"\n ? null\n : (content.data as KortyxErrorDetails);\n}\n\n/** Internal tracing diagnostics only; never changes client-facing failure contracts. */\nexport function errorDiagnostics(\n error: unknown,\n project?: KortyxTraceErrorProjection,\n): { errorType?: string; errorMessage?: string } {\n const captured = exceptionDiagnostics(error, project);\n const details = captured ? summarizeDiagnostic(captured) : null;\n return details\n ? {\n errorMessage: details.message.slice(0, 8192),\n ...(details.type ? { errorType: details.type.slice(0, 256) } : {}),\n }\n : {};\n}\nexport function isModelTraceSpan(name: string) {\n return name === \"runReasonEngine\" || name === \"useReason\";\n}\n","import { randomUUID } from \"node:crypto\";\nimport {\n createExecutionCancelledError,\n throwIfExecutionAborted,\n} from \"@kortyx/core\";\nimport { KortyxError } from \"@kortyx/core/errors\";\nimport type {\n KortyxContinuation,\n KortyxFinishReason,\n KortyxPromptMessage,\n KortyxProviderMetadata,\n KortyxReasoningOptions,\n KortyxResponseFormat,\n KortyxToolCall,\n KortyxToolDefinition,\n KortyxUsage,\n KortyxWarning,\n ProviderModelRef,\n} from \"@kortyx/providers\";\nimport { safeStartSpan } from \"./safe-tracing\";\nimport type {\n KortyxTraceMetadata,\n ReasonTraceAdapter,\n ReasonTraceSpan,\n} from \"./tracing\";\nimport { usage } from \"./usage\";\n\nfunction assertModelFinish(result: {\n finishReason?: KortyxFinishReason | undefined;\n usage?: KortyxUsage | undefined;\n}): void {\n if (result.finishReason?.unified !== \"content-filter\") return;\n throw Object.assign(\n new KortyxError(\"PROVIDER_REFUSAL\", \"The provider refused the request.\", {\n category: \"provider\",\n retryable: false,\n safeMessage: \"The provider refused the request.\",\n }),\n {\n ...(result.usage ? { usage: result.usage } : {}),\n finishReason: result.finishReason,\n },\n );\n}\n\nexport interface RunReasonEngineArgs {\n model: ProviderModelRef;\n input: string;\n system?: string | undefined;\n temperature?: number | undefined;\n maxOutputTokens?: number | undefined;\n stopSequences?: string[] | undefined;\n abortSignal?: AbortSignal | undefined;\n reasoning?: KortyxReasoningOptions | undefined;\n responseFormat?: KortyxResponseFormat | undefined;\n providerOptions?: Record<string, unknown> | undefined;\n tools?: KortyxToolDefinition[] | undefined;\n messages?: KortyxPromptMessage[] | undefined;\n defaultTemperature?: number | undefined;\n stream?: boolean | undefined;\n emit?: boolean | undefined;\n nodeId?: string | undefined;\n emitEvent?: ((event: string, payload: unknown) => void) | undefined;\n onTextChunk?: ((text: string) => void) | undefined;\n id?: string | undefined;\n opId?: string | undefined;\n segmentId?: string | undefined;\n telemetry?: KortyxTraceMetadata | undefined;\n reasonTrace?: ReasonTraceAdapter | undefined;\n}\n\nexport interface RunReasonEngineResult {\n continuation?: KortyxContinuation;\n text: string;\n raw?: unknown;\n usage?: KortyxUsage;\n finishReason?: KortyxFinishReason;\n toolCalls?: KortyxToolCall[];\n providerMetadata?: KortyxProviderMetadata;\n warnings?: KortyxWarning[];\n}\n\nconst toError = (value: unknown): Error =>\n value instanceof Error ? value : new Error(String(value));\n\nconst createRuntimeId = (): string => {\n try {\n return randomUUID();\n } catch {\n return `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n }\n};\n\nconst emitNodeEvent = (\n emitEvent: RunReasonEngineArgs[\"emitEvent\"],\n nodeId: string | undefined,\n event: string,\n payload: Record<string, unknown>,\n): void => {\n if (!emitEvent) return;\n emitEvent(event, {\n ...payload,\n ...(typeof nodeId === \"string\" && nodeId.length > 0\n ? { node: nodeId }\n : {}),\n });\n};\n\nexport const resolveProviderOptions = (\n defaults: Record<string, unknown> | undefined,\n overrides: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined => {\n const providerOptions =\n defaults || overrides ? { ...defaults, ...overrides } : undefined;\n // Provider namespaces inherit model defaults (including transport) while\n // allowing individual call settings to override them.\n for (const [key, value] of Object.entries(overrides ?? {})) {\n const previous = defaults?.[key];\n if (\n previous &&\n value &&\n typeof previous === \"object\" &&\n typeof value === \"object\" &&\n !Array.isArray(previous) &&\n !Array.isArray(value)\n ) {\n if (providerOptions) providerOptions[key] = { ...previous, ...value };\n }\n }\n return providerOptions;\n};\n\nasync function runReasonEngineInternal(\n args: RunReasonEngineArgs,\n): Promise<RunReasonEngineResult> {\n let stream = args.stream ?? args.model.options?.streaming ?? true;\n const emit = args.emit ?? true;\n const temperature =\n args.temperature ??\n args.model.options?.temperature ??\n args.defaultTemperature;\n const maxOutputTokens =\n args.maxOutputTokens ?? args.model.options?.maxOutputTokens;\n const stopSequences = args.stopSequences ?? args.model.options?.stopSequences;\n const abortSignal = args.abortSignal ?? args.model.options?.abortSignal;\n const reasoning = args.reasoning ?? args.model.options?.reasoning;\n const responseFormat =\n args.responseFormat ?? args.model.options?.responseFormat;\n const providerOptions = resolveProviderOptions(\n args.model.options?.providerOptions,\n args.providerOptions,\n );\n const tools = args.tools ?? args.model.options?.tools;\n\n throwIfExecutionAborted(abortSignal);\n const model = args.model.provider.getModel(args.model.modelId, {\n ...(temperature !== undefined ? { temperature } : {}),\n streaming: stream,\n ...(maxOutputTokens !== undefined ? { maxOutputTokens } : {}),\n ...(stopSequences !== undefined ? { stopSequences } : {}),\n ...(abortSignal !== undefined ? { abortSignal } : {}),\n ...(reasoning !== undefined ? { reasoning } : {}),\n ...(responseFormat !== undefined ? { responseFormat } : {}),\n ...(tools !== undefined ? { tools } : {}),\n ...(providerOptions !== undefined ? { providerOptions } : {}),\n });\n\n if (tools?.length && !model.supportsToolStreaming) stream = false;\n usage.feature(\"sdk.model\", {\n streaming: stream,\n tools: Boolean(tools?.length),\n provider: args.model.provider.id,\n });\n\n const messages: KortyxPromptMessage[] =\n args.messages !== undefined\n ? args.messages\n : [\n ...(typeof args.system === \"string\" && args.system.length > 0\n ? [{ role: \"system\" as const, content: args.system }]\n : []),\n { role: \"user\" as const, content: String(args.input ?? \"\") },\n ];\n\n const opId =\n typeof args.opId === \"string\" && args.opId.length > 0\n ? args.opId\n : createRuntimeId();\n const segmentId =\n typeof args.segmentId === \"string\" && args.segmentId.length > 0\n ? args.segmentId\n : createRuntimeId();\n\n const commonMeta: Record<string, unknown> = {\n ...(typeof args.id === \"string\" && args.id.length > 0\n ? { id: args.id }\n : {}),\n opId,\n segmentId,\n };\n const traceSpan = safeStartSpan(args.reasonTrace, {\n name: \"runReasonEngine\",\n attributes: {\n ...commonMeta,\n providerId: args.model.provider.id,\n modelId: args.model.modelId,\n stream,\n emit,\n ...(args.telemetry?.operation\n ? { operation: args.telemetry.operation }\n : {}),\n ...(args.telemetry?.prompt?.name\n ? { promptName: args.telemetry.prompt.name }\n : {}),\n ...(args.telemetry?.prompt?.version !== undefined\n ? { promptVersion: args.telemetry.prompt.version }\n : {}),\n ...(args.telemetry?.prompt?.type\n ? { promptType: args.telemetry.prompt.type }\n : {}),\n ...(typeof args.nodeId === \"string\" && args.nodeId.length > 0\n ? { nodeId: args.nodeId }\n : {}),\n },\n telemetry: {\n ...(args.telemetry ?? {}),\n input:\n args.telemetry?.input ??\n messages.map(\n ({ continuation: _continuation, raw: _raw, ...message }) => message,\n ),\n },\n });\n const modelRequestStartedAt = Date.now();\n let firstTextTokenAt: number | undefined;\n let lastTextTokenAt: number | undefined;\n\n const generationTimingAttributes = (): Record<string, number> =>\n firstTextTokenAt === undefined || lastTextTokenAt === undefined\n ? {}\n : {\n ttftMs: Math.max(0, firstTextTokenAt - modelRequestStartedAt),\n streamDurationMs: Math.max(0, lastTextTokenAt - firstTextTokenAt),\n timeToLastTokenMs: Math.max(\n 0,\n lastTextTokenAt - modelRequestStartedAt,\n ),\n };\n\n const endTrace = (\n span: ReasonTraceSpan | undefined,\n result: RunReasonEngineResult,\n ): void => {\n span?.end?.({\n ...(result.usage !== undefined ? { usage: result.usage } : {}),\n ...(result.finishReason !== undefined\n ? { finishReason: result.finishReason }\n : {}),\n ...(result.providerMetadata !== undefined\n ? { providerMetadata: result.providerMetadata }\n : {}),\n ...(result.warnings !== undefined ? { warnings: result.warnings } : {}),\n attributes: {\n textLength: result.text.length,\n ...generationTimingAttributes(),\n },\n telemetry: {\n ...(args.telemetry ?? {}),\n output: args.telemetry?.output ?? result.text,\n },\n });\n };\n\n const failTrace = (\n span: ReasonTraceSpan | undefined,\n error: unknown,\n ): void => {\n const detail = error as Partial<RunReasonEngineResult> | undefined;\n try {\n span?.fail?.(error, {\n ...(detail?.usage ? { usage: detail.usage } : {}),\n ...(detail?.finishReason ? { finishReason: detail.finishReason } : {}),\n ...(detail?.providerMetadata\n ? { providerMetadata: detail.providerMetadata }\n : {}),\n attributes: {\n providerId: args.model.provider.id,\n modelId: args.model.modelId,\n },\n });\n } catch {\n /* Reporting must not replace the execution failure. */\n }\n };\n\n try {\n if (stream) {\n let continuation: KortyxContinuation | undefined;\n let final = \"\";\n let raw: unknown;\n let usage: KortyxUsage | undefined;\n let finishReason: KortyxFinishReason | undefined;\n let toolCalls: KortyxToolCall[] | undefined;\n let providerMetadata: KortyxProviderMetadata | undefined;\n let warnings: KortyxWarning[] | undefined;\n\n if (emit) {\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-start\", {\n ...commonMeta,\n });\n }\n\n const response = await model.stream(messages);\n for await (const chunk of response) {\n throwIfExecutionAborted(abortSignal);\n switch (chunk.type) {\n case \"text-delta\": {\n if (chunk.delta.length === 0) break;\n const tokenAt = Date.now();\n firstTextTokenAt ??= tokenAt;\n lastTextTokenAt = tokenAt;\n final += chunk.delta;\n args.onTextChunk?.(chunk.delta);\n if (chunk.raw !== undefined) {\n raw = chunk.raw;\n }\n if (chunk.providerMetadata !== undefined) {\n providerMetadata = chunk.providerMetadata;\n }\n if (emit) {\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-delta\", {\n ...commonMeta,\n delta: chunk.delta,\n });\n }\n break;\n }\n case \"finish\": {\n continuation = chunk.continuation;\n if (chunk.raw !== undefined) {\n raw = chunk.raw;\n }\n if (chunk.usage !== undefined) {\n usage = chunk.usage;\n }\n if (chunk.finishReason !== undefined) {\n finishReason = chunk.finishReason;\n }\n if (chunk.toolCalls !== undefined) {\n toolCalls = chunk.toolCalls;\n }\n if (chunk.providerMetadata !== undefined) {\n providerMetadata = chunk.providerMetadata;\n }\n if (chunk.warnings !== undefined) {\n warnings = chunk.warnings;\n }\n break;\n }\n case \"raw\": {\n raw = chunk.raw;\n if (chunk.providerMetadata !== undefined) {\n providerMetadata = chunk.providerMetadata;\n }\n break;\n }\n case \"error\": {\n if (chunk.raw !== undefined) {\n raw = chunk.raw;\n }\n if (chunk.providerMetadata !== undefined) {\n providerMetadata = chunk.providerMetadata;\n }\n if (chunk.warnings !== undefined) {\n warnings = chunk.warnings;\n }\n throw toError(chunk.error);\n }\n }\n }\n\n throwIfExecutionAborted(abortSignal);\n assertModelFinish({ finishReason, usage });\n if (emit) {\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-end\", {\n ...commonMeta,\n });\n }\n\n const result = {\n text: final,\n ...(continuation ? { continuation } : {}),\n ...(raw !== undefined ? { raw } : {}),\n ...(usage !== undefined ? { usage } : {}),\n ...(finishReason !== undefined ? { finishReason } : {}),\n ...(toolCalls !== undefined ? { toolCalls } : {}),\n ...(providerMetadata !== undefined ? { providerMetadata } : {}),\n ...(warnings !== undefined ? { warnings } : {}),\n };\n throwIfExecutionAborted(abortSignal);\n endTrace(traceSpan, result);\n return result;\n }\n\n const response = await model.invoke(messages);\n throwIfExecutionAborted(abortSignal);\n assertModelFinish(response);\n if (response.content) args.onTextChunk?.(response.content);\n\n if (emit) {\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-start\", {\n ...commonMeta,\n });\n if (response.content) {\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-delta\", {\n ...commonMeta,\n delta: response.content,\n });\n }\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-end\", {\n ...commonMeta,\n });\n }\n\n const result = {\n text: response.content,\n ...(response.continuation ? { continuation: response.continuation } : {}),\n ...(response.raw !== undefined ? { raw: response.raw } : {}),\n ...(response.usage !== undefined ? { usage: response.usage } : {}),\n ...(response.finishReason !== undefined\n ? { finishReason: response.finishReason }\n : {}),\n ...(response.toolCalls !== undefined\n ? { toolCalls: response.toolCalls }\n : {}),\n ...(response.providerMetadata !== undefined\n ? { providerMetadata: response.providerMetadata }\n : {}),\n ...(response.warnings !== undefined\n ? { warnings: response.warnings }\n : {}),\n };\n endTrace(traceSpan, result);\n return result;\n } catch (error) {\n const failure = abortSignal?.aborted\n ? createExecutionCancelledError()\n : error;\n failTrace(traceSpan, failure);\n throw failure;\n }\n}\n\nexport function runReasonEngine(\n args: RunReasonEngineArgs,\n): Promise<RunReasonEngineResult> {\n return usage.measure(\"sdk.model\", () => runReasonEngineInternal(args), {\n provider: args.model.provider.id,\n requested_streaming: args.stream ?? args.model.options?.streaming ?? true,\n tools: Boolean((args.tools ?? args.model.options?.tools)?.length),\n format:\n args.responseFormat?.type ??\n args.model.options?.responseFormat?.type ??\n \"text\",\n });\n}\n","import type {\n ReasonTraceAdapter,\n ReasonTraceAttributes,\n ReasonTraceSpan,\n ReasonTraceSpanEndArgs,\n ReasonTraceSpanStartArgs,\n} from \"./tracing\";\n\n/** Observation callbacks never participate in execution's error path. */\nexport function safeSpan(span: ReasonTraceSpan | undefined): ReasonTraceSpan {\n const guard =\n <T extends unknown[]>(fn: ((...args: T) => void) | undefined) =>\n (...args: T) => {\n try {\n fn?.(...args);\n } catch {}\n };\n let ended = false;\n const finish =\n <T extends unknown[]>(fn: ((...args: T) => void) | undefined) =>\n (...args: T) => {\n if (ended) return;\n ended = true;\n guard(fn)(...args);\n };\n return {\n addEvent: guard((name: string, attributes?: ReasonTraceAttributes) =>\n span?.addEvent?.(name, attributes),\n ),\n setAttributes: guard((attributes: ReasonTraceAttributes) =>\n span?.setAttributes?.(attributes),\n ),\n end: finish((args?: ReasonTraceSpanEndArgs) => span?.end?.(args)),\n fail: finish((error: unknown, args?: ReasonTraceSpanEndArgs) => {\n if (span?.fail) span.fail(error, args);\n else span?.end?.(args);\n }),\n };\n}\n\nexport function safeStartSpan(\n adapter: Partial<ReasonTraceAdapter> | undefined,\n args: ReasonTraceSpanStartArgs,\n): ReasonTraceSpan {\n try {\n return safeSpan(adapter?.startSpan?.(args));\n } catch {\n return safeSpan(undefined);\n }\n}\n\n/** Retains active adapter context, and never retries a callback if observation fails. */\nexport async function withSafeTraceSpan<T>(\n adapter: Partial<ReasonTraceAdapter> | undefined,\n args: ReasonTraceSpanStartArgs,\n fn: (span: ReasonTraceSpan) => Promise<T>,\n): Promise<T> {\n let execution: Promise<T> | undefined;\n const invoke = (span: ReasonTraceSpan) => {\n execution ??= Promise.resolve().then(async () => {\n const observed = safeSpan(span);\n try {\n const result = await fn(observed);\n observed.end?.();\n return result;\n } catch (error) {\n observed.fail?.(error);\n throw error;\n }\n });\n return execution;\n };\n let activeScope: ReasonTraceAdapter[\"withSpan\"];\n try {\n activeScope = adapter?.withSpan?.bind(adapter);\n } catch {}\n if (activeScope) {\n let started: (() => void) | undefined;\n const invoked = new Promise<void>((resolve) => {\n started = resolve;\n });\n const observe = async () => {\n try {\n await activeScope(args, (span) => {\n const result = invoke(span);\n started?.();\n return result;\n });\n } catch {\n /* The execution promise preserves its own failure. */\n }\n };\n const observation = observe();\n // Delivery or adapter work after the callback must not hold up execution.\n if (!execution) await Promise.race([invoked, observation]);\n } else {\n await invoke(safeStartSpan(adapter, args)).catch(() => {});\n }\n return execution ?? invoke(safeSpan(undefined));\n}\n","import type { UsageTelemetry } from \"@kortyx/usage-telemetry\";\nimport { getUsageTelemetry } from \"@kortyx/usage-telemetry/node\";\nimport packageJson from \"../package.json\";\n\nconst client = () => getUsageTelemetry(\"hooks\", packageJson.version);\nexport const usage: Pick<\n UsageTelemetry,\n \"start\" | \"feature\" | \"measure\" | \"flush\"\n> = {\n start: (...args) => client().start(...args),\n feature: (...args) => client().feature(...args),\n measure: (...args) => client().measure(...args),\n flush: () => client().flush(),\n};\n","{\n \"name\": \"@kortyx/hooks\",\n \"version\": \"0.35.0\",\n \"private\": false,\n \"description\": \"Lifecycle hooks and extension points for Kortyx.\",\n \"keywords\": [\n \"ai\",\n \"agent\",\n \"agents\",\n \"orchestration\",\n \"framework\",\n \"hooks\",\n \"kortyx\"\n ],\n \"license\": \"Apache-2.0\",\n \"homepage\": \"https://kortyx.io/\",\n \"bugs\": {\n \"url\": \"https://github.com/kortyx-io/kortyx/issues\"\n },\n \"author\": \"Kortyx (https://github.com/kortyx-io)\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"./internal\": {\n \"types\": \"./dist/internal.d.ts\",\n \"default\": \"./dist/internal.js\"\n }\n },\n \"files\": [\n \"dist/**\",\n \"README.md\",\n \"CHANGELOG.md\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"predev\": \"tsc -p tsconfig.build.json\",\n \"dev\": \"tsc --watch\",\n \"lint\": \"biome check src\",\n \"test\": \"vitest run && pnpm -s type-check\",\n \"coverage\": \"vitest run --coverage && pnpm -s type-check\",\n \"test:watch\": \"vitest\",\n \"type-check\": \"tsc --noEmit -p tsconfig.test.json\"\n },\n \"dependencies\": {\n \"@kortyx/core\": \"workspace:*\",\n \"@kortyx/providers\": \"workspace:*\",\n \"@kortyx/telemetry-contracts\": \"workspace:*\",\n \"zod\": \"catalog:\",\n \"@kortyx/prompts\": \"workspace:*\",\n \"@kortyx/usage-telemetry\": \"workspace:*\"\n },\n \"devDependencies\": {\n \"turbo\": \"catalog:\",\n \"typescript\": \"catalog:\",\n \"tsup\": \"catalog:\",\n \"vitest\": \"catalog:\",\n \"@vitest/coverage-v8\": \"catalog:\"\n },\n \"sideEffects\": false,\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/kortyx-io/kortyx.git\",\n \"directory\": \"packages/hooks\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","/** Strip credential-shaped fields before metadata reaches any adapter/exporter. */\nconst privateField =\n /^(?:password|passwd|secret|clientsecret|privatekey|credential|credentials|authorization|bearer|bearertoken|jwt|token|accesstoken|refreshtoken|authtoken|apikey|apisecret|cookie|setcookie|resumehandle|resumetoken)$/;\nexport function safeTelemetryMetadata(\n value: Record<string, unknown>,\n): Record<string, unknown> {\n const seen = new WeakSet<object>();\n const visit = (input: unknown, depth: number): unknown => {\n if (depth > 8 || typeof input === \"function\" || typeof input === \"symbol\")\n return undefined;\n if (!input || typeof input !== \"object\") return input;\n if (seen.has(input)) return undefined;\n seen.add(input);\n if (Array.isArray(input))\n return input.map((item) => visit(item, depth + 1));\n return Object.fromEntries(\n Object.entries(input).flatMap(([key, nested]) =>\n privateField.test(key.toLowerCase().replace(/[^a-z0-9]/g, \"\"))\n ? []\n : [[key, visit(nested, depth + 1)]],\n ),\n );\n };\n try {\n return visit(value, 0) as Record<string, unknown>;\n } catch {\n return {};\n }\n}\n"],"mappings":"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","names":["import_telemetry_contracts","import_telemetry_contracts","usage","response","result"]}
1
+ {"version":3,"sources":["../src/internal.ts","../src/diagnostic-capture.ts","../src/error-diagnostics.ts","../src/reason-engine.ts","../src/safe-tracing.ts","../src/usage.ts","../package.json","../src/telemetry-privacy.ts"],"sourcesContent":["export { summarizeDiagnostic } from \"@kortyx/telemetry-contracts\";\nexport { captureDiagnosticContent } from \"./diagnostic-capture\";\nexport {\n errorDiagnostics,\n exceptionDiagnostics,\n isModelTraceSpan,\n} from \"./error-diagnostics\";\nexport type {\n RunReasonEngineArgs,\n RunReasonEngineResult,\n} from \"./reason-engine\";\nexport { runReasonEngine } from \"./reason-engine\";\nexport { safeSpan, safeStartSpan, withSafeTraceSpan } from \"./safe-tracing\";\nexport { safeTelemetryMetadata } from \"./telemetry-privacy\";\nexport type {\n KortyxTelemetryConfig,\n KortyxTraceAdapter,\n KortyxTraceMetadata,\n ReasonTraceAdapter,\n} from \"./tracing\";\n","export { captureDiagnosticContent } from \"@kortyx/telemetry-contracts\";\n","import { summarizeDiagnostic } from \"@kortyx/telemetry-contracts\";\nimport { captureDiagnosticContent } from \"./diagnostic-capture\";\nimport type { KortyxErrorDetails, KortyxTraceErrorProjection } from \"./tracing\";\n\n/** Redacted observer diagnostic; bounded summaries are produced separately. */\nexport function exceptionDiagnostics(\n error: unknown,\n project?: KortyxTraceErrorProjection,\n): KortyxErrorDetails | null {\n const content = captureDiagnosticContent(error, project);\n return !content || content.capture.status === \"failed\"\n ? null\n : (content.data as KortyxErrorDetails);\n}\n\n/** Internal tracing diagnostics only; never changes client-facing failure contracts. */\nexport function errorDiagnostics(\n error: unknown,\n project?: KortyxTraceErrorProjection,\n): { errorType?: string; errorMessage?: string } {\n const captured = exceptionDiagnostics(error, project);\n const details = captured ? summarizeDiagnostic(captured) : null;\n return details\n ? {\n errorMessage: details.message.slice(0, 8192),\n ...(details.type ? { errorType: details.type.slice(0, 256) } : {}),\n }\n : {};\n}\nexport function isModelTraceSpan(name: string) {\n return name === \"runReasonEngine\" || name === \"useReason\";\n}\n","import { randomUUID } from \"node:crypto\";\nimport {\n createExecutionCancelledError,\n throwIfExecutionAborted,\n} from \"@kortyx/core\";\nimport { KortyxError } from \"@kortyx/core/errors\";\nimport type {\n KortyxContinuation,\n KortyxFinishReason,\n KortyxPromptMessage,\n KortyxProviderMetadata,\n KortyxReasoningOptions,\n KortyxResponseFormat,\n KortyxToolCall,\n KortyxToolDefinition,\n KortyxUsage,\n KortyxWarning,\n ProviderModelRef,\n} from \"@kortyx/providers\";\nimport { safeStartSpan } from \"./safe-tracing\";\nimport type {\n KortyxTraceMetadata,\n ReasonTraceAdapter,\n ReasonTraceSpan,\n} from \"./tracing\";\nimport { usage } from \"./usage\";\n\nfunction assertModelFinish(result: {\n finishReason?: KortyxFinishReason | undefined;\n usage?: KortyxUsage | undefined;\n}): void {\n if (result.finishReason?.unified !== \"content-filter\") return;\n throw Object.assign(\n new KortyxError(\"PROVIDER_REFUSAL\", \"The provider refused the request.\", {\n category: \"provider\",\n retryable: false,\n safeMessage: \"The provider refused the request.\",\n }),\n {\n ...(result.usage ? { usage: result.usage } : {}),\n finishReason: result.finishReason,\n },\n );\n}\n\nexport interface RunReasonEngineArgs {\n model: ProviderModelRef;\n input: string;\n system?: string | undefined;\n temperature?: number | undefined;\n maxOutputTokens?: number | undefined;\n stopSequences?: string[] | undefined;\n abortSignal?: AbortSignal | undefined;\n reasoning?: KortyxReasoningOptions | undefined;\n responseFormat?: KortyxResponseFormat | undefined;\n providerOptions?: Record<string, unknown> | undefined;\n tools?: KortyxToolDefinition[] | undefined;\n messages?: KortyxPromptMessage[] | undefined;\n defaultTemperature?: number | undefined;\n stream?: boolean | undefined;\n emit?: boolean | undefined;\n nodeId?: string | undefined;\n emitEvent?: ((event: string, payload: unknown) => void) | undefined;\n onTextChunk?: ((text: string) => void) | undefined;\n id?: string | undefined;\n opId?: string | undefined;\n segmentId?: string | undefined;\n telemetry?: KortyxTraceMetadata | undefined;\n reasonTrace?: ReasonTraceAdapter | undefined;\n}\n\nexport interface RunReasonEngineResult {\n continuation?: KortyxContinuation;\n text: string;\n raw?: unknown;\n usage?: KortyxUsage;\n finishReason?: KortyxFinishReason;\n toolCalls?: KortyxToolCall[];\n providerMetadata?: KortyxProviderMetadata;\n warnings?: KortyxWarning[];\n}\n\nconst toError = (value: unknown): Error =>\n value instanceof Error ? value : new Error(String(value));\n\nconst createRuntimeId = (): string => {\n try {\n return randomUUID();\n } catch {\n return `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n }\n};\n\nconst emitNodeEvent = (\n emitEvent: RunReasonEngineArgs[\"emitEvent\"],\n nodeId: string | undefined,\n event: string,\n payload: Record<string, unknown>,\n): void => {\n if (!emitEvent) return;\n emitEvent(event, {\n ...payload,\n ...(typeof nodeId === \"string\" && nodeId.length > 0\n ? { node: nodeId }\n : {}),\n });\n};\n\nexport const resolveProviderOptions = (\n defaults: Record<string, unknown> | undefined,\n overrides: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined => {\n const providerOptions =\n defaults || overrides ? { ...defaults, ...overrides } : undefined;\n // Provider namespaces inherit model defaults (including transport) while\n // allowing individual call settings to override them.\n for (const [key, value] of Object.entries(overrides ?? {})) {\n const previous = defaults?.[key];\n if (\n previous &&\n value &&\n typeof previous === \"object\" &&\n typeof value === \"object\" &&\n !Array.isArray(previous) &&\n !Array.isArray(value)\n ) {\n if (providerOptions) providerOptions[key] = { ...previous, ...value };\n }\n }\n return providerOptions;\n};\n\nasync function runReasonEngineInternal(\n args: RunReasonEngineArgs,\n): Promise<RunReasonEngineResult> {\n let stream = args.stream ?? args.model.options?.streaming ?? true;\n const emit = args.emit ?? true;\n const temperature =\n args.temperature ??\n args.model.options?.temperature ??\n args.defaultTemperature;\n const maxOutputTokens =\n args.maxOutputTokens ?? args.model.options?.maxOutputTokens;\n const stopSequences = args.stopSequences ?? args.model.options?.stopSequences;\n const abortSignal = args.abortSignal ?? args.model.options?.abortSignal;\n const reasoning = args.reasoning ?? args.model.options?.reasoning;\n const responseFormat =\n args.responseFormat ?? args.model.options?.responseFormat;\n const providerOptions = resolveProviderOptions(\n args.model.options?.providerOptions,\n args.providerOptions,\n );\n const tools = args.tools ?? args.model.options?.tools;\n\n throwIfExecutionAborted(abortSignal);\n const model = args.model.provider.getModel(args.model.modelId, {\n ...(temperature !== undefined ? { temperature } : {}),\n streaming: stream,\n ...(maxOutputTokens !== undefined ? { maxOutputTokens } : {}),\n ...(stopSequences !== undefined ? { stopSequences } : {}),\n ...(abortSignal !== undefined ? { abortSignal } : {}),\n ...(reasoning !== undefined ? { reasoning } : {}),\n ...(responseFormat !== undefined ? { responseFormat } : {}),\n ...(tools !== undefined ? { tools } : {}),\n ...(providerOptions !== undefined ? { providerOptions } : {}),\n });\n\n if (tools?.length && !model.supportsToolStreaming) stream = false;\n usage.feature(\"sdk.model\", {\n streaming: stream,\n tools: Boolean(tools?.length),\n provider: args.model.provider.id,\n });\n\n const messages: KortyxPromptMessage[] =\n args.messages !== undefined\n ? args.messages\n : [\n ...(typeof args.system === \"string\" && args.system.length > 0\n ? [{ role: \"system\" as const, content: args.system }]\n : []),\n { role: \"user\" as const, content: String(args.input ?? \"\") },\n ];\n\n const opId =\n typeof args.opId === \"string\" && args.opId.length > 0\n ? args.opId\n : createRuntimeId();\n const segmentId =\n typeof args.segmentId === \"string\" && args.segmentId.length > 0\n ? args.segmentId\n : createRuntimeId();\n\n const commonMeta: Record<string, unknown> = {\n ...(typeof args.id === \"string\" && args.id.length > 0\n ? { id: args.id }\n : {}),\n opId,\n segmentId,\n };\n const traceSpan = safeStartSpan(args.reasonTrace, {\n name: \"runReasonEngine\",\n attributes: {\n ...commonMeta,\n providerId: args.model.provider.id,\n modelId: args.model.modelId,\n stream,\n emit,\n ...(args.telemetry?.operation\n ? { operation: args.telemetry.operation }\n : {}),\n ...(args.telemetry?.prompt?.name\n ? { promptName: args.telemetry.prompt.name }\n : {}),\n ...(args.telemetry?.prompt?.version !== undefined\n ? { promptVersion: args.telemetry.prompt.version }\n : {}),\n ...(args.telemetry?.prompt?.type\n ? { promptType: args.telemetry.prompt.type }\n : {}),\n ...(typeof args.nodeId === \"string\" && args.nodeId.length > 0\n ? { nodeId: args.nodeId }\n : {}),\n },\n telemetry: {\n ...(args.telemetry ?? {}),\n input:\n args.telemetry?.input ??\n messages.map(\n ({ continuation: _continuation, raw: _raw, ...message }) => message,\n ),\n },\n });\n const modelRequestStartedAt = Date.now();\n let firstTextTokenAt: number | undefined;\n let lastTextTokenAt: number | undefined;\n\n const generationTimingAttributes = (): Record<string, number> =>\n firstTextTokenAt === undefined || lastTextTokenAt === undefined\n ? {}\n : {\n ttftMs: Math.max(0, firstTextTokenAt - modelRequestStartedAt),\n streamDurationMs: Math.max(0, lastTextTokenAt - firstTextTokenAt),\n timeToLastTokenMs: Math.max(\n 0,\n lastTextTokenAt - modelRequestStartedAt,\n ),\n };\n\n const endTrace = (\n span: ReasonTraceSpan | undefined,\n result: RunReasonEngineResult,\n ): void => {\n span?.end?.({\n ...(result.usage !== undefined ? { usage: result.usage } : {}),\n ...(result.finishReason !== undefined\n ? { finishReason: result.finishReason }\n : {}),\n ...(result.providerMetadata !== undefined\n ? { providerMetadata: result.providerMetadata }\n : {}),\n ...(result.warnings !== undefined ? { warnings: result.warnings } : {}),\n attributes: {\n textLength: result.text.length,\n ...generationTimingAttributes(),\n },\n telemetry: {\n ...(args.telemetry ?? {}),\n output: args.telemetry?.output ?? result.text,\n },\n });\n };\n\n const failTrace = (\n span: ReasonTraceSpan | undefined,\n error: unknown,\n ): void => {\n const detail = error as Partial<RunReasonEngineResult> | undefined;\n try {\n span?.fail?.(error, {\n ...(detail?.usage ? { usage: detail.usage } : {}),\n ...(detail?.finishReason ? { finishReason: detail.finishReason } : {}),\n ...(detail?.providerMetadata\n ? { providerMetadata: detail.providerMetadata }\n : {}),\n attributes: {\n providerId: args.model.provider.id,\n modelId: args.model.modelId,\n },\n });\n } catch {\n /* Reporting must not replace the execution failure. */\n }\n };\n\n try {\n if (stream) {\n let continuation: KortyxContinuation | undefined;\n let final = \"\";\n let raw: unknown;\n let usage: KortyxUsage | undefined;\n let finishReason: KortyxFinishReason | undefined;\n let toolCalls: KortyxToolCall[] | undefined;\n let providerMetadata: KortyxProviderMetadata | undefined;\n let warnings: KortyxWarning[] | undefined;\n\n if (emit) {\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-start\", {\n ...commonMeta,\n });\n }\n\n const response = await model.stream(messages);\n for await (const chunk of response) {\n throwIfExecutionAborted(abortSignal);\n switch (chunk.type) {\n case \"text-delta\": {\n if (chunk.delta.length === 0) break;\n const tokenAt = Date.now();\n firstTextTokenAt ??= tokenAt;\n lastTextTokenAt = tokenAt;\n final += chunk.delta;\n args.onTextChunk?.(chunk.delta);\n if (chunk.raw !== undefined) {\n raw = chunk.raw;\n }\n if (chunk.providerMetadata !== undefined) {\n providerMetadata = chunk.providerMetadata;\n }\n if (emit) {\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-delta\", {\n ...commonMeta,\n delta: chunk.delta,\n });\n }\n break;\n }\n case \"finish\": {\n continuation = chunk.continuation;\n if (chunk.raw !== undefined) {\n raw = chunk.raw;\n }\n if (chunk.usage !== undefined) {\n usage = chunk.usage;\n }\n if (chunk.finishReason !== undefined) {\n finishReason = chunk.finishReason;\n }\n if (chunk.toolCalls !== undefined) {\n toolCalls = chunk.toolCalls;\n }\n if (chunk.providerMetadata !== undefined) {\n providerMetadata = chunk.providerMetadata;\n }\n if (chunk.warnings !== undefined) {\n warnings = chunk.warnings;\n }\n break;\n }\n case \"raw\": {\n raw = chunk.raw;\n if (chunk.providerMetadata !== undefined) {\n providerMetadata = chunk.providerMetadata;\n }\n break;\n }\n case \"error\": {\n if (chunk.raw !== undefined) {\n raw = chunk.raw;\n }\n if (chunk.providerMetadata !== undefined) {\n providerMetadata = chunk.providerMetadata;\n }\n if (chunk.warnings !== undefined) {\n warnings = chunk.warnings;\n }\n throw toError(chunk.error);\n }\n }\n }\n\n throwIfExecutionAborted(abortSignal);\n assertModelFinish({ finishReason, usage });\n if (emit) {\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-end\", {\n ...commonMeta,\n });\n }\n\n const result = {\n text: final,\n ...(continuation ? { continuation } : {}),\n ...(raw !== undefined ? { raw } : {}),\n ...(usage !== undefined ? { usage } : {}),\n ...(finishReason !== undefined ? { finishReason } : {}),\n ...(toolCalls !== undefined ? { toolCalls } : {}),\n ...(providerMetadata !== undefined ? { providerMetadata } : {}),\n ...(warnings !== undefined ? { warnings } : {}),\n };\n throwIfExecutionAborted(abortSignal);\n endTrace(traceSpan, result);\n return result;\n }\n\n const response = await model.invoke(messages);\n throwIfExecutionAborted(abortSignal);\n assertModelFinish(response);\n if (response.content) args.onTextChunk?.(response.content);\n\n if (emit) {\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-start\", {\n ...commonMeta,\n });\n if (response.content) {\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-delta\", {\n ...commonMeta,\n delta: response.content,\n });\n }\n emitNodeEvent(args.emitEvent, args.nodeId, \"text-end\", {\n ...commonMeta,\n });\n }\n\n const result = {\n text: response.content,\n ...(response.continuation ? { continuation: response.continuation } : {}),\n ...(response.raw !== undefined ? { raw: response.raw } : {}),\n ...(response.usage !== undefined ? { usage: response.usage } : {}),\n ...(response.finishReason !== undefined\n ? { finishReason: response.finishReason }\n : {}),\n ...(response.toolCalls !== undefined\n ? { toolCalls: response.toolCalls }\n : {}),\n ...(response.providerMetadata !== undefined\n ? { providerMetadata: response.providerMetadata }\n : {}),\n ...(response.warnings !== undefined\n ? { warnings: response.warnings }\n : {}),\n };\n endTrace(traceSpan, result);\n return result;\n } catch (error) {\n const failure = abortSignal?.aborted\n ? createExecutionCancelledError()\n : error;\n failTrace(traceSpan, failure);\n throw failure;\n }\n}\n\nexport function runReasonEngine(\n args: RunReasonEngineArgs,\n): Promise<RunReasonEngineResult> {\n return usage.measure(\"sdk.model\", () => runReasonEngineInternal(args), {\n provider: args.model.provider.id,\n requested_streaming: args.stream ?? args.model.options?.streaming ?? true,\n tools: Boolean((args.tools ?? args.model.options?.tools)?.length),\n format:\n args.responseFormat?.type ??\n args.model.options?.responseFormat?.type ??\n \"text\",\n });\n}\n","import type {\n ReasonTraceAdapter,\n ReasonTraceAttributes,\n ReasonTraceSpan,\n ReasonTraceSpanEndArgs,\n ReasonTraceSpanStartArgs,\n} from \"./tracing\";\n\n/** Observation callbacks never participate in execution's error path. */\nexport function safeSpan(span: ReasonTraceSpan | undefined): ReasonTraceSpan {\n const guard =\n <T extends unknown[]>(fn: ((...args: T) => void) | undefined) =>\n (...args: T) => {\n try {\n fn?.(...args);\n } catch {}\n };\n let ended = false;\n const finish =\n <T extends unknown[]>(fn: ((...args: T) => void) | undefined) =>\n (...args: T) => {\n if (ended) return;\n ended = true;\n guard(fn)(...args);\n };\n return {\n addEvent: guard((name: string, attributes?: ReasonTraceAttributes) =>\n span?.addEvent?.(name, attributes),\n ),\n setAttributes: guard((attributes: ReasonTraceAttributes) =>\n span?.setAttributes?.(attributes),\n ),\n end: finish((args?: ReasonTraceSpanEndArgs) => span?.end?.(args)),\n fail: finish((error: unknown, args?: ReasonTraceSpanEndArgs) => {\n if (span?.fail) span.fail(error, args);\n else span?.end?.(args);\n }),\n };\n}\n\nexport function safeStartSpan(\n adapter: Partial<ReasonTraceAdapter> | undefined,\n args: ReasonTraceSpanStartArgs,\n): ReasonTraceSpan {\n try {\n return safeSpan(adapter?.startSpan?.(args));\n } catch {\n return safeSpan(undefined);\n }\n}\n\n/** Retains active adapter context, and never retries a callback if observation fails. */\nexport async function withSafeTraceSpan<T>(\n adapter: Partial<ReasonTraceAdapter> | undefined,\n args: ReasonTraceSpanStartArgs,\n fn: (span: ReasonTraceSpan) => Promise<T>,\n): Promise<T> {\n let execution: Promise<T> | undefined;\n const invoke = (span: ReasonTraceSpan) => {\n execution ??= Promise.resolve().then(async () => {\n const observed = safeSpan(span);\n try {\n const result = await fn(observed);\n observed.end?.();\n return result;\n } catch (error) {\n observed.fail?.(error);\n throw error;\n }\n });\n return execution;\n };\n let activeScope: ReasonTraceAdapter[\"withSpan\"];\n try {\n activeScope = adapter?.withSpan?.bind(adapter);\n } catch {}\n if (activeScope) {\n let started: (() => void) | undefined;\n const invoked = new Promise<void>((resolve) => {\n started = resolve;\n });\n const observe = async () => {\n try {\n await activeScope(args, (span) => {\n const result = invoke(span);\n started?.();\n return result;\n });\n } catch {\n /* The execution promise preserves its own failure. */\n }\n };\n const observation = observe();\n // Delivery or adapter work after the callback must not hold up execution.\n if (!execution) await Promise.race([invoked, observation]);\n } else {\n await invoke(safeStartSpan(adapter, args)).catch(() => {});\n }\n return execution ?? invoke(safeSpan(undefined));\n}\n","import type { UsageTelemetry } from \"@kortyx/usage-telemetry\";\nimport { getUsageTelemetry } from \"@kortyx/usage-telemetry/node\";\nimport packageJson from \"../package.json\";\n\nconst client = () => getUsageTelemetry(\"hooks\", packageJson.version);\nexport const usage: Pick<\n UsageTelemetry,\n \"start\" | \"feature\" | \"measure\" | \"flush\"\n> = {\n start: (...args) => client().start(...args),\n feature: (...args) => client().feature(...args),\n measure: (...args) => client().measure(...args),\n flush: () => client().flush(),\n};\n","{\n \"name\": \"@kortyx/hooks\",\n \"version\": \"0.35.1\",\n \"private\": false,\n \"description\": \"Lifecycle hooks and extension points for Kortyx.\",\n \"keywords\": [\n \"ai\",\n \"agent\",\n \"agents\",\n \"orchestration\",\n \"framework\",\n \"hooks\",\n \"kortyx\"\n ],\n \"license\": \"Apache-2.0\",\n \"homepage\": \"https://kortyx.io/\",\n \"bugs\": {\n \"url\": \"https://github.com/kortyx-io/kortyx/issues\"\n },\n \"author\": \"Kortyx (https://github.com/kortyx-io)\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"./internal\": {\n \"types\": \"./dist/internal.d.ts\",\n \"default\": \"./dist/internal.js\"\n }\n },\n \"files\": [\n \"dist/**\",\n \"README.md\",\n \"CHANGELOG.md\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"predev\": \"tsc -p tsconfig.build.json\",\n \"dev\": \"tsc --watch\",\n \"lint\": \"biome check src\",\n \"test\": \"vitest run && pnpm -s type-check\",\n \"coverage\": \"vitest run --coverage && pnpm -s type-check\",\n \"test:watch\": \"vitest\",\n \"type-check\": \"tsc --noEmit -p tsconfig.test.json\"\n },\n \"dependencies\": {\n \"@kortyx/core\": \"workspace:*\",\n \"@kortyx/providers\": \"workspace:*\",\n \"@kortyx/telemetry-contracts\": \"workspace:*\",\n \"zod\": \"catalog:\",\n \"@kortyx/prompts\": \"workspace:*\",\n \"@kortyx/usage-telemetry\": \"workspace:*\"\n },\n \"devDependencies\": {\n \"turbo\": \"catalog:\",\n \"typescript\": \"catalog:\",\n \"tsup\": \"catalog:\",\n \"vitest\": \"catalog:\",\n \"@vitest/coverage-v8\": \"catalog:\"\n },\n \"sideEffects\": false,\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/kortyx-io/kortyx.git\",\n \"directory\": \"packages/hooks\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","/** Strip credential-shaped fields before metadata reaches any adapter/exporter. */\nconst privateField =\n /^(?:password|passwd|secret|clientsecret|privatekey|credential|credentials|authorization|bearer|bearertoken|jwt|token|accesstoken|refreshtoken|authtoken|apikey|apisecret|cookie|setcookie|resumehandle|resumetoken)$/;\nexport function safeTelemetryMetadata(\n value: Record<string, unknown>,\n): Record<string, unknown> {\n const seen = new WeakSet<object>();\n const visit = (input: unknown, depth: number): unknown => {\n if (depth > 8 || typeof input === \"function\" || typeof input === \"symbol\")\n return undefined;\n if (!input || typeof input !== \"object\") return input;\n if (seen.has(input)) return undefined;\n seen.add(input);\n if (Array.isArray(input))\n return input.map((item) => visit(item, depth + 1));\n return Object.fromEntries(\n Object.entries(input).flatMap(([key, nested]) =>\n privateField.test(key.toLowerCase().replace(/[^a-z0-9]/g, \"\"))\n ? []\n : [[key, visit(nested, depth + 1)]],\n ),\n );\n };\n try {\n return visit(value, 0) as Record<string, unknown>;\n } catch {\n return {};\n }\n}\n"],"mappings":"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","names":["import_telemetry_contracts","import_telemetry_contracts","usage","response","result"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kortyx/hooks",
3
- "version": "0.35.0",
3
+ "version": "0.35.1",
4
4
  "private": false,
5
5
  "description": "Lifecycle hooks and extension points for Kortyx.",
6
6
  "keywords": [
@@ -39,9 +39,9 @@
39
39
  "zod": "^4.3.6",
40
40
  "@kortyx/core": "0.15.0",
41
41
  "@kortyx/providers": "0.9.4",
42
- "@kortyx/telemetry-contracts": "0.18.0",
43
- "@kortyx/prompts": "0.2.2",
44
- "@kortyx/usage-telemetry": "0.4.0"
42
+ "@kortyx/prompts": "0.2.3",
43
+ "@kortyx/telemetry-contracts": "0.19.0",
44
+ "@kortyx/usage-telemetry": "0.5.0"
45
45
  },
46
46
  "devDependencies": {
47
47
  "turbo": "2.9.14",