@voiceflow/sdk-runtime 1.27.1-5ab45311.15 → 1.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/build/cjs/main.d.ts +2 -1
  2. package/build/cjs/main.d.ts.map +1 -1
  3. package/build/cjs/main.js +2 -1
  4. package/build/cjs/main.js.map +1 -1
  5. package/build/cjs/sdk/sdk.service.d.ts +1 -2
  6. package/build/cjs/sdk/sdk.service.d.ts.map +1 -1
  7. package/build/cjs/sdk/sdk.service.js +0 -6
  8. package/build/cjs/sdk/sdk.service.js.map +1 -1
  9. package/build/cjs/v2/interact-trace.stream.d.ts +3 -0
  10. package/build/cjs/v2/interact-trace.stream.d.ts.map +1 -1
  11. package/build/cjs/v2/interact-trace.stream.js +3 -2
  12. package/build/cjs/v2/interact-trace.stream.js.map +1 -1
  13. package/build/cjs/v2/runtime.interface.d.ts +6 -0
  14. package/build/cjs/v2/runtime.interface.d.ts.map +1 -1
  15. package/build/cjs/v2/runtime.interface.js +8 -0
  16. package/build/cjs/v2/runtime.interface.js.map +1 -1
  17. package/build/cjs/v2/{websocket-runtime.client.d.ts → websocket-runtime/websocket-runtime.client.d.ts} +5 -32
  18. package/build/cjs/v2/websocket-runtime/websocket-runtime.client.d.ts.map +1 -0
  19. package/build/cjs/v2/{websocket-runtime.client.js → websocket-runtime/websocket-runtime.client.js} +77 -128
  20. package/build/cjs/v2/websocket-runtime/websocket-runtime.client.js.map +1 -0
  21. package/build/cjs/v2/websocket-runtime/websocket-runtime.interface.d.ts +61 -0
  22. package/build/cjs/v2/websocket-runtime/websocket-runtime.interface.d.ts.map +1 -0
  23. package/build/cjs/v2/websocket-runtime/websocket-runtime.interface.js +19 -0
  24. package/build/cjs/v2/websocket-runtime/websocket-runtime.interface.js.map +1 -0
  25. package/build/cjs/v2/websocket-runtime/websocket-runtime.utils.d.ts +6 -0
  26. package/build/cjs/v2/websocket-runtime/websocket-runtime.utils.d.ts.map +1 -0
  27. package/build/cjs/v2/websocket-runtime/websocket-runtime.utils.js +22 -0
  28. package/build/cjs/v2/websocket-runtime/websocket-runtime.utils.js.map +1 -0
  29. package/build/cjs/v2/{websocket-trace.stream.d.ts → websocket-runtime/websocket-trace.stream.d.ts} +3 -6
  30. package/build/cjs/v2/websocket-runtime/websocket-trace.stream.d.ts.map +1 -0
  31. package/build/cjs/v2/websocket-runtime/websocket-trace.stream.js +26 -0
  32. package/build/cjs/v2/websocket-runtime/websocket-trace.stream.js.map +1 -0
  33. package/build/esm/main.d.ts +2 -1
  34. package/build/esm/main.d.ts.map +1 -1
  35. package/build/esm/main.js +2 -1
  36. package/build/esm/main.js.map +1 -1
  37. package/build/esm/sdk/sdk.service.d.ts +1 -2
  38. package/build/esm/sdk/sdk.service.d.ts.map +1 -1
  39. package/build/esm/sdk/sdk.service.js +0 -6
  40. package/build/esm/sdk/sdk.service.js.map +1 -1
  41. package/build/esm/v2/interact-trace.stream.d.ts +3 -0
  42. package/build/esm/v2/interact-trace.stream.d.ts.map +1 -1
  43. package/build/esm/v2/interact-trace.stream.js +1 -1
  44. package/build/esm/v2/interact-trace.stream.js.map +1 -1
  45. package/build/esm/v2/runtime.interface.d.ts +6 -0
  46. package/build/esm/v2/runtime.interface.d.ts.map +1 -1
  47. package/build/esm/v2/runtime.interface.js +7 -1
  48. package/build/esm/v2/runtime.interface.js.map +1 -1
  49. package/build/esm/v2/{websocket-runtime.client.d.ts → websocket-runtime/websocket-runtime.client.d.ts} +5 -32
  50. package/build/esm/v2/websocket-runtime/websocket-runtime.client.d.ts.map +1 -0
  51. package/build/esm/v2/{websocket-runtime.client.js → websocket-runtime/websocket-runtime.client.js} +60 -111
  52. package/build/esm/v2/websocket-runtime/websocket-runtime.client.js.map +1 -0
  53. package/build/esm/v2/websocket-runtime/websocket-runtime.interface.d.ts +61 -0
  54. package/build/esm/v2/websocket-runtime/websocket-runtime.interface.d.ts.map +1 -0
  55. package/build/esm/v2/websocket-runtime/websocket-runtime.interface.js +16 -0
  56. package/build/esm/v2/websocket-runtime/websocket-runtime.interface.js.map +1 -0
  57. package/build/esm/v2/websocket-runtime/websocket-runtime.utils.d.ts +6 -0
  58. package/build/esm/v2/websocket-runtime/websocket-runtime.utils.d.ts.map +1 -0
  59. package/build/esm/v2/websocket-runtime/websocket-runtime.utils.js +15 -0
  60. package/build/esm/v2/websocket-runtime/websocket-runtime.utils.js.map +1 -0
  61. package/build/esm/v2/{websocket-trace.stream.d.ts → websocket-runtime/websocket-trace.stream.d.ts} +3 -6
  62. package/build/esm/v2/websocket-runtime/websocket-trace.stream.d.ts.map +1 -0
  63. package/build/esm/v2/websocket-runtime/websocket-trace.stream.js +22 -0
  64. package/build/esm/v2/websocket-runtime/websocket-trace.stream.js.map +1 -0
  65. package/package.json +4 -3
  66. package/build/cjs/v2/websocket-runtime.client.d.ts.map +0 -1
  67. package/build/cjs/v2/websocket-runtime.client.js.map +0 -1
  68. package/build/cjs/v2/websocket-trace.stream.d.ts.map +0 -1
  69. package/build/cjs/v2/websocket-trace.stream.js +0 -84
  70. package/build/cjs/v2/websocket-trace.stream.js.map +0 -1
  71. package/build/esm/v2/websocket-runtime.client.d.ts.map +0 -1
  72. package/build/esm/v2/websocket-runtime.client.js.map +0 -1
  73. package/build/esm/v2/websocket-trace.stream.d.ts.map +0 -1
  74. package/build/esm/v2/websocket-trace.stream.js +0 -80
  75. package/build/esm/v2/websocket-trace.stream.js.map +0 -1
