@voiceflow/sdk-runtime 1.7.0 → 1.8.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 (114) hide show
  1. package/build/cjs/main.d.ts +3 -3
  2. package/build/cjs/main.d.ts.map +1 -1
  3. package/build/cjs/main.js +3 -3
  4. package/build/cjs/runtime/index.d.ts +4 -4
  5. package/build/cjs/runtime/index.d.ts.map +1 -1
  6. package/build/cjs/runtime/index.js +4 -4
  7. package/build/cjs/runtime/runtime.interface.d.ts +4 -4
  8. package/build/cjs/runtime/runtime.interface.d.ts.map +1 -1
  9. package/build/cjs/runtime/runtime.service.auth.d.ts +1 -1
  10. package/build/cjs/runtime/runtime.service.auth.d.ts.map +1 -1
  11. package/build/cjs/runtime/runtime.service.auth.js +1 -1
  12. package/build/cjs/runtime/runtime.service.public.d.ts +1 -1
  13. package/build/cjs/runtime/runtime.service.public.d.ts.map +1 -1
  14. package/build/cjs/runtime/runtime.service.public.js +2 -2
  15. package/build/cjs/sdk/index.d.ts +2 -2
  16. package/build/cjs/sdk/index.d.ts.map +1 -1
  17. package/build/cjs/sdk/index.js +2 -2
  18. package/build/cjs/sdk/sdk.interface.d.ts +3 -3
  19. package/build/cjs/sdk/sdk.interface.d.ts.map +1 -1
  20. package/build/cjs/sdk/sdk.service.d.ts +3 -3
  21. package/build/cjs/sdk/sdk.service.d.ts.map +1 -1
  22. package/build/cjs/sdk/sdk.service.js +2 -2
  23. package/build/cjs/trace/components/card.component.d.ts +1 -1
  24. package/build/cjs/trace/components/card.component.js +2 -2
  25. package/build/cjs/trace/components/cardV2.component.d.ts +2 -2
  26. package/build/cjs/trace/components/cardV2.component.d.ts.map +1 -1
  27. package/build/cjs/trace/components/cardV2.component.js +3 -3
  28. package/build/cjs/trace/components/choice.component.d.ts +2 -2
  29. package/build/cjs/trace/components/choice.component.d.ts.map +1 -1
  30. package/build/cjs/trace/components/choice.component.js +3 -3
  31. package/build/cjs/trace/components/end.component.d.ts +2 -2
  32. package/build/cjs/trace/components/end.component.d.ts.map +1 -1
  33. package/build/cjs/trace/components/end.component.js +3 -3
  34. package/build/cjs/trace/components/index.d.ts +8 -8
  35. package/build/cjs/trace/components/index.d.ts.map +1 -1
  36. package/build/cjs/trace/components/index.js +8 -8
  37. package/build/cjs/trace/components/speak.component.d.ts +2 -2
  38. package/build/cjs/trace/components/speak.component.d.ts.map +1 -1
  39. package/build/cjs/trace/components/speak.component.js +3 -3
  40. package/build/cjs/trace/components/stream.component.d.ts +2 -2
  41. package/build/cjs/trace/components/stream.component.d.ts.map +1 -1
  42. package/build/cjs/trace/components/stream.component.js +3 -3
  43. package/build/cjs/trace/components/text.component.d.ts +2 -2
  44. package/build/cjs/trace/components/text.component.d.ts.map +1 -1
  45. package/build/cjs/trace/components/text.component.js +3 -3
  46. package/build/cjs/trace/components/visual.component.d.ts +1 -1
  47. package/build/cjs/trace/components/visual.component.js +3 -3
  48. package/build/cjs/trace/index.d.ts +4 -4
  49. package/build/cjs/trace/index.d.ts.map +1 -1
  50. package/build/cjs/trace/index.js +4 -4
  51. package/build/cjs/trace/trace.component.d.ts +3 -3
  52. package/build/cjs/trace/trace.component.d.ts.map +1 -1
  53. package/build/cjs/trace/trace.interface.d.ts +2 -2
  54. package/build/cjs/trace/trace.interface.d.ts.map +1 -1
  55. package/build/cjs/trace/trace.service.d.ts +1 -1
  56. package/build/cjs/trace/trace.service.d.ts.map +1 -1
  57. package/build/esm/main.d.ts.map +1 -1
  58. package/build/esm/runtime/index.d.ts +1 -1
  59. package/build/esm/runtime/index.d.ts.map +1 -1
  60. package/build/esm/runtime/index.js +1 -1
  61. package/build/esm/runtime/runtime.interface.d.ts +4 -4
  62. package/build/esm/runtime/runtime.interface.d.ts.map +1 -1
  63. package/build/esm/runtime/runtime.service.auth.d.ts.map +1 -1
  64. package/build/esm/runtime/runtime.service.auth.js +1 -1
  65. package/build/esm/runtime/runtime.service.public.d.ts.map +1 -1
  66. package/build/esm/runtime/runtime.service.public.js +2 -2
  67. package/build/esm/sdk/index.d.ts.map +1 -1
  68. package/build/esm/sdk/sdk.interface.d.ts +1 -1
  69. package/build/esm/sdk/sdk.interface.d.ts.map +1 -1
  70. package/build/esm/sdk/sdk.service.d.ts +1 -1
  71. package/build/esm/sdk/sdk.service.d.ts.map +1 -1
  72. package/build/esm/trace/components/cardV2.component.d.ts.map +1 -1
  73. package/build/esm/trace/components/choice.component.d.ts.map +1 -1
  74. package/build/esm/trace/components/end.component.d.ts.map +1 -1
  75. package/build/esm/trace/components/index.d.ts.map +1 -1
  76. package/build/esm/trace/components/speak.component.d.ts.map +1 -1
  77. package/build/esm/trace/components/stream.component.d.ts.map +1 -1
  78. package/build/esm/trace/components/text.component.d.ts.map +1 -1
  79. package/build/esm/trace/index.d.ts.map +1 -1
  80. package/build/esm/trace/trace.component.d.ts +1 -1
  81. package/build/esm/trace/trace.component.d.ts.map +1 -1
  82. package/build/esm/trace/trace.interface.d.ts +2 -2
  83. package/build/esm/trace/trace.interface.d.ts.map +1 -1
  84. package/build/esm/trace/trace.service.d.ts.map +1 -1
  85. package/package.json +21 -25
  86. package/.turbo/turbo-build.log +0 -1
  87. package/CHANGELOG.md +0 -296
  88. package/sonar-project.properties +0 -6
  89. package/src/main.ts +0 -3
  90. package/src/runtime/index.ts +0 -4
  91. package/src/runtime/runtime.interface.ts +0 -105
  92. package/src/runtime/runtime.service.auth.ts +0 -46
  93. package/src/runtime/runtime.service.public.ts +0 -67
  94. package/src/runtime/runtime.service.ts +0 -63
  95. package/src/sdk/index.ts +0 -2
  96. package/src/sdk/sdk.interface.ts +0 -4
  97. package/src/sdk/sdk.service.ts +0 -46
  98. package/src/trace/components/card.component.ts +0 -5
  99. package/src/trace/components/cardV2.component.ts +0 -5
  100. package/src/trace/components/choice.component.ts +0 -5
  101. package/src/trace/components/end.component.ts +0 -5
  102. package/src/trace/components/index.ts +0 -8
  103. package/src/trace/components/speak.component.ts +0 -5
  104. package/src/trace/components/stream.component.ts +0 -5
  105. package/src/trace/components/text.component.ts +0 -5
  106. package/src/trace/components/visual.component.ts +0 -9
  107. package/src/trace/index.ts +0 -4
  108. package/src/trace/trace.component.ts +0 -21
  109. package/src/trace/trace.interface.ts +0 -21
  110. package/src/trace/trace.service.ts +0 -34
  111. package/tsconfig.build.cjs.json +0 -9
  112. package/tsconfig.build.esm.json +0 -12
  113. package/tsconfig.build.json +0 -5
  114. package/tsconfig.json +0 -11
