@absolutejs/voice 0.0.22-beta.145 → 0.0.22-beta.146
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/auditSinks.d.ts +18 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +104 -0
- package/dist/trace.d.ts +18 -0
- package/package.json +1 -1
package/dist/auditSinks.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { S3Client, S3Options } from 'bun';
|
|
1
2
|
import type { StoredVoiceAuditEvent, VoiceAuditEventStore, VoiceAuditEventType } from './audit';
|
|
2
3
|
import type { VoiceIdempotencyStore, VoiceRedisTaskLeaseCoordinator } from './queue';
|
|
3
4
|
import type { VoiceTraceRedactionConfig } from './trace';
|
|
@@ -59,6 +60,22 @@ export type VoiceAuditHTTPSinkOptions<TBody extends Record<string, unknown> = Re
|
|
|
59
60
|
timeoutMs?: number;
|
|
60
61
|
url: string;
|
|
61
62
|
};
|
|
63
|
+
export type VoiceS3AuditSinkFile = {
|
|
64
|
+
write: (data: string, options?: BlobPropertyBag) => Promise<number> | number;
|
|
65
|
+
};
|
|
66
|
+
export type VoiceS3AuditSinkClient = Pick<S3Client, 'file'>;
|
|
67
|
+
export type VoiceAuditS3SinkOptions<TBody extends Record<string, unknown> = Record<string, unknown>> = S3Options & {
|
|
68
|
+
body?: (input: {
|
|
69
|
+
events: StoredVoiceAuditEvent[];
|
|
70
|
+
key: string;
|
|
71
|
+
}) => Promise<TBody> | TBody;
|
|
72
|
+
client?: VoiceS3AuditSinkClient;
|
|
73
|
+
contentType?: string;
|
|
74
|
+
eventTypes?: VoiceAuditEventType[];
|
|
75
|
+
id: string;
|
|
76
|
+
keyPrefix?: string;
|
|
77
|
+
kind?: string;
|
|
78
|
+
};
|
|
62
79
|
export type VoiceAuditSinkStoreOptions<TEvent extends StoredVoiceAuditEvent = StoredVoiceAuditEvent> = {
|
|
63
80
|
awaitDelivery?: boolean;
|
|
64
81
|
deliveryQueue?: VoiceAuditSinkDeliveryStore;
|
|
@@ -117,6 +134,7 @@ export declare const createVoiceAuditSinkDeliveryRecord: (input: {
|
|
|
117
134
|
id?: string;
|
|
118
135
|
} & Partial<Omit<VoiceAuditSinkDeliveryRecord, "createdAt" | "events" | "id">>) => VoiceAuditSinkDeliveryRecord;
|
|
119
136
|
export declare const createVoiceAuditHTTPSink: <TBody extends Record<string, unknown> = Record<string, unknown>>(options: VoiceAuditHTTPSinkOptions<TBody>) => VoiceAuditSink;
|
|
137
|
+
export declare const createVoiceAuditS3Sink: <TBody extends Record<string, unknown> = Record<string, unknown>>(options: VoiceAuditS3SinkOptions<TBody>) => VoiceAuditSink;
|
|
120
138
|
export declare const deliverVoiceAuditEventsToSinks: (input: {
|
|
121
139
|
events: StoredVoiceAuditEvent[];
|
|
122
140
|
redact?: VoiceTraceRedactionConfig;
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export { createVoiceAssistantHealthHTMLHandler, createVoiceAssistantHealthJSONHa
|
|
|
6
6
|
export { createVoiceAuditEvent, createVoiceAuditLogger, createVoiceMemoryAuditEventStore, filterVoiceAuditEvents, recordVoiceAuditEvent, recordVoiceHandoffAuditEvent, recordVoiceOperatorAuditEvent, recordVoiceProviderAuditEvent, recordVoiceRetentionAuditEvent, recordVoiceToolAuditEvent } from './audit';
|
|
7
7
|
export { buildVoiceAuditTrailReport, createVoiceAuditTrailRoutes, renderVoiceAuditTrailHTML, resolveVoiceAuditTrailFilter, summarizeVoiceAuditTrail } from './auditRoutes';
|
|
8
8
|
export { buildVoiceAuditExport, exportVoiceAuditTrail, redactVoiceAuditEvent, redactVoiceAuditEvents, renderVoiceAuditHTML, renderVoiceAuditMarkdown } from './auditExport';
|
|
9
|
-
export { createVoiceAuditHTTPSink, createVoiceAuditSinkDeliveryId, createVoiceAuditSinkDeliveryRecord, createVoiceAuditSinkDeliveryWorker, createVoiceAuditSinkDeliveryWorkerLoop, createVoiceAuditSinkStore, createVoiceMemoryAuditSinkDeliveryStore, deliverVoiceAuditEventsToSinks, summarizeVoiceAuditSinkDeliveries } from './auditSinks';
|
|
9
|
+
export { createVoiceAuditHTTPSink, createVoiceAuditS3Sink, createVoiceAuditSinkDeliveryId, createVoiceAuditSinkDeliveryRecord, createVoiceAuditSinkDeliveryWorker, createVoiceAuditSinkDeliveryWorkerLoop, createVoiceAuditSinkStore, createVoiceMemoryAuditSinkDeliveryStore, deliverVoiceAuditEventsToSinks, summarizeVoiceAuditSinkDeliveries } from './auditSinks';
|
|
10
10
|
export { buildVoiceAuditDeliveryReport, createVoiceAuditDeliveryHTMLHandler, createVoiceAuditDeliveryJSONHandler, createVoiceAuditDeliveryRoutes, renderVoiceAuditDeliveryHTML, resolveVoiceAuditDeliveryFilter } from './auditDeliveryRoutes';
|
|
11
11
|
export { createVoiceBargeInRoutes, renderVoiceBargeInHTML, summarizeVoiceBargeIn } from './bargeInRoutes';
|
|
12
12
|
export { createVoiceReconnectContractRoutes, renderVoiceReconnectContractHTML, summarizeVoiceReconnectContractSnapshots, runVoiceReconnectContract } from './reconnectContract';
|
|
@@ -47,7 +47,7 @@ export { createVoiceOpsStatusRoutes, renderVoiceOpsStatusHTML } from './opsStatu
|
|
|
47
47
|
export { createVoiceQualityRoutes, evaluateVoiceQuality, renderVoiceQualityHTML } from './qualityRoutes';
|
|
48
48
|
export { createVoiceResilienceRoutes, createVoiceRoutingDecisionSummary, listVoiceRoutingEvents, renderVoiceResilienceHTML, summarizeVoiceRoutingDecision, summarizeVoiceRoutingSessions } from './resilienceRoutes';
|
|
49
49
|
export { createVoiceSTTProviderRouter, createVoiceTTSProviderRouter } from './providerAdapters';
|
|
50
|
-
export { buildVoiceTraceReplay, createVoiceMemoryTraceSinkDeliveryStore, createVoiceTraceHTTPSink, createVoiceMemoryTraceEventStore, createVoiceTraceSinkDeliveryId, createVoiceTraceSinkDeliveryRecord, createVoiceTraceSinkStore, createVoiceTraceEvent, createVoiceTraceEventId, deliverVoiceTraceEventsToSinks, evaluateVoiceTrace, exportVoiceTrace, filterVoiceTraceEvents, pruneVoiceTraceEvents, redactVoiceTraceEvent, redactVoiceTraceEvents, redactVoiceTraceText, renderVoiceTraceHTML, renderVoiceTraceMarkdown, resolveVoiceTraceRedactionOptions, selectVoiceTraceEventsForPrune, summarizeVoiceTrace } from './trace';
|
|
50
|
+
export { buildVoiceTraceReplay, createVoiceMemoryTraceSinkDeliveryStore, createVoiceTraceHTTPSink, createVoiceTraceS3Sink, createVoiceMemoryTraceEventStore, createVoiceTraceSinkDeliveryId, createVoiceTraceSinkDeliveryRecord, createVoiceTraceSinkStore, createVoiceTraceEvent, createVoiceTraceEventId, deliverVoiceTraceEventsToSinks, evaluateVoiceTrace, exportVoiceTrace, filterVoiceTraceEvents, pruneVoiceTraceEvents, redactVoiceTraceEvent, redactVoiceTraceEvents, redactVoiceTraceText, renderVoiceTraceHTML, renderVoiceTraceMarkdown, resolveVoiceTraceRedactionOptions, selectVoiceTraceEventsForPrune, summarizeVoiceTrace } from './trace';
|
|
51
51
|
export { buildVoiceTraceDeliveryReport, createVoiceTraceDeliveryHTMLHandler, createVoiceTraceDeliveryJSONHandler, createVoiceTraceDeliveryRoutes, renderVoiceTraceDeliveryHTML, resolveVoiceTraceDeliveryFilter } from './traceDeliveryRoutes';
|
|
52
52
|
export { createVoiceTraceTimelineRoutes, renderVoiceTraceTimelineHTML, renderVoiceTraceTimelineSessionHTML, summarizeVoiceTraceTimeline } from './traceTimeline';
|
|
53
53
|
export { createVoiceSQLiteAuditEventStore, createVoiceSQLiteAuditSinkDeliveryStore, createVoiceSQLiteCampaignStore, createVoiceSQLiteExternalObjectMapStore, createVoiceSQLiteIntegrationEventStore, createVoiceSQLiteReviewStore, createVoiceSQLiteRuntimeStorage, createVoiceSQLiteSessionStore, createVoiceSQLiteTaskStore, createVoiceSQLiteTelephonyWebhookIdempotencyStore, createVoiceSQLiteTraceSinkDeliveryStore, createVoiceSQLiteTraceEventStore } from './sqliteStore';
|
|
@@ -117,10 +117,10 @@ export type { StoredVoiceCallReviewArtifact, VoiceCallReviewArtifact, VoiceCallR
|
|
|
117
117
|
export type { StoredVoiceAuditEvent, VoiceAuditActor, VoiceAuditEvent, VoiceAuditEventFilter, VoiceAuditEventStore, VoiceAuditEventType, VoiceAuditLogger, VoiceAuditOutcome, VoiceAuditResource, VoiceHandoffAuditEventInput, VoiceOperatorAuditEventInput, VoiceProviderAuditEventInput, VoiceRetentionAuditEventInput, VoiceToolAuditEventInput } from './audit';
|
|
118
118
|
export type { VoiceAuditTrailOptions, VoiceAuditTrailReport, VoiceAuditTrailRoutesOptions, VoiceAuditTrailSummary } from './auditRoutes';
|
|
119
119
|
export type { VoiceAuditExport } from './auditExport';
|
|
120
|
-
export type { VoiceAuditHTTPSinkOptions, VoiceAuditSink, VoiceAuditSinkDeliveryQueueStatus, VoiceAuditSinkDeliveryQueueSummary, VoiceAuditSinkDeliveryRecord, VoiceAuditSinkDeliveryResult, VoiceAuditSinkDeliveryStatus, VoiceAuditSinkDeliveryStore, VoiceAuditSinkDeliveryWorkerLoop, VoiceAuditSinkDeliveryWorkerLoopOptions, VoiceAuditSinkDeliveryWorkerOptions, VoiceAuditSinkDeliveryWorkerResult, VoiceAuditSinkFanoutResult, VoiceAuditSinkStoreOptions } from './auditSinks';
|
|
120
|
+
export type { VoiceAuditHTTPSinkOptions, VoiceAuditS3SinkOptions, VoiceS3AuditSinkClient, VoiceS3AuditSinkFile, VoiceAuditSink, VoiceAuditSinkDeliveryQueueStatus, VoiceAuditSinkDeliveryQueueSummary, VoiceAuditSinkDeliveryRecord, VoiceAuditSinkDeliveryResult, VoiceAuditSinkDeliveryStatus, VoiceAuditSinkDeliveryStore, VoiceAuditSinkDeliveryWorkerLoop, VoiceAuditSinkDeliveryWorkerLoopOptions, VoiceAuditSinkDeliveryWorkerOptions, VoiceAuditSinkDeliveryWorkerResult, VoiceAuditSinkFanoutResult, VoiceAuditSinkStoreOptions } from './auditSinks';
|
|
121
121
|
export type { VoiceAuditDeliveryDrainReport, VoiceAuditDeliveryDrainWorker, VoiceAuditDeliveryFilter, VoiceAuditDeliveryReport, VoiceAuditDeliveryRoutesOptions } from './auditDeliveryRoutes';
|
|
122
122
|
export type { VoiceFileRuntimeStorage, VoiceFileStoreOptions } from './fileStore';
|
|
123
|
-
export type { StoredVoiceTraceEvent, VoiceTraceEvaluation, VoiceTraceEvaluationOptions, VoiceTraceEvent, VoiceTraceEventFilter, VoiceTraceEventStore, VoiceTraceEventType, VoiceTraceIssue, VoiceTraceIssueSeverity, VoiceTraceHTTPSinkOptions, VoiceTracePruneFilter, VoiceTracePruneOptions, VoiceTracePruneResult, VoiceTraceRedactionConfig, VoiceTraceRedactionOptions, VoiceTraceRedactionReplacement, VoiceResolvedTraceRedactionOptions, VoiceTraceSink, VoiceTraceSinkDeliveryQueueStatus, VoiceTraceSinkDeliveryRecord, VoiceTraceSinkDeliveryResult, VoiceTraceSinkDeliveryStatus, VoiceTraceSinkDeliveryStore, VoiceTraceSinkFanoutResult, VoiceTraceSinkStoreOptions, VoiceTraceSummary } from './trace';
|
|
123
|
+
export type { StoredVoiceTraceEvent, VoiceTraceEvaluation, VoiceTraceEvaluationOptions, VoiceTraceEvent, VoiceTraceEventFilter, VoiceTraceEventStore, VoiceTraceEventType, VoiceTraceIssue, VoiceTraceIssueSeverity, VoiceTraceHTTPSinkOptions, VoiceTraceS3SinkOptions, VoiceTracePruneFilter, VoiceTracePruneOptions, VoiceTracePruneResult, VoiceTraceRedactionConfig, VoiceTraceRedactionOptions, VoiceTraceRedactionReplacement, VoiceResolvedTraceRedactionOptions, VoiceTraceSink, VoiceTraceSinkDeliveryQueueStatus, VoiceTraceSinkDeliveryRecord, VoiceTraceSinkDeliveryResult, VoiceTraceSinkDeliveryStatus, VoiceTraceSinkDeliveryStore, VoiceTraceSinkFanoutResult, VoiceTraceSinkStoreOptions, VoiceTraceSummary, VoiceS3TraceSinkClient, VoiceS3TraceSinkFile } from './trace';
|
|
124
124
|
export type { VoiceTraceDeliveryDrainReport, VoiceTraceDeliveryDrainWorker, VoiceTraceDeliveryFilter, VoiceTraceDeliveryReport, VoiceTraceDeliveryRoutesOptions } from './traceDeliveryRoutes';
|
|
125
125
|
export type { VoiceTraceTimelineEvent, VoiceTraceTimelineProviderSummary, VoiceTraceTimelineReport, VoiceTraceTimelineRoutesOptions, VoiceTraceTimelineSession } from './traceTimeline';
|
|
126
126
|
export type { VoicePostgresClient, VoicePostgresRuntimeStorage, VoicePostgresStoreOptions } from './postgresStore';
|
package/dist/index.js
CHANGED
|
@@ -8534,6 +8534,17 @@ var createVoiceTraceSinkDeliveryError = (input) => {
|
|
|
8534
8534
|
}
|
|
8535
8535
|
return `Attempt ${input.attempt} failed: ${String(input.error)}`;
|
|
8536
8536
|
};
|
|
8537
|
+
var normalizeVoiceTraceS3KeyPrefix = (prefix) => prefix?.trim().replace(/^\/+|\/+$/g, "") ?? "voice/trace-deliveries";
|
|
8538
|
+
var createVoiceTraceS3ObjectKey = (prefix, events) => {
|
|
8539
|
+
const firstEvent = events[0];
|
|
8540
|
+
const safeSessionId = encodeURIComponent(firstEvent?.sessionId ?? "trace");
|
|
8541
|
+
const safeEventId = encodeURIComponent(firstEvent?.id ?? crypto.randomUUID());
|
|
8542
|
+
return `${prefix}/${safeSessionId}/${Date.now()}-${safeEventId}.json`;
|
|
8543
|
+
};
|
|
8544
|
+
var resolveVoiceS3DeliveredTo = (options, key) => {
|
|
8545
|
+
const bucket = options.bucket;
|
|
8546
|
+
return bucket ? `s3://${bucket}/${key}` : `s3://${key}`;
|
|
8547
|
+
};
|
|
8537
8548
|
var aggregateVoiceTraceSinkDeliveryStatus = (deliveries) => {
|
|
8538
8549
|
const statuses = Object.values(deliveries).map((delivery) => delivery.status);
|
|
8539
8550
|
if (statuses.length === 0 || statuses.every((status) => status === "skipped")) {
|
|
@@ -8639,6 +8650,46 @@ var createVoiceTraceHTTPSink = (options) => ({
|
|
|
8639
8650
|
id: options.id,
|
|
8640
8651
|
kind: options.kind ?? "http"
|
|
8641
8652
|
});
|
|
8653
|
+
var createVoiceTraceS3Sink = (options) => {
|
|
8654
|
+
const client = options.client ?? new Bun.S3Client(options);
|
|
8655
|
+
const keyPrefix = normalizeVoiceTraceS3KeyPrefix(options.keyPrefix);
|
|
8656
|
+
return {
|
|
8657
|
+
deliver: async ({ events }) => {
|
|
8658
|
+
const key = createVoiceTraceS3ObjectKey(keyPrefix, events);
|
|
8659
|
+
const payload = options.body ? await options.body({ events, key }) : {
|
|
8660
|
+
eventCount: events.length,
|
|
8661
|
+
events,
|
|
8662
|
+
key,
|
|
8663
|
+
source: "absolutejs-voice"
|
|
8664
|
+
};
|
|
8665
|
+
try {
|
|
8666
|
+
const file = client.file(key, options);
|
|
8667
|
+
await file.write(JSON.stringify(payload), {
|
|
8668
|
+
type: options.contentType ?? "application/json"
|
|
8669
|
+
});
|
|
8670
|
+
return {
|
|
8671
|
+
attempts: 1,
|
|
8672
|
+
deliveredAt: Date.now(),
|
|
8673
|
+
deliveredTo: resolveVoiceS3DeliveredTo(options, key),
|
|
8674
|
+
eventCount: events.length,
|
|
8675
|
+
responseBody: { key },
|
|
8676
|
+
status: "delivered"
|
|
8677
|
+
};
|
|
8678
|
+
} catch (error) {
|
|
8679
|
+
return {
|
|
8680
|
+
attempts: 1,
|
|
8681
|
+
deliveredTo: resolveVoiceS3DeliveredTo(options, key),
|
|
8682
|
+
error: error instanceof Error ? error.message : String(error),
|
|
8683
|
+
eventCount: events.length,
|
|
8684
|
+
status: "failed"
|
|
8685
|
+
};
|
|
8686
|
+
}
|
|
8687
|
+
},
|
|
8688
|
+
eventTypes: options.eventTypes,
|
|
8689
|
+
id: options.id,
|
|
8690
|
+
kind: options.kind ?? "s3"
|
|
8691
|
+
};
|
|
8692
|
+
};
|
|
8642
8693
|
var deliverVoiceTraceEventsToSinks = async (input) => {
|
|
8643
8694
|
const events = input.redact ? redactVoiceTraceEvents(input.events, input.redact) : input.events;
|
|
8644
8695
|
const sinkDeliveries = {};
|
|
@@ -9431,6 +9482,17 @@ var createVoiceAuditSinkDeliveryError = (input) => {
|
|
|
9431
9482
|
}
|
|
9432
9483
|
return `Attempt ${input.attempt} failed: ${String(input.error)}`;
|
|
9433
9484
|
};
|
|
9485
|
+
var normalizeVoiceAuditS3KeyPrefix = (prefix) => prefix?.trim().replace(/^\/+|\/+$/g, "") ?? "voice/audit-deliveries";
|
|
9486
|
+
var createVoiceAuditS3ObjectKey = (prefix, events) => {
|
|
9487
|
+
const firstEvent = events[0];
|
|
9488
|
+
const safeSessionId = encodeURIComponent(firstEvent?.sessionId ?? "audit");
|
|
9489
|
+
const safeEventId = encodeURIComponent(firstEvent?.id ?? crypto.randomUUID());
|
|
9490
|
+
return `${prefix}/${safeSessionId}/${Date.now()}-${safeEventId}.json`;
|
|
9491
|
+
};
|
|
9492
|
+
var resolveVoiceS3DeliveredTo2 = (options, key) => {
|
|
9493
|
+
const bucket = options.bucket;
|
|
9494
|
+
return bucket ? `s3://${bucket}/${key}` : `s3://${key}`;
|
|
9495
|
+
};
|
|
9434
9496
|
var aggregateVoiceAuditSinkDeliveryStatus = (deliveries) => {
|
|
9435
9497
|
const statuses = Object.values(deliveries).map((delivery) => delivery.status);
|
|
9436
9498
|
if (statuses.length === 0 || statuses.every((status) => status === "skipped")) {
|
|
@@ -9559,6 +9621,46 @@ var createVoiceAuditHTTPSink = (options) => ({
|
|
|
9559
9621
|
id: options.id,
|
|
9560
9622
|
kind: options.kind ?? "http"
|
|
9561
9623
|
});
|
|
9624
|
+
var createVoiceAuditS3Sink = (options) => {
|
|
9625
|
+
const client = options.client ?? new Bun.S3Client(options);
|
|
9626
|
+
const keyPrefix = normalizeVoiceAuditS3KeyPrefix(options.keyPrefix);
|
|
9627
|
+
return {
|
|
9628
|
+
deliver: async ({ events }) => {
|
|
9629
|
+
const key = createVoiceAuditS3ObjectKey(keyPrefix, events);
|
|
9630
|
+
const payload = options.body ? await options.body({ events, key }) : {
|
|
9631
|
+
eventCount: events.length,
|
|
9632
|
+
events,
|
|
9633
|
+
key,
|
|
9634
|
+
source: "absolutejs-voice"
|
|
9635
|
+
};
|
|
9636
|
+
try {
|
|
9637
|
+
const file = client.file(key, options);
|
|
9638
|
+
await file.write(JSON.stringify(payload), {
|
|
9639
|
+
type: options.contentType ?? "application/json"
|
|
9640
|
+
});
|
|
9641
|
+
return {
|
|
9642
|
+
attempts: 1,
|
|
9643
|
+
deliveredAt: Date.now(),
|
|
9644
|
+
deliveredTo: resolveVoiceS3DeliveredTo2(options, key),
|
|
9645
|
+
eventCount: events.length,
|
|
9646
|
+
responseBody: { key },
|
|
9647
|
+
status: "delivered"
|
|
9648
|
+
};
|
|
9649
|
+
} catch (error) {
|
|
9650
|
+
return {
|
|
9651
|
+
attempts: 1,
|
|
9652
|
+
deliveredTo: resolveVoiceS3DeliveredTo2(options, key),
|
|
9653
|
+
error: error instanceof Error ? error.message : String(error),
|
|
9654
|
+
eventCount: events.length,
|
|
9655
|
+
status: "failed"
|
|
9656
|
+
};
|
|
9657
|
+
}
|
|
9658
|
+
},
|
|
9659
|
+
eventTypes: options.eventTypes,
|
|
9660
|
+
id: options.id,
|
|
9661
|
+
kind: options.kind ?? "s3"
|
|
9662
|
+
};
|
|
9663
|
+
};
|
|
9562
9664
|
var deliverVoiceAuditEventsToSinks = async (input) => {
|
|
9563
9665
|
const events = input.redact === false ? input.events : redactVoiceAuditEvents(input.events, input.redact ?? true);
|
|
9564
9666
|
const sinkDeliveries = {};
|
|
@@ -23130,6 +23232,7 @@ export {
|
|
|
23130
23232
|
createVoiceTraceSinkDeliveryWorker,
|
|
23131
23233
|
createVoiceTraceSinkDeliveryRecord,
|
|
23132
23234
|
createVoiceTraceSinkDeliveryId,
|
|
23235
|
+
createVoiceTraceS3Sink,
|
|
23133
23236
|
createVoiceTraceHTTPSink,
|
|
23134
23237
|
createVoiceTraceEventId,
|
|
23135
23238
|
createVoiceTraceEvent,
|
|
@@ -23292,6 +23395,7 @@ export {
|
|
|
23292
23395
|
createVoiceAuditSinkDeliveryWorker,
|
|
23293
23396
|
createVoiceAuditSinkDeliveryRecord,
|
|
23294
23397
|
createVoiceAuditSinkDeliveryId,
|
|
23398
|
+
createVoiceAuditS3Sink,
|
|
23295
23399
|
createVoiceAuditLogger,
|
|
23296
23400
|
createVoiceAuditHTTPSink,
|
|
23297
23401
|
createVoiceAuditEvent,
|
package/dist/trace.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { S3Client, S3Options } from 'bun';
|
|
1
2
|
export type VoiceTraceEventType = 'assistant.guardrail' | 'assistant.memory' | 'assistant.run' | 'agent.handoff' | 'agent.model' | 'agent.result' | 'agent.tool' | 'call.handoff' | 'call.lifecycle' | 'client.barge_in' | 'client.live_latency' | 'client.reconnect' | 'session.error' | 'turn.assistant' | 'turn.committed' | 'turn.cost' | 'turn_latency.stage' | 'turn.transcript' | 'workflow.contract';
|
|
2
3
|
export type VoiceTraceEvent<TPayload extends Record<string, unknown> = Record<string, unknown>> = {
|
|
3
4
|
at: number;
|
|
@@ -101,6 +102,22 @@ export type VoiceTraceHTTPSinkOptions<TBody extends Record<string, unknown> = Re
|
|
|
101
102
|
timeoutMs?: number;
|
|
102
103
|
url: string;
|
|
103
104
|
};
|
|
105
|
+
export type VoiceS3TraceSinkFile = {
|
|
106
|
+
write: (data: string, options?: BlobPropertyBag) => Promise<number> | number;
|
|
107
|
+
};
|
|
108
|
+
export type VoiceS3TraceSinkClient = Pick<S3Client, 'file'>;
|
|
109
|
+
export type VoiceTraceS3SinkOptions<TBody extends Record<string, unknown> = Record<string, unknown>> = S3Options & {
|
|
110
|
+
body?: (input: {
|
|
111
|
+
events: StoredVoiceTraceEvent[];
|
|
112
|
+
key: string;
|
|
113
|
+
}) => Promise<TBody> | TBody;
|
|
114
|
+
client?: VoiceS3TraceSinkClient;
|
|
115
|
+
contentType?: string;
|
|
116
|
+
eventTypes?: VoiceTraceEventType[];
|
|
117
|
+
id: string;
|
|
118
|
+
keyPrefix?: string;
|
|
119
|
+
kind?: string;
|
|
120
|
+
};
|
|
104
121
|
export type VoiceTraceSinkStoreOptions<TEvent extends StoredVoiceTraceEvent = StoredVoiceTraceEvent> = {
|
|
105
122
|
awaitDelivery?: boolean;
|
|
106
123
|
deliveryQueue?: VoiceTraceSinkDeliveryStore;
|
|
@@ -187,6 +204,7 @@ export declare const filterVoiceTraceEvents: <TEvent extends StoredVoiceTraceEve
|
|
|
187
204
|
export declare const selectVoiceTraceEventsForPrune: <TEvent extends StoredVoiceTraceEvent = StoredVoiceTraceEvent>(events: TEvent[], options?: Omit<VoiceTracePruneOptions, "store">) => TEvent[];
|
|
188
205
|
export declare const pruneVoiceTraceEvents: (options: VoiceTracePruneOptions) => Promise<VoiceTracePruneResult>;
|
|
189
206
|
export declare const createVoiceTraceHTTPSink: <TBody extends Record<string, unknown> = Record<string, unknown>>(options: VoiceTraceHTTPSinkOptions<TBody>) => VoiceTraceSink;
|
|
207
|
+
export declare const createVoiceTraceS3Sink: <TBody extends Record<string, unknown> = Record<string, unknown>>(options: VoiceTraceS3SinkOptions<TBody>) => VoiceTraceSink;
|
|
190
208
|
export declare const deliverVoiceTraceEventsToSinks: (input: {
|
|
191
209
|
events: StoredVoiceTraceEvent[];
|
|
192
210
|
redact?: VoiceTraceRedactionConfig;
|