@@ -6,5 +6,6 @@ export * from './v2/public-runtime.client';
6
6
  export type { RuntimeInteractStreamRequest } from './v2/runtime.interface';
7
7
  export { IRuntimeClient } from './v2/runtime.interface';
8
8
  export * from './v2/shareable-link-runtime.client';
9
- export * from './v2/websocket-runtime.client';
9
+ export * from './v2/websocket-runtime/websocket-runtime.client';
10
+ export * from './v2/websocket-runtime/websocket-runtime.interface';
10
11
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,YAAY,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,YAAY,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,cAAc,oCAAoC,CAAC;AACnD,cAAc,iDAAiD,CAAC;AAChE,cAAc,oDAAoD,CAAC"}
package/build/cjs/main.js CHANGED
@@ -20,5 +20,6 @@ __exportStar(require("./trace"), exports);
20
20
  __exportStar(require("./v2/private-runtime.client"), exports);
21
21
  __exportStar(require("./v2/public-runtime.client"), exports);
22
22
  __exportStar(require("./v2/shareable-link-runtime.client"), exports);
23
- __exportStar(require("./v2/websocket-runtime.client"), exports);
23
+ __exportStar(require("./v2/websocket-runtime/websocket-runtime.client"), exports);
24
+ __exportStar(require("./v2/websocket-runtime/websocket-runtime.interface"), exports);
24
25
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,wCAAsB;AACtB,0CAAwB;AACxB,8DAA4C;AAC5C,6DAA2C;AAG3C,qEAAmD;AACnD,gEAA8C"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,wCAAsB;AACtB,0CAAwB;AACxB,8DAA4C;AAC5C,6DAA2C;AAG3C,qEAAmD;AACnD,kFAAgE;AAChE,qFAAmE"}
@@ -4,13 +4,12 @@ import type { VoiceflowRuntimeOptions } from './sdk.interface';
4
4
  export declare class VoiceflowRuntime<T> {
5
5
  private readonly runtime;
6
6
  private readonly trace;
7
- private readonly useWebSocket;
8
7
  constructor(options: VoiceflowRuntimeOptions<T>);
9
8
  registerStep(step: TraceDeclaration<T, any>): this;
10
9
  interact(context: T, request: RuntimeInteractRequest): Promise<T>;
11
10
  feedback(request: RuntimeFeedbackRequest): Promise<void>;
12
11
  getPublishing<T extends Record<string, unknown>>(...options: Parameters<RuntimeService['getPublishing']>): Promise<T>;
13
12
  createTranscript(...options: Parameters<RuntimeService['createTranscript']>): Promise<import("../runtime").Transcript>;
14
- endTranscript(...options: Parameters<RuntimeService['endTranscript']>): Promise<void | null>;
13
+ endTranscript(...options: Parameters<RuntimeService['endTranscript']>): Promise<void>;
15
14
  }
16
15
  //# sourceMappingURL=sdk.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.service.d.ts","sourceRoot":"","sources":["../../../src/sdk/sdk.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAUhG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,qBAAa,gBAAgB,CAAC,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IAExC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;gBAEpB,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAiB/C,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC;IAKrC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKjE,QAAQ,CAAC,OAAO,EAAE,sBAAsB;IAIxC,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1D,GAAG,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAK5C,gBAAgB,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAI3E,aAAa,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;CAQnF"}
