@recombine-ai/platform 0.5.0-test.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/build/agent/index.d.ts +0 -1
- package/build/agent/index.d.ts.map +1 -1
- package/build/agent/text-agent.d.ts +3 -4
- package/build/agent/text-agent.d.ts.map +1 -1
- package/build/agent/text-agent.js +1 -8
- package/build/agent/voice-agent.d.ts +3 -4
- package/build/agent/voice-agent.d.ts.map +1 -1
- package/build/agent/voice-agent.js +1 -8
- package/build/bosun/std-mocks/platform.d.ts.map +1 -1
- package/build/bosun/std-mocks/platform.js +0 -2
- package/build/bosun/test-agent.d.ts.map +1 -1
- package/build/bosun/test-agent.js +1 -2
- package/build/bosun-app/backend/server.js +1 -1
- package/build/bosun-app/backend/server.js.map +2 -2
- package/build/bosun-app/frontend/client/_app/immutable/assets/0.B5fEz2jr.css +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/assets/0.B5fEz2jr.css.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/assets/0.B5fEz2jr.css.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/9mOMnnWN.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/9mOMnnWN.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/9mOMnnWN.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B0nqNj93.js +2 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B0nqNj93.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B0nqNj93.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B1dhmiqQ.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B1dhmiqQ.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B1dhmiqQ.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{B9e8MCJ2.js → B9pMb6OP.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B9pMb6OP.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B9pMb6OP.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{NwoUwoIi.js → BBk8_Xpk.js} +2 -2
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BBk8_Xpk.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BBk8_Xpk.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{BDIIq0ko.js → BEdAvgYp.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BEdAvgYp.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BEdAvgYp.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{DsRUoWL6.js → BJ9KKLWf.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BJ9KKLWf.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BJ9KKLWf.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{BZeEhZ9x.js → BQIf5msi.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BQIf5msi.js.br +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BQIf5msi.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{DOVgTfHj.js → BW6P0Ecp.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BW6P0Ecp.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BW6P0Ecp.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{D6r2pB3T.js → BcbX6huO.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BcbX6huO.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BcbX6huO.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BoX_BZZY.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BoX_BZZY.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BoX_BZZY.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{BHwgmBN2.js → Bp8N7Z1t.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Bp8N7Z1t.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Bp8N7Z1t.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{9pOOTteE.js → C0rPkxmP.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C0rPkxmP.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C0rPkxmP.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C3cROXCy.js +9 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C3cROXCy.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C3cROXCy.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{VLxbY_3V.js → C9yBjdYI.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C9yBjdYI.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C9yBjdYI.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{D24F_tet.js → CCYriF4C.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CCYriF4C.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CCYriF4C.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CHCMKZAC.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CHCMKZAC.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CHCMKZAC.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CR-uVjxM.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CR-uVjxM.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CR-uVjxM.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CR5IRTqC.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CR5IRTqC.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CR5IRTqC.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{DJFKRYxi.js → ClLUwVGq.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/ClLUwVGq.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/ClLUwVGq.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{4OgEIyh1.js → DEz15oJb.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DEz15oJb.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DEz15oJb.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{BtJ1grIE.js → DJnDF3d9.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DJnDF3d9.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DJnDF3d9.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DLoeuYMu.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DLoeuYMu.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DLoeuYMu.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{D35JKLYq.js → DNvczHUR.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DNvczHUR.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DNvczHUR.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DXsF11_5.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DXsF11_5.js.br +2 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DXsF11_5.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D_AUB_Y_.js +3 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D_AUB_Y_.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D_AUB_Y_.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Dba0_Upf.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Dba0_Upf.js.br +2 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Dba0_Upf.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{FLx39vZ1.js → DjujL8K1.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DjujL8K1.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DjujL8K1.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{BHU9AXbn.js → DnMQeiTY.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DnMQeiTY.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DnMQeiTY.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DuQdgMax.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DuQdgMax.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DuQdgMax.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Dz3Q78XL.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Dz3Q78XL.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Dz3Q78XL.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{CINamuM5.js → DzLW1Mkz.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DzLW1Mkz.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DzLW1Mkz.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/OERrxy3_.js +64 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/OERrxy3_.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/OERrxy3_.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/WoyQSrjz.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/WoyQSrjz.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/WoyQSrjz.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/ddC1NP9R.js +2 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/ddC1NP9R.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/ddC1NP9R.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{Csai_DUZ.js → joiJcRPz.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/joiJcRPz.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/joiJcRPz.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{DSFEfk-V.js → ouMvMh56.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/ouMvMh56.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/ouMvMh56.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/qiSVE_6c.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/qiSVE_6c.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/qiSVE_6c.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/{CkCJ1-zx.js → sKHuRf4Z.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/sKHuRf4Z.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/sKHuRf4Z.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/app.tlZ6ECO2.js +2 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/app.tlZ6ECO2.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/app.tlZ6ECO2.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.CFPAx99R.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.CFPAx99R.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.CFPAx99R.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{0.sWxZKx1V.js → 0.My9Ge0mp.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/0.My9Ge0mp.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/0.My9Ge0mp.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/1.8soRNXH1.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/1.8soRNXH1.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/1.8soRNXH1.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{10.BP2gctlm.js → 10.Dvsr2_-z.js} +7 -7
- package/build/bosun-app/frontend/client/_app/immutable/nodes/10.Dvsr2_-z.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/10.Dvsr2_-z.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{15.D4h0JT65.js → 15.drIyAxl2.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/15.drIyAxl2.js.br +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/15.drIyAxl2.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/17.COoRz9YL.js +3 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/17.COoRz9YL.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/17.COoRz9YL.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.BU9ol_TM.js +11 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.BU9ol_TM.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.BU9ol_TM.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{2.DaZm8LbH.js → 2.BaCFGeUG.js} +3 -3
- package/build/bosun-app/frontend/client/_app/immutable/nodes/2.BaCFGeUG.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/2.BaCFGeUG.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.B2QuAahv.js +1 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.B2QuAahv.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.B2QuAahv.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{4.BWY-PEkr.js → 4.XVLuiibs.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/4.XVLuiibs.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/4.XVLuiibs.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{5.Cl70jzrZ.js → 5.BV6hbTfJ.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/5.BV6hbTfJ.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/5.BV6hbTfJ.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{6.Cfkc99si.js → 6.cTvJXuC_.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/6.cTvJXuC_.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/6.cTvJXuC_.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{8.CmB3ZvKy.js → 8.4WVQLKHf.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/8.4WVQLKHf.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/8.4WVQLKHf.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/{9.8UAsXj0n.js → 9.DDtd23BC.js} +1 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/9.DDtd23BC.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/9.DDtd23BC.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/version.json +1 -1
- package/build/bosun-app/frontend/client/_app/version.json.br +0 -0
- package/build/bosun-app/frontend/client/_app/version.json.gz +0 -0
- package/build/bosun-app/frontend/handler.js +4 -4
- package/build/bosun-app/frontend/index.js +4 -4
- package/build/bosun-app/frontend/server/chunks/chunks/{internal.js-BYUssiWE.js → internal.js-Bbhicye1.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/chunks/{internal.js-BYUssiWE.js.map → internal.js-Bbhicye1.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/chunks/{schemas.js-b9Mui_5N.js → schemas.js-W-DP3mDr.js} +2 -187
- package/build/bosun-app/frontend/server/chunks/chunks/schemas.js-W-DP3mDr.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/chunks/{source-selection.js-BpCr9ar-.js → source-selection.js-Cc6RX6-m.js} +4 -47
- package/build/bosun-app/frontend/server/chunks/chunks/source-selection.js-Cc6RX6-m.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/chunks/{sources.server.js-DIj2VjCx.js → sources.server.js-B6fpC51P.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/chunks/{sources.server.js-DIj2VjCx.js.map → sources.server.js-B6fpC51P.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/latency/_conversationId_/{_server.ts.js-mL82mAit.js → _server.ts.js-hHR2eFvt.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/latency/_conversationId_/{_server.ts.js-mL82mAit.js.map → _server.ts.js-hHR2eFvt.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/proxy/_...path_/{_server.ts.js-DDDiZFhL.js → _server.ts.js-CHrOiduq.js} +10 -17
- package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/proxy/_...path_/_server.ts.js-CHrOiduq.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/sources/{_server.ts.js-D_UoR_Ph.js → _server.ts.js-C2FIU8Kr.js} +3 -3
- package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/sources/{_server.ts.js-D_UoR_Ph.js.map → _server.ts.js-C2FIU8Kr.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/latency/{_page.svelte.js-DXMXSrkC.js → _page.svelte.js-tdUdTo4m.js} +5 -5
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/latency/_page.svelte.js-tdUdTo4m.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/traces/{_page.svelte.js-CZkbHRGl.js → _page.svelte.js-Ca79DBzJ.js} +9 -28
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/traces/_page.svelte.js-Ca79DBzJ.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/{_layout.svelte.js-B4Yws-GS.js → _layout.svelte.js-Dvn3tfM7.js} +35 -328
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_layout.svelte.js-Dvn3tfM7.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/{handler-B-UxYyko.js → handler-B9pVHSE7.js} +3 -3
- package/build/bosun-app/frontend/server/chunks/{handler-B-UxYyko.js.map → handler-B9pVHSE7.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/{index.js-CleJzVFo.js → index.js-yM54Kd2A.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/{index.js-CleJzVFo.js.map → index.js-yM54Kd2A.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/{manifest.js-C8NquSUu.js → manifest.js-DolFIESH.js} +18 -18
- package/build/bosun-app/frontend/server/chunks/{manifest.js-C8NquSUu.js.map → manifest.js-DolFIESH.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/0.js-Dq2ecpF9.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/0.js-Dq2ecpF9.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/nodes/1.js-DL4KxCNs.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/{1.js-BKMg62KW.js.map → 1.js-DL4KxCNs.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/10.js-LOiFsxCJ.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/10.js-LOiFsxCJ.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/nodes/{15.js-nE6nl5S8.js → 15.js-cNd06B9T.js} +2 -2
- package/build/bosun-app/frontend/server/chunks/nodes/{15.js-nE6nl5S8.js.map → 15.js-cNd06B9T.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/17.js-DMA8sOmE.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/17.js-DMA8sOmE.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/nodes/18.js-uFmm-sPa.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/18.js-uFmm-sPa.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/nodes/2.js-TSnVvl3L.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/2.js-TSnVvl3L.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/nodes/3.js-C-mekp3u.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/3.js-C-mekp3u.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/nodes/4.js-CKl_EX8L.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/4.js-CKl_EX8L.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/nodes/5.js-BWmqvxt2.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/{5.js-CqRWSoO5.js.map → 5.js-BWmqvxt2.js.map} +1 -1
- package/build/bosun-app/frontend/server/chunks/nodes/6.js-CjKPGJGt.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/6.js-CjKPGJGt.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/nodes/8.js-CpjYLyJe.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/8.js-CpjYLyJe.js.map +1 -0
- package/build/bosun-app/frontend/server/chunks/nodes/9.js-BLYfNmUw.js +9 -0
- package/build/bosun-app/frontend/server/chunks/nodes/9.js-BLYfNmUw.js.map +1 -0
- package/build/build/build.d.ts.map +1 -1
- package/build/build/build.js +1 -3
- package/build/build/common.d.ts +0 -1
- package/build/build/common.d.ts.map +1 -1
- package/build/build/common.js +0 -12
- package/build/call-control/types.d.ts +1 -1
- package/build/call-control/types.d.ts.map +1 -1
- package/build/core/get-text-platform.d.ts +15 -0
- package/build/core/get-text-platform.d.ts.map +1 -0
- package/build/core/{make-text-platform.js → get-text-platform.js} +8 -6
- package/build/core/{make-voice-platform.d.ts → get-voice-platform.d.ts} +4 -6
- package/build/core/get-voice-platform.d.ts.map +1 -0
- package/build/core/{make-voice-platform.js → get-voice-platform.js} +8 -6
- package/build/core/index.d.ts +4 -4
- package/build/core/index.d.ts.map +1 -1
- package/build/core/index.js +2 -2
- package/build/core/platform.d.ts +0 -2
- package/build/core/platform.d.ts.map +1 -1
- package/build/engine/interfaces/other.d.ts +1 -1
- package/build/engine/interfaces/other.d.ts.map +1 -1
- package/build/engine/stream/get-client.d.ts.map +1 -1
- package/build/engine/stream/get-client.js +8 -102
- package/build/text-agent-handlers/incoming-message.d.ts +4 -2
- package/build/text-agent-handlers/incoming-message.d.ts.map +1 -1
- package/build/text-agent-handlers/incoming-message.js +31 -14
- package/build/text-agent-handlers/index.d.ts +1 -1
- package/build/text-agent-handlers/index.d.ts.map +1 -1
- package/build/text-agent-handlers/instrument.d.ts +0 -1
- package/build/text-agent-handlers/instrument.d.ts.map +1 -1
- package/build/text-agent-handlers/instrument.js +5 -5
- package/build/text-agent-handlers/jobs-handler.d.ts +3 -2
- package/build/text-agent-handlers/jobs-handler.d.ts.map +1 -1
- package/build/text-agent-handlers/jobs-handler.js +12 -9
- package/build/text-agent-handlers/jobs.d.ts +1 -1
- package/build/text-agent-handlers/jobs.d.ts.map +1 -1
- package/build/text-agent-handlers/ports.d.ts +3 -4
- package/build/text-agent-handlers/ports.d.ts.map +1 -1
- package/build/text-agent-handlers/ports.js +12 -0
- package/build/voice-agent-api/voice-http.d.ts +1 -3
- package/build/voice-agent-api/voice-http.d.ts.map +1 -1
- package/build/voice-agent-api/voice-http.js +16 -53
- package/package.json +1 -5
- package/build/agent/agent-analytics.d.ts +0 -14
- package/build/agent/agent-analytics.d.ts.map +0 -1
- package/build/agent/agent-analytics.js +0 -29
- package/build/analytics/analytics.d.ts +0 -49
- package/build/analytics/analytics.d.ts.map +0 -1
- package/build/analytics/analytics.js +0 -223
- package/build/analytics/index.d.ts +0 -7
- package/build/analytics/index.d.ts.map +0 -1
- package/build/analytics/index.js +0 -3
- package/build/analytics/postgres-analytics-query.d.ts +0 -117
- package/build/analytics/postgres-analytics-query.d.ts.map +0 -1
- package/build/analytics/postgres-analytics-query.js +0 -504
- package/build/analytics/postgres-analytics.d.ts +0 -33
- package/build/analytics/postgres-analytics.d.ts.map +0 -1
- package/build/analytics/postgres-analytics.js +0 -310
- package/build/bosun-app/frontend/client/_app/immutable/assets/0.BhaOIA8N.css +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/assets/0.BhaOIA8N.css.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/assets/0.BhaOIA8N.css.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/-ZTJLlC3.js +0 -2
- package/build/bosun-app/frontend/client/_app/immutable/chunks/-ZTJLlC3.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/-ZTJLlC3.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/0Q6TVg1G.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/0Q6TVg1G.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/0Q6TVg1G.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/4OgEIyh1.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/4OgEIyh1.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/8bHWYDyT.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/8bHWYDyT.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/8bHWYDyT.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/9pOOTteE.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/9pOOTteE.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/AlWqjAqK.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/AlWqjAqK.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/AlWqjAqK.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B9e8MCJ2.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/B9e8MCJ2.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BDIIq0ko.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BDIIq0ko.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BFiP5U7M.js +0 -3
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BFiP5U7M.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BFiP5U7M.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BHU9AXbn.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BHU9AXbn.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BHwgmBN2.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BHwgmBN2.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BOlSQbHE.js +0 -2
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BOlSQbHE.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BOlSQbHE.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BXO2WwQx.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BXO2WwQx.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BXO2WwQx.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BZeEhZ9x.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BZeEhZ9x.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BbB1C_YH.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BbB1C_YH.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BbB1C_YH.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BtJ1grIE.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/BtJ1grIE.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C5z36vOP.js +0 -8
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C5z36vOP.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/C5z36vOP.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CHNsNZYZ.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CHNsNZYZ.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CHNsNZYZ.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CINamuM5.js.br +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CINamuM5.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CR6hF_YT.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CR6hF_YT.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CR6hF_YT.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CbXT0Qet.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CbXT0Qet.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CbXT0Qet.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CkCJ1-zx.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CkCJ1-zx.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Cm25Ihk6.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Cm25Ihk6.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Cm25Ihk6.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CmJrlnQL.js +0 -64
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CmJrlnQL.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CmJrlnQL.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CofRL0YY.js +0 -2
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CofRL0YY.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/CofRL0YY.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Csai_DUZ.js.br +0 -6
- package/build/bosun-app/frontend/client/_app/immutable/chunks/Csai_DUZ.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D24F_tet.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D24F_tet.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D35JKLYq.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D35JKLYq.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D6r2pB3T.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/D6r2pB3T.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DJFKRYxi.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DJFKRYxi.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DOVgTfHj.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DOVgTfHj.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DPfKTQVx.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DPfKTQVx.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DPfKTQVx.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DSFEfk-V.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DSFEfk-V.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DbY589nb.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DbY589nb.js.br +0 -2
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DbY589nb.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DfEgi1lN.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DfEgi1lN.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DfEgi1lN.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DsRUoWL6.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/DsRUoWL6.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/FLx39vZ1.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/FLx39vZ1.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/NwoUwoIi.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/NwoUwoIi.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/VLxbY_3V.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/VLxbY_3V.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/chunks/uEzaTD9T.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/chunks/uEzaTD9T.js.br +0 -2
- package/build/bosun-app/frontend/client/_app/immutable/chunks/uEzaTD9T.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/app.fITODAfp.js +0 -2
- package/build/bosun-app/frontend/client/_app/immutable/entry/app.fITODAfp.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/app.fITODAfp.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.CuqUO5EQ.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.CuqUO5EQ.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/entry/start.CuqUO5EQ.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/0.sWxZKx1V.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/0.sWxZKx1V.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/1.PQXY4edq.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/1.PQXY4edq.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/1.PQXY4edq.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/10.BP2gctlm.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/10.BP2gctlm.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/15.D4h0JT65.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/15.D4h0JT65.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/17.D5wsHo5R.js +0 -3
- package/build/bosun-app/frontend/client/_app/immutable/nodes/17.D5wsHo5R.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/17.D5wsHo5R.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.CZp-IBH8.js +0 -11
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.CZp-IBH8.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/18.CZp-IBH8.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/2.DaZm8LbH.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/2.DaZm8LbH.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.Bk3buFqf.js +0 -1
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.Bk3buFqf.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/3.Bk3buFqf.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/4.BWY-PEkr.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/4.BWY-PEkr.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/5.Cl70jzrZ.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/5.Cl70jzrZ.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/6.Cfkc99si.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/6.Cfkc99si.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/8.CmB3ZvKy.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/8.CmB3ZvKy.js.gz +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/9.8UAsXj0n.js.br +0 -0
- package/build/bosun-app/frontend/client/_app/immutable/nodes/9.8UAsXj0n.js.gz +0 -0
- package/build/bosun-app/frontend/server/chunks/chunks/schemas.js-b9Mui_5N.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/chunks/source-selection.js-BpCr9ar-.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/entries/endpoints/traces/api/proxy/_...path_/_server.ts.js-DDDiZFhL.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/latency/_page.svelte.js-DXMXSrkC.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_conversationId_/traces/_page.svelte.js-CZkbHRGl.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/entries/pages/traces/conversations/_layout.svelte.js-B4Yws-GS.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/nodes/0.js-BUVJh5Uv.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/0.js-BUVJh5Uv.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/nodes/1.js-BKMg62KW.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/10.js-Bz0enUzA.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/10.js-Bz0enUzA.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/nodes/17.js-CplX6Ruz.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/17.js-CplX6Ruz.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/nodes/18.js-cGVVSoEn.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/18.js-cGVVSoEn.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/nodes/2.js-CliMdUrH.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/2.js-CliMdUrH.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/nodes/3.js-BQpmmrUv.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/3.js-BQpmmrUv.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/nodes/4.js-BgSyMW3D.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/4.js-BgSyMW3D.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/nodes/5.js-CqRWSoO5.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/6.js-CrEQ411L.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/6.js-CrEQ411L.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/nodes/8.js-CiOj2-c5.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/8.js-CiOj2-c5.js.map +0 -1
- package/build/bosun-app/frontend/server/chunks/nodes/9.js-BMwqRSfy.js +0 -9
- package/build/bosun-app/frontend/server/chunks/nodes/9.js-BMwqRSfy.js.map +0 -1
- package/build/core/make-text-platform.d.ts +0 -17
- package/build/core/make-text-platform.d.ts.map +0 -1
- package/build/core/make-voice-platform.d.ts.map +0 -1
- package/build/voice-agent-api/call-end.d.ts +0 -19
- package/build/voice-agent-api/call-end.d.ts.map +0 -1
- package/build/voice-agent-api/call-end.js +0 -58
- /package/build/bosun-app/frontend/client/_app/immutable/assets/{Modal.iiWNRlR-.css → ReadOnlyMonacoDiff.iiWNRlR-.css} +0 -0
- /package/build/bosun-app/frontend/client/_app/immutable/assets/{Modal.iiWNRlR-.css.br → ReadOnlyMonacoDiff.iiWNRlR-.css.br} +0 -0
- /package/build/bosun-app/frontend/client/_app/immutable/assets/{Modal.iiWNRlR-.css.gz → ReadOnlyMonacoDiff.iiWNRlR-.css.gz} +0 -0
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { FastifyRequest } from 'fastify';
|
|
2
2
|
import { VoiceAgent } from '../agent';
|
|
3
|
-
import type { ConversationRepository } from '../analytics';
|
|
4
3
|
import type CallControl from '../call-control';
|
|
5
4
|
import type { NotificationRouter } from '../notifications';
|
|
6
5
|
import type { ITelescope } from '../telescope';
|
|
@@ -24,12 +23,11 @@ export interface VoiceHttpBindings<TMeta> {
|
|
|
24
23
|
phoneNumber?: string;
|
|
25
24
|
};
|
|
26
25
|
callControl: CallControl;
|
|
27
|
-
conversationRepository?: ConversationRepository;
|
|
28
26
|
notificationRouter?: NotificationRouter;
|
|
29
27
|
getExternalConversationId?: (headers: FastifyRequest['headers']) => string | undefined;
|
|
30
28
|
stickyCookieName?: string;
|
|
31
29
|
}
|
|
32
|
-
export declare function voiceHttpConnect<TMeta>({ getVoiceAgent, telescope, onStart, hostsToPrewarm, headersToMeta, getConversationMeta, callControl,
|
|
30
|
+
export declare function voiceHttpConnect<TMeta>({ getVoiceAgent, telescope, onStart, hostsToPrewarm, headersToMeta, getConversationMeta, callControl, notificationRouter, getExternalConversationId, stickyCookieName, }: VoiceHttpBindings<TMeta>): {
|
|
33
31
|
start: () => Promise<void>;
|
|
34
32
|
};
|
|
35
33
|
//# sourceMappingURL=voice-http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-http.d.ts","sourceRoot":"","sources":["../../src/voice-agent-api/voice-http.ts"],"names":[],"mappings":"AAGA,OAAgB,EAAgB,cAAc,EAAE,MAAM,SAAS,CAAA;AAG/D,OAAO,EAAY,UAAU,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"voice-http.d.ts","sourceRoot":"","sources":["../../src/voice-agent-api/voice-http.ts"],"names":[],"mappings":"AAGA,OAAgB,EAAgB,cAAc,EAAE,MAAM,SAAS,CAAA;AAG/D,OAAO,EAAY,UAAU,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,KAAK,WAAW,MAAM,iBAAiB,CAAA;AAE9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAyB,MAAM,cAAc,CAAA;AAOrE,OAAO,QAAQ,SAAS,CAAC;IACrB,UAAU,cAAc;QACpB,MAAM,EAAE,MAAM,CAAA;QACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC3B,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,CAAA;KACvB;CACJ;AAED,MAAM,WAAW,iBAAiB,CAAC,KAAK;IACpC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;IAChE,SAAS,EAAE,UAAU,CAAA;IAErB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,aAAa,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,KAAK,CAAA;IAE5D,mBAAmB,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK;QACzD,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,WAAW,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;IAED,WAAW,EAAE,WAAW,CAAA;IACxB,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;IAEtF,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,EACpC,aAAa,EACb,SAAS,EACT,OAAO,EACP,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,GACnB,EAAE,iBAAiB,CAAC,KAAK,CAAC;;EA8b1B"}
|
|
@@ -3,11 +3,10 @@ import { promisify } from 'node:util';
|
|
|
3
3
|
import Fastify from 'fastify';
|
|
4
4
|
import { loggerContext } from '../dockyard';
|
|
5
5
|
import { LATENCY_EVENT_SCHEMA, LATENCY_EVENT_TYPES } from '../telescope';
|
|
6
|
-
import { runVoiceCallEnd } from './call-end';
|
|
7
6
|
import { fail, isRecoverableError, mapFromOpenAiMessages } from './http-helpers';
|
|
8
7
|
import { llmCompletionHandler } from './llm-completion-handler';
|
|
9
8
|
import { logger } from './logger';
|
|
10
|
-
export function voiceHttpConnect({ getVoiceAgent, telescope, onStart, hostsToPrewarm, headersToMeta, getConversationMeta, callControl,
|
|
9
|
+
export function voiceHttpConnect({ getVoiceAgent, telescope, onStart, hostsToPrewarm, headersToMeta, getConversationMeta, callControl, notificationRouter, getExternalConversationId, stickyCookieName, }) {
|
|
11
10
|
const activeRequests = new Set();
|
|
12
11
|
let started = false;
|
|
13
12
|
const app = Fastify({
|
|
@@ -125,19 +124,8 @@ export function voiceHttpConnect({ getVoiceAgent, telescope, onStart, hostsToPre
|
|
|
125
124
|
}
|
|
126
125
|
notificationRouter?.unregister(req.callId);
|
|
127
126
|
await telescope.runObservation(async () => {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const { region, phoneNumber } = getConversationMeta(req.headers);
|
|
131
|
-
await runVoiceCallEnd({
|
|
132
|
-
agent,
|
|
133
|
-
call,
|
|
134
|
-
callDetails,
|
|
135
|
-
conversationRepository,
|
|
136
|
-
logger,
|
|
137
|
-
region,
|
|
138
|
-
phoneNumber: phoneNumber ?? req.phoneNumber,
|
|
139
|
-
saveTelescopeConversation: () => createTelescopeConversation(req, callDetails),
|
|
140
|
-
});
|
|
127
|
+
await agent.onCallEnd(reqToCallInfo(req));
|
|
128
|
+
await createTelescopeConversation(req);
|
|
141
129
|
res.status(200);
|
|
142
130
|
}, { conversationId: req.callId, agentId: agent.name });
|
|
143
131
|
});
|
|
@@ -292,33 +280,16 @@ export function voiceHttpConnect({ getVoiceAgent, telescope, onStart, hostsToPre
|
|
|
292
280
|
started = true;
|
|
293
281
|
await prewarmDNS();
|
|
294
282
|
}
|
|
295
|
-
const
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
const agent = agentForCall[req.callId];
|
|
300
|
-
if (agent && callHandledBy[req.callId] === req.agentName) {
|
|
301
|
-
return agent;
|
|
302
|
-
}
|
|
303
|
-
let loadingAgent = agentLoadingForCall[req.callId];
|
|
304
|
-
if (loadingAgent === undefined || callHandledBy[req.callId] !== req.agentName) {
|
|
283
|
+
const agents = new Map();
|
|
284
|
+
function getAgent(req) {
|
|
285
|
+
let agent = agents.get(req.agentName);
|
|
286
|
+
if (!agent) {
|
|
305
287
|
logger.debug('Loading agent', { agentName: req.agentName });
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
}
|
|
310
|
-
try {
|
|
311
|
-
const loadedAgent = await loadingAgent;
|
|
312
|
-
if (callHandledBy[req.callId] === req.agentName) {
|
|
313
|
-
agentForCall[req.callId] = loadedAgent;
|
|
314
|
-
}
|
|
315
|
-
return loadedAgent;
|
|
316
|
-
}
|
|
317
|
-
finally {
|
|
318
|
-
if (agentLoadingForCall[req.callId] === loadingAgent) {
|
|
319
|
-
delete agentLoadingForCall[req.callId];
|
|
320
|
-
}
|
|
288
|
+
agent = getVoiceAgent(req.agentName);
|
|
289
|
+
agents.set(req.agentName, agent);
|
|
290
|
+
agent.catch(() => agents.delete(req.agentName));
|
|
321
291
|
}
|
|
292
|
+
return agent;
|
|
322
293
|
}
|
|
323
294
|
async function prewarmDNS() {
|
|
324
295
|
const dnsLookup = promisify(dns.lookup);
|
|
@@ -332,7 +303,7 @@ export function voiceHttpConnect({ getVoiceAgent, telescope, onStart, hostsToPre
|
|
|
332
303
|
}
|
|
333
304
|
}
|
|
334
305
|
}
|
|
335
|
-
async function createTelescopeConversation(req
|
|
306
|
+
async function createTelescopeConversation(req) {
|
|
336
307
|
const conversationId = req.callId;
|
|
337
308
|
if (!conversationId) {
|
|
338
309
|
logger.error('No call ID provided, cannot create Telescope conversation');
|
|
@@ -343,29 +314,21 @@ export function voiceHttpConnect({ getVoiceAgent, telescope, onStart, hostsToPre
|
|
|
343
314
|
const conversation = {
|
|
344
315
|
conversationId,
|
|
345
316
|
medium: 'phone',
|
|
346
|
-
agentId:
|
|
317
|
+
agentId: req.agentName || undefined,
|
|
347
318
|
region,
|
|
348
319
|
phoneNumber: phoneNumber ?? req.phoneNumber,
|
|
349
320
|
createdAt: Date.now(),
|
|
350
321
|
};
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
: knownCallDetails;
|
|
354
|
-
if (callDetails) {
|
|
322
|
+
try {
|
|
323
|
+
const callDetails = await callControl.getCallDetails(conversationId);
|
|
355
324
|
conversation.duration = callDetails?.callDuration;
|
|
356
325
|
conversation.audioUrl = callDetails?.recording || undefined;
|
|
357
326
|
conversation.transcript = JSON.stringify(callDetails?.transcript);
|
|
358
327
|
}
|
|
359
|
-
await telescope.saveConversation(conversation);
|
|
360
|
-
}
|
|
361
|
-
async function getFinalCallDetails(conversationId) {
|
|
362
|
-
try {
|
|
363
|
-
return await callControl.getCallDetails(conversationId);
|
|
364
|
-
}
|
|
365
328
|
catch (err) {
|
|
366
329
|
logger.error('Failed to get call details', { conversationId, err });
|
|
367
|
-
return null;
|
|
368
330
|
}
|
|
331
|
+
await telescope.saveConversation(conversation);
|
|
369
332
|
}
|
|
370
333
|
function reqToCallInfo(req) {
|
|
371
334
|
return {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@recombine-ai/platform",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.6.0",
|
|
5
5
|
"description": "The Recombine platform: engine, telescope, dockyard, call control, the voice agent API, and the Bosun bindings in one package",
|
|
6
6
|
"license": "EULA",
|
|
7
7
|
"author": "recombine.ai",
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
"exports": {
|
|
25
25
|
".": "./build/index.js",
|
|
26
26
|
"./agent": "./build/agent/index.js",
|
|
27
|
-
"./analytics": "./build/analytics/index.js",
|
|
28
27
|
"./engine": "./build/engine/index.js",
|
|
29
28
|
"./telescope": "./build/telescope/index.js",
|
|
30
29
|
"./dockyard": "./build/dockyard/index.js",
|
|
@@ -43,7 +42,6 @@
|
|
|
43
42
|
"registry": "https://registry.npmjs.org"
|
|
44
43
|
},
|
|
45
44
|
"dependencies": {
|
|
46
|
-
"@types/pg": "8.15.5",
|
|
47
45
|
"dotenv": "17.4.2",
|
|
48
46
|
"esbuild": "0.27.3",
|
|
49
47
|
"fast-xml-parser": "5.7.3",
|
|
@@ -51,13 +49,11 @@
|
|
|
51
49
|
"livekit-server-sdk": "2.18.0",
|
|
52
50
|
"nunjucks": "3.2.4",
|
|
53
51
|
"openai": "6.8.1",
|
|
54
|
-
"pg": "8.23.0",
|
|
55
52
|
"pino": "10.3.1",
|
|
56
53
|
"promptfoo": "0.112.3",
|
|
57
54
|
"redis": "5.11.0",
|
|
58
55
|
"tsx": "4.21.0",
|
|
59
56
|
"undici": "7.26.0",
|
|
60
|
-
"yaml": "2.9.0",
|
|
61
57
|
"zod": "4.4.3"
|
|
62
58
|
},
|
|
63
59
|
"devDependencies": {
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { type AgentAnalytics, type AnalyticsStore } from '../analytics';
|
|
2
|
-
export type AgentPlatform<TPlatform extends {
|
|
3
|
-
analytics: AnalyticsStore;
|
|
4
|
-
}> = Omit<TPlatform, 'analytics'> & {
|
|
5
|
-
analytics: AgentAnalytics;
|
|
6
|
-
};
|
|
7
|
-
type BindAgentAnalytics = (store: AnalyticsStore, agentId: string) => AgentAnalytics;
|
|
8
|
-
export interface DeferredAgentAnalytics {
|
|
9
|
-
analytics: AgentAnalytics;
|
|
10
|
-
bind(agentId: string): void;
|
|
11
|
-
}
|
|
12
|
-
export declare function createDeferredAgentAnalytics(store: AnalyticsStore, bindAgent?: BindAgentAnalytics): DeferredAgentAnalytics;
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=agent-analytics.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-analytics.d.ts","sourceRoot":"","sources":["../../src/agent/agent-analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAsB,MAAM,cAAc,CAAA;AAE3F,MAAM,MAAM,aAAa,CAAC,SAAS,SAAS;IAAE,SAAS,EAAE,cAAc,CAAA;CAAE,IAAI,IAAI,CAC7E,SAAS,EACT,WAAW,CACd,GAAG;IACA,SAAS,EAAE,cAAc,CAAA;CAC5B,CAAA;AAED,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,KAAK,cAAc,CAAA;AAEpF,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,cAAc,CAAA;IACzB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED,wBAAgB,4BAA4B,CACxC,KAAK,EAAE,cAAc,EACrB,SAAS,GAAE,kBAAuC,GACnD,sBAAsB,CA6BxB"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { bindAgentAnalytics } from '../analytics';
|
|
2
|
-
export function createDeferredAgentAnalytics(store, bindAgent = bindAgentAnalytics) {
|
|
3
|
-
let boundAnalytics;
|
|
4
|
-
const getBoundAnalytics = () => {
|
|
5
|
-
if (!boundAnalytics) {
|
|
6
|
-
throw new Error('Cannot use conversation analytics while the agent is being created');
|
|
7
|
-
}
|
|
8
|
-
return boundAnalytics;
|
|
9
|
-
};
|
|
10
|
-
return {
|
|
11
|
-
analytics: {
|
|
12
|
-
set(conversationId, values) {
|
|
13
|
-
return getBoundAnalytics().set(conversationId, values);
|
|
14
|
-
},
|
|
15
|
-
clear(conversationId, fieldNames) {
|
|
16
|
-
return getBoundAnalytics().clear(conversationId, fieldNames);
|
|
17
|
-
},
|
|
18
|
-
get(conversationId, fieldName) {
|
|
19
|
-
return getBoundAnalytics().get(conversationId, fieldName);
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
bind(agentId) {
|
|
23
|
-
if (boundAnalytics) {
|
|
24
|
-
throw new Error('Conversation analytics is already bound to an agent');
|
|
25
|
-
}
|
|
26
|
-
boundAnalytics = bindAgent(store, agentId);
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
export type AnalyticsScalar = boolean | number | string;
|
|
2
|
-
export type AnalyticsFieldType = 'boolean' | 'number' | 'string';
|
|
3
|
-
export interface AnalyticsFieldDefinition {
|
|
4
|
-
readonly type: AnalyticsFieldType;
|
|
5
|
-
readonly values?: readonly string[];
|
|
6
|
-
}
|
|
7
|
-
export type AnalyticsFieldDefinitions = Readonly<Record<string, AnalyticsFieldDefinition>>;
|
|
8
|
-
export type AnalyticsConfiguration = Readonly<Record<string, AnalyticsFieldDefinitions>>;
|
|
9
|
-
export interface AnalyticsStore {
|
|
10
|
-
set(conversationId: string, agentId: string, values: Readonly<Record<string, AnalyticsScalar>>): Promise<void>;
|
|
11
|
-
clear(conversationId: string, agentId: string, fieldNames: readonly string[]): Promise<void>;
|
|
12
|
-
get(conversationId: string, agentId: string, fieldName: string): Promise<unknown>;
|
|
13
|
-
}
|
|
14
|
-
export interface ConversationRecord {
|
|
15
|
-
conversationId: string;
|
|
16
|
-
agentId: string;
|
|
17
|
-
channel: string;
|
|
18
|
-
region?: string;
|
|
19
|
-
startedAt: Date;
|
|
20
|
-
endedAt?: Date;
|
|
21
|
-
}
|
|
22
|
-
export interface PhoneCallRecord {
|
|
23
|
-
phoneNumber?: string;
|
|
24
|
-
recordingUrl?: string;
|
|
25
|
-
endedReason?: string;
|
|
26
|
-
durationSeconds?: number;
|
|
27
|
-
}
|
|
28
|
-
export interface ConversationRepository {
|
|
29
|
-
saveConversation(conversation: ConversationRecord, phoneCall?: PhoneCallRecord): Promise<{
|
|
30
|
-
changed: boolean;
|
|
31
|
-
created: boolean;
|
|
32
|
-
}>;
|
|
33
|
-
}
|
|
34
|
-
export interface AgentAnalytics {
|
|
35
|
-
set(conversationId: string, values: Record<string, AnalyticsScalar>): Promise<void>;
|
|
36
|
-
clear(conversationId: string, fieldNames: readonly string[]): Promise<void>;
|
|
37
|
-
get(conversationId: string, fieldName: string): Promise<AnalyticsScalar | undefined>;
|
|
38
|
-
}
|
|
39
|
-
export declare const analyticsConfigurationPath = "src/analytics.yaml";
|
|
40
|
-
export declare function bindAgentAnalytics(store: AnalyticsStore, agentId: string, projectRoot?: string): AgentAnalytics;
|
|
41
|
-
export declare function loadAnalyticsConfiguration(projectRoot?: string): AnalyticsConfiguration;
|
|
42
|
-
export declare function getAgentAnalyticsConfiguration(configuration: AnalyticsConfiguration, agentId: string): AnalyticsFieldDefinitions;
|
|
43
|
-
export declare function createAgentAnalytics(store: AnalyticsStore, agentId: string, fields: AnalyticsFieldDefinitions): AgentAnalytics;
|
|
44
|
-
export declare function createInMemoryAnalytics(seededConversations?: readonly {
|
|
45
|
-
conversationId: string;
|
|
46
|
-
agentId: string;
|
|
47
|
-
}[]): AnalyticsStore;
|
|
48
|
-
export declare function assertAnalyticsScalar(value: unknown): asserts value is AnalyticsScalar;
|
|
49
|
-
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/analytics/analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from 'node:fs';
|
|
2
|
-
import { resolve } from 'node:path';
|
|
3
|
-
import { parse as parseYaml } from 'yaml';
|
|
4
|
-
export const analyticsConfigurationPath = 'src/analytics.yaml';
|
|
5
|
-
export function bindAgentAnalytics(store, agentId, projectRoot = process.cwd()) {
|
|
6
|
-
if (agentId.trim() === '') {
|
|
7
|
-
throw new Error('Analytics agent ID must not be empty');
|
|
8
|
-
}
|
|
9
|
-
let analytics;
|
|
10
|
-
const getAnalytics = () => {
|
|
11
|
-
analytics ??= createAgentAnalytics(store, agentId, getAgentAnalyticsConfiguration(loadAnalyticsConfiguration(projectRoot), agentId));
|
|
12
|
-
return analytics;
|
|
13
|
-
};
|
|
14
|
-
return {
|
|
15
|
-
set(conversationId, values) {
|
|
16
|
-
return getAnalytics().set(conversationId, values);
|
|
17
|
-
},
|
|
18
|
-
clear(conversationId, fieldNames) {
|
|
19
|
-
return getAnalytics().clear(conversationId, fieldNames);
|
|
20
|
-
},
|
|
21
|
-
get(conversationId, fieldName) {
|
|
22
|
-
return getAnalytics().get(conversationId, fieldName);
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
export function loadAnalyticsConfiguration(projectRoot = process.cwd()) {
|
|
27
|
-
const filePath = resolve(projectRoot, analyticsConfigurationPath);
|
|
28
|
-
let source;
|
|
29
|
-
try {
|
|
30
|
-
source = readFileSync(filePath, 'utf8');
|
|
31
|
-
}
|
|
32
|
-
catch (cause) {
|
|
33
|
-
throw new Error(`Cannot read analytics configuration at '${filePath}': ${getErrorMessage(cause)}`, { cause });
|
|
34
|
-
}
|
|
35
|
-
try {
|
|
36
|
-
return parseAnalyticsConfiguration(parseYaml(source));
|
|
37
|
-
}
|
|
38
|
-
catch (cause) {
|
|
39
|
-
throw new Error(`Invalid analytics configuration at '${filePath}': ${getErrorMessage(cause)}`, { cause });
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export function getAgentAnalyticsConfiguration(configuration, agentId) {
|
|
43
|
-
if (agentId.trim() === '') {
|
|
44
|
-
throw new Error('Analytics agent ID must not be empty');
|
|
45
|
-
}
|
|
46
|
-
if (!Object.hasOwn(configuration, agentId)) {
|
|
47
|
-
throw new Error(`Analytics configuration does not contain agent '${agentId}'`);
|
|
48
|
-
}
|
|
49
|
-
const fields = configuration[agentId];
|
|
50
|
-
return fields;
|
|
51
|
-
}
|
|
52
|
-
export function createAgentAnalytics(store, agentId, fields) {
|
|
53
|
-
validateAgentAnalytics(agentId, fields);
|
|
54
|
-
const getDefinition = (fieldName) => {
|
|
55
|
-
if (!Object.hasOwn(fields, fieldName)) {
|
|
56
|
-
throw new Error(`Analytics field '${fieldName}' is not declared for agent '${agentId}'`);
|
|
57
|
-
}
|
|
58
|
-
const definition = fields[fieldName];
|
|
59
|
-
return definition;
|
|
60
|
-
};
|
|
61
|
-
const parseFieldValue = (fieldName, value) => {
|
|
62
|
-
try {
|
|
63
|
-
return parseAnalyticsValue(getDefinition(fieldName), value);
|
|
64
|
-
}
|
|
65
|
-
catch (cause) {
|
|
66
|
-
const message = cause instanceof Error ? cause.message : String(cause);
|
|
67
|
-
throw new Error(`Invalid analytics value for field '${fieldName}' on agent '${agentId}': ${message}`, { cause });
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
return {
|
|
71
|
-
async set(conversationId, values) {
|
|
72
|
-
if (!isRecord(values)) {
|
|
73
|
-
throw new Error('Analytics values must be an object');
|
|
74
|
-
}
|
|
75
|
-
const parsedValues = Object.fromEntries(Object.entries(values).map(([fieldName, value]) => [
|
|
76
|
-
fieldName,
|
|
77
|
-
parseFieldValue(fieldName, value),
|
|
78
|
-
]));
|
|
79
|
-
await store.set(conversationId, agentId, parsedValues);
|
|
80
|
-
},
|
|
81
|
-
async clear(conversationId, fieldNames) {
|
|
82
|
-
if (!Array.isArray(fieldNames)) {
|
|
83
|
-
throw new Error('Analytics field names must be an array');
|
|
84
|
-
}
|
|
85
|
-
for (const fieldName of fieldNames) {
|
|
86
|
-
if (typeof fieldName !== 'string') {
|
|
87
|
-
throw new Error('Analytics field name must be a string');
|
|
88
|
-
}
|
|
89
|
-
getDefinition(fieldName);
|
|
90
|
-
}
|
|
91
|
-
await store.clear(conversationId, agentId, fieldNames);
|
|
92
|
-
},
|
|
93
|
-
async get(conversationId, fieldName) {
|
|
94
|
-
getDefinition(fieldName);
|
|
95
|
-
const value = await store.get(conversationId, agentId, fieldName);
|
|
96
|
-
return value === undefined ? undefined : parseFieldValue(fieldName, value);
|
|
97
|
-
},
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
export function createInMemoryAnalytics(seededConversations = []) {
|
|
101
|
-
const conversations = new Map();
|
|
102
|
-
const conversationAgents = new Map(seededConversations.map(({ conversationId, agentId }) => [conversationId, agentId]));
|
|
103
|
-
return {
|
|
104
|
-
async set(conversationId, agentId, values) {
|
|
105
|
-
claimConversation(conversationAgents, conversationId, agentId);
|
|
106
|
-
const parsedValues = Object.entries(values).map(([fieldName, value]) => {
|
|
107
|
-
assertAnalyticsScalar(value);
|
|
108
|
-
return [fieldName, value];
|
|
109
|
-
});
|
|
110
|
-
const conversation = conversations.get(conversationId) ?? new Map();
|
|
111
|
-
for (const [fieldName, value] of parsedValues) {
|
|
112
|
-
conversation.set(fieldName, value);
|
|
113
|
-
}
|
|
114
|
-
conversations.set(conversationId, conversation);
|
|
115
|
-
},
|
|
116
|
-
async clear(conversationId, agentId, fieldNames) {
|
|
117
|
-
claimConversation(conversationAgents, conversationId, agentId);
|
|
118
|
-
const conversation = conversations.get(conversationId);
|
|
119
|
-
for (const fieldName of fieldNames) {
|
|
120
|
-
conversation?.delete(fieldName);
|
|
121
|
-
}
|
|
122
|
-
if (conversation?.size === 0) {
|
|
123
|
-
conversations.delete(conversationId);
|
|
124
|
-
}
|
|
125
|
-
},
|
|
126
|
-
async get(conversationId, agentId, fieldName) {
|
|
127
|
-
if (conversationAgents.get(conversationId) !== agentId) {
|
|
128
|
-
return undefined;
|
|
129
|
-
}
|
|
130
|
-
return conversations.get(conversationId)?.get(fieldName);
|
|
131
|
-
},
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
export function assertAnalyticsScalar(value) {
|
|
135
|
-
if (typeof value === 'boolean' ||
|
|
136
|
-
typeof value === 'string' ||
|
|
137
|
-
(typeof value === 'number' && Number.isFinite(value))) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
throw new Error('Analytics value must be a boolean, finite number, or string');
|
|
141
|
-
}
|
|
142
|
-
function parseAnalyticsConfiguration(value) {
|
|
143
|
-
if (!isRecord(value)) {
|
|
144
|
-
throw new Error('Analytics configuration must be an object');
|
|
145
|
-
}
|
|
146
|
-
return Object.freeze(Object.fromEntries(Object.entries(value).map(([agentId, fields]) => {
|
|
147
|
-
if (agentId.trim() === '') {
|
|
148
|
-
throw new Error('Analytics agent ID must not be empty');
|
|
149
|
-
}
|
|
150
|
-
if (!isRecord(fields)) {
|
|
151
|
-
throw new Error(`Analytics configuration for agent '${agentId}' must be an object`);
|
|
152
|
-
}
|
|
153
|
-
const definitions = Object.freeze(Object.fromEntries(Object.entries(fields).map(([fieldName, definition]) => [
|
|
154
|
-
fieldName,
|
|
155
|
-
parseFieldDefinition(agentId, fieldName, definition),
|
|
156
|
-
])));
|
|
157
|
-
validateAgentAnalytics(agentId, definitions);
|
|
158
|
-
return [agentId, definitions];
|
|
159
|
-
})));
|
|
160
|
-
}
|
|
161
|
-
function parseFieldDefinition(agentId, fieldName, value) {
|
|
162
|
-
if (!isRecord(value) || typeof value.type !== 'string') {
|
|
163
|
-
throw new Error(`Analytics field '${fieldName}' for agent '${agentId}' must declare a type`);
|
|
164
|
-
}
|
|
165
|
-
if (value.type === 'boolean' || value.type === 'number' || value.type === 'string') {
|
|
166
|
-
if (Object.keys(value).some((key) => key !== 'type')) {
|
|
167
|
-
throw new Error(`Analytics field '${fieldName}' for agent '${agentId}' has unknown options`);
|
|
168
|
-
}
|
|
169
|
-
return Object.freeze({ type: value.type });
|
|
170
|
-
}
|
|
171
|
-
if (value.type === 'enum') {
|
|
172
|
-
if (Object.keys(value).some((key) => key !== 'type' && key !== 'values')) {
|
|
173
|
-
throw new Error(`Analytics field '${fieldName}' for agent '${agentId}' has unknown options`);
|
|
174
|
-
}
|
|
175
|
-
if (!Array.isArray(value.values) ||
|
|
176
|
-
value.values.length === 0 ||
|
|
177
|
-
value.values.some((item) => typeof item !== 'string')) {
|
|
178
|
-
throw new Error(`Analytics enum field '${fieldName}' for agent '${agentId}' must contain string values`);
|
|
179
|
-
}
|
|
180
|
-
const values = value.values;
|
|
181
|
-
if (new Set(values).size !== values.length) {
|
|
182
|
-
throw new Error(`Analytics enum field '${fieldName}' for agent '${agentId}' contains duplicate values`);
|
|
183
|
-
}
|
|
184
|
-
return Object.freeze({ type: 'string', values: Object.freeze([...values]) });
|
|
185
|
-
}
|
|
186
|
-
throw new Error(`Analytics field '${fieldName}' for agent '${agentId}' has unsupported type '${value.type}'`);
|
|
187
|
-
}
|
|
188
|
-
function validateAgentAnalytics(agentId, fields) {
|
|
189
|
-
if (agentId.trim() === '') {
|
|
190
|
-
throw new Error('Analytics agent ID must not be empty');
|
|
191
|
-
}
|
|
192
|
-
for (const fieldName of Object.keys(fields)) {
|
|
193
|
-
if (!/^[A-Za-z0-9_.:-]{1,128}$/.test(fieldName)) {
|
|
194
|
-
throw new Error('Analytics field name contains unsupported characters');
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
function parseAnalyticsValue(definition, value) {
|
|
199
|
-
assertAnalyticsScalar(value);
|
|
200
|
-
if (typeof value !== definition.type) {
|
|
201
|
-
throw new Error(`Analytics value must be a ${definition.type}`);
|
|
202
|
-
}
|
|
203
|
-
if (definition.values && !definition.values.includes(value)) {
|
|
204
|
-
throw new Error('Analytics value is not in the configured enum');
|
|
205
|
-
}
|
|
206
|
-
return value;
|
|
207
|
-
}
|
|
208
|
-
function claimConversation(conversationAgents, conversationId, agentId) {
|
|
209
|
-
const existingAgentId = conversationAgents.get(conversationId);
|
|
210
|
-
if (existingAgentId === undefined) {
|
|
211
|
-
conversationAgents.set(conversationId, agentId);
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
if (existingAgentId !== agentId) {
|
|
215
|
-
throw new Error(`Conversation '${conversationId}' belongs to another agent`);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
function isRecord(value) {
|
|
219
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
220
|
-
}
|
|
221
|
-
function getErrorMessage(error) {
|
|
222
|
-
return error instanceof Error ? error.message : String(error);
|
|
223
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { analyticsConfigurationPath, assertAnalyticsScalar, bindAgentAnalytics, createAgentAnalytics, createInMemoryAnalytics, getAgentAnalyticsConfiguration, loadAnalyticsConfiguration, } from './analytics';
|
|
2
|
-
export type { AgentAnalytics, AnalyticsConfiguration, AnalyticsFieldDefinition, AnalyticsFieldDefinitions, AnalyticsFieldType, AnalyticsScalar, AnalyticsStore, ConversationRecord, ConversationRepository, PhoneCallRecord, } from './analytics';
|
|
3
|
-
export { PostgresAnalytics, PostgresConversationRepository, createPostgresAnalyticsServices, migrateAnalyticsDatabase, } from './postgres-analytics';
|
|
4
|
-
export type { PostgresAnalyticsServices } from './postgres-analytics';
|
|
5
|
-
export { AnalyticsFieldNotFoundError, AnalyticsQueryError, PostgresAnalyticsQueryService, createPostgresAnalyticsQueryServices, } from './postgres-analytics-query';
|
|
6
|
-
export type { AnalyticsFieldMetadata, AnalyticsFieldValue, AnalyticsFieldValues, AnalyticsFields, AnalyticsFilter, AnalyticsMetric, AnalyticsQueryParameters, AnalyticsTimeGranularity, AnalyticsTimeSeries, AnalyticsTimeSeriesItem, AnalyticsTimeSeriesRequest, PostgresAnalyticsQueryServices, TelescopeConversation, TelescopeConversationPage, } from './postgres-analytics-query';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,EAC9B,0BAA0B,GAC7B,MAAM,aAAa,CAAA;AACpB,YAAY,EACR,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,GAClB,MAAM,aAAa,CAAA;AACpB,OAAO,EACH,iBAAiB,EACjB,8BAA8B,EAC9B,+BAA+B,EAC/B,wBAAwB,GAC3B,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EACH,2BAA2B,EAC3B,mBAAmB,EACnB,6BAA6B,EAC7B,oCAAoC,GACvC,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACR,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,EAC1B,8BAA8B,EAC9B,qBAAqB,EACrB,yBAAyB,GAC5B,MAAM,4BAA4B,CAAA"}
|
package/build/analytics/index.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { analyticsConfigurationPath, assertAnalyticsScalar, bindAgentAnalytics, createAgentAnalytics, createInMemoryAnalytics, getAgentAnalyticsConfiguration, loadAnalyticsConfiguration, } from './analytics';
|
|
2
|
-
export { PostgresAnalytics, PostgresConversationRepository, createPostgresAnalyticsServices, migrateAnalyticsDatabase, } from './postgres-analytics';
|
|
3
|
-
export { AnalyticsFieldNotFoundError, AnalyticsQueryError, PostgresAnalyticsQueryService, createPostgresAnalyticsQueryServices, } from './postgres-analytics-query';
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { PoolConfig, QueryResult } from 'pg';
|
|
2
|
-
import { AnalyticsFieldType, AnalyticsScalar } from './analytics';
|
|
3
|
-
export type AnalyticsFilter = {
|
|
4
|
-
field: string;
|
|
5
|
-
operator: 'exists';
|
|
6
|
-
} | {
|
|
7
|
-
field: string;
|
|
8
|
-
operator: 'eq';
|
|
9
|
-
value: AnalyticsScalar;
|
|
10
|
-
} | {
|
|
11
|
-
field: string;
|
|
12
|
-
operator: 'in';
|
|
13
|
-
values: AnalyticsScalar[];
|
|
14
|
-
} | {
|
|
15
|
-
field: string;
|
|
16
|
-
operator: 'gt' | 'gte' | 'lt' | 'lte';
|
|
17
|
-
value: number;
|
|
18
|
-
};
|
|
19
|
-
export type AnalyticsMetric = {
|
|
20
|
-
operation: 'count';
|
|
21
|
-
} | {
|
|
22
|
-
operation: 'rate';
|
|
23
|
-
filter: AnalyticsFilter;
|
|
24
|
-
} | {
|
|
25
|
-
operation: 'average' | 'sum';
|
|
26
|
-
field: string;
|
|
27
|
-
};
|
|
28
|
-
export type AnalyticsTimeGranularity = 'hour' | 'day' | 'week' | 'month';
|
|
29
|
-
export type AnalyticsQueryParameters = Readonly<Record<string, unknown>>;
|
|
30
|
-
export interface AnalyticsTimeSeriesRequest {
|
|
31
|
-
agentId: string;
|
|
32
|
-
from: string | number;
|
|
33
|
-
to: string | number;
|
|
34
|
-
granularity: AnalyticsTimeGranularity;
|
|
35
|
-
metric: AnalyticsMetric;
|
|
36
|
-
filters?: AnalyticsFilter[];
|
|
37
|
-
region?: string;
|
|
38
|
-
channel?: string;
|
|
39
|
-
phoneNumber?: string;
|
|
40
|
-
minDurationSeconds?: number;
|
|
41
|
-
maxDurationSeconds?: number;
|
|
42
|
-
}
|
|
43
|
-
export interface TelescopeConversation {
|
|
44
|
-
conversationId: string;
|
|
45
|
-
medium: string;
|
|
46
|
-
agentId: string;
|
|
47
|
-
region?: string;
|
|
48
|
-
phoneNumber?: string;
|
|
49
|
-
duration?: number;
|
|
50
|
-
audioUrl?: string;
|
|
51
|
-
createdAt: number;
|
|
52
|
-
endedAt?: number;
|
|
53
|
-
analytics: Record<string, AnalyticsScalar>;
|
|
54
|
-
}
|
|
55
|
-
export interface TelescopeConversationPage {
|
|
56
|
-
limit: number;
|
|
57
|
-
items: TelescopeConversation[];
|
|
58
|
-
lastConversationId?: string;
|
|
59
|
-
}
|
|
60
|
-
export interface AnalyticsFieldValue {
|
|
61
|
-
value: AnalyticsScalar;
|
|
62
|
-
count: number;
|
|
63
|
-
}
|
|
64
|
-
export interface AnalyticsFieldMetadata {
|
|
65
|
-
field: string;
|
|
66
|
-
type: AnalyticsFieldType;
|
|
67
|
-
distinctValueCount: number;
|
|
68
|
-
}
|
|
69
|
-
export interface AnalyticsFields {
|
|
70
|
-
items: AnalyticsFieldMetadata[];
|
|
71
|
-
}
|
|
72
|
-
export interface AnalyticsFieldValues {
|
|
73
|
-
items: AnalyticsFieldValue[];
|
|
74
|
-
nextCursor: string | null;
|
|
75
|
-
}
|
|
76
|
-
export interface AnalyticsTimeSeriesItem {
|
|
77
|
-
startAt: string;
|
|
78
|
-
value: number | null;
|
|
79
|
-
numerator?: number;
|
|
80
|
-
denominator?: number;
|
|
81
|
-
}
|
|
82
|
-
export interface AnalyticsTimeSeries {
|
|
83
|
-
metric: AnalyticsMetric;
|
|
84
|
-
granularity: AnalyticsTimeGranularity;
|
|
85
|
-
from: string;
|
|
86
|
-
to: string;
|
|
87
|
-
items: AnalyticsTimeSeriesItem[];
|
|
88
|
-
}
|
|
89
|
-
interface Queryable {
|
|
90
|
-
query<TResult extends Record<string, unknown> = Record<string, unknown>>(text: string, values?: unknown[]): Promise<QueryResult<TResult>>;
|
|
91
|
-
}
|
|
92
|
-
export declare class AnalyticsQueryError extends Error {
|
|
93
|
-
name: string;
|
|
94
|
-
}
|
|
95
|
-
export declare class AnalyticsFieldNotFoundError extends Error {
|
|
96
|
-
readonly agentId: string;
|
|
97
|
-
readonly field: string;
|
|
98
|
-
name: string;
|
|
99
|
-
constructor(agentId: string, field: string);
|
|
100
|
-
}
|
|
101
|
-
export declare class PostgresAnalyticsQueryService {
|
|
102
|
-
private readonly database;
|
|
103
|
-
constructor(database: Queryable);
|
|
104
|
-
getConversation(conversationId: string): Promise<TelescopeConversation | undefined>;
|
|
105
|
-
getConversations(query: AnalyticsQueryParameters): Promise<TelescopeConversationPage>;
|
|
106
|
-
getAnalyticsFields(query: AnalyticsQueryParameters): Promise<AnalyticsFields>;
|
|
107
|
-
getAnalyticsFieldValues(field: string, query: AnalyticsQueryParameters): Promise<AnalyticsFieldValues>;
|
|
108
|
-
getTimeSeries(request: AnalyticsTimeSeriesRequest): Promise<AnalyticsTimeSeries>;
|
|
109
|
-
private assertNumericAnalyticsField;
|
|
110
|
-
}
|
|
111
|
-
export interface PostgresAnalyticsQueryServices {
|
|
112
|
-
queries: PostgresAnalyticsQueryService;
|
|
113
|
-
close(): Promise<void>;
|
|
114
|
-
}
|
|
115
|
-
export declare function createPostgresAnalyticsQueryServices(config: PoolConfig): PostgresAnalyticsQueryServices;
|
|
116
|
-
export {};
|
|
117
|
-
//# sourceMappingURL=postgres-analytics-query.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-analytics-query.d.ts","sourceRoot":"","sources":["../../src/analytics/postgres-analytics-query.ts"],"names":[],"mappings":"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"}
|