diff --git a/packages/base-types/src/node/constants.ts b/packages/base-types/src/node/constants.ts index 37e4a646b..3cb3a09a1 100644 --- a/packages/base-types/src/node/constants.ts +++ b/packages/base-types/src/node/constants.ts @@ -25,6 +25,7 @@ export enum NodeType { ZAPIER = 'zapier', INTEGRATIONS = 'integrations', GOOGLE_SHEETS = 'google_sheets', + CUSTOM = 'custom', // advanced INTENT = 'intent', diff --git a/packages/base-types/src/node/custom.ts b/packages/base-types/src/node/custom.ts new file mode 100644 index 000000000..dfe73717d --- /dev/null +++ b/packages/base-types/src/node/custom.ts @@ -0,0 +1,38 @@ +import { Nullable } from '@voiceflow/common'; + +import { NodeType } from './constants'; +import { BaseEvent, BaseNode, BasePort, BasePortList, BaseStep, BaseStepPorts, NodeID } from './utils'; + +export interface StepData { + stop?: boolean; + payload: Payload; + defaultPath?: number; +} + +export interface StepPort extends BasePort { + data: { event?: Event }; +} + +export interface StepPorts extends BaseStepPorts>, StepPort[]> {} + +export interface Step extends BaseStep, StepPorts, BasePortList>> { + type: NodeType.CUSTOM; +} + +export interface NodePath { + label?: string; + event?: Event; + nextID: Nullable; +} + +export interface NodePayload { + name: string; + body: unknown; +} + +export interface Node extends BaseNode { + stop: boolean; + paths: Array>; + payload: NodePayload; + defaultPath?: number; // index starting from 0 +} diff --git a/packages/base-types/src/node/index.ts b/packages/base-types/src/node/index.ts index 8b62c2184..0e099fc37 100644 --- a/packages/base-types/src/node/index.ts +++ b/packages/base-types/src/node/index.ts @@ -2,6 +2,7 @@ import * as _v1 from './_v1'; import * as Api from './api'; import * as Code from './code'; import * as Component from './component'; +import * as Custom from './custom'; import * as Exit from './exit'; import * as Flow from './flow'; import * as General from './general'; @@ -30,6 +31,7 @@ export * as Carousel from './carousel'; export * as Code from './code'; export * as Component from './component'; export * from './constants'; +export * as Custom from './custom'; export * as Directive from './directive'; export * as Exit from './exit'; export * as Flow from './flow'; @@ -76,7 +78,8 @@ export type AnyCommonStep = | GoTo.Step | GoToNode.Step | Url.Step - | _v1.Step; + | _v1.Step + | Custom.Step; export type AnyCommonNode = | Set.Node @@ -93,6 +96,7 @@ export type AnyCommonNode = | GoTo.Node | Url.Node | GoToNode.Node - | _v1.Node; + | _v1.Node + | Custom.Node; export type AnyCommonCommand = Intent.Command | Command.Command; diff --git a/packages/base-types/src/node/utils/trace.ts b/packages/base-types/src/node/utils/trace.ts index a34570f7f..d0ae3c5a8 100644 --- a/packages/base-types/src/node/utils/trace.ts +++ b/packages/base-types/src/node/utils/trace.ts @@ -16,6 +16,7 @@ export enum TraceType { CAROUSEL = 'carousel', NO_REPLY = 'no-reply', ENTITY_FILLING = 'entity-filling', + CUSTOM = 'custom', } export interface BaseTraceFramePath {