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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import type { NodeType } from '@/types/generated/NodeType'
/**
* Node type constants
* Consistent with backend NodeType
*/
export const NODE_TYPE = {
// Trigger nodes
WEBHOOK_TRIGGER: 'WebhookTrigger',
SCHEDULE_TRIGGER: 'ScheduleTrigger',
MANUAL_TRIGGER: 'ManualTrigger',
// Action nodes
AGENT: 'Agent',
HTTP_REQUEST: 'HttpRequest',
PYTHON: 'Python',
PRINT: 'Print',
DATA_TRANSFORM: 'DataTransform',
} as const satisfies Record<string, NodeType>
/**
* Node categories
*/
export const NODE_CATEGORY = {
TRIGGER: 'trigger',
ACTION: 'action',
CONTROL: 'control',
DATA: 'data',
} as const
/**
* Trigger node type set
* Used to quickly determine if a node is a trigger
*/
export const TRIGGER_NODE_TYPES = new Set<NodeType>([
NODE_TYPE.WEBHOOK_TRIGGER,
NODE_TYPE.SCHEDULE_TRIGGER,
NODE_TYPE.MANUAL_TRIGGER,
])
/**
* Node type to category mapping
*/
export const NODE_TYPE_CATEGORY_MAP = {
[NODE_TYPE.WEBHOOK_TRIGGER]: NODE_CATEGORY.TRIGGER,
[NODE_TYPE.SCHEDULE_TRIGGER]: NODE_CATEGORY.TRIGGER,
[NODE_TYPE.MANUAL_TRIGGER]: NODE_CATEGORY.TRIGGER,
[NODE_TYPE.AGENT]: NODE_CATEGORY.ACTION,
[NODE_TYPE.HTTP_REQUEST]: NODE_CATEGORY.ACTION,
[NODE_TYPE.PYTHON]: NODE_CATEGORY.ACTION,
[NODE_TYPE.PRINT]: NODE_CATEGORY.DATA,
[NODE_TYPE.DATA_TRANSFORM]: NODE_CATEGORY.DATA,
} as const
/**
* Node type to display label mapping
*/
export const NODE_TYPE_LABELS = {
[NODE_TYPE.WEBHOOK_TRIGGER]: 'Webhook Trigger',
[NODE_TYPE.SCHEDULE_TRIGGER]: 'Schedule Trigger',
[NODE_TYPE.MANUAL_TRIGGER]: 'Manual Trigger',
[NODE_TYPE.AGENT]: 'AI Agent',
[NODE_TYPE.HTTP_REQUEST]: 'HTTP Request',
[NODE_TYPE.PYTHON]: 'Python Script',
[NODE_TYPE.PRINT]: 'Print',
[NODE_TYPE.DATA_TRANSFORM]: 'Data Transform',
} as const
/**
* Node type to icon mapping
*/
export const NODE_TYPE_ICONS = {
[NODE_TYPE.WEBHOOK_TRIGGER]: 'webhook',
[NODE_TYPE.SCHEDULE_TRIGGER]: 'schedule',
[NODE_TYPE.MANUAL_TRIGGER]: 'play',
[NODE_TYPE.AGENT]: 'robot',
[NODE_TYPE.HTTP_REQUEST]: 'http',
[NODE_TYPE.PYTHON]: 'code',
[NODE_TYPE.PRINT]: 'print',
[NODE_TYPE.DATA_TRANSFORM]: 'transform',
} as const
/**
* Node type to color mapping
*/
export const NODE_TYPE_COLORS = {
[NODE_TYPE.WEBHOOK_TRIGGER]: '#8b5cf6',
[NODE_TYPE.SCHEDULE_TRIGGER]: '#8b5cf6',
[NODE_TYPE.MANUAL_TRIGGER]: '#8b5cf6',
[NODE_TYPE.AGENT]: '#667eea',
[NODE_TYPE.HTTP_REQUEST]: '#3b82f6',
[NODE_TYPE.PYTHON]: '#10b981',
[NODE_TYPE.PRINT]: '#10b981',
[NODE_TYPE.DATA_TRANSFORM]: '#f59e0b',
} as const
// Type exports
export type NodeTypeKey = keyof typeof NODE_TYPE
export type NodeCategoryKey = keyof typeof NODE_CATEGORY
export type NodeTypeValue = typeof NODE_TYPE[NodeTypeKey]
export type NodeCategoryValue = typeof NODE_CATEGORY[NodeCategoryKey]
|