UNPKG

newo

Version:

NEWO CLI: Professional command-line tool with modular architecture for NEWO AI Agent development. Features account migration, integration management, webhook automation, AKB knowledge base, project attributes, sandbox testing, IDN-based file management, r

79 lines (69 loc) 3.06 kB
/** * Create Flow Event Command Handler */ import { makeClient, createFlowEvent } from '../../api.js'; import { getValidAccessToken } from '../../auth.js'; import { requireSingleCustomer } from '../customer-selection.js'; import type { MultiCustomerConfig, CliArgs, CreateFlowEventRequest } from '../../types.js'; export async function handleCreateEventCommand( customerConfig: MultiCustomerConfig, args: CliArgs, verbose: boolean = false ): Promise<void> { try { const selectedCustomer = requireSingleCustomer(customerConfig, args.customer as string | undefined); // Parse arguments const idn = args._[1] as string; const flowId = args.flow as string; const skillIdn = args.skill as string; const description = args.description as string || ''; const skillSelector = args['skill-selector'] as string || 'skill_idn'; const interruptMode = args['interrupt-mode'] as string || 'queue'; const integrationIdn = args.integration as string || 'api'; const connectorIdn = args.connector as string || 'webhook'; const stateIdn = args.state as string; if (!idn) { console.error('Error: Event IDN is required'); console.error('Usage: newo create-event <idn> --flow <flow-id> --skill <skill-idn> [--description <desc>] [--skill-selector <selector>] [--interrupt-mode <mode>] [--integration <integration>] [--connector <connector>] [--state <state-idn>]'); process.exit(1); } if (!flowId) { console.error('Error: Flow ID is required'); console.error('Usage: newo create-event <idn> --flow <flow-id> --skill <skill-idn> [options]'); process.exit(1); } if (!skillIdn) { console.error('Error: Skill IDN is required'); console.error('Usage: newo create-event <idn> --flow <flow-id> --skill <skill-idn> [options]'); process.exit(1); } if (verbose) { console.log(`📝 Creating event: ${idn}`); console.log(` Flow ID: ${flowId}`); console.log(` Skill IDN: ${skillIdn}`); console.log(` Integration: ${integrationIdn}`); console.log(` Connector: ${connectorIdn}`); } // Get access token and create client const accessToken = await getValidAccessToken(selectedCustomer); const client = await makeClient(verbose, accessToken); // Create event on NEWO platform const createEventRequest: CreateFlowEventRequest = { idn, description, skill_selector: skillSelector, skill_idn: skillIdn, state_idn: stateIdn || null, interrupt_mode: interruptMode, integration_idn: integrationIdn, connector_idn: connectorIdn }; const createResponse = await createFlowEvent(client, flowId, createEventRequest); console.log(`✅ Event created: ${idn} (ID: ${createResponse.id})`); console.log(` Flow: ${flowId}`); console.log(` Triggers skill: ${skillIdn}`); } catch (error: unknown) { console.error('❌ Failed to create event:', error instanceof Error ? error.message : String(error)); process.exit(1); } }