{"version":3,"sources":["../../../src/beta/tools/send_dtmf.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2026 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { setTimeout as waitFor } from 'node:timers/promises';\nimport { z } from 'zod';\nimport { getJobContext } from '../../job.js';\nimport { tool } from '../../llm/index.js';\n\nconst DEFAULT_DTMF_PUBLISH_DELAY = 300;\n\nconst DTMF_EVENTS = [\n  '1',\n  '2',\n  '3',\n  '4',\n  '5',\n  '6',\n  '7',\n  '8',\n  '9',\n  '0',\n  '*',\n  '#',\n  'A',\n  'B',\n  'C',\n  'D',\n] as const;\n\nexport type DtmfEvent = (typeof DTMF_EVENTS)[number];\n\nfunction dtmfEventToCode(event: DtmfEvent): number {\n  if (/^\\d$/.test(event)) {\n    return Number(event);\n  }\n  if (event === '*') {\n    return 10;\n  }\n  if (event === '#') {\n    return 11;\n  }\n\n  return event.charCodeAt(0) - 'A'.charCodeAt(0) + 12;\n}\n\nexport const sendDtmfEvents = tool({\n  name: 'send_dtmf_events',\n  description: `\nSend a list of DTMF events to the telephony provider.\n\nCall when:\n- User wants to send DTMF events\n`,\n  parameters: z.object({\n    events: z.array(z.enum(DTMF_EVENTS)).describe('The DTMF events to send.'),\n  }),\n  execute: async ({ events }, { ctx }) => {\n    const room = ctx.session._roomIO?.rtcRoom ?? getJobContext().room;\n\n    for (const event of events) {\n      try {\n        const code = dtmfEventToCode(event);\n        if (!room.localParticipant) {\n          throw new Error('room local participant is not available');\n        }\n\n        await room.localParticipant.publishDtmf(code, event);\n        await waitFor(DEFAULT_DTMF_PUBLISH_DELAY);\n      } catch (error) {\n        const message = error instanceof Error ? error.message : String(error);\n        return `Failed to send DTMF event: ${event}. Error: ${message}`;\n      }\n    }\n\n    return `Successfully sent DTMF events: ${events.join(', ')}`;\n  },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,sBAAsC;AACtC,iBAAkB;AAClB,iBAA8B;AAC9B,iBAAqB;AAErB,MAAM,6BAA6B;AAEnC,MAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIA,SAAS,gBAAgB,OAA0B;AACjD,MAAI,OAAO,KAAK,KAAK,GAAG;AACtB,WAAO,OAAO,KAAK;AAAA,EACrB;AACA,MAAI,UAAU,KAAK;AACjB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,KAAK;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,MAAM,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI;AACnD;AAEO,MAAM,qBAAiB,iBAAK;AAAA,EACjC,MAAM;AAAA,EACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMb,YAAY,aAAE,OAAO;AAAA,IACnB,QAAQ,aAAE,MAAM,aAAE,KAAK,WAAW,CAAC,EAAE,SAAS,0BAA0B;AAAA,EAC1E,CAAC;AAAA,EACD,SAAS,OAAO,EAAE,OAAO,GAAG,EAAE,IAAI,MAAM;AAxD1C;AAyDI,UAAM,SAAO,SAAI,QAAQ,YAAZ,mBAAqB,gBAAW,0BAAc,EAAE;AAE7D,eAAW,SAAS,QAAQ;AAC1B,UAAI;AACF,cAAM,OAAO,gBAAgB,KAAK;AAClC,YAAI,CAAC,KAAK,kBAAkB;AAC1B,gBAAM,IAAI,MAAM,yCAAyC;AAAA,QAC3D;AAEA,cAAM,KAAK,iBAAiB,YAAY,MAAM,KAAK;AACnD,kBAAM,gBAAAA,YAAQ,0BAA0B;AAAA,MAC1C,SAAS,OAAO;AACd,cAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,eAAO,8BAA8B,KAAK,YAAY,OAAO;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO,kCAAkC,OAAO,KAAK,IAAI,CAAC;AAAA,EAC5D;AACF,CAAC;","names":["waitFor"]}