@absolutejs/voice 0.0.22-beta.674 → 0.0.22-beta.676

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.
@@ -8254,40 +8254,40 @@ var fetchVoiceWorkflowStatus = async (path = "/evals/scenarios/json", options =
8254
8254
  // src/svelte/createVoiceWorkflowStatus.ts
8255
8255
  var createVoiceWorkflowStatus = (path = "/evals/scenarios/json", options = {}) => createVoiceWorkflowStatusStore(path, options);
8256
8256
  export {
8257
- renderVoiceReplayTimelineHTML,
8258
- renderVoiceLiveCallViewerHTML,
8259
- renderVoiceLiveAgentConsoleHTML,
8260
- renderVoiceCostDashboardHTML,
8261
- renderVoiceCallPlayerHTML,
8262
- createVoiceWorkflowStatus,
8263
- createVoiceWidget,
8264
- createVoiceTurnQuality,
8265
- createVoiceTurnLatency,
8266
- createVoiceTraceTimeline,
8267
- createVoiceStream2 as createVoiceStream,
8268
- createVoiceSessionSnapshot,
8269
- createVoiceSessionObservability,
8270
- createVoiceRoutingStatus,
8271
- createVoiceReplayTimeline,
8272
- createVoiceReconnectProfileEvidence,
8273
- createVoiceReadinessFailures,
8274
- createVoiceProviderStatus,
8275
- createVoiceProviderSimulationControls,
8276
- createVoiceProviderContracts,
8277
- createVoiceProviderCapabilities,
8278
- createVoiceProofTrends,
8279
- createVoiceProfileComparison,
8280
- createVoicePlatformCoverage,
8281
- createVoiceOpsStatus,
8282
- createVoiceOpsActionCenter,
8283
- createVoiceLiveOps,
8284
- createVoiceLiveCallViewer,
8285
- createVoiceLiveAgentConsole,
8286
- createVoiceDeliveryRuntime,
8287
- createVoiceCostDashboard,
8288
- createVoiceController,
8289
- createVoiceCampaignDialerProof,
8290
- createVoiceCallPlayer2 as createVoiceCallPlayer,
8257
+ createVoiceAgentSquadStatus,
8291
8258
  createVoiceCallDebugger,
8292
- createVoiceAgentSquadStatus
8259
+ createVoiceCallPlayer2 as createVoiceCallPlayer,
8260
+ createVoiceCampaignDialerProof,
8261
+ createVoiceController,
8262
+ createVoiceCostDashboard,
8263
+ createVoiceDeliveryRuntime,
8264
+ createVoiceLiveAgentConsole,
8265
+ createVoiceLiveCallViewer,
8266
+ createVoiceLiveOps,
8267
+ createVoiceOpsActionCenter,
8268
+ createVoiceOpsStatus,
8269
+ createVoicePlatformCoverage,
8270
+ createVoiceProfileComparison,
8271
+ createVoiceProofTrends,
8272
+ createVoiceProviderCapabilities,
8273
+ createVoiceProviderContracts,
8274
+ createVoiceProviderSimulationControls,
8275
+ createVoiceProviderStatus,
8276
+ createVoiceReadinessFailures,
8277
+ createVoiceReconnectProfileEvidence,
8278
+ createVoiceReplayTimeline,
8279
+ createVoiceRoutingStatus,
8280
+ createVoiceSessionObservability,
8281
+ createVoiceSessionSnapshot,
8282
+ createVoiceStream2 as createVoiceStream,
8283
+ createVoiceTraceTimeline,
8284
+ createVoiceTurnLatency,
8285
+ createVoiceTurnQuality,
8286
+ createVoiceWidget,
8287
+ createVoiceWorkflowStatus,
8288
+ renderVoiceCallPlayerHTML,
8289
+ renderVoiceCostDashboardHTML,
8290
+ renderVoiceLiveAgentConsoleHTML,
8291
+ renderVoiceLiveCallViewerHTML,
8292
+ renderVoiceReplayTimelineHTML
8293
8293
  };
@@ -5321,7 +5321,7 @@ var sleep = (ms) => new Promise((resolve2) => {
5321
5321
  setTimeout(resolve2, ms);
5322
5322
  });
5323
5323
  var errorMessage = (error) => error instanceof Error ? error.message : String(error);
5324
- var defaultIsRateLimitError = (error) => /(\b429\b|rate limit|quota|too many requests)/i.test(errorMessage(error));
5324
+ var defaultIsRateLimitError = (error) => /(\b429\b|rate[ _-]limit|quota|too many requests)/i.test(errorMessage(error));
5325
5325
  var normalizeRouteOutput = (output) => {
5326
5326
  const result = {};
5327
5327
  if (typeof output.assistantText === "string") {
@@ -5878,6 +5878,15 @@ var finalizeToolCalls = (calls) => [...calls.values()].filter((call) => call.nam
5878
5878
  id: call.id,
5879
5879
  name: call.name
5880
5880
  }));
5881
+ var openAIResponseError = (response) => {
5882
+ if (response.status === "failed") {
5883
+ return new Error(`OpenAI voice assistant model failed: ${response.code ?? "response_failed"}: ${response.message ?? "Provider response failed"}`);
5884
+ }
5885
+ if (response.status === "incomplete") {
5886
+ return new Error(`OpenAI voice assistant model incomplete: ${response.incompleteReason ?? "unknown reason"}`);
5887
+ }
5888
+ return;
5889
+ };
5881
5890
  var consumeOpenAIResponsesStream = async (response, onTextDelta, abortOptions) => {
5882
5891
  let assistantText = "";
5883
5892
  let usage;
@@ -5885,11 +5894,17 @@ var consumeOpenAIResponsesStream = async (response, onTextDelta, abortOptions) =
5885
5894
  let incompleteReason;
5886
5895
  let refusal = "";
5887
5896
  let failureMessage;
5897
+ let streamError;
5888
5898
  let outputItems = 0;
5889
5899
  const calls = new Map;
5890
5900
  await readServerSentEvents(response, (event) => {
5891
5901
  const type = typeof event.type === "string" ? event.type : "";
5892
5902
  const item = event.item;
5903
+ if (type === "error") {
5904
+ const code = typeof event.code === "string" ? event.code : "stream_error";
5905
+ const message = typeof event.message === "string" ? event.message : "Provider stream failed";
5906
+ streamError = new Error(`OpenAI voice assistant model failed: ${code}: ${message}`);
5907
+ }
5893
5908
  if (type === "response.output_item.added") {
5894
5909
  outputItems += 1;
5895
5910
  }
@@ -5918,9 +5933,7 @@ var consumeOpenAIResponsesStream = async (response, onTextDelta, abortOptions) =
5918
5933
  if (completed?.usage && typeof completed.usage === "object") {
5919
5934
  usage = completed.usage;
5920
5935
  }
5921
- if (typeof completed?.status === "string") {
5922
- status = completed.status;
5923
- }
5936
+ status = typeof completed?.status === "string" ? completed.status : type.slice("response.".length);
5924
5937
  const incomplete = completed?.incomplete_details;
5925
5938
  if (typeof incomplete?.reason === "string") {
5926
5939
  incompleteReason = incomplete.reason;
@@ -5929,6 +5942,12 @@ var consumeOpenAIResponsesStream = async (response, onTextDelta, abortOptions) =
5929
5942
  if (typeof failure?.message === "string") {
5930
5943
  failureMessage = failure.message;
5931
5944
  }
5945
+ streamError ??= openAIResponseError({
5946
+ code: typeof failure?.code === "string" ? failure.code : undefined,
5947
+ incompleteReason,
5948
+ message: failureMessage,
5949
+ status: type === "response.completed" ? status : type.slice("response.".length)
5950
+ });
5932
5951
  }
5933
5952
  }, abortOptions);
5934
5953
  return {
@@ -5938,6 +5957,7 @@ var consumeOpenAIResponsesStream = async (response, onTextDelta, abortOptions) =
5938
5957
  outputItems,
5939
5958
  refusal: refusal || undefined,
5940
5959
  status,
5960
+ streamError,
5941
5961
  toolCalls: finalizeToolCalls(calls),
5942
5962
  usage
5943
5963
  };
@@ -6006,6 +6026,7 @@ var createOpenAIVoiceAssistantModel = (options) => {
6006
6026
  let refusal;
6007
6027
  let failureMessage;
6008
6028
  let outputItems = 0;
6029
+ let streamError;
6009
6030
  let firstDeltaSeen = false;
6010
6031
  const onTextDelta = input.onTextDelta ? (delta) => {
6011
6032
  if (!firstDeltaSeen) {
@@ -6023,7 +6044,8 @@ var createOpenAIVoiceAssistantModel = (options) => {
6023
6044
  incompleteReason,
6024
6045
  refusal,
6025
6046
  failureMessage,
6026
- outputItems
6047
+ outputItems,
6048
+ streamError
6027
6049
  } = await consumeOpenAIResponsesStream(response, onTextDelta, {
6028
6050
  signal: ac.signal,
6029
6051
  inactivityMs: options.streamInactivityMs ?? 1e4
@@ -6047,6 +6069,8 @@ var createOpenAIVoiceAssistantModel = (options) => {
6047
6069
  if (usage) {
6048
6070
  await options.onUsage?.(usage);
6049
6071
  }
6072
+ if (streamError)
6073
+ throw streamError;
6050
6074
  return {
6051
6075
  ...assistantText ? { assistantText } : {},
6052
6076
  ...toolCalls.length ? { toolCalls } : {},
@@ -10029,6 +10053,8 @@ var createVoiceSession = (options) => {
10029
10053
  };
10030
10054
  const disconnectInternal = async (event) => {
10031
10055
  clearSilenceTimer();
10056
+ clearStuckCloseWatchdog();
10057
+ clearIdleRepromptWatchdog();
10032
10058
  await closeTTSSession(event?.reason);
10033
10059
  await closeAdapter(event?.reason);
10034
10060
  rewindFallbackTurnAudio();
@@ -16645,72 +16671,72 @@ var summarizeTTSBenchmark = (adapterId, fixtures) => {
16645
16671
  };
16646
16672
  };
16647
16673
  export {
16648
- withVoiceCallReviewId,
16649
- verifyVoiceBenchmarkArtifact,
16650
- summarizeVoiceTelephonyBenchmark,
16651
- summarizeVoiceSessionBenchmarkSeries,
16652
- summarizeVoiceSessionBenchmark,
16653
- summarizeVoiceDuplexBenchmark,
16654
- summarizeVoiceBenchmarkOutcomes,
16655
- summarizeTTSBenchmark,
16656
- summarizeSTTBenchmarkSeries,
16657
- summarizeSTTBenchmark,
16658
- stableBenchmarkJson,
16659
- sha256Bytes,
16660
- scoreVoiceCriticalFields,
16661
- scoreTranscriptAccuracy,
16662
- scoreCorrectedExpectedTerms,
16663
- runVoiceTelephonyMediaOperationsSmoke,
16664
- runVoiceTelephonyBenchmarkScenario,
16665
- runVoiceTelephonyBenchmark,
16666
- runVoiceSessionBenchmarkSeries,
16667
- runVoiceSessionBenchmarkScenario,
16668
- runVoiceSessionBenchmark,
16669
- runVoiceResilienceBenchmark,
16670
- runVoiceDuplexBenchmarkScenario,
16671
- runVoiceDuplexBenchmark,
16672
- runTTSAdapterFixture,
16673
- runTTSAdapterBenchmark,
16674
- runSTTAdapterFixture,
16675
- runSTTAdapterBenchmarkSeries,
16676
- runSTTAdapterBenchmark,
16677
- resolveVoiceFixtureDirectories,
16678
- resolveFixtureEnvironment,
16679
- renderVoiceCallReviewMarkdown,
16680
- renderVoiceCallReviewHTML,
16681
- mergeFinalTranscriptText,
16682
- loadVoiceTestFixtures,
16683
- isCorrectionHoldoutFixtureId,
16684
- getVoiceFixtureDirectory,
16685
- getDefaultVoiceTelephonyBenchmarkScenarios,
16686
- getDefaultVoiceDuplexBenchmarkScenarios,
16687
- getDefaultTTSBenchmarkFixtures,
16688
- evaluateVoiceSTTRouting,
16689
- evaluateSTTBenchmarkAcceptance,
16690
- evaluateSTTAdapterConformance,
16691
- createVoiceProviderFailureSimulator,
16692
- createVoiceIOProviderFailureSimulator,
16693
- createVoiceCallReviewRecorder,
16694
- createVoiceCallReviewFromLiveTelephonyReport,
16695
- createTelephonyVoiceTestFixtures,
16696
- createMultiSpeakerVoiceTestFixtures,
16697
- createJargonVoiceTestFixtures,
16698
- createCodeSwitchBenchmarkCorrectionHandler,
16699
- createBenchmarkCorrectionHandler,
16700
- compareSTTBenchmarks,
16701
- comparePairedMetrics,
16702
- calibrateVoiceConfidence,
16703
- buildVoiceBenchmarkArtifact,
16704
- buildVoiceAudioMatrix,
16705
- buildSessionCorrectionAudit,
16706
- buildFixturePhraseHints,
16707
- buildCorrectionBenchmarkAudit,
16708
- buildCodeSwitchBenchmarkPhraseHints,
16709
- buildCodeSwitchBenchmarkLexicon,
16710
- applyVoiceAudioCondition,
16711
- applyLexiconCorrectedBenchmarkReport,
16712
- applyExperimentalBenchmarkReport,
16713
- applyCorrectedBenchmarkReport,
16674
+ aggregateTranscriptAccuracy,
16714
16675
  alignTranscriptWords,
16715
- aggregateTranscriptAccuracy
16676
+ applyCorrectedBenchmarkReport,
16677
+ applyExperimentalBenchmarkReport,
16678
+ applyLexiconCorrectedBenchmarkReport,
16679
+ applyVoiceAudioCondition,
16680
+ buildCodeSwitchBenchmarkLexicon,
16681
+ buildCodeSwitchBenchmarkPhraseHints,
16682
+ buildCorrectionBenchmarkAudit,
16683
+ buildFixturePhraseHints,
16684
+ buildSessionCorrectionAudit,
16685
+ buildVoiceAudioMatrix,
16686
+ buildVoiceBenchmarkArtifact,
16687
+ calibrateVoiceConfidence,
16688
+ comparePairedMetrics,
16689
+ compareSTTBenchmarks,
16690
+ createBenchmarkCorrectionHandler,
16691
+ createCodeSwitchBenchmarkCorrectionHandler,
16692
+ createJargonVoiceTestFixtures,
16693
+ createMultiSpeakerVoiceTestFixtures,
16694
+ createTelephonyVoiceTestFixtures,
16695
+ createVoiceCallReviewFromLiveTelephonyReport,
16696
+ createVoiceCallReviewRecorder,
16697
+ createVoiceIOProviderFailureSimulator,
16698
+ createVoiceProviderFailureSimulator,
16699
+ evaluateSTTAdapterConformance,
16700
+ evaluateSTTBenchmarkAcceptance,
16701
+ evaluateVoiceSTTRouting,
16702
+ getDefaultTTSBenchmarkFixtures,
16703
+ getDefaultVoiceDuplexBenchmarkScenarios,
16704
+ getDefaultVoiceTelephonyBenchmarkScenarios,
16705
+ getVoiceFixtureDirectory,
16706
+ isCorrectionHoldoutFixtureId,
16707
+ loadVoiceTestFixtures,
16708
+ mergeFinalTranscriptText,
16709
+ renderVoiceCallReviewHTML,
16710
+ renderVoiceCallReviewMarkdown,
16711
+ resolveFixtureEnvironment,
16712
+ resolveVoiceFixtureDirectories,
16713
+ runSTTAdapterBenchmark,
16714
+ runSTTAdapterBenchmarkSeries,
16715
+ runSTTAdapterFixture,
16716
+ runTTSAdapterBenchmark,
16717
+ runTTSAdapterFixture,
16718
+ runVoiceDuplexBenchmark,
16719
+ runVoiceDuplexBenchmarkScenario,
16720
+ runVoiceResilienceBenchmark,
16721
+ runVoiceSessionBenchmark,
16722
+ runVoiceSessionBenchmarkScenario,
16723
+ runVoiceSessionBenchmarkSeries,
16724
+ runVoiceTelephonyBenchmark,
16725
+ runVoiceTelephonyBenchmarkScenario,
16726
+ runVoiceTelephonyMediaOperationsSmoke,
16727
+ scoreCorrectedExpectedTerms,
16728
+ scoreTranscriptAccuracy,
16729
+ scoreVoiceCriticalFields,
16730
+ sha256Bytes,
16731
+ stableBenchmarkJson,
16732
+ summarizeSTTBenchmark,
16733
+ summarizeSTTBenchmarkSeries,
16734
+ summarizeTTSBenchmark,
16735
+ summarizeVoiceBenchmarkOutcomes,
16736
+ summarizeVoiceDuplexBenchmark,
16737
+ summarizeVoiceSessionBenchmark,
16738
+ summarizeVoiceSessionBenchmarkSeries,
16739
+ summarizeVoiceTelephonyBenchmark,
16740
+ verifyVoiceBenchmarkArtifact,
16741
+ withVoiceCallReviewId
16716
16742
  };
package/dist/vue/index.js CHANGED
@@ -14012,52 +14012,52 @@ function useVoiceWorkflowStatus(path = "/evals/scenarios/json", options = {}) {
14012
14012
  };
14013
14013
  }
14014
14014
  export {
14015
- useVoiceWorkflowStatus,
14016
- useVoiceTurnQuality,
14017
- useVoiceTurnLatency,
14018
- useVoiceTraceTimeline,
14019
- useVoiceStream,
14020
- useVoiceSessionSnapshot,
14021
- useVoiceSessionObservability,
14022
- useVoiceRoutingStatus,
14023
- useVoiceReconnectProfileEvidence,
14024
- useVoiceReadinessFailures,
14025
- useVoiceProviderStatus,
14026
- useVoiceProviderSimulationControls,
14027
- useVoiceProviderContracts,
14028
- useVoiceProviderCapabilities,
14029
- useVoiceProofTrends,
14030
- useVoiceProfileComparison,
14031
- useVoicePlatformCoverage,
14032
- useVoiceOpsStatus,
14033
- useVoiceOpsActionCenter,
14034
- useVoiceLiveOps,
14035
- useVoiceDeliveryRuntime,
14036
- useVoiceController,
14037
- useVoiceCampaignDialerProof,
14038
- useVoiceCallDebugger,
14039
- useVoiceAgentSquadStatus,
14040
- VoiceWidget,
14041
- VoiceTurnQuality,
14042
- VoiceTurnLatency,
14043
- VoiceSessionSnapshot,
14044
- VoiceSessionObservability,
14045
- VoiceRoutingStatus,
14046
- VoiceReplayTimeline,
14047
- VoiceReconnectProfileEvidence,
14048
- VoiceReadinessFailures,
14049
- VoiceProviderStatus,
14050
- VoiceProviderSimulationControls,
14051
- VoiceProviderContracts,
14052
- VoiceProviderCapabilities,
14053
- VoiceProofTrends,
14054
- VoicePlatformCoverage,
14055
- VoiceOpsStatus,
14056
- VoiceOpsActionCenter,
14057
- VoiceLiveCallViewer,
14058
- VoiceLiveAgentConsole,
14059
- VoiceDeliveryRuntime,
14060
- VoiceCostDashboard,
14015
+ VoiceCallDebuggerLaunch,
14061
14016
  VoiceCallPlayer,
14062
- VoiceCallDebuggerLaunch
14017
+ VoiceCostDashboard,
14018
+ VoiceDeliveryRuntime,
14019
+ VoiceLiveAgentConsole,
14020
+ VoiceLiveCallViewer,
14021
+ VoiceOpsActionCenter,
14022
+ VoiceOpsStatus,
14023
+ VoicePlatformCoverage,
14024
+ VoiceProofTrends,
14025
+ VoiceProviderCapabilities,
14026
+ VoiceProviderContracts,
14027
+ VoiceProviderSimulationControls,
14028
+ VoiceProviderStatus,
14029
+ VoiceReadinessFailures,
14030
+ VoiceReconnectProfileEvidence,
14031
+ VoiceReplayTimeline,
14032
+ VoiceRoutingStatus,
14033
+ VoiceSessionObservability,
14034
+ VoiceSessionSnapshot,
14035
+ VoiceTurnLatency,
14036
+ VoiceTurnQuality,
14037
+ VoiceWidget,
14038
+ useVoiceAgentSquadStatus,
14039
+ useVoiceCallDebugger,
14040
+ useVoiceCampaignDialerProof,
14041
+ useVoiceController,
14042
+ useVoiceDeliveryRuntime,
14043
+ useVoiceLiveOps,
14044
+ useVoiceOpsActionCenter,
14045
+ useVoiceOpsStatus,
14046
+ useVoicePlatformCoverage,
14047
+ useVoiceProfileComparison,
14048
+ useVoiceProofTrends,
14049
+ useVoiceProviderCapabilities,
14050
+ useVoiceProviderContracts,
14051
+ useVoiceProviderSimulationControls,
14052
+ useVoiceProviderStatus,
14053
+ useVoiceReadinessFailures,
14054
+ useVoiceReconnectProfileEvidence,
14055
+ useVoiceRoutingStatus,
14056
+ useVoiceSessionObservability,
14057
+ useVoiceSessionSnapshot,
14058
+ useVoiceStream,
14059
+ useVoiceTraceTimeline,
14060
+ useVoiceTurnLatency,
14061
+ useVoiceTurnQuality,
14062
+ useVoiceWorkflowStatus
14063
14063
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/voice",
3
- "version": "0.0.22-beta.674",
3
+ "version": "0.0.22-beta.676",
4
4
  "description": "Voice primitives and Elysia plugin for AbsoluteJS",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,8 +11,10 @@
11
11
  "url": "https://github.com/absolutejs/voice/issues"
12
12
  },
13
13
  "files": [
14
- "dist",
15
- "README.md"
14
+ "CHANGELOG.md",
15
+ "README.md",
16
+ "changelog.json",
17
+ "dist"
16
18
  ],
17
19
  "main": "./dist/index.js",
18
20
  "types": "./dist/index.d.ts",
@@ -33,7 +35,8 @@
33
35
  "test:openai": "bun test ./test/live/openai.live.test.ts",
34
36
  "typecheck": "absolute typecheck",
35
37
  "verify-package": "absolute-manifest verify-package",
36
- "check:package": "bun run format && bun run typecheck && bun run test && bun run verify-package && bun run build"
38
+ "check:package": "bun run format && bun run typecheck && bun run test && bun run verify-package && bun run build && absolute-changelog check",
39
+ "prepublishOnly": "bun run check:package"
37
40
  },
38
41
  "exports": {
39
42
  ".": {
@@ -148,6 +151,7 @@
148
151
  "devDependencies": {
149
152
  "@absolutejs/absolute": "0.20.0-beta.0",
150
153
  "@absolutejs/ai": "0.0.47",
154
+ "@absolutejs/changelog": "^0.6.0",
151
155
  "@angular/core": "22.0.8",
152
156
  "@electric-sql/pglite": "^0.4.5",
153
157
  "@eslint/js": "^10.0.1",