@absolutejs/voice 0.0.22-beta.411 → 0.0.22-beta.413
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/audit.d.ts +2 -0
- package/dist/client/index.js +88 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +91 -0
- package/dist/react/index.js +51 -0
- package/dist/svelte/index.js +88 -0
- package/dist/testing/index.js +88 -0
- package/dist/trace.d.ts +8 -0
- package/dist/vue/index.js +51 -0
- package/package.json +1 -1
package/dist/audit.d.ts
CHANGED
|
@@ -45,6 +45,7 @@ export type VoiceAuditEventStore<TEvent extends StoredVoiceAuditEvent = StoredVo
|
|
|
45
45
|
get: (id: string) => Promise<TEvent | undefined> | TEvent | undefined;
|
|
46
46
|
list: (filter?: VoiceAuditEventFilter) => Promise<TEvent[]> | TEvent[];
|
|
47
47
|
};
|
|
48
|
+
export type VoiceScopedAuditEventStoreOptions = VoiceAuditEventFilter;
|
|
48
49
|
export type VoiceAuditLogger = {
|
|
49
50
|
handoff: (input: Omit<VoiceHandoffAuditEventInput, 'store'>) => Promise<StoredVoiceAuditEvent> | StoredVoiceAuditEvent;
|
|
50
51
|
operatorAction: (input: Omit<VoiceOperatorAuditEventInput, 'store'>) => Promise<StoredVoiceAuditEvent> | StoredVoiceAuditEvent;
|
|
@@ -118,6 +119,7 @@ export type VoiceOperatorAuditEventInput = {
|
|
|
118
119
|
};
|
|
119
120
|
export declare const createVoiceAuditEvent: <TPayload extends Record<string, unknown> = Record<string, unknown>>(event: VoiceAuditEvent<TPayload>) => StoredVoiceAuditEvent<TPayload>;
|
|
120
121
|
export declare const filterVoiceAuditEvents: <TEvent extends StoredVoiceAuditEvent = StoredVoiceAuditEvent>(events: TEvent[], filter?: VoiceAuditEventFilter) => TEvent[];
|
|
122
|
+
export declare const createVoiceScopedAuditEventStore: <TEvent extends StoredVoiceAuditEvent = StoredVoiceAuditEvent>(store: VoiceAuditEventStore<TEvent>, scope: VoiceScopedAuditEventStoreOptions) => VoiceAuditEventStore<TEvent>;
|
|
121
123
|
export declare const createVoiceMemoryAuditEventStore: <TEvent extends StoredVoiceAuditEvent = StoredVoiceAuditEvent>() => VoiceAuditEventStore<TEvent>;
|
|
122
124
|
export declare const recordVoiceAuditEvent: (store: VoiceAuditEventStore, event: VoiceAuditEvent) => StoredVoiceAuditEvent<Record<string, unknown>> | Promise<StoredVoiceAuditEvent<Record<string, unknown>>>;
|
|
123
125
|
export declare const recordVoiceProviderAuditEvent: (input: VoiceProviderAuditEventInput) => StoredVoiceAuditEvent<Record<string, unknown>> | Promise<StoredVoiceAuditEvent<Record<string, unknown>>>;
|
package/dist/client/index.js
CHANGED
|
@@ -5364,6 +5364,57 @@ var filterVoiceTraceEvents = (events, filter = {}) => {
|
|
|
5364
5364
|
const sorted = events.filter((event) => matchesTraceFilter(event, filter)).sort((left, right) => left.at - right.at || left.id.localeCompare(right.id));
|
|
5365
5365
|
return typeof filter.limit === "number" && filter.limit >= 0 ? sorted.slice(0, filter.limit) : sorted;
|
|
5366
5366
|
};
|
|
5367
|
+
var createVoiceScopedTraceEventStore = (store, scope) => {
|
|
5368
|
+
const upstreamFilter = (filter = {}) => {
|
|
5369
|
+
const next = { ...filter };
|
|
5370
|
+
delete next.limit;
|
|
5371
|
+
if (scope.scenarioId !== undefined) {
|
|
5372
|
+
delete next.scenarioId;
|
|
5373
|
+
}
|
|
5374
|
+
if (scope.sessionId !== undefined) {
|
|
5375
|
+
delete next.sessionId;
|
|
5376
|
+
}
|
|
5377
|
+
if (scope.traceId !== undefined) {
|
|
5378
|
+
delete next.traceId;
|
|
5379
|
+
}
|
|
5380
|
+
if (scope.turnId !== undefined) {
|
|
5381
|
+
delete next.turnId;
|
|
5382
|
+
}
|
|
5383
|
+
if (scope.type !== undefined) {
|
|
5384
|
+
delete next.type;
|
|
5385
|
+
}
|
|
5386
|
+
return next;
|
|
5387
|
+
};
|
|
5388
|
+
const scopedFilter = (filter = {}) => ({
|
|
5389
|
+
...filter,
|
|
5390
|
+
...scope
|
|
5391
|
+
});
|
|
5392
|
+
return {
|
|
5393
|
+
append: (event) => store.append(event),
|
|
5394
|
+
get: (id) => store.get(id),
|
|
5395
|
+
list: async (filter) => filterVoiceTraceEvents(await store.list(upstreamFilter(filter)), scopedFilter(filter)),
|
|
5396
|
+
remove: (id) => store.remove(id)
|
|
5397
|
+
};
|
|
5398
|
+
};
|
|
5399
|
+
var createVoiceProofTraceStore = (options = {}) => {
|
|
5400
|
+
const proofStore = options.proofStore ?? createVoiceMemoryTraceEventStore();
|
|
5401
|
+
const scopedProofStore = options.scope ? createVoiceScopedTraceEventStore(proofStore, options.scope) : proofStore;
|
|
5402
|
+
return {
|
|
5403
|
+
append: async (event) => {
|
|
5404
|
+
const stored = await proofStore.append(event);
|
|
5405
|
+
await options.mirrorStore?.append(stored);
|
|
5406
|
+
return stored;
|
|
5407
|
+
},
|
|
5408
|
+
get: async (id) => await proofStore.get(id) ?? await options.mirrorStore?.get(id),
|
|
5409
|
+
list: (filter) => scopedProofStore.list(filter),
|
|
5410
|
+
remove: async (id) => {
|
|
5411
|
+
await Promise.all([
|
|
5412
|
+
proofStore.remove(id),
|
|
5413
|
+
options.mirrorStore?.remove(id) ?? Promise.resolve()
|
|
5414
|
+
]);
|
|
5415
|
+
}
|
|
5416
|
+
};
|
|
5417
|
+
};
|
|
5367
5418
|
var isPruneTimeMatch = (event, options) => {
|
|
5368
5419
|
if (typeof options.before === "number" && event.at >= options.before) {
|
|
5369
5420
|
return false;
|
|
@@ -8695,6 +8746,43 @@ var filterVoiceAuditEvents = (events, filter = {}) => {
|
|
|
8695
8746
|
}).sort((left, right) => left.at - right.at || left.id.localeCompare(right.id));
|
|
8696
8747
|
return typeof filter.limit === "number" && filter.limit >= 0 ? sorted.slice(0, filter.limit) : sorted;
|
|
8697
8748
|
};
|
|
8749
|
+
var createVoiceScopedAuditEventStore = (store, scope) => {
|
|
8750
|
+
const upstreamFilter = (filter = {}) => {
|
|
8751
|
+
const next = { ...filter };
|
|
8752
|
+
delete next.limit;
|
|
8753
|
+
if (scope.actorId !== undefined) {
|
|
8754
|
+
delete next.actorId;
|
|
8755
|
+
}
|
|
8756
|
+
if (scope.outcome !== undefined) {
|
|
8757
|
+
delete next.outcome;
|
|
8758
|
+
}
|
|
8759
|
+
if (scope.resourceId !== undefined) {
|
|
8760
|
+
delete next.resourceId;
|
|
8761
|
+
}
|
|
8762
|
+
if (scope.resourceType !== undefined) {
|
|
8763
|
+
delete next.resourceType;
|
|
8764
|
+
}
|
|
8765
|
+
if (scope.sessionId !== undefined) {
|
|
8766
|
+
delete next.sessionId;
|
|
8767
|
+
}
|
|
8768
|
+
if (scope.traceId !== undefined) {
|
|
8769
|
+
delete next.traceId;
|
|
8770
|
+
}
|
|
8771
|
+
if (scope.type !== undefined) {
|
|
8772
|
+
delete next.type;
|
|
8773
|
+
}
|
|
8774
|
+
return next;
|
|
8775
|
+
};
|
|
8776
|
+
const scopedFilter = (filter = {}) => ({
|
|
8777
|
+
...filter,
|
|
8778
|
+
...scope
|
|
8779
|
+
});
|
|
8780
|
+
return {
|
|
8781
|
+
append: (event) => store.append(event),
|
|
8782
|
+
get: (id) => store.get(id),
|
|
8783
|
+
list: async (filter) => filterVoiceAuditEvents(await store.list(upstreamFilter(filter)), scopedFilter(filter))
|
|
8784
|
+
};
|
|
8785
|
+
};
|
|
8698
8786
|
var createVoiceMemoryAuditEventStore = () => {
|
|
8699
8787
|
const events = new Map;
|
|
8700
8788
|
return {
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { applyVoiceCampaignTelephonyOutcome, assertVoiceCampaignReadinessEvidenc
|
|
|
3
3
|
export { assertVoiceCampaignDialerProofEvidence, createVoicePlivoCampaignDialer, createVoiceTelnyxCampaignDialer, createVoiceTwilioCampaignDialer, evaluateVoiceCampaignDialerProofEvidence, getVoiceCampaignDialerProofStatus, runVoiceCampaignDialerProof } from './campaignDialers';
|
|
4
4
|
export { createVoiceAssistant, createVoiceExperiment, summarizeVoiceAssistantRuns } from './assistant';
|
|
5
5
|
export { createVoiceAssistantHealthHTMLHandler, createVoiceAssistantHealthJSONHandler, createVoiceAssistantHealthRoutes, renderVoiceAssistantHealthHTML, summarizeVoiceAssistantHealth } from './assistantHealth';
|
|
6
|
-
export { createVoiceAuditEvent, createVoiceAuditLogger, createVoiceMemoryAuditEventStore, filterVoiceAuditEvents, recordVoiceAuditEvent, recordVoiceHandoffAuditEvent, recordVoiceOperatorAuditEvent, recordVoiceProviderAuditEvent, recordVoiceRetentionAuditEvent, recordVoiceToolAuditEvent } from './audit';
|
|
6
|
+
export { createVoiceAuditEvent, createVoiceAuditLogger, createVoiceMemoryAuditEventStore, createVoiceScopedAuditEventStore, 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
9
|
export { createVoiceAuditHTTPSink, createVoiceAuditS3Sink, createVoiceAuditSinkDeliveryId, createVoiceAuditSinkDeliveryRecord, createVoiceAuditSinkDeliveryWorker, createVoiceAuditSinkDeliveryWorkerLoop, createVoiceAuditSinkStore, createVoiceMemoryAuditSinkDeliveryStore, deliverVoiceAuditEventsToSinks, summarizeVoiceAuditSinkDeliveries } from './auditSinks';
|
|
@@ -96,7 +96,7 @@ export { createVoiceOpsStatusRoutes, renderVoiceOpsStatusHTML } from './opsStatu
|
|
|
96
96
|
export { createVoiceQualityRoutes, evaluateVoiceQuality, renderVoiceQualityHTML } from './qualityRoutes';
|
|
97
97
|
export { createVoiceResilienceRoutes, createVoiceRoutingDecisionSummary, listVoiceRoutingEvents, renderVoiceResilienceHTML, summarizeVoiceRoutingDecision, summarizeVoiceRoutingSessions } from './resilienceRoutes';
|
|
98
98
|
export { createVoiceSTTProviderRouter, createVoiceTTSProviderRouter } from './providerAdapters';
|
|
99
|
-
export { buildVoiceTraceReplay, createVoiceMemoryTraceSinkDeliveryStore, createVoiceProfileTraceTagger, createVoiceTraceHTTPSink, createVoiceTraceS3Sink, createVoiceMemoryTraceEventStore, createVoiceTraceSinkDeliveryId, createVoiceTraceSinkDeliveryRecord, createVoiceTraceSinkStore, createVoiceTraceEvent, createVoiceTraceEventId, deliverVoiceTraceEventsToSinks, evaluateVoiceTrace, exportVoiceTrace, filterVoiceTraceEvents, pruneVoiceTraceEvents, redactVoiceTraceEvent, redactVoiceTraceEvents, redactVoiceTraceText, renderVoiceTraceHTML, renderVoiceTraceMarkdown, resolveVoiceTraceRedactionOptions, selectVoiceTraceEventsForPrune, summarizeVoiceTrace } from './trace';
|
|
99
|
+
export { buildVoiceTraceReplay, createVoiceMemoryTraceSinkDeliveryStore, createVoiceProfileTraceTagger, createVoiceTraceHTTPSink, createVoiceTraceS3Sink, createVoiceMemoryTraceEventStore, createVoiceProofTraceStore, createVoiceScopedTraceEventStore, createVoiceTraceSinkDeliveryId, createVoiceTraceSinkDeliveryRecord, createVoiceTraceSinkStore, createVoiceTraceEvent, createVoiceTraceEventId, deliverVoiceTraceEventsToSinks, evaluateVoiceTrace, exportVoiceTrace, filterVoiceTraceEvents, pruneVoiceTraceEvents, redactVoiceTraceEvent, redactVoiceTraceEvents, redactVoiceTraceText, renderVoiceTraceHTML, renderVoiceTraceMarkdown, resolveVoiceTraceRedactionOptions, selectVoiceTraceEventsForPrune, summarizeVoiceTrace } from './trace';
|
|
100
100
|
export { buildVoiceTraceDeliveryReport, createVoiceTraceDeliveryHTMLHandler, createVoiceTraceDeliveryJSONHandler, createVoiceTraceDeliveryRoutes, renderVoiceTraceDeliveryHTML, resolveVoiceTraceDeliveryFilter } from './traceDeliveryRoutes';
|
|
101
101
|
export { createVoiceTraceTimelineRoutes, renderVoiceTraceTimelineHTML, renderVoiceTraceTimelineSessionHTML, summarizeVoiceTraceTimeline } from './traceTimeline';
|
|
102
102
|
export { createVoiceSQLiteAuditEventStore, createVoiceSQLiteAuditSinkDeliveryStore, createVoiceSQLiteCampaignStore, createVoiceSQLiteExternalObjectMapStore, createVoiceSQLiteIntegrationEventStore, createVoiceSQLiteReviewStore, createVoiceSQLiteRuntimeStorage, createVoiceSQLiteSessionStore, createVoiceSQLiteTaskStore, createVoiceSQLiteTelephonyWebhookIdempotencyStore, createVoiceSQLiteTraceSinkDeliveryStore, createVoiceSQLiteTraceEventStore } from './sqliteStore';
|
package/dist/index.js
CHANGED
|
@@ -5266,6 +5266,43 @@ var filterVoiceAuditEvents = (events, filter = {}) => {
|
|
|
5266
5266
|
}).sort((left, right) => left.at - right.at || left.id.localeCompare(right.id));
|
|
5267
5267
|
return typeof filter.limit === "number" && filter.limit >= 0 ? sorted.slice(0, filter.limit) : sorted;
|
|
5268
5268
|
};
|
|
5269
|
+
var createVoiceScopedAuditEventStore = (store, scope) => {
|
|
5270
|
+
const upstreamFilter = (filter = {}) => {
|
|
5271
|
+
const next = { ...filter };
|
|
5272
|
+
delete next.limit;
|
|
5273
|
+
if (scope.actorId !== undefined) {
|
|
5274
|
+
delete next.actorId;
|
|
5275
|
+
}
|
|
5276
|
+
if (scope.outcome !== undefined) {
|
|
5277
|
+
delete next.outcome;
|
|
5278
|
+
}
|
|
5279
|
+
if (scope.resourceId !== undefined) {
|
|
5280
|
+
delete next.resourceId;
|
|
5281
|
+
}
|
|
5282
|
+
if (scope.resourceType !== undefined) {
|
|
5283
|
+
delete next.resourceType;
|
|
5284
|
+
}
|
|
5285
|
+
if (scope.sessionId !== undefined) {
|
|
5286
|
+
delete next.sessionId;
|
|
5287
|
+
}
|
|
5288
|
+
if (scope.traceId !== undefined) {
|
|
5289
|
+
delete next.traceId;
|
|
5290
|
+
}
|
|
5291
|
+
if (scope.type !== undefined) {
|
|
5292
|
+
delete next.type;
|
|
5293
|
+
}
|
|
5294
|
+
return next;
|
|
5295
|
+
};
|
|
5296
|
+
const scopedFilter = (filter = {}) => ({
|
|
5297
|
+
...filter,
|
|
5298
|
+
...scope
|
|
5299
|
+
});
|
|
5300
|
+
return {
|
|
5301
|
+
append: (event) => store.append(event),
|
|
5302
|
+
get: (id) => store.get(id),
|
|
5303
|
+
list: async (filter) => filterVoiceAuditEvents(await store.list(upstreamFilter(filter)), scopedFilter(filter))
|
|
5304
|
+
};
|
|
5305
|
+
};
|
|
5269
5306
|
var createVoiceMemoryAuditEventStore = () => {
|
|
5270
5307
|
const events = new Map;
|
|
5271
5308
|
return {
|
|
@@ -9860,6 +9897,57 @@ var filterVoiceTraceEvents = (events, filter = {}) => {
|
|
|
9860
9897
|
const sorted = events.filter((event) => matchesTraceFilter(event, filter)).sort((left, right) => left.at - right.at || left.id.localeCompare(right.id));
|
|
9861
9898
|
return typeof filter.limit === "number" && filter.limit >= 0 ? sorted.slice(0, filter.limit) : sorted;
|
|
9862
9899
|
};
|
|
9900
|
+
var createVoiceScopedTraceEventStore = (store, scope) => {
|
|
9901
|
+
const upstreamFilter = (filter = {}) => {
|
|
9902
|
+
const next = { ...filter };
|
|
9903
|
+
delete next.limit;
|
|
9904
|
+
if (scope.scenarioId !== undefined) {
|
|
9905
|
+
delete next.scenarioId;
|
|
9906
|
+
}
|
|
9907
|
+
if (scope.sessionId !== undefined) {
|
|
9908
|
+
delete next.sessionId;
|
|
9909
|
+
}
|
|
9910
|
+
if (scope.traceId !== undefined) {
|
|
9911
|
+
delete next.traceId;
|
|
9912
|
+
}
|
|
9913
|
+
if (scope.turnId !== undefined) {
|
|
9914
|
+
delete next.turnId;
|
|
9915
|
+
}
|
|
9916
|
+
if (scope.type !== undefined) {
|
|
9917
|
+
delete next.type;
|
|
9918
|
+
}
|
|
9919
|
+
return next;
|
|
9920
|
+
};
|
|
9921
|
+
const scopedFilter = (filter = {}) => ({
|
|
9922
|
+
...filter,
|
|
9923
|
+
...scope
|
|
9924
|
+
});
|
|
9925
|
+
return {
|
|
9926
|
+
append: (event) => store.append(event),
|
|
9927
|
+
get: (id) => store.get(id),
|
|
9928
|
+
list: async (filter) => filterVoiceTraceEvents(await store.list(upstreamFilter(filter)), scopedFilter(filter)),
|
|
9929
|
+
remove: (id) => store.remove(id)
|
|
9930
|
+
};
|
|
9931
|
+
};
|
|
9932
|
+
var createVoiceProofTraceStore = (options = {}) => {
|
|
9933
|
+
const proofStore = options.proofStore ?? createVoiceMemoryTraceEventStore();
|
|
9934
|
+
const scopedProofStore = options.scope ? createVoiceScopedTraceEventStore(proofStore, options.scope) : proofStore;
|
|
9935
|
+
return {
|
|
9936
|
+
append: async (event) => {
|
|
9937
|
+
const stored = await proofStore.append(event);
|
|
9938
|
+
await options.mirrorStore?.append(stored);
|
|
9939
|
+
return stored;
|
|
9940
|
+
},
|
|
9941
|
+
get: async (id) => await proofStore.get(id) ?? await options.mirrorStore?.get(id),
|
|
9942
|
+
list: (filter) => scopedProofStore.list(filter),
|
|
9943
|
+
remove: async (id) => {
|
|
9944
|
+
await Promise.all([
|
|
9945
|
+
proofStore.remove(id),
|
|
9946
|
+
options.mirrorStore?.remove(id) ?? Promise.resolve()
|
|
9947
|
+
]);
|
|
9948
|
+
}
|
|
9949
|
+
};
|
|
9950
|
+
};
|
|
9863
9951
|
var isPruneTimeMatch = (event, options) => {
|
|
9864
9952
|
if (typeof options.before === "number" && event.at >= options.before) {
|
|
9865
9953
|
return false;
|
|
@@ -40577,6 +40665,8 @@ export {
|
|
|
40577
40665
|
createVoiceSessionRecord,
|
|
40578
40666
|
createVoiceSessionListRoutes,
|
|
40579
40667
|
createVoiceSession,
|
|
40668
|
+
createVoiceScopedTraceEventStore,
|
|
40669
|
+
createVoiceScopedAuditEventStore,
|
|
40580
40670
|
createVoiceSTTRoutingCorrectionHandler,
|
|
40581
40671
|
createVoiceSTTProviderRouter,
|
|
40582
40672
|
createVoiceSQLiteTraceSinkDeliveryStore,
|
|
@@ -40632,6 +40722,7 @@ export {
|
|
|
40632
40722
|
createVoiceProviderCapabilityHTMLHandler,
|
|
40633
40723
|
createVoiceProofTrendRoutes,
|
|
40634
40724
|
createVoiceProofTrendRecommendationRoutes,
|
|
40725
|
+
createVoiceProofTraceStore,
|
|
40635
40726
|
createVoiceProofPackSupportBundleSection,
|
|
40636
40727
|
createVoiceProofPackRoutes,
|
|
40637
40728
|
createVoiceProofPackProviderSloSection,
|
package/dist/react/index.js
CHANGED
|
@@ -2556,6 +2556,57 @@ var filterVoiceTraceEvents = (events, filter = {}) => {
|
|
|
2556
2556
|
const sorted = events.filter((event) => matchesTraceFilter(event, filter)).sort((left, right) => left.at - right.at || left.id.localeCompare(right.id));
|
|
2557
2557
|
return typeof filter.limit === "number" && filter.limit >= 0 ? sorted.slice(0, filter.limit) : sorted;
|
|
2558
2558
|
};
|
|
2559
|
+
var createVoiceScopedTraceEventStore = (store, scope) => {
|
|
2560
|
+
const upstreamFilter = (filter = {}) => {
|
|
2561
|
+
const next = { ...filter };
|
|
2562
|
+
delete next.limit;
|
|
2563
|
+
if (scope.scenarioId !== undefined) {
|
|
2564
|
+
delete next.scenarioId;
|
|
2565
|
+
}
|
|
2566
|
+
if (scope.sessionId !== undefined) {
|
|
2567
|
+
delete next.sessionId;
|
|
2568
|
+
}
|
|
2569
|
+
if (scope.traceId !== undefined) {
|
|
2570
|
+
delete next.traceId;
|
|
2571
|
+
}
|
|
2572
|
+
if (scope.turnId !== undefined) {
|
|
2573
|
+
delete next.turnId;
|
|
2574
|
+
}
|
|
2575
|
+
if (scope.type !== undefined) {
|
|
2576
|
+
delete next.type;
|
|
2577
|
+
}
|
|
2578
|
+
return next;
|
|
2579
|
+
};
|
|
2580
|
+
const scopedFilter = (filter = {}) => ({
|
|
2581
|
+
...filter,
|
|
2582
|
+
...scope
|
|
2583
|
+
});
|
|
2584
|
+
return {
|
|
2585
|
+
append: (event) => store.append(event),
|
|
2586
|
+
get: (id) => store.get(id),
|
|
2587
|
+
list: async (filter) => filterVoiceTraceEvents(await store.list(upstreamFilter(filter)), scopedFilter(filter)),
|
|
2588
|
+
remove: (id) => store.remove(id)
|
|
2589
|
+
};
|
|
2590
|
+
};
|
|
2591
|
+
var createVoiceProofTraceStore = (options = {}) => {
|
|
2592
|
+
const proofStore = options.proofStore ?? createVoiceMemoryTraceEventStore();
|
|
2593
|
+
const scopedProofStore = options.scope ? createVoiceScopedTraceEventStore(proofStore, options.scope) : proofStore;
|
|
2594
|
+
return {
|
|
2595
|
+
append: async (event) => {
|
|
2596
|
+
const stored = await proofStore.append(event);
|
|
2597
|
+
await options.mirrorStore?.append(stored);
|
|
2598
|
+
return stored;
|
|
2599
|
+
},
|
|
2600
|
+
get: async (id) => await proofStore.get(id) ?? await options.mirrorStore?.get(id),
|
|
2601
|
+
list: (filter) => scopedProofStore.list(filter),
|
|
2602
|
+
remove: async (id) => {
|
|
2603
|
+
await Promise.all([
|
|
2604
|
+
proofStore.remove(id),
|
|
2605
|
+
options.mirrorStore?.remove(id) ?? Promise.resolve()
|
|
2606
|
+
]);
|
|
2607
|
+
}
|
|
2608
|
+
};
|
|
2609
|
+
};
|
|
2559
2610
|
var isPruneTimeMatch = (event, options) => {
|
|
2560
2611
|
if (typeof options.before === "number" && event.at >= options.before) {
|
|
2561
2612
|
return false;
|
package/dist/svelte/index.js
CHANGED
|
@@ -904,6 +904,43 @@ var filterVoiceAuditEvents = (events, filter = {}) => {
|
|
|
904
904
|
}).sort((left, right) => left.at - right.at || left.id.localeCompare(right.id));
|
|
905
905
|
return typeof filter.limit === "number" && filter.limit >= 0 ? sorted.slice(0, filter.limit) : sorted;
|
|
906
906
|
};
|
|
907
|
+
var createVoiceScopedAuditEventStore = (store, scope) => {
|
|
908
|
+
const upstreamFilter = (filter = {}) => {
|
|
909
|
+
const next = { ...filter };
|
|
910
|
+
delete next.limit;
|
|
911
|
+
if (scope.actorId !== undefined) {
|
|
912
|
+
delete next.actorId;
|
|
913
|
+
}
|
|
914
|
+
if (scope.outcome !== undefined) {
|
|
915
|
+
delete next.outcome;
|
|
916
|
+
}
|
|
917
|
+
if (scope.resourceId !== undefined) {
|
|
918
|
+
delete next.resourceId;
|
|
919
|
+
}
|
|
920
|
+
if (scope.resourceType !== undefined) {
|
|
921
|
+
delete next.resourceType;
|
|
922
|
+
}
|
|
923
|
+
if (scope.sessionId !== undefined) {
|
|
924
|
+
delete next.sessionId;
|
|
925
|
+
}
|
|
926
|
+
if (scope.traceId !== undefined) {
|
|
927
|
+
delete next.traceId;
|
|
928
|
+
}
|
|
929
|
+
if (scope.type !== undefined) {
|
|
930
|
+
delete next.type;
|
|
931
|
+
}
|
|
932
|
+
return next;
|
|
933
|
+
};
|
|
934
|
+
const scopedFilter = (filter = {}) => ({
|
|
935
|
+
...filter,
|
|
936
|
+
...scope
|
|
937
|
+
});
|
|
938
|
+
return {
|
|
939
|
+
append: (event) => store.append(event),
|
|
940
|
+
get: (id) => store.get(id),
|
|
941
|
+
list: async (filter) => filterVoiceAuditEvents(await store.list(upstreamFilter(filter)), scopedFilter(filter))
|
|
942
|
+
};
|
|
943
|
+
};
|
|
907
944
|
var createVoiceMemoryAuditEventStore = () => {
|
|
908
945
|
const events = new Map;
|
|
909
946
|
return {
|
|
@@ -1080,6 +1117,57 @@ var filterVoiceTraceEvents = (events, filter = {}) => {
|
|
|
1080
1117
|
const sorted = events.filter((event) => matchesTraceFilter(event, filter)).sort((left, right) => left.at - right.at || left.id.localeCompare(right.id));
|
|
1081
1118
|
return typeof filter.limit === "number" && filter.limit >= 0 ? sorted.slice(0, filter.limit) : sorted;
|
|
1082
1119
|
};
|
|
1120
|
+
var createVoiceScopedTraceEventStore = (store, scope) => {
|
|
1121
|
+
const upstreamFilter = (filter = {}) => {
|
|
1122
|
+
const next = { ...filter };
|
|
1123
|
+
delete next.limit;
|
|
1124
|
+
if (scope.scenarioId !== undefined) {
|
|
1125
|
+
delete next.scenarioId;
|
|
1126
|
+
}
|
|
1127
|
+
if (scope.sessionId !== undefined) {
|
|
1128
|
+
delete next.sessionId;
|
|
1129
|
+
}
|
|
1130
|
+
if (scope.traceId !== undefined) {
|
|
1131
|
+
delete next.traceId;
|
|
1132
|
+
}
|
|
1133
|
+
if (scope.turnId !== undefined) {
|
|
1134
|
+
delete next.turnId;
|
|
1135
|
+
}
|
|
1136
|
+
if (scope.type !== undefined) {
|
|
1137
|
+
delete next.type;
|
|
1138
|
+
}
|
|
1139
|
+
return next;
|
|
1140
|
+
};
|
|
1141
|
+
const scopedFilter = (filter = {}) => ({
|
|
1142
|
+
...filter,
|
|
1143
|
+
...scope
|
|
1144
|
+
});
|
|
1145
|
+
return {
|
|
1146
|
+
append: (event) => store.append(event),
|
|
1147
|
+
get: (id) => store.get(id),
|
|
1148
|
+
list: async (filter) => filterVoiceTraceEvents(await store.list(upstreamFilter(filter)), scopedFilter(filter)),
|
|
1149
|
+
remove: (id) => store.remove(id)
|
|
1150
|
+
};
|
|
1151
|
+
};
|
|
1152
|
+
var createVoiceProofTraceStore = (options = {}) => {
|
|
1153
|
+
const proofStore = options.proofStore ?? createVoiceMemoryTraceEventStore();
|
|
1154
|
+
const scopedProofStore = options.scope ? createVoiceScopedTraceEventStore(proofStore, options.scope) : proofStore;
|
|
1155
|
+
return {
|
|
1156
|
+
append: async (event) => {
|
|
1157
|
+
const stored = await proofStore.append(event);
|
|
1158
|
+
await options.mirrorStore?.append(stored);
|
|
1159
|
+
return stored;
|
|
1160
|
+
},
|
|
1161
|
+
get: async (id) => await proofStore.get(id) ?? await options.mirrorStore?.get(id),
|
|
1162
|
+
list: (filter) => scopedProofStore.list(filter),
|
|
1163
|
+
remove: async (id) => {
|
|
1164
|
+
await Promise.all([
|
|
1165
|
+
proofStore.remove(id),
|
|
1166
|
+
options.mirrorStore?.remove(id) ?? Promise.resolve()
|
|
1167
|
+
]);
|
|
1168
|
+
}
|
|
1169
|
+
};
|
|
1170
|
+
};
|
|
1083
1171
|
var isPruneTimeMatch = (event, options) => {
|
|
1084
1172
|
if (typeof options.before === "number" && event.at >= options.before) {
|
|
1085
1173
|
return false;
|
package/dist/testing/index.js
CHANGED
|
@@ -9069,6 +9069,43 @@ var filterVoiceAuditEvents = (events, filter = {}) => {
|
|
|
9069
9069
|
}).sort((left, right) => left.at - right.at || left.id.localeCompare(right.id));
|
|
9070
9070
|
return typeof filter.limit === "number" && filter.limit >= 0 ? sorted.slice(0, filter.limit) : sorted;
|
|
9071
9071
|
};
|
|
9072
|
+
var createVoiceScopedAuditEventStore = (store, scope) => {
|
|
9073
|
+
const upstreamFilter = (filter = {}) => {
|
|
9074
|
+
const next = { ...filter };
|
|
9075
|
+
delete next.limit;
|
|
9076
|
+
if (scope.actorId !== undefined) {
|
|
9077
|
+
delete next.actorId;
|
|
9078
|
+
}
|
|
9079
|
+
if (scope.outcome !== undefined) {
|
|
9080
|
+
delete next.outcome;
|
|
9081
|
+
}
|
|
9082
|
+
if (scope.resourceId !== undefined) {
|
|
9083
|
+
delete next.resourceId;
|
|
9084
|
+
}
|
|
9085
|
+
if (scope.resourceType !== undefined) {
|
|
9086
|
+
delete next.resourceType;
|
|
9087
|
+
}
|
|
9088
|
+
if (scope.sessionId !== undefined) {
|
|
9089
|
+
delete next.sessionId;
|
|
9090
|
+
}
|
|
9091
|
+
if (scope.traceId !== undefined) {
|
|
9092
|
+
delete next.traceId;
|
|
9093
|
+
}
|
|
9094
|
+
if (scope.type !== undefined) {
|
|
9095
|
+
delete next.type;
|
|
9096
|
+
}
|
|
9097
|
+
return next;
|
|
9098
|
+
};
|
|
9099
|
+
const scopedFilter = (filter = {}) => ({
|
|
9100
|
+
...filter,
|
|
9101
|
+
...scope
|
|
9102
|
+
});
|
|
9103
|
+
return {
|
|
9104
|
+
append: (event) => store.append(event),
|
|
9105
|
+
get: (id) => store.get(id),
|
|
9106
|
+
list: async (filter) => filterVoiceAuditEvents(await store.list(upstreamFilter(filter)), scopedFilter(filter))
|
|
9107
|
+
};
|
|
9108
|
+
};
|
|
9072
9109
|
var createVoiceMemoryAuditEventStore = () => {
|
|
9073
9110
|
const events = new Map;
|
|
9074
9111
|
return {
|
|
@@ -9245,6 +9282,57 @@ var filterVoiceTraceEvents = (events, filter = {}) => {
|
|
|
9245
9282
|
const sorted = events.filter((event) => matchesTraceFilter(event, filter)).sort((left, right) => left.at - right.at || left.id.localeCompare(right.id));
|
|
9246
9283
|
return typeof filter.limit === "number" && filter.limit >= 0 ? sorted.slice(0, filter.limit) : sorted;
|
|
9247
9284
|
};
|
|
9285
|
+
var createVoiceScopedTraceEventStore = (store, scope) => {
|
|
9286
|
+
const upstreamFilter = (filter = {}) => {
|
|
9287
|
+
const next = { ...filter };
|
|
9288
|
+
delete next.limit;
|
|
9289
|
+
if (scope.scenarioId !== undefined) {
|
|
9290
|
+
delete next.scenarioId;
|
|
9291
|
+
}
|
|
9292
|
+
if (scope.sessionId !== undefined) {
|
|
9293
|
+
delete next.sessionId;
|
|
9294
|
+
}
|
|
9295
|
+
if (scope.traceId !== undefined) {
|
|
9296
|
+
delete next.traceId;
|
|
9297
|
+
}
|
|
9298
|
+
if (scope.turnId !== undefined) {
|
|
9299
|
+
delete next.turnId;
|
|
9300
|
+
}
|
|
9301
|
+
if (scope.type !== undefined) {
|
|
9302
|
+
delete next.type;
|
|
9303
|
+
}
|
|
9304
|
+
return next;
|
|
9305
|
+
};
|
|
9306
|
+
const scopedFilter = (filter = {}) => ({
|
|
9307
|
+
...filter,
|
|
9308
|
+
...scope
|
|
9309
|
+
});
|
|
9310
|
+
return {
|
|
9311
|
+
append: (event) => store.append(event),
|
|
9312
|
+
get: (id) => store.get(id),
|
|
9313
|
+
list: async (filter) => filterVoiceTraceEvents(await store.list(upstreamFilter(filter)), scopedFilter(filter)),
|
|
9314
|
+
remove: (id) => store.remove(id)
|
|
9315
|
+
};
|
|
9316
|
+
};
|
|
9317
|
+
var createVoiceProofTraceStore = (options = {}) => {
|
|
9318
|
+
const proofStore = options.proofStore ?? createVoiceMemoryTraceEventStore();
|
|
9319
|
+
const scopedProofStore = options.scope ? createVoiceScopedTraceEventStore(proofStore, options.scope) : proofStore;
|
|
9320
|
+
return {
|
|
9321
|
+
append: async (event) => {
|
|
9322
|
+
const stored = await proofStore.append(event);
|
|
9323
|
+
await options.mirrorStore?.append(stored);
|
|
9324
|
+
return stored;
|
|
9325
|
+
},
|
|
9326
|
+
get: async (id) => await proofStore.get(id) ?? await options.mirrorStore?.get(id),
|
|
9327
|
+
list: (filter) => scopedProofStore.list(filter),
|
|
9328
|
+
remove: async (id) => {
|
|
9329
|
+
await Promise.all([
|
|
9330
|
+
proofStore.remove(id),
|
|
9331
|
+
options.mirrorStore?.remove(id) ?? Promise.resolve()
|
|
9332
|
+
]);
|
|
9333
|
+
}
|
|
9334
|
+
};
|
|
9335
|
+
};
|
|
9248
9336
|
var isPruneTimeMatch = (event, options) => {
|
|
9249
9337
|
if (typeof options.before === "number" && event.at >= options.before) {
|
|
9250
9338
|
return false;
|
package/dist/trace.d.ts
CHANGED
|
@@ -28,6 +28,12 @@ export type VoiceTraceEventStore<TEvent extends StoredVoiceTraceEvent = StoredVo
|
|
|
28
28
|
list: (filter?: VoiceTraceEventFilter) => Promise<TEvent[]>;
|
|
29
29
|
remove: (id: string) => Promise<void>;
|
|
30
30
|
};
|
|
31
|
+
export type VoiceScopedTraceEventStoreOptions = VoiceTraceEventFilter;
|
|
32
|
+
export type VoiceProofTraceStoreOptions<TEvent extends StoredVoiceTraceEvent = StoredVoiceTraceEvent> = {
|
|
33
|
+
mirrorStore?: VoiceTraceEventStore<TEvent>;
|
|
34
|
+
proofStore?: VoiceTraceEventStore<TEvent>;
|
|
35
|
+
scope?: VoiceScopedTraceEventStoreOptions;
|
|
36
|
+
};
|
|
31
37
|
export type VoiceTracePruneFilter = Omit<VoiceTraceEventFilter, 'limit'>;
|
|
32
38
|
export type VoiceTracePruneOptions = {
|
|
33
39
|
before?: number;
|
|
@@ -212,6 +218,8 @@ export declare const createVoiceTraceSinkDeliveryRecord: (input: {
|
|
|
212
218
|
id?: string;
|
|
213
219
|
} & Partial<Omit<VoiceTraceSinkDeliveryRecord, "createdAt" | "events" | "id">>) => VoiceTraceSinkDeliveryRecord;
|
|
214
220
|
export declare const filterVoiceTraceEvents: <TEvent extends StoredVoiceTraceEvent = StoredVoiceTraceEvent>(events: TEvent[], filter?: VoiceTraceEventFilter) => TEvent[];
|
|
221
|
+
export declare const createVoiceScopedTraceEventStore: <TEvent extends StoredVoiceTraceEvent = StoredVoiceTraceEvent>(store: VoiceTraceEventStore<TEvent>, scope: VoiceScopedTraceEventStoreOptions) => VoiceTraceEventStore<TEvent>;
|
|
222
|
+
export declare const createVoiceProofTraceStore: <TEvent extends StoredVoiceTraceEvent = StoredVoiceTraceEvent>(options?: VoiceProofTraceStoreOptions<TEvent>) => VoiceTraceEventStore<TEvent>;
|
|
215
223
|
export declare const selectVoiceTraceEventsForPrune: <TEvent extends StoredVoiceTraceEvent = StoredVoiceTraceEvent>(events: TEvent[], options?: Omit<VoiceTracePruneOptions, "store">) => TEvent[];
|
|
216
224
|
export declare const pruneVoiceTraceEvents: (options: VoiceTracePruneOptions) => Promise<VoiceTracePruneResult>;
|
|
217
225
|
export declare const createVoiceTraceHTTPSink: <TBody extends Record<string, unknown> = Record<string, unknown>>(options: VoiceTraceHTTPSinkOptions<TBody>) => VoiceTraceSink;
|
package/dist/vue/index.js
CHANGED
|
@@ -2477,6 +2477,57 @@ var filterVoiceTraceEvents = (events, filter = {}) => {
|
|
|
2477
2477
|
const sorted = events.filter((event) => matchesTraceFilter(event, filter)).sort((left, right) => left.at - right.at || left.id.localeCompare(right.id));
|
|
2478
2478
|
return typeof filter.limit === "number" && filter.limit >= 0 ? sorted.slice(0, filter.limit) : sorted;
|
|
2479
2479
|
};
|
|
2480
|
+
var createVoiceScopedTraceEventStore = (store, scope) => {
|
|
2481
|
+
const upstreamFilter = (filter = {}) => {
|
|
2482
|
+
const next = { ...filter };
|
|
2483
|
+
delete next.limit;
|
|
2484
|
+
if (scope.scenarioId !== undefined) {
|
|
2485
|
+
delete next.scenarioId;
|
|
2486
|
+
}
|
|
2487
|
+
if (scope.sessionId !== undefined) {
|
|
2488
|
+
delete next.sessionId;
|
|
2489
|
+
}
|
|
2490
|
+
if (scope.traceId !== undefined) {
|
|
2491
|
+
delete next.traceId;
|
|
2492
|
+
}
|
|
2493
|
+
if (scope.turnId !== undefined) {
|
|
2494
|
+
delete next.turnId;
|
|
2495
|
+
}
|
|
2496
|
+
if (scope.type !== undefined) {
|
|
2497
|
+
delete next.type;
|
|
2498
|
+
}
|
|
2499
|
+
return next;
|
|
2500
|
+
};
|
|
2501
|
+
const scopedFilter = (filter = {}) => ({
|
|
2502
|
+
...filter,
|
|
2503
|
+
...scope
|
|
2504
|
+
});
|
|
2505
|
+
return {
|
|
2506
|
+
append: (event) => store.append(event),
|
|
2507
|
+
get: (id) => store.get(id),
|
|
2508
|
+
list: async (filter) => filterVoiceTraceEvents(await store.list(upstreamFilter(filter)), scopedFilter(filter)),
|
|
2509
|
+
remove: (id) => store.remove(id)
|
|
2510
|
+
};
|
|
2511
|
+
};
|
|
2512
|
+
var createVoiceProofTraceStore = (options = {}) => {
|
|
2513
|
+
const proofStore = options.proofStore ?? createVoiceMemoryTraceEventStore();
|
|
2514
|
+
const scopedProofStore = options.scope ? createVoiceScopedTraceEventStore(proofStore, options.scope) : proofStore;
|
|
2515
|
+
return {
|
|
2516
|
+
append: async (event) => {
|
|
2517
|
+
const stored = await proofStore.append(event);
|
|
2518
|
+
await options.mirrorStore?.append(stored);
|
|
2519
|
+
return stored;
|
|
2520
|
+
},
|
|
2521
|
+
get: async (id) => await proofStore.get(id) ?? await options.mirrorStore?.get(id),
|
|
2522
|
+
list: (filter) => scopedProofStore.list(filter),
|
|
2523
|
+
remove: async (id) => {
|
|
2524
|
+
await Promise.all([
|
|
2525
|
+
proofStore.remove(id),
|
|
2526
|
+
options.mirrorStore?.remove(id) ?? Promise.resolve()
|
|
2527
|
+
]);
|
|
2528
|
+
}
|
|
2529
|
+
};
|
|
2530
|
+
};
|
|
2480
2531
|
var isPruneTimeMatch = (event, options) => {
|
|
2481
2532
|
if (typeof options.before === "number" && event.at >= options.before) {
|
|
2482
2533
|
return false;
|