All files / src/flow config.ts

100% Statements 111/111
100% Branches 4/4
100% Functions 1/1
100% Lines 111/111

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 264x 264x 264x 264x 264x 264x 264x 5016x 4794x 132x 4794x 4794x 264x 264x 264x 264x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x 132x  
// Re-export all types and utilities
export * from './types';
import type { ActionConfig, NodeConfig } from './types';
 
// Import all action configurations
import { add_input_labels } from './actions/add_input_labels';
import { add_contact_urn } from './actions/add_contact_urn';
import { set_contact_field } from './actions/set_contact_field';
import { set_contact_channel } from './actions/set_contact_channel';
import { set_contact_language } from './actions/set_contact_language';
import { set_contact_status } from './actions/set_contact_status';
import { send_broadcast } from './actions/send_broadcast';
import { set_run_result } from './actions/set_run_result';
import { send_msg } from './actions/send_msg';
import { send_email } from './actions/send_email';
import { start_session } from './actions/start_session';
import { set_contact_name } from './actions/set_contact_name';
import { add_contact_groups } from './actions/add_contact_groups';
import { remove_contact_groups } from './actions/remove_contact_groups';
import { request_optin } from './actions/request_optin';
import { say_msg } from './actions/say_msg';
import { play_audio } from './actions/play_audio';
import { enter_flow } from './actions/enter_flow';
 
// Import all node configurations
import { execute_actions } from './nodes/execute_actions';
import { split_by_airtime } from './nodes/split_by_airtime';
import { split_by_contact_field } from './nodes/split_by_contact_field';
import { split_by_expression } from './nodes/split_by_expression';
import { split_by_groups } from './nodes/split_by_groups';
import { split_by_random } from './nodes/split_by_random';
import { split_by_run_result } from './nodes/split_by_run_result';
import { split_by_scheme } from './nodes/split_by_scheme';
import { split_by_subflow } from './nodes/split_by_subflow';
import { terminal } from './nodes/terminal';
import { split_by_ticket } from './nodes/split_by_ticket';
import { split_by_webhook } from './nodes/split_by_webhook';
import { split_by_resthook } from './nodes/split_by_resthook';
import { split_by_llm } from './nodes/split_by_llm';
import { split_by_llm_categorize } from './nodes/split_by_llm_categorize';
import { wait_for_audio } from './nodes/wait_for_audio';
import { wait_for_dial } from './nodes/wait_for_dial';
import { wait_for_digits } from './nodes/wait_for_digits';
import { wait_for_menu } from './nodes/wait_for_menu';
import { wait_for_response } from './nodes/wait_for_response';
 
export const ACTION_CONFIG: {
  [key: string]: ActionConfig;
} = registerConfigWithAliases({
  say_msg,
  play_audio,
  set_contact_field,
  send_broadcast,
  set_run_result,
  send_msg,
  send_email,
  start_session,
  set_contact_name,
  add_contact_groups,
  remove_contact_groups,
  set_contact_channel,
  set_contact_language,
  set_contact_status,
  add_contact_urn,
  add_input_labels,
  request_optin,
  enter_flow
});
 
// Helper to register a config and its aliases
function registerConfigWithAliases<T extends NodeConfig | ActionConfig>(
  config: Record<string, T>
): Record<string, T> {
  const result = { ...config };
 
  // Register aliases for each config
  Object.values(config).forEach((cfg) => {
    if (cfg.aliases) {
      cfg.aliases.forEach((alias) => {
        result[alias] = cfg;
      });
    }
  });
 
  return result;
}
 
export const NODE_CONFIG: {
  [key: string]: NodeConfig;
} = registerConfigWithAliases({
  execute_actions,
  split_by_contact_field,
  split_by_expression,
  split_by_groups,
  split_by_llm,
  split_by_llm_categorize,
  split_by_random,
  split_by_run_result,
  split_by_scheme,
  split_by_subflow,
  split_by_ticket,
  split_by_webhook,
  split_by_resthook,
  wait_for_menu,
  wait_for_digits,
  wait_for_audio,
  wait_for_dial,
  wait_for_response,
  split_by_airtime,
  terminal // Temporary: legacy support for terminal nodes (see AppState.ts)
});