import { ProcessGraphDefinition } from './ai-processes.types'; export const demoRegisterNewPetProcess: ProcessGraphDefinition = { id: 'register_new_pet', name: 'Register New Pet', description: 'Resolve account/contact then create pet.', allowCycles: false, nodes: [ { id: 'start', type: 'Start', data: { label: 'Start' }, }, { id: 'decide_account', type: 'LLMDecisionNode', data: { label: 'Decide Account Action', promptTemplate: 'Decide whether to find or create an account. Return JSON {"accountAction":"find|create","accountName":"string"}.', inputKeys: ['accountName'], outputSchema: { type: 'object', required: ['accountAction', 'accountName'], properties: { accountAction: { type: 'string', enum: ['find', 'create'] }, accountName: { type: 'string' }, }, additionalProperties: false, }, model: { name: 'gpt-4o-mini', temperature: 0 }, }, }, { id: 'find_account', type: 'ToolNode', data: { label: 'Find Account', toolName: 'findAccount', argsTemplate: { accountName: '{{state.accountName}}' }, outputMapping: { accountId: 'accountId', found: 'accountFound' }, }, }, { id: 'create_account', type: 'ToolNode', data: { label: 'Create Account', toolName: 'createAccount', argsTemplate: { accountName: '{{state.accountName}}' }, outputMapping: { accountId: 'accountId' }, }, }, { id: 'decide_contact', type: 'LLMDecisionNode', data: { label: 'Decide Contact Action', promptTemplate: 'Decide whether to find or create a contact. Return JSON {"contactAction":"find|create","firstName":"string","lastName":"string"}.', inputKeys: ['firstName', 'lastName'], outputSchema: { type: 'object', required: ['contactAction', 'firstName', 'lastName'], properties: { contactAction: { type: 'string', enum: ['find', 'create'] }, firstName: { type: 'string' }, lastName: { type: 'string' }, }, additionalProperties: false, }, model: { name: 'gpt-4o-mini', temperature: 0 }, }, }, { id: 'find_contact', type: 'ToolNode', data: { label: 'Find Contact', toolName: 'findContact', argsTemplate: { accountId: '{{state.accountId}}', firstName: '{{state.firstName}}', lastName: '{{state.lastName}}', }, outputMapping: { contactId: 'contactId', found: 'contactFound' }, }, }, { id: 'create_contact', type: 'ToolNode', data: { label: 'Create Contact', toolName: 'createContact', argsTemplate: { accountId: '{{state.accountId}}', firstName: '{{state.firstName}}', lastName: '{{state.lastName}}', }, outputMapping: { contactId: 'contactId' }, }, }, { id: 'need_pet', type: 'HumanInputNode', data: { label: 'Collect Pet Info', promptToUser: 'What is the pet name and type?', requiredFieldsSchema: { type: 'object', required: ['petName', 'petType'], properties: { petName: { type: 'string' }, petType: { type: 'string' }, }, additionalProperties: false, }, }, }, { id: 'create_pet', type: 'ToolNode', data: { label: 'Create Pet', toolName: 'createPet', argsTemplate: { contactId: '{{state.contactId}}', petName: '{{state.petName}}', petType: '{{state.petType}}', }, outputMapping: { petId: 'petId' }, }, }, { id: 'end', type: 'End', data: { label: 'End' }, }, ], edges: [ { id: 'e_start_account', source: 'start', target: 'decide_account' }, { id: 'e_account_find', source: 'decide_account', target: 'find_account', condition: { '==': [{ var: 'accountAction' }, 'find'] }, }, { id: 'e_account_create', source: 'decide_account', target: 'create_account', condition: { '==': [{ var: 'accountAction' }, 'create'] }, }, { id: 'e_account_to_contact', source: 'find_account', target: 'decide_contact' }, { id: 'e_create_account_to_contact', source: 'create_account', target: 'decide_contact' }, { id: 'e_contact_find', source: 'decide_contact', target: 'find_contact', condition: { '==': [{ var: 'contactAction' }, 'find'] }, }, { id: 'e_contact_create', source: 'decide_contact', target: 'create_contact', condition: { '==': [{ var: 'contactAction' }, 'create'] }, }, { id: 'e_contact_to_pet', source: 'find_contact', target: 'need_pet' }, { id: 'e_create_contact_to_pet', source: 'create_contact', target: 'need_pet' }, { id: 'e_need_pet_to_create', source: 'need_pet', target: 'create_pet' }, { id: 'e_pet_to_end', source: 'create_pet', target: 'end' }, ], };