1
+ {"version":3,"file":"sdk.service.d.ts","sourceRoot":"","sources":["../../../src/sdk/sdk.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAUhG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,qBAAa,gBAAgB,CAAC,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;gBAErB,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAgB/C,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC;IAKrC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKjE,QAAQ,CAAC,OAAO,EAAE,sBAAsB;IAIxC,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1D,GAAG,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAK5C,gBAAgB,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAI3E,aAAa,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;CAGnF"}
@@ -6,7 +6,6 @@ const trace_service_1 = require("../trace/trace.service");
6
6
  class VoiceflowRuntime {
7
7
  constructor(options) {
8
8
  this.trace = new trace_service_1.TraceService(options);
9
- this.useWebSocket = options.useWebSocket ?? false;
10
9
  if ((0, runtime_1.isPrototypeRuntimeOptions)(options)) {
11
10
  this.runtime = new runtime_1.PrototypeRuntimeService(options);
12
11
  }
@@ -41,11 +40,6 @@ class VoiceflowRuntime {
41
40
  return this.runtime.createTranscript(...options);
42
41
  }
43
42
  async endTranscript(...options) {
44
- if (this.useWebSocket) {
45
- // Skip HTTP endTranscript call for WebSocket connections
46
- // The WebSocket connection handles transcript lifecycle
47
- return null;
48
- }
49
43
  return this.runtime.endTranscript(...options);
50
44
  }
51
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.service.js","sourceRoot":"","sources":["../../../src/sdk/sdk.service.ts"],"names":[],"mappings":";;;AACA,uCAQmB;AAEnB,yDAAqD;AAIrD,MAAa,gBAAgB;IAO3B,YAAmB,OAAmC;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC;QAElD,IAAI,IAAA,mCAAyB,EAAC,OAAO,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,GAAG,IAAI,iCAAuB,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,IAAA,8BAAoB,EAAC,OAAO,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,IAAI,4BAAkB,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,IAAA,gCAAsB,EAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,8BAAoB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,IAAA,uCAA6B,EAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,GAAG,IAAI,8BAAoB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEM,YAAY,CAAC,IAA8B;QAChD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,OAAU,EAAE,OAA+B;QAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,OAA+B;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,GAAG,OAAoD;QAEvD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAI,GAAG,OAAO,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,GAAG,OAAuD;QACtF,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,GAAG,OAAoD;QAChF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,yDAAyD;YACzD,wDAAwD;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC;IAChD,CAAC;CACF;AAxDD,4CAwDC"}
1
+ {"version":3,"file":"sdk.service.js","sourceRoot":"","sources":["../../../src/sdk/sdk.service.ts"],"names":[],"mappings":";;;AACA,uCAQmB;AAEnB,yDAAqD;AAIrD,MAAa,gBAAgB;IAK3B,YAAmB,OAAmC;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,IAAA,mCAAyB,EAAC,OAAO,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,GAAG,IAAI,iCAAuB,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,IAAA,8BAAoB,EAAC,OAAO,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,IAAI,4BAAkB,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,IAAA,gCAAsB,EAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,8BAAoB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,IAAA,uCAA6B,EAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,GAAG,IAAI,8BAAoB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEM,YAAY,CAAC,IAA8B;QAChD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,OAAU,EAAE,OAA+B;QAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,OAA+B;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,GAAG,OAAoD;QAEvD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAI,GAAG,OAAO,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,GAAG,OAAuD;QACtF,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,GAAG,OAAoD;QAChF,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC;IAChD,CAAC;CACF;AAhDD,4CAgDC"}
@@ -1,6 +1,9 @@
1
1
  import { type AnyTrace } from '@voiceflow/dtos-interact';
2
2
  import type { EventSourceMessage } from 'eventsource-parser';
3
3
  import type { TraceService } from './trace.service';
4
+ export declare const hasFinalize: (trace: unknown) => trace is {
5
+ finalize: () => Promise<void>;
6
+ };
4
7
  export declare class InteractTraceStream<T> extends TransformStream<EventSourceMessage, T> {
5
8
  private readonly createContext;
6
9
  private readonly trace;
@@ -1 +1 @@
1
- {"version":3,"file":"interact-trace.stream.d.ts","sourceRoot":"","sources":["../../../src/v2/interact-trace.stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD,qBAAa,mBAAmB,CAAC,CAAC,CAAE,SAAQ,eAAe,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE9E,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAFR,aAAa,EAAE,MAAM,CAAC,EACtB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,GAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,aAAA;CAqBnF"}
1
+ {"version":3,"file":"interact-trace.stream.d.ts","sourceRoot":"","sources":["../../../src/v2/interact-trace.stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,KAAK,IAAI;IAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAEpF,CAAC;AAEF,qBAAa,mBAAmB,CAAC,CAAC,CAAE,SAAQ,eAAe,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE9E,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAFR,aAAa,EAAE,MAAM,CAAC,EACtB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,OAAO,CAAC,GAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,aAAA;CAqBnF"}
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InteractTraceStream = void 0;
3
+ exports.InteractTraceStream = exports.hasFinalize = void 0;
4
4
  const hasFinalize = (trace) => {
5
5
  return typeof trace === 'object' && trace !== null && 'finalize' in trace && typeof trace.finalize === 'function';
6
6
  };
7
+ exports.hasFinalize = hasFinalize;
7
8
  class InteractTraceStream extends TransformStream {
8
9
  constructor(createContext, trace, onTrace) {
9
10
  super({
@@ -15,7 +16,7 @@ class InteractTraceStream extends TransformStream {
15
16
  if (!trace)
16
17
  return;
17
18
  controller.enqueue(trace);
18
- if (hasFinalize(trace)) {
19
+ if ((0, exports.hasFinalize)(trace)) {
19
20
  await trace.finalize();
20
21
  }
21
22
  },
@@ -1 +1 @@
1
- {"version":3,"file":"interact-trace.stream.js","sourceRoot":"","sources":["../../../src/v2/interact-trace.stream.ts"],"names":[],"mappings":";;;AAKA,MAAM,WAAW,GAAG,CAAC,KAAc,EAA8C,EAAE;IACjF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC;AACpH,CAAC,CAAC;AAEF,MAAa,mBAAuB,SAAQ,eAAsC;IAChF,YACmB,aAAsB,EACtB,KAAsB,EACtB,OAA+D;QAEhF,KAAK,CAAC;YACJ,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAErC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAEpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC3D,IAAI,CAAC,KAAK;oBAAE,OAAO;gBAEnB,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAE1B,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACzB,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QArBc,kBAAa,GAAb,aAAa,CAAS;QACtB,UAAK,GAAL,KAAK,CAAiB;QACtB,YAAO,GAAP,OAAO,CAAwD;IAoBlF,CAAC;CACF;AAzBD,kDAyBC"}
1
+ {"version":3,"file":"interact-trace.stream.js","sourceRoot":"","sources":["../../../src/v2/interact-trace.stream.ts"],"names":[],"mappings":";;;AAKO,MAAM,WAAW,GAAG,CAAC,KAAc,EAA8C,EAAE;IACxF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC;AACpH,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB;AAEF,MAAa,mBAAuB,SAAQ,eAAsC;IAChF,YACmB,aAAsB,EACtB,KAAsB,EACtB,OAA+D;QAEhF,KAAK,CAAC;YACJ,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAErC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAEpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC3D,IAAI,CAAC,KAAK;oBAAE,OAAO;gBAEnB,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAE1B,IAAI,IAAA,mBAAW,EAAC,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACzB,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QArBc,kBAAa,GAAb,aAAa,CAAS;QACtB,UAAK,GAAL,KAAK,CAAiB;QACtB,YAAO,GAAP,OAAO,CAAwD;IAoBlF,CAAC;CACF;AAzBD,kDAyBC"}
@@ -1,6 +1,11 @@
1
1
  import type { AnyTrace } from '@voiceflow/dtos-interact';
2
2
  import type { RuntimeAction } from '../runtime';
3
3
  import type { TraceOptions } from '../trace';
4
+ export declare enum Environment {
5
+ DEVELOPMENT = "development",
6
+ STAGING = "staging",
7
+ PRODUCTION = "production"
8
+ }
4
9
  export interface RuntimeClientOptions<T> extends TraceOptions<T> {
5
10
  baseURL: string;
6
11
  onTrace?: (context: T, trace: AnyTrace) => Promise<void> | void;
@@ -22,5 +27,6 @@ export interface IRuntimeClient<T> {
22
27
  patchState?(state: Record<string, any>): void;
23
28
  setInitialState?(state: Record<string, any>): void;
24
29
  interactStream(createContext: () => T, request: RuntimeInteractStreamRequest): Promise<ReadableStream<T>>;
30
+ disconnect?(): void;
25
31
  }
26
32
  //# sourceMappingURL=runtime.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.interface.d.ts","sourceRoot":"","sources":["../../../src/v2/runtime.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,oBAAoB,CAAC,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACjE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,4BAA4B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACtD,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9C,eAAe,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACnD,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3G"}
1
+ {"version":3,"file":"runtime.interface.d.ts","sourceRoot":"","sources":["../../../src/v2/runtime.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,oBAAY,WAAW;IACrB,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACjE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,4BAA4B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACtD,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9C,eAAe,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACnD,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1G,UAAU,CAAC,IAAI,IAAI,CAAC;CACrB"}
@@ -1,3 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Environment = void 0;
4
+ // Define the Environment enum locally if not available
5
+ var Environment;
6
+ (function (Environment) {
7
+ Environment["DEVELOPMENT"] = "development";
8
+ Environment["STAGING"] = "staging";
9
+ Environment["PRODUCTION"] = "production";
10
+ })(Environment || (exports.Environment = Environment = {}));
3
11
  //# sourceMappingURL=runtime.interface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.interface.js","sourceRoot":"","sources":["../../../src/v2/runtime.interface.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"runtime.interface.js","sourceRoot":"","sources":["../../../src/v2/runtime.interface.ts"],"names":[],"mappings":";;;AAKA,uDAAuD;AACvD,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,0CAA2B,CAAA;IAC3B,kCAAmB,CAAA;IACnB,wCAAyB,CAAA;AAC3B,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB"}
@@ -1,28 +1,6 @@
1
- import { AudioEncoding, Modality } from '@voiceflow/dtos-interact';
2
- import type { IRuntimeClient, RuntimeClientOptions, RuntimeInteractStreamRequest } from './runtime.interface';
3
- import { TraceService } from './trace.service';
4
- export interface InitialDialogSessionMetadata {
5
- userID: string;
6
- sessionID?: string;
7
- environmentID?: string;
8
- config?: {
9
- completionEvents?: boolean;
10
- audioEvents?: boolean;
11
- audioEncoding?: AudioEncoding;
12
- platform?: string;
13
- modality?: Modality;
14
- recording?: {
15
- url?: string | null;
16
- };
17
- };
18
- }
19
- declare enum ConnectionState {
20
- DISCONNECTED = "disconnected",
21
- CONNECTING = "connecting",
22
- CONNECTED = "connected",
23
- SESSION_STARTED = "session_started",
24
- ERROR = "error"
25
- }
1
+ import type { IRuntimeClient, RuntimeClientOptions, RuntimeInteractStreamRequest } from '../runtime.interface';
2
+ import { TraceService } from '../trace.service';
3
+ import { ConnectionState } from './websocket-runtime.interface';
26
4
  export declare class WebSocketRuntimeClient<T> implements IRuntimeClient<T> {
27
5
  private readonly options;
28
6
  private readonly trace;
@@ -33,9 +11,7 @@ export declare class WebSocketRuntimeClient<T> implements IRuntimeClient<T> {
33
11
  private currentInteraction;
34
12
  private inactivityTimer;
35
13
  private readonly inactivityTimeout;
36
- private reconnectAttempts;
37
- private readonly maxReconnectAttempts;
38
- private reconnectDelay;
14
+ private readonly emitter;
39
15
  constructor(options: RuntimeClientOptions<T>, trace?: TraceService<T>);
40
16
  setState: (context: T, state: Record<string, any>) => void;
41
17
  resetState(state?: Record<string, any> | null): void;
@@ -51,11 +27,8 @@ export declare class WebSocketRuntimeClient<T> implements IRuntimeClient<T> {
51
27
  interactStream(createContext: () => T, request: RuntimeInteractStreamRequest): Promise<ReadableStream<T>>;
52
28
  private processInteraction;
53
29
  private processNextInteraction;
54
- private handleDisconnection;
55
- disconnect(): Promise<void>;
56
- private delay;
30
+ disconnect(shouldEndTranscript?: boolean): Promise<void>;
57
31
  getConnectionState(): ConnectionState;
58
32
  isReady(): boolean;
59
33
  }
60
- export {};
61
34
  //# sourceMappingURL=websocket-runtime.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-runtime.client.d.ts","sourceRoot":"","sources":["../../../../src/v2/websocket-runtime/websocket-runtime.client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAE/G,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhD,OAAO,EAAE,eAAe,EAAwB,MAAM,+BAA+B,CAAC;AAItF,qBAAa,sBAAsB,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IAkB/D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAlBxB,OAAO,CAAC,KAAK,CAAoC;IAEjD,OAAO,CAAC,EAAE,CAA0B;IAEpC,OAAO,CAAC,eAAe,CAAgC;IAEvD,OAAO,CAAC,mBAAmB,CAA4B;IAEvD,OAAO,CAAC,kBAAkB,CAAmC;IAE7D,OAAO,CAAC,eAAe,CAA8C;IAErE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyB;IAE3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;gBAGnD,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAChC,KAAK,kBAA+C;IAGhE,QAAQ,YAAa,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,UAGvD;IAEK,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;IAIpD,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAI5C,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAMxD,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,oBAAoB;IAOf,IAAI,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;YAezD,gBAAgB;YAchB,OAAO;YAiDP,YAAY;IA0CpB,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAoB/G,OAAO,CAAC,kBAAkB;IA2D1B,OAAO,CAAC,sBAAsB;IASjB,UAAU,CAAC,mBAAmB,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCpE,kBAAkB,IAAI,eAAe;IAIrC,OAAO,IAAI,OAAO;CAG1B"}
@@ -2,38 +2,24 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WebSocketRuntimeClient = void 0;
4
4
  const dtos_interact_1 = require("@voiceflow/dtos-interact");
5
- const trace_service_1 = require("./trace.service");
5
+ const nanoevents_1 = require("nanoevents");
6
+ const runtime_interface_1 = require("../runtime.interface");
7
+ const trace_service_1 = require("../trace.service");
8
+ const websocket_runtime_interface_1 = require("./websocket-runtime.interface");
9
+ const websocket_runtime_utils_1 = require("./websocket-runtime.utils");
6
10
  const websocket_trace_stream_1 = require("./websocket-trace.stream");
7
- // Define the Environment enum locally if not available
8
- var Environment;
9
- (function (Environment) {
10
- Environment["DEVELOPMENT"] = "development";
11
- Environment["STAGING"] = "staging";
12
- Environment["PRODUCTION"] = "production";
13
- })(Environment || (Environment = {}));
14
- // Simplified connection state enum
15
- var ConnectionState;
16
- (function (ConnectionState) {
17
- ConnectionState["DISCONNECTED"] = "disconnected";
18
- ConnectionState["CONNECTING"] = "connecting";
19
- ConnectionState["CONNECTED"] = "connected";
20
- ConnectionState["SESSION_STARTED"] = "session_started";
21
- ConnectionState["ERROR"] = "error";
22
- })(ConnectionState || (ConnectionState = {}));
23
11
  class WebSocketRuntimeClient {
24
12
  constructor(options, trace = new trace_service_1.TraceService({ traces: options.traces })) {
25
13
  this.options = options;
26
14
  this.trace = trace;
27
15
  this.state = null;
28
16
  this.ws = null;
29
- this.connectionState = ConnectionState.DISCONNECTED;
17
+ this.connectionState = websocket_runtime_interface_1.ConnectionState.DISCONNECTED;
30
18
  this.pendingInteractions = [];
31
19
  this.currentInteraction = null;
32
20
  this.inactivityTimer = null;
33
21
  this.inactivityTimeout = 2 * 60 * 1000;
34
- this.reconnectAttempts = 0;
35
- this.maxReconnectAttempts = 3;
36
- this.reconnectDelay = 1000;
22
+ this.emitter = (0, nanoevents_1.createNanoEvents)();
37
23
  this.setState = (context, state) => {
38
24
  this.state = state;
39
25
  this.options.onStateChange?.(context, state);
@@ -53,7 +39,7 @@ class WebSocketRuntimeClient {
53
39
  startInactivityTimer() {
54
40
  this.clearInactivityTimer();
55
41
  this.inactivityTimer = setTimeout(() => {
56
- this.disconnect();
42
+ this.disconnect(false);
57
43
  }, this.inactivityTimeout);
58
44
  }
59
45
  clearInactivityTimer() {
@@ -63,39 +49,39 @@ class WebSocketRuntimeClient {
63
49
  }
64
50
  }
65
51
  resetInactivityTimer() {
66
- if (this.connectionState === ConnectionState.SESSION_STARTED) {
52
+ if (this.connectionState === websocket_runtime_interface_1.ConnectionState.SESSION_STARTED) {
67
53
  this.startInactivityTimer();
68
54
  }
69
55
  }
70
56
  // Simplified init method - only ensures connection is ready
71
57
  async init(request) {
72
- if (this.connectionState === ConnectionState.SESSION_STARTED) {
58
+ if (this.connectionState === websocket_runtime_interface_1.ConnectionState.SESSION_STARTED) {
73
59
  return;
74
60
  }
75
- if (this.connectionState === ConnectionState.ERROR ||
76
- (this.ws && (this.ws.readyState === WebSocket.CLOSING || this.ws.readyState === WebSocket.CLOSED))) {
61
+ // Always ensure we start with a clean slate on restart
62
+ if (this.ws && this.ws.readyState !== WebSocket.CLOSED) {
77
63
  await this.disconnect();
78
- await this.delay(50); // Small delay to ensure cleanup
64
+ await (0, websocket_runtime_utils_1.delay)(50); // Small delay to ensure cleanup
79
65
  }
80
66
  await this.ensureConnection(request);
81
67
  }
82
68
  // Combined connection and session establishment
83
69
  async ensureConnection(request) {
84
- if (this.connectionState === ConnectionState.SESSION_STARTED) {
70
+ if (this.connectionState === websocket_runtime_interface_1.ConnectionState.SESSION_STARTED) {
85
71
  return;
86
72
  }
87
- if (this.connectionState === ConnectionState.DISCONNECTED) {
73
+ if (this.connectionState === websocket_runtime_interface_1.ConnectionState.DISCONNECTED) {
88
74
  await this.connect();
89
75
  }
90
- if (this.connectionState === ConnectionState.CONNECTED) {
76
+ if (this.connectionState === websocket_runtime_interface_1.ConnectionState.CONNECTED) {
91
77
  await this.startSession(request);
92
78
  }
93
79
  }
94
80
  async connect() {
95
- if (this.connectionState === ConnectionState.CONNECTING) {
81
+ if (this.connectionState === websocket_runtime_interface_1.ConnectionState.CONNECTING) {
96
82
  return;
97
83
  }
98
- this.connectionState = ConnectionState.CONNECTING;
84
+ this.connectionState = websocket_runtime_interface_1.ConnectionState.CONNECTING;
99
85
  const wsUrl = `${this.options.baseURL.replace(/^http/, 'ws')}/v3/interact/socket`;
100
86
  try {
101
87
  await new Promise((resolve, reject) => {
@@ -105,27 +91,37 @@ class WebSocketRuntimeClient {
105
91
  }, 10000);
106
92
  this.ws.onopen = () => {
107
93
  clearTimeout(timeout);
108
- this.connectionState = ConnectionState.CONNECTED;
109
- this.reconnectAttempts = 0; // Reset on successful connection
94
+ this.connectionState = websocket_runtime_interface_1.ConnectionState.CONNECTED;
110
95
  resolve();
111
96
  };
112
97
  this.ws.onerror = (error) => {
113
98
  clearTimeout(timeout);
114
- this.connectionState = ConnectionState.ERROR;
99
+ this.connectionState = websocket_runtime_interface_1.ConnectionState.ERROR;
115
100
  reject(new Error(`WebSocket connection failed: ${error}`));
116
101
  };
117
102
  this.ws.onclose = () => {
118
- this.handleDisconnection();
103
+ this.disconnect();
104
+ };
105
+ this.ws.onmessage = (event) => {
106
+ try {
107
+ const message = JSON.parse(event.data);
108
+ if ((0, websocket_runtime_utils_1.isTraceMessage)(message) || (0, websocket_runtime_utils_1.isActionMessage)(message) || (0, websocket_runtime_utils_1.isStartMessage)(message)) {
109
+ this.emitter.emit(message.type, message.payload);
110
+ }
111
+ }
112
+ catch (error) {
113
+ console.error(`failed to parse WebSocket message: ${error}`);
114
+ }
119
115
  };
120
116
  });
121
117
  }
122
118
  catch (error) {
123
- this.connectionState = ConnectionState.ERROR;
119
+ this.connectionState = websocket_runtime_interface_1.ConnectionState.ERROR;
124
120
  throw error;
125
121
  }
126
122
  }
127
123
  async startSession(request) {
128
- if (!this.ws || this.connectionState !== ConnectionState.CONNECTED) {
124
+ if (!this.ws || this.connectionState !== websocket_runtime_interface_1.ConnectionState.CONNECTED) {
129
125
  throw new Error('Cannot start session: not connected');
130
126
  }
131
127
  const startMessage = {
@@ -134,40 +130,30 @@ class WebSocketRuntimeClient {
134
130
  userID: request.userID,
135
131
  projectID: request.projectID,
136
132
  sessionID: undefined,
137
- environmentID: request.environment || Environment.DEVELOPMENT,
133
+ environmentID: request.environment || runtime_interface_1.Environment.DEVELOPMENT,
138
134
  state: this.state,
139
135
  config: {
140
136
  completionEvents: true,
141
137
  audioEvents: request.audioEvents || false,
142
138
  audioEncoding: dtos_interact_1.AudioEncoding.PCM,
143
139
  modality: dtos_interact_1.Modality.CHAT,
140
+ endAutomatically: false, // chat will handle transcript ending manually
144
141
  },
145
142
  ...(this.options.authorization && { authorization: this.options.authorization }),
146
143
  },
147
144
  };
145
+ this.ws.send(JSON.stringify(startMessage));
148
146
  await new Promise((resolve, reject) => {
149
147
  const timeout = setTimeout(() => {
150
148
  reject(new Error('Start session timeout'));
151
149
  }, 10000);
152
- const originalOnMessage = this.ws.onmessage;
153
- this.ws.onmessage = (event) => {
154
- try {
155
- const message = JSON.parse(event.data);
156
- if (message.type === 'start') {
157
- clearTimeout(timeout);
158
- this.connectionState = ConnectionState.SESSION_STARTED;
159
- this.ws.onmessage = originalOnMessage;
160
- this.startInactivityTimer();
161
- resolve();
162
- }
163
- }
164
- catch (error) {
165
- clearTimeout(timeout);
166
- this.ws.onmessage = originalOnMessage;
167
- reject(new Error(`Failed to parse start response: ${error}`));
168
- }
169
- };
170
- this.ws.send(JSON.stringify(startMessage));
150
+ const unsubscribe = this.emitter.on(websocket_runtime_interface_1.WebSocketMessageType.START, () => {
151
+ clearTimeout(timeout);
152
+ this.connectionState = websocket_runtime_interface_1.ConnectionState.SESSION_STARTED;
153
+ this.startInactivityTimer();
154
+ unsubscribe();
155
+ resolve();
156
+ });
171
157
  });
172
158
  }
173
159
  async interactStream(createContext, request) {
@@ -189,7 +175,7 @@ class WebSocketRuntimeClient {
189
175
  });
190
176
  }
191
177
  processInteraction(interaction) {
192
- if (!this.ws || this.connectionState !== ConnectionState.SESSION_STARTED) {
178
+ if (!this.ws || this.connectionState !== websocket_runtime_interface_1.ConnectionState.SESSION_STARTED) {
193
179
  interaction.reject(new Error('WebSocket session not ready'));
194
180
  return;
195
181
  }
@@ -221,29 +207,20 @@ class WebSocketRuntimeClient {
221
207
  }
222
208
  },
223
209
  });
224
- this.ws.onmessage = (event) => {
225
- try {
226
- this.resetInactivityTimer();
227
- const message = JSON.parse(event.data);
228
- if (controller) {
229
- controller.enqueue(message);
230
- }
231
- if (message.type === 'action' && message.payload?.status === 'completed') {
232
- if (controller) {
233
- controller.close();
234
- }
235
- this.processNextInteraction();
236
- }
237
- }
238
- catch (error) {
239
- if (controller) {
240
- controller.error(new Error(`Failed to parse WebSocket message: ${error}`));
241
- }
210
+ const traceStream = new websocket_trace_stream_1.WebSocketTraceStream(createContext, this.trace, this.options.onTrace);
211
+ const unsubscribeTrace = this.emitter.on(websocket_runtime_interface_1.WebSocketMessageType.TRACE, (payload) => {
212
+ this.resetInactivityTimer();
213
+ controller?.enqueue(payload.trace);
214
+ });
215
+ const unsubscribeAction = this.emitter.on(websocket_runtime_interface_1.WebSocketMessageType.ACTION, (payload) => {
216
+ if (payload.status === 'completed' || payload.status === 'rejected') {
217
+ controller?.close();
218
+ unsubscribeTrace();
219
+ unsubscribeAction();
242
220
  this.processNextInteraction();
243
221
  }
244
- };
245
- const streamWithTraceProcessing = readable.pipeThrough(new websocket_trace_stream_1.WebSocketTraceStream(createContext, this.trace, this.options.onTrace));
246
- resolve(streamWithTraceProcessing);
222
+ });
223
+ resolve(readable.pipeThrough(traceStream));
247
224
  }
248
225
  processNextInteraction() {
249
226
  this.currentInteraction = null;
@@ -252,70 +229,42 @@ class WebSocketRuntimeClient {
252
229
  this.processInteraction(nextInteraction);
253
230
  }
254
231
  }
255
- handleDisconnection() {
256
- if (this.connectionState === ConnectionState.DISCONNECTED) {
232
+ async disconnect(shouldEndTranscript = true) {
233
+ if (this.connectionState === websocket_runtime_interface_1.ConnectionState.DISCONNECTED) {
257
234
  return; // Already handled
258
235
  }
259
- this.connectionState = ConnectionState.DISCONNECTED;
260
- this.clearInactivityTimer();
261
- // Clean up WebSocket
262
- if (this.ws) {
263
- this.ws.onopen = null;
264
- this.ws.onclose = null;
265
- this.ws.onerror = null;
266
- this.ws.onmessage = null;
267
- this.ws = null;
268
- }
269
- // Reject pending interactions
270
- [...this.pendingInteractions, this.currentInteraction].forEach((interaction) => {
271
- if (interaction) {
272
- interaction.reject(new Error('WebSocket disconnected'));
273
- }
274
- });
275
- this.pendingInteractions = [];
276
- this.currentInteraction = null;
277
- }
278
- async disconnect() {
279
- this.connectionState = ConnectionState.DISCONNECTED;
236
+ this.connectionState = websocket_runtime_interface_1.ConnectionState.DISCONNECTED;
280
237
  this.clearInactivityTimer();
281
- if (this.ws) {
282
- try {
283
- if (this.ws.readyState === WebSocket.OPEN) {
284
- this.ws.close();
285
- }
286
- }
287
- catch {
288
- // Ignore errors during close
289
- }
290
- // Force cleanup
291
- this.ws.onopen = null;
292
- this.ws.onclose = null;
293
- this.ws.onerror = null;
294
- this.ws.onmessage = null;
295
- this.ws = null;
238
+ if (shouldEndTranscript) {
239
+ this.ws?.send(JSON.stringify({
240
+ type: 'action',
241
+ payload: {
242
+ action: {
243
+ type: dtos_interact_1.RequestType.END,
244
+ payload: { reason: 'Ended chat automatically on close' },
245
+ },
246
+ },
247
+ }));
296
248
  }
249
+ // Force cleanup
250
+ this.ws?.close();
251
+ this.ws = null;
297
252
  // Reject any pending interactions
298
253
  [...this.pendingInteractions, this.currentInteraction].forEach((interaction) => {
299
- if (interaction) {
300
- interaction.reject(new Error('WebSocket disconnected'));
301
- }
254
+ interaction?.reject(new Error('WebSocket disconnected'));
302
255
  });
303
256
  this.pendingInteractions = [];
304
257
  this.currentInteraction = null;
258
+ this.emitter.events = {};
305
259
  // Small delay to ensure cleanup is complete
306
- await this.delay(100);
307
- }
308
- delay(ms) {
309
- return new Promise((resolve) => {
310
- setTimeout(resolve, ms);
311
- });
260
+ await (0, websocket_runtime_utils_1.delay)(100);
312
261
  }
313
262
  // Additional getter for debugging/monitoring
314
263
  getConnectionState() {
315
264
  return this.connectionState;
316
265
  }
317
266
  isReady() {
318
- return this.connectionState === ConnectionState.SESSION_STARTED;
267
+ return this.connectionState === websocket_runtime_interface_1.ConnectionState.SESSION_STARTED;
319
268
  }
320
269
  }
321
270
  exports.WebSocketRuntimeClient = WebSocketRuntimeClient;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-runtime.client.js","sourceRoot":"","sources":["../../../../src/v2/websocket-runtime/websocket-runtime.client.ts"],"names":[],"mappings":"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"}