{"version":3,"file":"UdpAiAssistant.mjs","names":["React","useMemo","AssistantChat","AssistantChatProps","buildAskClarificationTool","argString","AiAssistantTool","AiCapability","styles","UdpAiAssistantProps","capability","Omit","UdpAiAssistant","t0","$","_c","chat","t1","placeholder","undefined","t2","tools","t3","Symbol","for","definition","respond","_temp2","map","_temp","proposal","function","name","proposals","t4","instructions","t5","context","t6","models","preferredModel","requestParams","fill","t","execute","args"],"sources":["../../src/aiAssistant/UdpAiAssistant.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { AssistantChat, AssistantChatProps } from './AssistantChat';\nimport { buildAskClarificationTool } from './askClarification';\nimport { argString } from './engine';\nimport type { AiAssistantTool, AiCapability } from './types';\nimport styles from './UdpAiAssistant.module.css';\n\n/** The surface's own props: the capability it serves, plus the chat's UI and conversation props. */\nexport type UdpAiAssistantProps = {\n  /** The function this assistant is the chat for — see AiCapability. */\n  capability: AiCapability;\n} & Omit<\n  AssistantChatProps,\n  | 'buildSystemPrompt'\n  | 'buildContext'\n  | 'tools'\n  | 'proposals'\n  | 'models'\n  | 'preferredModel'\n  | 'requestParams'\n>;\n\n/**\n * THE assistant surface: the chat for one capability. Everything about the\n * function — prompt, live context, tools, proposal, models — is the\n * capability it is handed; access comes from UdpAiProvider (mounted by\n * `<UdpAppProvider ai>`). It fills whatever container it is dropped into and\n * draws no chrome of its own — the host owns placement and framing (a docked\n * pane, a tab, a column), so a new surface is this component inside a new\n * frame.\n *\n * Renders nothing until the gateway has allowed this tenant AI.\n */\nexport const UdpAiAssistant = ({\n  capability,\n  placeholder = 'Ask a question about your data…',\n  ...chat\n}: UdpAiAssistantProps) => {\n  const tools = useMemo<AiAssistantTool[]>(\n    () => [\n      ...(capability.tools ?? []).map((t) => ({ definition: t.definition, execute: t.execute })),\n      {\n        definition: buildAskClarificationTool(),\n        respond: (args) => argString(args, 'question') || 'Could you clarify what you mean?'\n      }\n    ],\n    [capability]\n  );\n  const proposals = useMemo(\n    () =>\n      capability.proposal\n        ? { [capability.proposal.definition.function.name]: capability.proposal }\n        : undefined,\n    [capability]\n  );\n\n  return (\n    <div className={styles.fill}>\n      <AssistantChat\n        {...chat}\n        placeholder={placeholder}\n        buildSystemPrompt={() => capability.instructions}\n        buildContext={() => capability.context?.() ?? ''}\n        tools={tools}\n        proposals={proposals}\n        models={capability.models}\n        preferredModel={capability.preferredModel}\n        requestParams={capability.requestParams}\n      />\n    </div>\n  );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAiCA,MAAaY,kBAAiBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAA,IAAAL;CAAA,IAAAM;CAAA,IAAAC;AAAA,KAAAH,EAAA,OAAAD,IAAA;AAAC,GAAA,CAAAH,YAAAQ,aAAAD,OAAAD,QAAAH;AAITC,IAAA,KAAAD;AAAAC,IAAA,KAAAJ;AAAAI,IAAA,KAAAE;AAAAF,IAAA,KAAAG;QAAA;AAAAP,eAAAI,EAAA;AAAAE,SAAAF,EAAA;AAAAG,OAAAH,EAAA;;CAFpB,MAAAI,cAAAD,OAAAE,KAAAA,IAAA,oCAAAF;CAA+C,IAAAG;AAAA,KAAAN,EAAA,OAAAJ,WAAAW,OAAA;EAAA,IAAAC;AAAA,MAAAR,EAAA,OAAAS,OAAAC,IAAA,4BAAA,EAAA;AAM3CF,QAAA;IAAAG,YACcrB,2BAA2B;IAAAsB,SAC9BC;IACV;AAAAb,KAAA,KAAAQ;QAAAA,MAAAR,EAAA;AALGM,OAAA,CAAA,IACAV,WAAUW,SAAV,EAAsB,EAAAO,IAAMC,MAA0D,EAC1FP,GAID;AAAAR,IAAA,KAAAJ,WAAAW;AAAAP,IAAA,KAAAM;OAAAA,MAAAN,EAAA;CAPH,MAAAO,QACQD;CAQN,IAAAE;AAAA,KAAAR,EAAA,OAAAJ,WAAAoB,UAAA;AAGER,OAAAZ,WAAUoB,WAAV,GACOpB,WAAUoB,SAASL,WAAWM,SAASC,OAAQtB,WAAUoB,UACnD,GAFbX,KAAAA;AAEaL,IAAA,KAAAJ,WAAAoB;AAAAhB,IAAA,KAAAQ;OAAAA,MAAAR,EAAA;CAJjB,MAAAmB,YAEIX;CAIF,IAAAY;AAAA,KAAApB,EAAA,OAAAJ,WAAAyB,cAAA;AAOuBD,aAAMxB,WAAUyB;AAAarB,IAAA,KAAAJ,WAAAyB;AAAArB,IAAA,MAAAoB;OAAAA,MAAApB,EAAA;CAAA,IAAAsB;AAAA,KAAAtB,EAAA,QAAAJ,YAAA;AAClC0B,aAAM1B,WAAU2B,WAAkB,IAA5B;AAA4BvB,IAAA,MAAAJ;AAAAI,IAAA,MAAAsB;OAAAA,MAAAtB,EAAA;CAAA,IAAAwB;AAAA,KAAAxB,EAAA,QAAAJ,WAAA6B,UAAAzB,EAAA,QAAAJ,WAAA8B,kBAAA1B,EAAA,QAAAJ,WAAA+B,iBAAA3B,EAAA,QAAAE,QAAAF,EAAA,QAAAI,eAAAJ,EAAA,QAAAmB,aAAAnB,EAAA,QAAAoB,MAAApB,EAAA,QAAAsB,MAAAtB,EAAA,QAAAO,OAAA;AALpDiB,OAAA,sBAAA,cAAA,OAAA,EAAgB,WAAA9B,OAAMkC,MAYhB,EAXJ,sBAAA,cAAC,eAAD;GAAc,GACR1B;GACSE;GACM,mBAAAgB;GACL,cAAAE;GACPf;GACIY;GACH,QAAAvB,WAAU6B;GACF,gBAAA7B,WAAU8B;GACX,eAAA9B,WAAU+B;GAE7B,CAAA,CAAM;AAAA3B,IAAA,MAAAJ,WAAA6B;AAAAzB,IAAA,MAAAJ,WAAA8B;AAAA1B,IAAA,MAAAJ,WAAA+B;AAAA3B,IAAA,MAAAE;AAAAF,IAAA,MAAAI;AAAAJ,IAAA,MAAAmB;AAAAnB,IAAA,MAAAoB;AAAApB,IAAA,MAAAsB;AAAAtB,IAAA,MAAAO;AAAAP,IAAA,MAAAwB;OAAAA,MAAAxB,EAAA;AAAA,QAZNwB;;AAxB0B,SAAAT,MAAAc,GAAA;AAAA,QAOgB;EAAAlB,YAAckB,EAAClB;EAAWmB,SAAWD,EAACC;EAAU;;AAPhE,SAAAjB,OAAAkB,MAAA;AAAA,QAUHxC,UAAUwC,MAAM,WAAiD,IAAjE"}