@@ -1,4 +0,0 @@
1
- export * from './runtime.interface.js';
2
- export * from './runtime.service.auth.js';
3
- export * from './runtime.service.js';
4
- export * from './runtime.service.public.js';
@@ -1,105 +0,0 @@
1
- import { BaseRequest, Trace } from '@voiceflow/base-types';
2
-
3
- export { Trace } from '@voiceflow/base-types';
4
-
5
- // Super broad type so that differing fetch types (ex. builtin, node-fetch, etc.) don't conflict with it
6
- type FetchFn = (...parameters: any[]) => Promise<any>;
7
-
8
- export interface RuntimeOptions<V = AuthVerify | PublicVerify> {
9
- url: string;
10
- verify: V;
11
-
12
- /**
13
- * A ponyfill to use for `fetch()`.
14
- * Defaults to the global `fetch()`.
15
- */
16
- fetchPonyfill?: FetchFn;
17
- }
18
-
19
- export interface AuthVerify {
20
- authorization: string;
21
- }
22
-
23
- export interface PublicVerify {
24
- projectID: string;
25
- }
26
-
27
- export const isAuthRuntimeOptions = (
28
- options: RuntimeOptions<Partial<AuthVerify & PublicVerify>>
29
- ): options is RuntimeOptions<AuthVerify> => {
30
- return !!options?.verify?.authorization;
31
- };
32
-
33
- export const isPublicRuntimeOptions = (
34
- options: RuntimeOptions<Partial<AuthVerify & PublicVerify>>
35
- ): options is RuntimeOptions<PublicVerify> => {
36
- return typeof options?.verify?.projectID === 'string';
37
- };
38
-
39
- export interface RuntimeInteractRequest {
40
- action: RuntimeAction;
41
- sessionID: string;
42
- versionID?: string;
43
- config?: any;
44
- }
45
-
46
- export interface RuntimeFeedbackRequest {
47
- name: string;
48
- sessionID: string;
49
- versionID?: string;
50
-
51
- [key: string]: any;
52
- }
53
-
54
- export interface RuntimeInteractResponse {
55
- state: RuntimeState;
56
- request: RuntimeAction;
57
- trace: Trace.AnyTrace[];
58
- }
59
-
60
- export type RuntimeAction =
61
- | BaseRequest.TextRequest
62
- | BaseRequest.LaunchRequest
63
- | BaseRequest.IntentRequest
64
- | BaseRequest.ActionRequest
65
- | BaseRequest.GeneralRequest
66
- | BaseRequest.BaseRequest<unknown>;
67
-
68
- export const isRuntimeAction = (value: unknown): value is RuntimeAction =>
69
- typeof value === 'object' && Object.prototype.hasOwnProperty.call(value, 'type');
70
-
71
- export interface IntentActionPayload {
72
- query: string;
73
- intent: { name: string };
74
- entities: { name: string; value: string }[];
75
- confidence?: number;
76
- }
77
-
78
- export type IntentAction = BaseRequest.IntentRequest;
79
- export type ActionType = BaseRequest.RequestType;
80
- export const ActionType = BaseRequest.RequestType;
81
-
82
- export const createIntentAction = (payload: BaseRequest.IntentRequestPayload): BaseRequest.IntentRequest => ({
83
- type: ActionType.INTENT,
84
- payload,
85
- });
86
-
87
- export interface RuntimeState {
88
- storage: Record<string, any>;
89
- variables: Record<string, any>;
90
- }
91
-
92
- export const isRuntimeTraceType = (value: unknown): value is Trace.TraceType =>
93
- typeof value === 'string' && Object.values<string>(Trace.TraceType).includes(value);
94
-
95
- export const isRuntimeTrace = (value: unknown): value is Trace.BaseTraceFrame =>
96
- typeof value === 'object' &&
97
- Object.prototype.hasOwnProperty.call(value, 'type') &&
98
- isRuntimeTraceType((value as any).type);
99
-
100
- export interface RuntimeHttpRequest {
101
- method?: string;
102
- params?: URLSearchParams;
103
- body?: any;
104
- headers?: HeadersInit;
105
- }
@@ -1,46 +0,0 @@
1
- import type {
2
- AuthVerify,
3
- RuntimeInteractRequest,
4
- RuntimeInteractResponse,
5
- RuntimeOptions,
6
- } from '@/runtime/runtime.interface.js';
7
- import { RuntimeService } from '@/runtime/runtime.service';
8
-
9
- export class AuthRuntimeService extends RuntimeService {
10
- private readonly authorization: string;
11
-
12
- public constructor(options: RuntimeOptions<AuthVerify>) {
13
- super(options);
14
-
15
- this.authorization = options.verify.authorization;
16
- }
17
-
18
- public async interact(request: RuntimeInteractRequest): Promise<RuntimeInteractResponse> {
19
- const { action, config, sessionID, versionID } = request;
20
-
21
- return this.send<RuntimeInteractResponse>(`state/user/${sessionID}/interact`, {
22
- method: 'POST',
23
- body: { action, config },
24
- headers: {
25
- authorization: this.authorization,
26
- sessionID,
27
- ...(versionID ? { versionID } : {}),
28
- },
29
- params: new URLSearchParams({ verbose: 'true' }),
30
- });
31
- }
32
-
33
- public async feedback() {
34
- return Promise.reject(new Error('not implemented'));
35
- }
36
-
37
- // TODO: expose authenticated publishing
38
- public getPublishing() {
39
- return Promise.reject(new Error('not implemented'));
40
- }
41
-
42
- // TODO: expose authenticated createTranscript
43
- public createTranscript() {
44
- return Promise.reject(new Error('not implemented'));
45
- }
46
- }
@@ -1,67 +0,0 @@
1
- import type { BaseModels } from '@voiceflow/base-types';
2
-
3
- import type {
4
- PublicVerify,
5
- RuntimeFeedbackRequest,
6
- RuntimeInteractRequest,
7
- RuntimeInteractResponse,
8
- RuntimeOptions,
9
- } from '@/runtime/runtime.interface.js';
10
- import { RuntimeService } from '@/runtime/runtime.service';
11
-
12
- export class PublicRuntimeService extends RuntimeService {
13
- private readonly projectID: string;
14
-
15
- public constructor(options: RuntimeOptions<PublicVerify>) {
16
- super(options);
17
-
18
- this.projectID = options.verify.projectID;
19
- }
20
-
21
- public async interact(request: RuntimeInteractRequest): Promise<Pick<RuntimeInteractResponse, 'trace'>> {
22
- const { action, config, sessionID, versionID } = request;
23
-
24
- return this.send<Pick<RuntimeInteractResponse, 'trace'>>(
25
- `public/${this.projectID}/state/user/${sessionID}/interact`,
26
- {
27
- method: 'POST',
28
- body: { action, config },
29
- headers: {
30
- sessionID,
31
- ...(versionID && { versionID }),
32
- },
33
- }
34
- );
35
- }
36
-
37
- public async feedback(request: RuntimeFeedbackRequest): Promise<void> {
38
- const { versionID, sessionID, ...body } = request;
39
-
40
- await this.send(`feedback/${this.projectID}/user/${sessionID}`, {
41
- method: 'POST',
42
- body,
43
- headers: {
44
- sessionID,
45
- ...(versionID && { versionID }),
46
- },
47
- });
48
- }
49
-
50
- public async getPublishing(request: { versionID?: string }): Promise<Record<string, unknown>> {
51
- const { versionID } = request;
52
-
53
- return this.send<Record<string, unknown>>(`public/${this.projectID}/publishing`, {
54
- method: 'GET',
55
- headers: {
56
- ...(versionID ? { versionID } : {}),
57
- },
58
- });
59
- }
60
-
61
- public async createTranscript(sessionID: string, metadata: { os?: string; device?: string; browser?: string }) {
62
- return this.send<BaseModels.Transcript.Model>(`public/${this.projectID}/transcripts`, {
63
- method: 'POST',
64
- body: { ...metadata, sessionID },
65
- });
66
- }
67
- }
@@ -1,63 +0,0 @@
1
- import type { BaseModels } from '@voiceflow/base-types';
2
- import createHTTPError from 'http-errors';
3
-
4
- import type {
5
- RuntimeFeedbackRequest,
6
- RuntimeHttpRequest,
7
- RuntimeInteractRequest,
8
- RuntimeInteractResponse,
9
- RuntimeOptions,
10
- } from './runtime.interface';
11
-
12
- export abstract class RuntimeService {
13
- private readonly fetch: typeof globalThis.fetch;
14
-
15
- public constructor(private readonly options: RuntimeOptions) {
16
- this.fetch = options.fetchPonyfill ?? globalThis.fetch?.bind(globalThis);
17
- if (!this.fetch) {
18
- throw new TypeError('fetch implementation was not provided and a global fetch was not available');
19
- }
20
- }
21
-
22
- public abstract getPublishing(request: { versionID?: string }): Promise<Record<string, unknown>>;
23
-
24
- public abstract createTranscript(
25
- sessionID: string,
26
- metadata: {
27
- os?: string;
28
- user?: {
29
- name?: string;
30
- image?: string;
31
- };
32
- device?: string;
33
- browser?: string;
34
- }
35
- ): Promise<BaseModels.Transcript.Model>;
36
-
37
- public abstract interact(
38
- request: RuntimeInteractRequest
39
- ): Promise<Partial<RuntimeInteractResponse> & Pick<RuntimeInteractResponse, 'trace'>>;
40
-
41
- public abstract feedback(request: RuntimeFeedbackRequest): Promise<void>;
42
-
43
- protected async send<T>(path: string, args: RuntimeHttpRequest = {}): Promise<T> {
44
- const url = new URL(path, this.options.url);
45
- if (args.params) url.search = args.params.toString();
46
-
47
- const result = await this.fetch(url, {
48
- method: args.method ?? 'GET',
49
- body: args.body ? JSON.stringify(args.body) : undefined,
50
- headers: {
51
- 'content-type': 'application/json',
52
- ...(args.headers ?? {}),
53
- },
54
- });
55
-
56
- const json = (await result.json().catch(() => null)) as any;
57
- if (!result.ok) {
58
- throw createHTTPError(result.status, result.statusText, json);
59
- }
60
-
61
- return json;
62
- }
63
- }
package/src/sdk/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './sdk.interface.js';
2
- export * from './sdk.service.js';
@@ -1,4 +0,0 @@
1
- import type { RuntimeOptions } from '@/runtime/runtime.interface.js';
2
- import type { TraceOptions } from '@/trace/trace.interface.js';
3
-
4
- export type VoiceflowRuntimeOptions<T> = RuntimeOptions & TraceOptions<T>;
@@ -1,46 +0,0 @@
1
- import type { RuntimeFeedbackRequest, RuntimeInteractRequest, RuntimeService } from '@/runtime';
2
- import { AuthRuntimeService, isAuthRuntimeOptions, isPublicRuntimeOptions, PublicRuntimeService } from '@/runtime';
3
- import type { TraceDeclaration } from '@/trace/trace.interface.js';
4
- import { TraceService } from '@/trace/trace.service.js';
5
-
6
- import type { VoiceflowRuntimeOptions } from './sdk.interface.js';
7
-
8
- export class VoiceflowRuntime<T> {
9
- private readonly runtime: RuntimeService;
10
-
11
- private readonly trace: TraceService<T>;
12
-
13
- public constructor(options: VoiceflowRuntimeOptions<T>) {
14
- this.trace = new TraceService(options);
15
-
16
- if (isAuthRuntimeOptions(options)) {
17
- this.runtime = new AuthRuntimeService(options);
18
- } else if (isPublicRuntimeOptions(options)) {
19
- this.runtime = new PublicRuntimeService(options);
20
- } else {
21
- throw new Error('invalid runtime options');
22
- }
23
- }
24
-
25
- public registerStep(step: TraceDeclaration<T, any>) {
26
- this.trace.registerTrace(step);
27
- return this;
28
- }
29
-
30
- public async interact(context: T, request: RuntimeInteractRequest): Promise<T> {
31
- const response = await this.runtime.interact(request);
32
- return this.trace.processTrace(context, response);
33
- }
34
-
35
- public async feedback(request: RuntimeFeedbackRequest) {
36
- return this.runtime.feedback(request);
37
- }
38
-
39
- public async getPublishing(...options: Parameters<RuntimeService['getPublishing']>) {
40
- return this.runtime.getPublishing(...options);
41
- }
42
-
43
- public async createTranscript(...options: Parameters<RuntimeService['createTranscript']>) {
44
- return this.runtime.createTranscript(...options);
45
- }
46
- }
@@ -1,5 +0,0 @@
1
- import type { BaseNode } from '@voiceflow/base-types';
2
-
3
- import { createTraceComponent } from '../trace.component.js';
4
-
5
- export const CardTraceComponent = createTraceComponent<{ type: 'card'; payload: { card: BaseNode.Card.Card } }>('card');
@@ -1,5 +0,0 @@
1
- import { Trace } from '@/runtime/runtime.interface.js';
2
-
3
- import { createTraceComponent } from '../trace.component.js';
4
-
5
- export const CardV2TraceComponent = createTraceComponent<Trace.CardV2>(Trace.TraceType.CARD_V2);
@@ -1,5 +0,0 @@
1
- import { Trace } from '@/runtime/runtime.interface.js';
2
-
3
- import { createTraceComponent } from '../trace.component.js';
4
-
5
- export const ChoiceTraceComponent = createTraceComponent<Trace.Choice>(Trace.TraceType.CHOICE);
@@ -1,5 +0,0 @@
1
- import { Trace } from '@/runtime/runtime.interface.js';
2
-
3
- import { createTraceComponent } from '../trace.component.js';
4
-
5
- export const EndTraceComponent = createTraceComponent<Trace.End>(Trace.TraceType.END);
@@ -1,8 +0,0 @@
1
- export * from './card.component.js';
2
- export * from './cardV2.component.js';
3
- export * from './choice.component.js';
4
- export * from './end.component.js';
5
- export * from './speak.component.js';
6
- export * from './stream.component.js';
7
- export * from './text.component.js';
8
- export * from './visual.component.js';
@@ -1,5 +0,0 @@
1
- import { Trace } from '@/runtime/runtime.interface.js';
2
-
3
- import { createTraceComponent } from '../trace.component.js';
4
-
5
- export const SpeakTraceComponent = createTraceComponent<Trace.Speak>(Trace.TraceType.SPEAK);
@@ -1,5 +0,0 @@
1
- import { Trace } from '@/runtime/runtime.interface.js';
2
-
3
- import { createTraceComponent } from '../trace.component.js';
4
-
5
- export const StreamTraceComponent = createTraceComponent<Trace.Stream>(Trace.TraceType.STREAM);
@@ -1,5 +0,0 @@
1
- import { Trace } from '@/runtime/runtime.interface.js';
2
-
3
- import { createTraceComponent } from '../trace.component.js';
4
-
5
- export const TextTraceComponent = createTraceComponent<Trace.Text>(Trace.TraceType.TEXT);
@@ -1,9 +0,0 @@
1
- import type { BaseNode } from '@voiceflow/base-types';
2
-
3
- import { Trace } from '@/runtime/runtime.interface.js';
4
-
5
- import { createTraceComponent } from '../trace.component.js';
6
-
7
- export const VisualTraceComponent = createTraceComponent<Trace.Visual & { payload: BaseNode.Visual.ImageStepData }>(
8
- Trace.TraceType.VISUAL
9
- );
@@ -1,4 +0,0 @@
1
- export * from './components/index.js';
2
- export * from './trace.component.js';
3
- export * from './trace.interface.js';
4
- export * from './trace.service.js';
@@ -1,21 +0,0 @@
1
- import type { Trace } from '@/runtime/runtime.interface.js';
2
-
3
- import type { TraceAccumulator, TraceDeclaration } from './trace.interface.js';
4
-
5
- export interface TraceComponentOverload<T extends Trace.BaseTraceFrame> {
6
- <Context>(declaration: TraceDeclaration<Context, T>): Required<TraceDeclaration<Context, T>>;
7
- <Context>(handle: TraceAccumulator<Context, T>): Required<TraceDeclaration<Context, T>>;
8
- }
9
-
10
- export const createTraceComponent =
11
- <T extends Trace.BaseTraceFrame>(type: T['type']): TraceComponentOverload<T> =>
12
- <Context>(handle: TraceDeclaration<Context, T> | TraceAccumulator<Context, T>): TraceDeclaration<Context, T> => {
13
- if (typeof handle === 'function') {
14
- return {
15
- canHandle: (trace) => trace.type === type,
16
- handle,
17
- };
18
- }
19
-
20
- return handle;
21
- };
@@ -1,21 +0,0 @@
1
- import type { Trace } from '@/runtime/runtime.interface';
2
-
3
- export interface TraceOptions<T> {
4
- traces?: TraceDeclaration<T, any>[];
5
- }
6
-
7
- export interface TraceDeclaration<Context, T extends Trace.BaseTraceFrame> {
8
- canHandle: TraceCanHandle<T>;
9
- handle: TraceAccumulator<Context, T>;
10
- }
11
-
12
- export type TraceCanHandle<T extends Trace.BaseTraceFrame> = (trace: T) => boolean;
13
-
14
- export interface TraceHandlerMeta<Context> {
15
- context: Context;
16
- }
17
-
18
- export type TraceAccumulator<Context, T extends Trace.BaseTraceFrame> = (
19
- meta: TraceHandlerMeta<Context>,
20
- trace: T
21
- ) => Context;
@@ -1,34 +0,0 @@
1
- import type { RuntimeInteractResponse } from '@/runtime/runtime.interface.js';
2
-
3
- import type { TraceDeclaration, TraceHandlerMeta, TraceOptions } from './trace.interface';
4
-
5
- export class TraceService<T = unknown> {
6
- private readonly traces: TraceDeclaration<T, any>[] = [];
7
-
8
- public constructor(options: TraceOptions<T> = {}) {
9
- this.registerTraces(options.traces ?? []);
10
- }
11
-
12
- public registerTrace(step: TraceDeclaration<T, any>): this {
13
- this.traces.push(step);
14
- return this;
15
- }
16
-
17
- public registerTraces(steps: TraceDeclaration<T, any>[]): this {
18
- steps.forEach((step) => this.registerTrace(step));
19
- return this;
20
- }
21
-
22
- public async processTrace(context: T, response: Pick<RuntimeInteractResponse, 'trace'>): Promise<T> {
23
- const meta: TraceHandlerMeta<T> = { context };
24
-
25
- for (const trace of response.trace) {
26
- const step = this.traces.find((step) => step.canHandle(trace));
27
- if (step) {
28
- // eslint-disable-next-line no-await-in-loop
29
- meta.context = await step.handle(meta, trace);
30
- }
31
- }
32
- return meta.context;
33
- }
34
- }
@@ -1,9 +0,0 @@
1
- {
2
- "$schema": "https://json.schemastore.org/tsconfig",
3
- "extends": "./tsconfig.build.json",
4
- "compilerOptions": {
5
- "module": "CommonJS",
6
- "moduleResolution": "Node",
7
- "outDir": "build/cjs"
8
- }
9
- }
@@ -1,12 +0,0 @@
1
- {
2
- "$schema": "https://json.schemastore.org/tsconfig",
3
- "extends": "./tsconfig.build.json",
4
- "compilerOptions": {
5
- "module": "ESNext",
6
- "moduleResolution": "Node",
7
- "outDir": "build/esm"
8
- },
9
- "tsc-alias": {
10
- "resolveFullPaths": true
11
- }
12
- }
@@ -1,5 +0,0 @@
1
- {
2
- "$schema": "https://json.schemastore.org/tsconfig",
3
- "extends": "./tsconfig.json",
4
- "exclude": ["node_modules", "build", "test", "**/*test.ts", "**/*test-d.ts"]
5
- }
package/tsconfig.json DELETED
@@ -1,11 +0,0 @@
1
- {
2
- "$schema": "https://json.schemastore.org/tsconfig",
3
- "extends": "@voiceflow-meta/typescript-config/base.json",
4
- "compilerOptions": {
5
- "baseUrl": "./",
6
- "outDir": "./build",
7
- "stripInternal": true
8
- },
9
- "include": ["src/**/*", "test"],
10
- "exclude": ["node_modules", "build", "src/**/*.test-d.ts"]
11
- }