@dxos/plugin-assistant 0.8.3 → 0.8.4-main.f9ba587
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/dist/lib/browser/ChatContainer-6XNB5NEI.mjs +57 -0
- package/dist/lib/browser/ChatContainer-6XNB5NEI.mjs.map +7 -0
- package/dist/lib/browser/ChatDialog-IMWPRXTO.mjs +74 -0
- package/dist/lib/browser/ChatDialog-IMWPRXTO.mjs.map +7 -0
- package/dist/lib/browser/{BlueprintContainer-AT5Y7EXG.mjs → SequenceContainer-6XOYB2RN.mjs} +38 -37
- package/dist/lib/browser/SequenceContainer-6XOYB2RN.mjs.map +7 -0
- package/dist/lib/browser/{TemplateContainer-QQHVOTSI.mjs → TemplateContainer-6ZGGH5T4.mjs} +4 -4
- package/dist/lib/browser/TemplateContainer-6ZGGH5T4.mjs.map +7 -0
- package/dist/lib/browser/{ai-client-MK2ZZII2.mjs → ai-client-ML7OQWAO.mjs} +6 -6
- package/dist/lib/browser/ai-client-ML7OQWAO.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-E4H5DCOJ.mjs → app-graph-builder-UJ5NHRGK.mjs} +31 -33
- package/dist/lib/browser/app-graph-builder-UJ5NHRGK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-JQFUME3B.mjs → chunk-44HZKIAW.mjs} +5 -5
- package/dist/lib/browser/chunk-44HZKIAW.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XOZ7YMO3.mjs → chunk-LKP65RPA.mjs} +2 -2
- package/dist/lib/browser/chunk-NTBGTFTV.mjs +15 -0
- package/dist/lib/browser/chunk-NTBGTFTV.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BI6AHRNJ.mjs → chunk-OZL4OHTU.mjs} +15 -15
- package/dist/lib/browser/chunk-OZL4OHTU.mjs.map +7 -0
- package/dist/lib/browser/chunk-TQ3QW3HJ.mjs +2072 -0
- package/dist/lib/browser/chunk-TQ3QW3HJ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-AAOKC2JN.mjs → chunk-TU7UUGWQ.mjs} +68 -73
- package/dist/lib/browser/chunk-TU7UUGWQ.mjs.map +7 -0
- package/dist/lib/browser/chunk-WPZ4UANI.mjs +16 -0
- package/dist/lib/browser/index.mjs +53 -68
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-3UICTGPM.mjs → intent-resolver-LEAPB55Q.mjs} +10 -11
- package/dist/lib/browser/intent-resolver-LEAPB55Q.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-LXCNUSZN.mjs → react-surface-TMF7JJA4.mjs} +34 -37
- package/dist/lib/browser/react-surface-TMF7JJA4.mjs.map +7 -0
- package/dist/lib/browser/{settings-XRHXVWGB.mjs → settings-N4HEXADL.mjs} +6 -6
- package/dist/lib/browser/settings-N4HEXADL.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +4 -10
- package/dist/lib/node-esm/ChatContainer-VOLG7J6N.mjs +58 -0
- package/dist/lib/node-esm/ChatContainer-VOLG7J6N.mjs.map +7 -0
- package/dist/lib/node-esm/ChatDialog-B2XNUNRM.mjs +75 -0
- package/dist/lib/node-esm/ChatDialog-B2XNUNRM.mjs.map +7 -0
- package/dist/lib/node-esm/{BlueprintContainer-STOJAVML.mjs → SequenceContainer-WWG6IMN3.mjs} +38 -37
- package/dist/lib/node-esm/SequenceContainer-WWG6IMN3.mjs.map +7 -0
- package/dist/lib/node-esm/{TemplateContainer-SOEWY2ZN.mjs → TemplateContainer-6KRNEMVE.mjs} +4 -4
- package/dist/lib/node-esm/TemplateContainer-6KRNEMVE.mjs.map +7 -0
- package/dist/lib/node-esm/{ai-client-XGZBJ6BE.mjs → ai-client-2FQ434CT.mjs} +6 -6
- package/dist/lib/node-esm/ai-client-2FQ434CT.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-3SY5MBIK.mjs → app-graph-builder-MEQ5CYNI.mjs} +31 -33
- package/dist/lib/node-esm/app-graph-builder-MEQ5CYNI.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-D3HTVK5D.mjs +2073 -0
- package/dist/lib/node-esm/chunk-D3HTVK5D.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-3UEZLJ2V.mjs → chunk-E6V2RUQ2.mjs} +5 -5
- package/dist/lib/node-esm/chunk-E6V2RUQ2.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-UCOFKNKN.mjs → chunk-HVMVHP4R.mjs} +15 -15
- package/dist/lib/node-esm/chunk-HVMVHP4R.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HXKRKIN2.mjs +18 -0
- package/dist/lib/node-esm/{chunk-BB2TAT4P.mjs → chunk-KOC6ESG7.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-OYN6HLXZ.mjs → chunk-VESVUAOS.mjs} +5 -5
- package/dist/lib/node-esm/chunk-VESVUAOS.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-J6UXXZGJ.mjs → chunk-YYUVTTVK.mjs} +68 -73
- package/dist/lib/node-esm/chunk-YYUVTTVK.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +53 -68
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-E6MXTYAU.mjs → intent-resolver-4ULF3F7U.mjs} +10 -11
- package/dist/lib/node-esm/intent-resolver-4ULF3F7U.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-7HA5EDWY.mjs → react-surface-6XL6SWL2.mjs} +34 -37
- package/dist/lib/node-esm/react-surface-6XL6SWL2.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-5IAY6BT4.mjs → settings-WQ76EG6O.mjs} +6 -6
- package/dist/lib/node-esm/settings-WQ76EG6O.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +4 -10
- package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +2 -2
- package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
- package/dist/types/src/components/Chat/Chat.d.ts +42 -0
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -0
- package/dist/types/src/components/Chat/index.d.ts +2 -0
- package/dist/types/src/components/Chat/index.d.ts.map +1 -0
- package/dist/types/src/components/ChatContainer.d.ts +5 -5
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/ChatDialog.d.ts +8 -0
- package/dist/types/src/components/ChatDialog.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +10 -0
- package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +9 -0
- package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +11 -0
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +7 -0
- package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/events.d.ts +17 -0
- package/dist/types/src/components/ChatPrompt/events.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/index.d.ts +6 -0
- package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -0
- package/dist/types/src/components/{Thread/ThreadMessage.d.ts → ChatThread/ChatMessage.d.ts} +6 -4
- package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/ChatThread.d.ts +25 -0
- package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +232 -0
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/ToolBlock.d.ts +18 -0
- package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/index.d.ts +2 -0
- package/dist/types/src/components/ChatThread/index.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/reducer.d.ts.map +1 -0
- package/dist/types/src/components/SequenceContainer.d.ts +9 -0
- package/dist/types/src/components/SequenceContainer.d.ts.map +1 -0
- package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +13 -0
- package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -0
- package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +8 -0
- package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -0
- package/dist/types/src/components/SequenceEditor/index.d.ts +2 -0
- package/dist/types/src/components/SequenceEditor/index.d.ts.map +1 -0
- package/dist/types/src/components/TemplateContainer.d.ts +4 -3
- package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.d.ts +10 -3
- package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +6 -12
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/hooks/{processor.d.ts → chat-processor.d.ts} +27 -17
- package/dist/types/src/hooks/chat-processor.d.ts.map +1 -0
- package/dist/types/src/hooks/chat-processor.test.d.ts +2 -0
- package/dist/types/src/hooks/chat-processor.test.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +4 -4
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useBlueprints.d.ts +4 -0
- package/dist/types/src/hooks/useBlueprints.d.ts.map +1 -0
- package/dist/types/src/hooks/useChatProcessor.d.ts +20 -6
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
- package/dist/types/src/hooks/useContextProvider.d.ts +6 -0
- package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
- package/dist/types/src/hooks/useServiceContainer.d.ts +8 -0
- package/dist/types/src/hooks/useServiceContainer.d.ts.map +1 -0
- package/dist/types/src/queue-logger.d.ts +5 -5
- package/dist/types/src/queue-logger.d.ts.map +1 -1
- package/dist/types/src/stories/Chat.stories.d.ts +199 -0
- package/dist/types/src/stories/Chat.stories.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +1 -1
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-sequence.d.ts +8 -0
- package/dist/types/src/testing/test-sequence.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +61 -113
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +1 -2
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +71 -0
- package/dist/types/src/types/schema.d.ts.map +1 -0
- package/dist/types/src/types/service.d.ts +6 -6
- package/dist/types/src/types/service.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +76 -74
- package/src/AssistantPlugin.tsx +13 -13
- package/src/capabilities/ai-client.ts +3 -6
- package/src/capabilities/app-graph-builder.ts +30 -26
- package/src/capabilities/capabilities.ts +2 -3
- package/src/capabilities/intent-resolver.ts +6 -6
- package/src/capabilities/react-surface.tsx +29 -29
- package/src/capabilities/settings.ts +3 -3
- package/src/components/AssistantSettings/AssistantSettings.tsx +4 -4
- package/src/components/Chat/Chat.tsx +348 -0
- package/src/{experimental/transcription → components/Chat}/index.ts +2 -0
- package/src/components/ChatContainer.tsx +24 -18
- package/src/components/ChatDialog.tsx +65 -0
- package/src/components/ChatPrompt/ChatActions.tsx +76 -0
- package/src/components/ChatPrompt/ChatOptionsMenu.tsx +52 -0
- package/src/components/ChatPrompt/ChatReferences.tsx +52 -0
- package/src/components/ChatPrompt/ChatStatusIndicator.tsx +26 -0
- package/src/components/ChatPrompt/events.ts +12 -0
- package/src/components/ChatPrompt/index.ts +10 -0
- package/src/components/{Thread/ThreadMessage.tsx → ChatThread/ChatMessage.tsx} +35 -31
- package/src/components/ChatThread/ChatThread.stories.tsx +148 -0
- package/src/components/ChatThread/ChatThread.tsx +68 -0
- package/src/components/{Thread/ToolInvocations.tsx → ChatThread/ToolBlock.tsx} +13 -8
- package/src/components/{AmbientDialog → ChatThread}/index.ts +1 -1
- package/src/components/PromptSettings.tsx +2 -2
- package/src/components/{BlueprintContainer.tsx → SequenceContainer.tsx} +23 -32
- package/src/components/SequenceEditor/SequenceEditor.stories.tsx +32 -0
- package/src/components/{BlueprintEditor/BlueprintEditor.tsx → SequenceEditor/SequenceEditor.tsx} +7 -7
- package/src/components/SequenceEditor/index.ts +5 -0
- package/src/components/TemplateContainer.tsx +7 -5
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +2 -2
- package/src/components/TemplateEditor/TemplateEditor.tsx +2 -2
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -2
- package/src/components/TemplateEditor/TemplateForm.tsx +2 -3
- package/src/components/Toolbox/Toolbox.stories.tsx +4 -5
- package/src/components/Toolbox/Toolbox.tsx +56 -3
- package/src/components/index.ts +4 -5
- package/src/events.ts +2 -2
- package/src/hooks/{processor.test.ts → chat-processor.test.ts} +1 -1
- package/src/hooks/{processor.ts → chat-processor.ts} +115 -72
- package/src/hooks/index.ts +4 -4
- package/src/hooks/useBlueprints.ts +31 -0
- package/src/hooks/useChatProcessor.tsx +69 -24
- package/src/hooks/useContextProvider.ts +8 -2
- package/src/hooks/useServiceContainer.ts +42 -0
- package/src/queue-logger.ts +6 -6
- package/src/stories/Chat.stories.tsx +269 -0
- package/src/testing/index.ts +1 -1
- package/src/testing/{test-blueprint.ts → test-sequence.ts} +4 -9
- package/src/tools/openapi.test.ts +11 -11
- package/src/translations.ts +24 -22
- package/src/types/index.ts +1 -2
- package/src/types/schema.ts +86 -0
- package/dist/lib/browser/AssistantDialog-MQOOR364.mjs +0 -47
- package/dist/lib/browser/AssistantDialog-MQOOR364.mjs.map +0 -7
- package/dist/lib/browser/BlueprintContainer-AT5Y7EXG.mjs.map +0 -7
- package/dist/lib/browser/ChatContainer-C2NEAS3A.mjs +0 -40
- package/dist/lib/browser/ChatContainer-C2NEAS3A.mjs.map +0 -7
- package/dist/lib/browser/TemplateContainer-QQHVOTSI.mjs.map +0 -7
- package/dist/lib/browser/ai-client-MK2ZZII2.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-E4H5DCOJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-AAOKC2JN.mjs.map +0 -7
- package/dist/lib/browser/chunk-BI6AHRNJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-JO4W3MF7.mjs +0 -2101
- package/dist/lib/browser/chunk-JO4W3MF7.mjs.map +0 -7
- package/dist/lib/browser/chunk-JQFUME3B.mjs.map +0 -7
- package/dist/lib/browser/chunk-MEGMOFJB.mjs +0 -16
- package/dist/lib/browser/chunk-Q6UZ4F3H.mjs +0 -96
- package/dist/lib/browser/chunk-Q6UZ4F3H.mjs.map +0 -7
- package/dist/lib/browser/chunk-UE3IZ4PN.mjs +0 -15
- package/dist/lib/browser/chunk-UE3IZ4PN.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-3UICTGPM.mjs.map +0 -7
- package/dist/lib/browser/react-surface-LXCNUSZN.mjs.map +0 -7
- package/dist/lib/browser/settings-XRHXVWGB.mjs.map +0 -7
- package/dist/lib/node/AssistantDialog-AN4Z6YUV.cjs +0 -73
- package/dist/lib/node/AssistantDialog-AN4Z6YUV.cjs.map +0 -7
- package/dist/lib/node/BlueprintContainer-NOWLDYCZ.cjs +0 -344
- package/dist/lib/node/BlueprintContainer-NOWLDYCZ.cjs.map +0 -7
- package/dist/lib/node/ChatContainer-VKYBQHUB.cjs +0 -68
- package/dist/lib/node/ChatContainer-VKYBQHUB.cjs.map +0 -7
- package/dist/lib/node/TemplateContainer-JZF2DCCG.cjs +0 -58
- package/dist/lib/node/TemplateContainer-JZF2DCCG.cjs.map +0 -7
- package/dist/lib/node/ai-client-7HNSMUMT.cjs +0 -53
- package/dist/lib/node/ai-client-7HNSMUMT.cjs.map +0 -7
- package/dist/lib/node/app-graph-builder-PPR5B5KU.cjs +0 -235
- package/dist/lib/node/app-graph-builder-PPR5B5KU.cjs.map +0 -7
- package/dist/lib/node/chunk-4EEWTDQK.cjs +0 -117
- package/dist/lib/node/chunk-4EEWTDQK.cjs.map +0 -7
- package/dist/lib/node/chunk-FUAGEO7Q.cjs +0 -52
- package/dist/lib/node/chunk-FUAGEO7Q.cjs.map +0 -7
- package/dist/lib/node/chunk-HRNIUYVQ.cjs +0 -128
- package/dist/lib/node/chunk-HRNIUYVQ.cjs.map +0 -7
- package/dist/lib/node/chunk-IKZBMHSW.cjs +0 -184
- package/dist/lib/node/chunk-IKZBMHSW.cjs.map +0 -7
- package/dist/lib/node/chunk-LMDJEGZ2.cjs +0 -233
- package/dist/lib/node/chunk-LMDJEGZ2.cjs.map +0 -7
- package/dist/lib/node/chunk-NIDICM57.cjs +0 -2080
- package/dist/lib/node/chunk-NIDICM57.cjs.map +0 -7
- package/dist/lib/node/chunk-P74TWGMG.cjs +0 -44
- package/dist/lib/node/chunk-P74TWGMG.cjs.map +0 -7
- package/dist/lib/node/chunk-QGPWY6GW.cjs +0 -34
- package/dist/lib/node/chunk-QGPWY6GW.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -289
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-QSWGTKON.cjs +0 -58
- package/dist/lib/node/intent-resolver-QSWGTKON.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/react-surface-D3NBYRZ6.cjs +0 -172
- package/dist/lib/node/react-surface-D3NBYRZ6.cjs.map +0 -7
- package/dist/lib/node/settings-2JXLKYGE.cjs +0 -36
- package/dist/lib/node/settings-2JXLKYGE.cjs.map +0 -7
- package/dist/lib/node/types/index.cjs +0 -54
- package/dist/lib/node/types/index.cjs.map +0 -7
- package/dist/lib/node-esm/AssistantDialog-6WEMLUPU.mjs +0 -48
- package/dist/lib/node-esm/AssistantDialog-6WEMLUPU.mjs.map +0 -7
- package/dist/lib/node-esm/BlueprintContainer-STOJAVML.mjs.map +0 -7
- package/dist/lib/node-esm/ChatContainer-3MVBTUJN.mjs +0 -41
- package/dist/lib/node-esm/ChatContainer-3MVBTUJN.mjs.map +0 -7
- package/dist/lib/node-esm/TemplateContainer-SOEWY2ZN.mjs.map +0 -7
- package/dist/lib/node-esm/ai-client-XGZBJ6BE.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-3SY5MBIK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-34EX6E5Q.mjs +0 -18
- package/dist/lib/node-esm/chunk-3UEZLJ2V.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CDAILLCU.mjs +0 -98
- package/dist/lib/node-esm/chunk-CDAILLCU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-J6UXXZGJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OD574YIU.mjs +0 -2102
- package/dist/lib/node-esm/chunk-OD574YIU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OYN6HLXZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UCOFKNKN.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-E6MXTYAU.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-7HA5EDWY.mjs.map +0 -7
- package/dist/lib/node-esm/settings-5IAY6BT4.mjs.map +0 -7
- package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +0 -10
- package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +0 -1
- package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts +0 -8
- package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts.map +0 -1
- package/dist/types/src/components/AmbientDialog/index.d.ts +0 -2
- package/dist/types/src/components/AmbientDialog/index.d.ts.map +0 -1
- package/dist/types/src/components/AssistantDialog.d.ts +0 -7
- package/dist/types/src/components/AssistantDialog.d.ts.map +0 -1
- package/dist/types/src/components/BlueprintContainer.d.ts +0 -9
- package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
- package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts +0 -13
- package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts.map +0 -1
- package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts +0 -8
- package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts.map +0 -1
- package/dist/types/src/components/BlueprintEditor/index.d.ts +0 -2
- package/dist/types/src/components/BlueprintEditor/index.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/Prompt.d.ts +0 -23
- package/dist/types/src/components/Prompt/Prompt.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/Prompt.stories.d.ts +0 -13
- package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/PromptBar.d.ts +0 -16
- package/dist/types/src/components/Prompt/PromptBar.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/PromptBar.stories.d.ts +0 -9
- package/dist/types/src/components/Prompt/PromptBar.stories.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/autocomplete.d.ts +0 -25
- package/dist/types/src/components/Prompt/autocomplete.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/index.d.ts +0 -3
- package/dist/types/src/components/Prompt/index.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/references.d.ts +0 -30
- package/dist/types/src/components/Prompt/references.d.ts.map +0 -1
- package/dist/types/src/components/Thread/Thread.d.ts +0 -28
- package/dist/types/src/components/Thread/Thread.d.ts.map +0 -1
- package/dist/types/src/components/Thread/Thread.stories.d.ts +0 -11
- package/dist/types/src/components/Thread/Thread.stories.d.ts.map +0 -1
- package/dist/types/src/components/Thread/ThreadContainer.d.ts +0 -13
- package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +0 -1
- package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +0 -16
- package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +0 -1
- package/dist/types/src/components/Thread/ToolInvocations.d.ts +0 -13
- package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +0 -1
- package/dist/types/src/components/Thread/index.d.ts +0 -3
- package/dist/types/src/components/Thread/index.d.ts.map +0 -1
- package/dist/types/src/components/Thread/reducer.d.ts.map +0 -1
- package/dist/types/src/experimental/transcription/index.d.ts +0 -1
- package/dist/types/src/experimental/transcription/index.d.ts.map +0 -1
- package/dist/types/src/hooks/processor.d.ts.map +0 -1
- package/dist/types/src/hooks/processor.test.d.ts +0 -2
- package/dist/types/src/hooks/processor.test.d.ts.map +0 -1
- package/dist/types/src/hooks/useMessageQueue.d.ts +0 -42
- package/dist/types/src/hooks/useMessageQueue.d.ts.map +0 -1
- package/dist/types/src/hooks/useServices.d.ts +0 -7
- package/dist/types/src/hooks/useServices.d.ts.map +0 -1
- package/dist/types/src/stories/Prompt.stories.d.ts +0 -8
- package/dist/types/src/stories/Prompt.stories.d.ts.map +0 -1
- package/dist/types/src/stories/Query.stories.d.ts +0 -19
- package/dist/types/src/stories/Query.stories.d.ts.map +0 -1
- package/dist/types/src/stories/Research.stories.d.ts +0 -15
- package/dist/types/src/stories/Research.stories.d.ts.map +0 -1
- package/dist/types/src/stories/test-data.d.ts +0 -3
- package/dist/types/src/stories/test-data.d.ts.map +0 -1
- package/dist/types/src/stories/testing.d.ts +0 -12
- package/dist/types/src/stories/testing.d.ts.map +0 -1
- package/dist/types/src/testing/test-blueprint.d.ts +0 -8
- package/dist/types/src/testing/test-blueprint.d.ts.map +0 -1
- package/dist/types/src/types/chat.d.ts +0 -23
- package/dist/types/src/types/chat.d.ts.map +0 -1
- package/dist/types/src/types/types.d.ts +0 -50
- package/dist/types/src/types/types.d.ts.map +0 -1
- package/src/components/AmbientDialog/AmbientDialog.stories.tsx +0 -84
- package/src/components/AmbientDialog/AmbientDialog.tsx +0 -117
- package/src/components/AssistantDialog.tsx +0 -37
- package/src/components/BlueprintEditor/BlueprintEditor.stories.tsx +0 -32
- package/src/components/BlueprintEditor/index.ts +0 -5
- package/src/components/Prompt/Prompt.stories.tsx +0 -121
- package/src/components/Prompt/Prompt.tsx +0 -124
- package/src/components/Prompt/PromptBar.stories.tsx +0 -69
- package/src/components/Prompt/PromptBar.tsx +0 -105
- package/src/components/Prompt/autocomplete.ts +0 -218
- package/src/components/Prompt/index.ts +0 -6
- package/src/components/Prompt/references.ts +0 -180
- package/src/components/Thread/Thread.stories.tsx +0 -201
- package/src/components/Thread/Thread.tsx +0 -118
- package/src/components/Thread/ThreadContainer.stories.tsx +0 -283
- package/src/components/Thread/ThreadContainer.tsx +0 -105
- package/src/components/Thread/index.ts +0 -6
- package/src/hooks/useMessageQueue.ts +0 -22
- package/src/hooks/useServices.ts +0 -28
- package/src/stories/Prompt.stories.tsx +0 -60
- package/src/stories/Query.stories.tsx +0 -514
- package/src/stories/Research.stories.tsx +0 -482
- package/src/stories/test-data.ts +0 -128
- package/src/stories/testing.ts +0 -60
- package/src/types/chat.ts +0 -32
- package/src/types/types.ts +0 -48
- /package/dist/lib/browser/{chunk-XOZ7YMO3.mjs.map → chunk-LKP65RPA.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-MEGMOFJB.mjs.map → chunk-WPZ4UANI.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-34EX6E5Q.mjs.map → chunk-HXKRKIN2.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-BB2TAT4P.mjs.map → chunk-KOC6ESG7.mjs.map} +0 -0
- /package/dist/types/src/components/{Thread → ChatThread}/reducer.d.ts +0 -0
- /package/src/components/{Thread → ChatThread}/reducer.ts +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/hooks/useChatProcessor.tsx", "../../../src/hooks/chat-processor.ts", "../../../src/hooks/useBlueprints.ts", "../../../src/hooks/useContextProvider.ts", "../../../src/hooks/useServiceContainer.ts", "../../../src/hooks/useTextInputEvents.ts", "../../../src/tools/function.ts", "../../../src/tools/openapi.ts", "../../../src/components/Toolbox/Toolbox.tsx", "../../../src/components/Chat/Chat.tsx", "../../../src/components/ChatPrompt/ChatActions.tsx", "../../../src/components/ChatPrompt/ChatOptionsMenu.tsx", "../../../src/components/ChatPrompt/ChatReferences.tsx", "../../../src/components/ChatPrompt/ChatStatusIndicator.tsx", "../../../src/components/ChatThread/ChatThread.tsx", "../../../src/components/ChatThread/ChatMessage.tsx", "../../../src/components/ChatThread/ToolBlock.tsx", "../../../src/components/ChatThread/reducer.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { DEFAULT_EDGE_MODEL, DEFAULT_OLLAMA_MODEL, type ExecutableTool } from '@dxos/ai';\nimport { Capabilities, useCapabilities, useIntentDispatcher } from '@dxos/app-framework';\nimport { type ArtifactDefinition, type AssociatedArtifact, createSystemPrompt } from '@dxos/artifact';\nimport { type BlueprintRegistry, Conversation } from '@dxos/assistant';\nimport { FunctionType, type ServiceContainer } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { useConfig } from '@dxos/react-client';\nimport { Filter, fullyQualifiedId, type Queue, type Space, useQuery } from '@dxos/react-client/echo';\nimport { isNonNullable } from '@dxos/util';\n\nimport { ChatProcessor, type ChatProcessorOptions } from '../hooks';\nimport { convertFunctionToTool, createToolsFromService } from '../tools';\nimport { type Assistant, ServiceType } from '../types';\n\ntype UseChatProcessorProps = {\n /** @deprecated Why is this required? */\n part?: 'deck' | 'dialog';\n space?: Space;\n chat?: Assistant.Chat;\n // TODO(burdon): Reconcile all of below (overlapping concepts). Figure out how to inject vie effect layers.\n serviceContainer: ServiceContainer;\n blueprintRegistry?: BlueprintRegistry;\n settings?: Assistant.Settings;\n /** @deprecated */\n instructions?: string;\n /** @deprecated */\n artifact?: AssociatedArtifact;\n /** @deprecated */\n noPluginArtifacts?: boolean;\n};\n\n/**\n * Configure and create ChatProcessor.\n */\nexport const useChatProcessor = ({\n part = 'deck',\n space,\n chat,\n serviceContainer,\n blueprintRegistry,\n settings,\n instructions,\n artifact,\n noPluginArtifacts,\n}: UseChatProcessorProps): ChatProcessor | undefined => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const globalTools = useCapabilities(Capabilities.Tools);\n\n // TODO(burdon): Spec artifacts.\n let artifacts: readonly ArtifactDefinition[] = useCapabilities(Capabilities.ArtifactDefinition);\n if (noPluginArtifacts) {\n artifacts = Stable.array;\n }\n\n // Services.\n const services = useQuery(space, Filter.type(ServiceType));\n const [serviceTools, setServiceTools] = useState<ExecutableTool[]>([]);\n useEffect(() => {\n log('creating service tools...');\n queueMicrotask(async () => {\n const tools = await Promise.all(services.map((service) => createToolsFromService(service)));\n setServiceTools(tools.flat());\n });\n }, [services]);\n\n // Tools and context.\n const config = useConfig();\n const functions = useQuery(space, Filter.type(FunctionType));\n const chatId = useMemo(() => (chat ? fullyQualifiedId(chat) : undefined), [chat]);\n const [tools, extensions] = useMemo(() => {\n log('creating tools...');\n const tools: ExecutableTool[] = [\n ...globalTools.flat(),\n ...serviceTools,\n ...functions\n .map((fn) => convertFunctionToTool(fn, config.values.runtime?.services?.edge?.url ?? '', space?.id))\n .filter(isNonNullable),\n ];\n const extensions = { part, space, dispatch, pivotId: chatId };\n return [tools, extensions];\n }, [dispatch, globalTools, space, chatId, serviceTools, functions]);\n\n // Prompt.\n const systemPrompt = useMemo(\n () =>\n createSystemPrompt({\n artifacts: artifacts.map((definition) => `${definition.name}\\n${definition.instructions}`),\n artifact,\n instructions,\n }),\n [artifacts, artifact, instructions],\n );\n\n // TODO(burdon): Remove default (let backend decide if not specified).\n const model: ChatProcessorOptions['model'] =\n settings?.llmProvider === 'ollama'\n ? ((settings?.ollamaModel ?? DEFAULT_OLLAMA_MODEL) as ChatProcessorOptions['model'])\n : ((settings?.edgeModel ?? DEFAULT_EDGE_MODEL) as ChatProcessorOptions['model']);\n\n const conversation = useMemo(() => {\n if (!chat?.queue.target) {\n return;\n }\n\n return new Conversation({\n serviceContainer,\n queue: chat.queue.target as Queue<any>,\n });\n }, [chat?.queue.target, serviceContainer]);\n\n // Create processor.\n // TODO(burdon): Updated on each query update above; should just update current processor.\n const processor = useMemo(() => {\n if (!conversation) {\n return undefined;\n }\n\n log('creating processor...', { settings });\n return new ChatProcessor(conversation, {\n tools,\n extensions,\n blueprintRegistry,\n artifacts,\n systemPrompt,\n model,\n });\n }, [conversation, tools, blueprintRegistry, artifacts, extensions, systemPrompt, model]);\n\n return processor;\n};\n\n// TODO(dmaretskyi): Extract.\nexport const Stable = Object.freeze({\n array: [] as readonly never[],\n object: {} as {},\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Signal, batch, computed, signal } from '@preact/signals-core';\n\nimport {\n DEFAULT_EDGE_MODEL,\n type ExecutableTool,\n type GenerateRequest,\n type Message,\n type MessageContentBlock,\n type ToolUseContentBlock,\n} from '@dxos/ai';\nimport { type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { type ArtifactDefinition } from '@dxos/artifact';\nimport {\n type AISession,\n type ArtifactDiffResolver,\n type BlueprintRegistry,\n type ContextBinder,\n type Conversation,\n} from '@dxos/assistant';\nimport { Context } from '@dxos/context';\nimport { log } from '@dxos/log';\nimport { Filter, type Space, getVersion } from '@dxos/react-client/echo';\n\n// TODO(burdon): Factor out.\ndeclare global {\n interface ToolContextExtensions {\n space?: Space;\n dispatch?: PromiseIntentDispatcher;\n }\n}\n\ntype RequestOptions = {\n // Empty for now.\n};\n\nexport type ChatProcessorOptions = {\n // TODO(burdon): Change to AiToolkit.\n tools?: readonly ExecutableTool[];\n artifacts?: readonly ArtifactDefinition[];\n extensions?: ToolContextExtensions;\n blueprintRegistry?: BlueprintRegistry;\n} & Pick<GenerateRequest, 'model' | 'systemPrompt'>;\n\nconst defaultOptions: ChatProcessorOptions = {\n model: DEFAULT_EDGE_MODEL,\n systemPrompt: 'you are a helpful assistant',\n};\n\n/**\n * Handles interactions with the AI service.\n * Maintains a queue of messages and handles streaming responses from the AI service.\n * Executes tools based on AI responses.\n * Supports cancellation of in-progress requests.\n */\n// TODO(burdon): Rename ChatContext?\nexport class ChatProcessor {\n /**\n * Pending messages (incl. the current user request).\n * @reactive\n */\n private readonly _pending: Signal<Message[]> = signal([]);\n\n /**\n * Current streaming block (from the AI service).\n * @reactive\n */\n private readonly _block: Signal<MessageContentBlock | undefined> = signal(undefined);\n\n /**\n * Streaming state.\n * @reactive\n */\n public readonly streaming: Signal<boolean> = computed(() => this._block.value !== undefined);\n\n /**\n * Last error.\n * @reactive\n */\n public readonly error: Signal<Error | undefined> = signal(undefined);\n\n /**\n * Array of Messages (incl. the current message being streamed).\n * @reactive\n */\n public readonly messages: Signal<Message[]> = computed(() => {\n const messages = [...this._pending.value];\n if (this._block.value && messages.length) {\n const { content, ...rest } = messages.pop()!;\n const message = { ...rest, content: [...content, this._block.value] };\n messages.push(message);\n }\n\n return messages;\n });\n\n // TODO(burdon): Replace with Toolkit.\n private _tools?: ExecutableTool[];\n\n /** Current session. */\n private _session: AISession | undefined = undefined;\n\n constructor(\n private readonly _conversation: Conversation,\n private readonly _options: ChatProcessorOptions = defaultOptions,\n ) {\n this._tools = [...(_options.tools ?? [])];\n }\n\n get conversation() {\n return this._conversation;\n }\n\n get context(): ContextBinder {\n return this._conversation.context;\n }\n\n get blueprintRegistry() {\n return this._options.blueprintRegistry;\n }\n\n get tools() {\n return this._tools;\n }\n\n /**\n * @deprecated Replace with blueprints\n */\n setTools(tools: ExecutableTool[]): void {\n this._tools = tools;\n }\n\n /**\n * Make GPT request.\n */\n async request(message: string, options: RequestOptions = {}): Promise<Message[]> {\n await using ctx = Context.default(); // Auto-disposed at the end of this block.\n\n this._conversation.onBegin.on(ctx, (session) => {\n log.info('onBegin', { session, isDisposed: ctx.disposed });\n\n this._session = session;\n ctx.onDispose(() => {\n log.info('onDispose', { session, isDisposed: ctx.disposed });\n if (this._session === session) {\n this._session = undefined;\n }\n });\n\n // Message complete.\n session.message.on((message) => {\n batch(() => {\n this._pending.value = [...this._pending.value, message];\n this._block.value = undefined;\n });\n });\n\n // Streaming update (happens before message complete).\n session.update.on((block) => {\n batch(() => {\n this._block.value = block;\n });\n });\n\n session.userMessage.on((message) => {\n log.info('userMessage', { message });\n this._pending.value = [...this._pending.value, message];\n });\n\n session.toolStatusReport.on(({ message, status }) => {\n const msg = this._pending.peek().find((m) => m.id === message.id);\n const toolUse = msg?.content.find((block) => block.type === 'tool_use');\n if (!toolUse) {\n return;\n }\n\n const block = msg?.content.find(\n (block): block is ToolUseContentBlock => block.type === 'tool_use' && block.id === toolUse.id,\n );\n if (block) {\n this._pending.value = this._pending.value.map((m) => {\n if (m.id === message.id) {\n return {\n ...m,\n content: m.content.map((block) =>\n block.type === 'tool_use' && block.id === toolUse.id ? { ...block, currentStatus: status } : block,\n ),\n };\n }\n\n return m;\n });\n } else {\n log.warn('no block for status report');\n }\n });\n });\n\n try {\n const messages = await this._conversation.run({\n artifacts: [...(this._options.artifacts ?? [])],\n requiredArtifactIds: this._options.artifacts?.map((artifact) => artifact.id) ?? [],\n\n // TODO(dmaretskyi): Migrate to Effect's AiToolkit.\n tools: this._tools ?? [],\n systemPrompt: this._options.systemPrompt,\n prompt: message,\n extensions: this._options.extensions,\n artifactDiffResolver: this._artifactDiffResolver,\n generationOptions: {\n model: this._options.model,\n },\n });\n\n log('completed', { messages });\n } catch (err) {\n log.catch(err);\n if (err instanceof Error && err.message.includes('Overloaded')) {\n this.error.value = new AiServiceOverloadedError('AI service overloaded', { cause: err });\n } else {\n this.error.value = new Error('AI service error', { cause: err });\n }\n }\n\n return this._reset();\n }\n\n /**\n * Cancel pending requests.\n * @returns Pending requests (incl. the request message).\n */\n async cancel(): Promise<Message[]> {\n log.info('cancelling...');\n\n // TODO(dmaretskyi): Conversation should handle aborting.\n this._session?.abort();\n return this._reset();\n }\n\n private async _reset(): Promise<Message[]> {\n const messages = this._pending.value;\n batch(() => {\n this._pending.value = [];\n this._block.value = undefined;\n });\n\n return messages;\n }\n\n private _artifactDiffResolver: ArtifactDiffResolver = async (artifacts) => {\n const space = this._options.extensions?.space;\n if (!space) {\n return new Map();\n }\n\n const versions = new Map();\n await Promise.all(\n artifacts.map(async (artifact) => {\n const {\n objects: [object],\n } = await space.db.query(Filter.ids(artifact.id)).run();\n if (!object) {\n return;\n }\n versions.set(artifact.id, {\n version: getVersion(object),\n diff: `Current state: ${JSON.stringify(object)}`,\n });\n }),\n );\n return versions;\n };\n}\n\n// TODO(wittjosiah): Move to ai-service-client.\nexport class AiServiceOverloadedError extends Error {\n code = 'AI_SERVICE_OVERLOADED';\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useState } from 'react';\n\nimport { type Blueprint, type ContextBinder } from '@dxos/assistant';\nimport { Ref } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { useTimeout } from '@dxos/react-ui';\nimport { isNonNullable } from '@dxos/util';\n\nexport type UpdateCallback = (key: string, active: boolean) => void;\n\nexport const useBlueprints = (context: ContextBinder): [Blueprint[], UpdateCallback] => {\n const [blueprints, setBlueprints] = useState<Blueprint[]>([]);\n useTimeout(\n async () => {\n const blueprints = (await Ref.Array.loadAll(context.blueprints.value ?? [])).filter(isNonNullable);\n setBlueprints(blueprints);\n },\n 0,\n [context],\n );\n\n const handleUpdate = useCallback<UpdateCallback>((key: string, active: boolean) => {\n log.info('update', { key, active });\n }, []);\n\n return [blueprints, handleUpdate] as const;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj, type Type } from '@dxos/echo';\n\n/**\n * @deprecated\n */\nexport type ContextProvider = {\n query: (params: { query: string }) => Promise<Array<{ uri: string; label: string }>>;\n resolveMetadata: (params: { uri: string }) => Promise<{ uri: string; label: string }>;\n};\n\n/**\n * @deprecated\n */\nexport const useContextProvider = (space?: Space): ContextProvider | undefined => {\n const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);\n\n return useMemo<ContextProvider | undefined>((): ContextProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n query: async ({ query }) => {\n const artifactSchemas = artifactDefinitions.map((artifact) => artifact.schema);\n const { objects } = await space.db\n .query(Filter.or(...artifactSchemas.map((schema) => Filter.type(schema as Type.Schema))))\n .run();\n\n return (\n objects\n // TODO(burdon): Remove cast ??? (+ two instances below).\n // .map((object) => {\n // log.info('object', { object, label: Obj.getLabel(object as any) });\n // return object;\n // })\n .filter((object) => stringMatch(query, Obj.getLabel(object as any) ?? ''))\n // TODO(dmaretskyi): `Type.getDXN` (at the point of writing) didn't work here as it was schema-only.\n .filter((object) => !!Obj.getDXN(object as Obj.Any))\n .map((object) => ({\n uri: Obj.getDXN(object as any)!.toString(),\n label: Obj.getLabel(object as any) ?? '',\n }))\n );\n },\n resolveMetadata: async ({ uri }) => {\n const object = await space.db.query(Filter.ids(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n };\n }, [space, artifactDefinitions]);\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { ToolRegistry } from '@dxos/ai';\nimport { Capabilities, useCapabilities, useCapability } from '@dxos/app-framework';\nimport { AiService, DatabaseService, QueueService, ServiceContainer, ToolResolverService } from '@dxos/functions';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { AssistantCapabilities } from '../capabilities';\n\ninterface UseServiceContainerProps {\n space?: Space;\n}\n\nexport const useServiceContainer = ({ space }: UseServiceContainerProps) => {\n const aiClient = useCapability(AssistantCapabilities.AiClient);\n const tools = useCapabilities(Capabilities.Tools).flat();\n\n const [toolRegistry] = useState(() => new ToolRegistry([]));\n useEffect(() => {\n for (const tool of tools) {\n if (!toolRegistry.has(tool)) {\n toolRegistry.register(tool);\n }\n }\n }, [toolRegistry, JSON.stringify(tools.map((tool) => tool.id))]);\n\n return useMemo(\n () =>\n new ServiceContainer().setServices({\n ai: AiService.make(aiClient.value),\n database: space ? DatabaseService.make(space.db) : undefined,\n queues: space ? QueueService.make(space.queues, undefined) : undefined,\n // eventLogger: consoleLogger,\n toolResolver: ToolResolverService.make(toolRegistry),\n }),\n [space, aiClient],\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useState, useCallback, type KeyboardEventHandler, type ChangeEventHandler } from 'react';\n\n/**\n * Hook that handles text input events.\n */\n// TODO(burdon): Factor out.\nexport const useTextInputEvents = ({\n onEnter,\n onEscape,\n}: {\n onEnter?: (text: string) => boolean | void;\n onEscape?: () => void;\n}) => {\n const [value, setValue] = useState('');\n\n const onKeyDown = useCallback<KeyboardEventHandler<HTMLInputElement>>(\n (ev) => {\n switch (ev.key) {\n case 'Escape': {\n onEscape?.();\n setValue('');\n break;\n }\n\n case 'Enter': {\n const value = (ev.target as HTMLInputElement).value.trim();\n if (value.length > 0) {\n const reset = onEnter?.(value);\n if (reset) {\n setValue('');\n }\n }\n break;\n }\n }\n },\n [onEnter, onEscape],\n );\n\n const onChange = useCallback<ChangeEventHandler<HTMLInputElement>>((ev) => {\n setValue(ev.target.value);\n }, []);\n\n return [{ value, onKeyDown, onChange }, setValue];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createTool, type ExecutableTool, ToolResult } from '@dxos/ai';\nimport { Type } from '@dxos/echo';\nimport { getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';\nimport { type FunctionType } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { type SpaceId } from '@dxos/react-client/echo';\nimport { getMeta } from '@dxos/react-client/echo';\n\n// TODO(burdon): Move to @dxos/ai.\nexport const convertFunctionToTool = (\n fn: FunctionType,\n edgeUrl: string,\n spaceId?: SpaceId | undefined,\n): ExecutableTool | undefined => {\n if (!fn.description || !fn.inputSchema) {\n return undefined;\n }\n const existingFunctionUrl = getUserFunctionUrlInMetadata(getMeta(fn));\n if (!existingFunctionUrl) {\n return undefined;\n }\n\n const url = getInvocationUrl(existingFunctionUrl, edgeUrl, { spaceId });\n\n return createTool('user-function', {\n name: fn.name,\n description: fn.description,\n schema: Type.toEffectSchema(fn.inputSchema),\n execute: async (input) => {\n log.info('execute function tool', { name: fn.name, url, input });\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(input),\n });\n\n return ToolResult.Success(await response.text());\n },\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\nimport jsonpointer from 'jsonpointer';\nimport { type OpenAPIV2, type OpenAPIV3_1 } from 'openapi-types';\n\nimport { type ExecutableTool, ToolResult, createRawTool } from '@dxos/ai';\nimport { Type } from '@dxos/echo';\nimport { normalizeSchema } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { deepMapValues } from '@dxos/util';\n\nimport type { ApiAuthorization, ServiceType } from '../types';\n\nexport type CreateToolsFromApiOptions = {\n authorization?: ApiAuthorization;\n instructions?: string;\n};\n\nexport const createToolsFromService = async (service: ServiceType): Promise<ExecutableTool[]> => {\n invariant(service.interfaces?.length === 1 && service.interfaces[0].kind === 'api');\n const iface = service.interfaces[0];\n invariant(iface.schemaUrl);\n invariant(iface.schemaUrl);\n return createToolsFromApi(iface.schemaUrl, { authorization: iface.authorization });\n};\n\nexport const createToolsFromApi = async (\n url: string,\n options?: CreateToolsFromApiOptions,\n): Promise<ExecutableTool[]> => {\n const res = await fetch(url);\n const spec = (await res.json()) as OpenAPIV2.Document;\n log('spec', { spec });\n\n const tools: ExecutableTool[] = [];\n for (const [path, pathItem] of Object.entries(spec.paths)) {\n if (typeof pathItem !== 'object') {\n continue;\n }\n\n const { ...methods } = pathItem;\n for (const [method, m] of Object.entries(methods)) {\n const methodItem: OpenAPIV2.OperationObject = m as OpenAPIV2.OperationObject;\n log('methodItem', { path, method, methodItem });\n\n const parametersResolved: OpenAPIV2.ParameterObject[] =\n methodItem.parameters?.map((parameter: any) => {\n const resolved = resolveJsonSchema(parameter, spec);\n return resolved;\n }) ?? [];\n\n const inputSchema: Type.JsonSchema = {\n type: 'object',\n properties: {},\n };\n\n const endpointParameters: OpenAPIV2.ParameterObject[] = [];\n for (const parameter of parametersResolved) {\n log('parameter', { parameter });\n\n if (\n options?.authorization?.type === 'api-key' &&\n options.authorization.placement.type === 'query' &&\n parameter.in === 'query' &&\n parameter.name === options.authorization.placement.name\n ) {\n continue;\n }\n\n endpointParameters.push(parameter);\n\n if (parameter.schema) {\n inputSchema.properties![parameter.name] = normalizeSchema(parameter.schema);\n } else if (typeof parameter.type === 'string') {\n const { name, in: _in, required, ...schema } = parameter;\n inputSchema.properties![name] = normalizeSchema(schema);\n if (required) {\n inputSchema.required ??= [];\n inputSchema.required!.push(name);\n }\n }\n }\n\n log('inputSchema', { inputSchema });\n Schema.validateSync(Type.JsonSchema)(inputSchema);\n\n const description = methodItem.description ?? methodItem.summary;\n if (!description) {\n log.warn('no description', { path, method });\n continue;\n }\n\n const endpoint: EndpointDescriptor = {\n document: spec,\n path,\n method,\n parameters: endpointParameters,\n authorization: options?.authorization,\n };\n\n tools.push(\n // TODO(burdon): Namespace?\n createRawTool('openapi', {\n name: getToolName(path, method, methodItem),\n description: options?.instructions ? `${options.instructions}\\n\\n${description}` : description,\n parameters: inputSchema,\n execute: async (input) => {\n const response = await callApiEndpoint(endpoint, input);\n return ToolResult.Success(response);\n },\n }),\n );\n }\n }\n\n return tools;\n};\n\nconst getToolName = (path: string, method: string, methodItem: OpenAPIV2.OperationObject) => {\n if (methodItem.operationId) {\n return methodItem.operationId;\n }\n\n // Generate a name from the path and method.\n let name = `${method.toLowerCase()}_${path.replaceAll(/[{}/]/g, '_')}`;\n while (name.length > MAX_TOOL_NAME_LENGTH) {\n const lengthBefore = name.length;\n\n for (const word of GENERIC_WORDS) {\n if (name.includes(word)) {\n name = name.replace(word, '');\n break;\n }\n }\n name = name.replaceAll('__', '_').replace(/_$/, '');\n\n const lengthAfter = name.length;\n if (lengthBefore === lengthAfter) {\n break;\n }\n }\n name = name.replaceAll('__', '_').replace(/_$/, '').replace(/^_/, '');\n\n return name.slice(0, MAX_TOOL_NAME_LENGTH);\n};\n\nconst MAX_TOOL_NAME_LENGTH = 64;\nconst GENERIC_WORDS = [\n 'services',\n 'service',\n 'api',\n 'rest',\n 'endpoint',\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'head',\n 'options',\n 'trace',\n 'service',\n 'api',\n 'endpoint',\n];\n\ntype EndpointDescriptor = {\n document: OpenAPIV3_1.Document | OpenAPIV2.Document;\n path: string;\n method: string;\n parameters: OpenAPIV2.ParameterObject[];\n authorization?: ApiAuthorization;\n};\n\nconst callApiEndpoint = async (endpoint: EndpointDescriptor, input: any) => {\n log.info('endpoint', { method: endpoint.method, name: endpoint.path, input });\n\n let url = getEndpointUrl(endpoint);\n const request: RequestInit = {\n method: endpoint.method,\n headers: {},\n };\n const query = new URLSearchParams();\n let body: any;\n for (const parameter of endpoint.parameters) {\n if (input[parameter.name] === undefined) {\n continue;\n }\n\n switch (parameter.in) {\n case 'header': {\n if (parameter.example) {\n (request.headers as any)[parameter.name] = parameter.default;\n }\n break;\n }\n case 'path': {\n url = url.replace(`{${parameter.name}}`, encodeURIComponent(input[parameter.name]));\n break;\n }\n case 'body': {\n const value = input[parameter.name];\n\n // Client-side validation\n const effectSchema = Type.toEffectSchema(parameter.schema);\n Schema.validateSync(effectSchema)(value);\n\n if (body) {\n throw new Error(`Duplicate body parameter: ${parameter.name}`);\n }\n body = value;\n break;\n }\n case 'query': {\n query.set(parameter.name, input[parameter.name]);\n break;\n }\n }\n }\n\n if (\n (endpoint.authorization?.type === 'api-key' && endpoint.authorization.placement.type === 'authorization-header') ||\n endpoint.authorization?.type === 'oauth'\n ) {\n (request.headers as any).Authorization = await resolveAuthorization(endpoint.authorization);\n } else if (endpoint.authorization?.type === 'api-key' && endpoint.authorization.placement.type === 'query') {\n query.set(endpoint.authorization.placement.name, endpoint.authorization.key);\n }\n\n if (query.size > 0) {\n url += `?${query.toString()}`;\n }\n\n if (body) {\n request.body = JSON.stringify(body);\n (request.headers as any)['Content-Type'] = 'application/json';\n }\n\n log.info('request', { url, request });\n const response = await fetch(url, request);\n\n log.info('response', { ok: response.ok, status: response.status, statusText: response.statusText });\n\n if (response.ok) {\n const contentType = response.headers.get('Content-Type');\n if (contentType?.includes('application/json')) {\n return await response.json();\n } else {\n return await response.text();\n }\n } else {\n if (response.headers.get('Content-Type')?.includes('application/json')) {\n const responseBody = await response.text();\n let error: any;\n try {\n error = JSON.parse(responseBody);\n } catch {\n error = responseBody;\n }\n log.error('error', { error });\n throw new Error(error.message);\n } else {\n const error = await response.text();\n log.error('error', { error });\n throw new Error(error);\n }\n }\n};\n\nconst getEndpointUrl = (endpoint: EndpointDescriptor) => {\n let url = '';\n if (isV3_1(endpoint.document) && endpoint.document.servers && endpoint.document.servers.length > 0) {\n url = endpoint.document.servers[0].url;\n } else {\n invariant(!isV3_1(endpoint.document));\n url = `${endpoint.document.schemes?.[0] ?? 'https'}://${endpoint.document.host}`;\n }\n\n if (!isV3_1(endpoint.document) && endpoint.document.basePath) {\n url += endpoint.document.basePath;\n }\n\n url += endpoint.path;\n\n return url;\n};\n\nexport const resolveAuthorization = async (authorization: ApiAuthorization): Promise<string> => {\n switch (authorization.type) {\n case 'api-key': {\n invariant(authorization.placement.type === 'authorization-header');\n return `Bearer ${authorization.key}`;\n }\n case 'oauth': {\n const response = await fetch(authorization.tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: `grant_type=${authorization.grantType}&client_id=${authorization.clientId}&client_secret=${authorization.clientSecret}`,\n });\n const data = await response.json();\n return `Bearer ${data.access_token}`;\n }\n default: {\n throw new Error(`Unknown authorization type: ${(authorization as any).type}`);\n }\n }\n};\n\n/**\n * Resolves all $ref properties in a JSON schema.\n * Doesn't assume the structure of the schema.\n * The function looks from $ref properties in the schema and resolves them to their values in the base object.\n */\nconst resolveJsonSchema = (schema: any, base: any) => {\n return deepMapValues(schema, (value, recurse) => {\n if (typeof value === 'object' && value !== null && '$ref' in value && typeof value.$ref === 'string') {\n if (value.$ref.startsWith('#')) {\n const resolved = jsonpointer.get(base, value.$ref.slice(1));\n if (resolved) {\n return recurse(resolved);\n } else {\n log.warn('unresolved', { ref: value.$ref, base });\n }\n }\n }\n return recurse(value);\n });\n};\n\nconst isV3_1 = (document: OpenAPIV3_1.Document | OpenAPIV2.Document): document is OpenAPIV3_1.Document => {\n return (document as any).openapi === '3.0.1';\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useState, useEffect, Fragment, type FC } from 'react';\n\nimport { parseToolName, type Tool } from '@dxos/ai';\nimport { Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { type ArtifactDefinition } from '@dxos/artifact';\nimport { type Blueprint } from '@dxos/assistant';\nimport { type Ref } from '@dxos/echo';\nimport { FunctionType } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { Filter, type Space, useQuery } from '@dxos/react-client/echo';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type ChatProcessor } from '../../hooks';\nimport { meta } from '../../meta';\nimport { createToolsFromService } from '../../tools';\nimport { ServiceType } from '../../types';\n\nexport type ToolboxProps = ThemedClassName<{\n blueprints?: readonly Ref.Ref<Blueprint>[];\n artifacts?: ArtifactDefinition[];\n services?: { service: ServiceType; tools: Tool[] }[];\n functions?: FunctionType[];\n activeBlueprints?: readonly Ref.Ref<Blueprint>[];\n striped?: boolean;\n}>;\n\nexport const Toolbox = ({\n classNames,\n artifacts,\n functions,\n services,\n blueprints,\n activeBlueprints,\n striped,\n}: ToolboxProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className={mx('flex flex-col overflow-y-auto box-content', classNames)}>\n {blueprints && blueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={blueprints.map(({ target }) => ({\n name: target?.name ?? '',\n description: target?.description ?? '',\n subitems: target?.tools.map((toolId) => ({ name: `∙ ${parseToolName(toolId)}` })),\n }))}\n />\n )}\n\n {activeBlueprints && activeBlueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={activeBlueprints.map(({ target }) => ({\n name: target?.name ?? '',\n description: target?.description ?? '',\n subitems: target?.tools.map((toolId) => ({ name: `∙ ${parseToolName(toolId)}` })),\n }))}\n />\n )}\n\n {artifacts && artifacts.length > 0 && (\n <Section\n title='Artifacts'\n items={artifacts.map(({ name, description, tools }) => ({\n name,\n description,\n subitems: tools.map(({ name, description }) => ({ name: `∙ ${parseToolName(name)}`, description })),\n }))}\n />\n )}\n\n {services && services.length > 0 && (\n <Section\n title='Services'\n items={services.map(({ service: { serviceId, name, description }, tools }) => ({\n name: name ?? serviceId,\n description,\n subitems: tools.map(({ name, description }) => ({ name: `∙ ${name}`, description })),\n }))}\n />\n )}\n\n {functions && functions.length > 0 && (\n <Section title='Functions' items={functions.map(({ name, description }) => ({ name, description }))} />\n )}\n\n {!blueprints?.length &&\n !activeBlueprints?.length &&\n !artifacts?.length &&\n !services?.length &&\n !functions?.length && <div>{t('no tools')}</div>}\n </div>\n );\n};\n\nconst Section: FC<{\n title: string;\n items: { name: string; description?: string; subitems?: { name: string; description?: string }[] }[];\n striped?: boolean;\n}> = ({ title, items, striped }) => {\n const stripeClassNames = 'odd:bg-neutral-50 dark:odd:bg-neutral-800';\n const gridClassNames = 'grid grid-cols-[8rem_1fr]';\n const subGridClassNames = mx('col-span-full grid grid-cols-subgrid text-xs px-2', striped && stripeClassNames);\n\n return (\n <div>\n <h1 className='px-2 text-sm'>{title}</h1>\n <div className={gridClassNames}>\n {items.map(({ name, description, subitems }, i) => (\n <Fragment key={i}>\n {name && (\n <div className={subGridClassNames}>\n <div className='truncate text-primary-500'>{name}</div>\n <div className='line-clamp-2'>{description}</div>\n </div>\n )}\n {subitems?.map(({ name, description }, i) => (\n <div key={i} className={mx(subGridClassNames, striped && stripeClassNames)}>\n <div className='truncate'>{name}</div>\n <div className='line-clamp-3 text-subdued'>{description}</div>\n </div>\n ))}\n </Fragment>\n ))}\n </div>\n </div>\n );\n};\n\nexport type ToolboxContainerProps = ThemedClassName<{ space?: Space; processor?: ChatProcessor }>;\n\nexport const ToolboxContainer = ({ classNames, space, processor }: ToolboxContainerProps) => {\n // Plugin artifacts.\n const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);\n\n // Registered services.\n const services = useQuery(space, Filter.type(ServiceType));\n const [serviceTools, setServiceTools] = useState<{ service: ServiceType; tools: Tool[] }[]>([]);\n useEffect(() => {\n log('creating service tools...', { services: services.length });\n queueMicrotask(async () => {\n const tools = await Promise.all(\n services.map(async (service) => ({ service, tools: await createToolsFromService(service) })),\n );\n\n setServiceTools(tools);\n });\n }, [services]);\n\n // Deployed functions.\n const functions = useQuery(space, Filter.type(FunctionType));\n\n return (\n <Toolbox\n classNames={classNames}\n blueprints={processor?.context.blueprints.value}\n artifacts={artifactDefinitions}\n services={serviceTools}\n functions={functions}\n />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { createContext } from '@radix-ui/react-context';\nimport { dedupeWith } from 'effect/Array';\nimport React, { type PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Message } from '@dxos/ai';\nimport { CollaborationActions, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { Event } from '@dxos/async';\nimport { DXN, Obj, Ref } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { useVoiceInput } from '@dxos/plugin-transcription';\nimport { type Expando, getSpace, useQueue, type Space } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation, type ThemedClassName } from '@dxos/react-ui';\nimport { ChatEditor, type ChatEditorController, type ChatEditorProps, references } from '@dxos/react-ui-chat';\nimport { type ScrollController } from '@dxos/react-ui-components';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNotFalsy } from '@dxos/util';\n\nimport { type ChatProcessor, useContextProvider, useBlueprints } from '../../hooks';\nimport { meta } from '../../meta';\nimport { type Assistant } from '../../types';\nimport {\n ChatActions,\n type ChatActionsProps,\n type ChatEvent,\n ChatOptionsMenu,\n ChatReferences,\n type ChatReferencesProps,\n ChatStatusIndicator,\n} from '../ChatPrompt';\nimport { ChatThread as NativeChatThread, type ChatThreadProps as NativeChatThreadProps } from '../ChatThread';\n\n// TODO(burdon): Factor out.\nconst Endcap = ({ children }: PropsWithChildren) => {\n return (\n <div className='grid w-[var(--rail-action)] h-[var(--rail-action)] items-center justify-center'>{children}</div>\n );\n};\n\n//\n// Context\n// NOTE: The context should not be exported. It is only used internally.\n// Components outside of this Radix-style group shuld define their own APIs.\n//\n\n// TODO(burdon): Inject via effect layer.\ntype ChatContextValue = {\n event: Event<ChatEvent>;\n space: Space;\n chat: Assistant.Chat;\n processor: ChatProcessor;\n messages: Message[];\n\n /** @deprecated Remove and replace with context. */\n artifact?: Expando;\n};\n\n// NOTE: Do not export.\nconst [ChatContextProvider, useChatContext] = createContext<ChatContextValue>('Chat');\n\n//\n// Root\n//\n\ntype ChatRootProps = ThemedClassName<\n PropsWithChildren<\n Pick<ChatContextValue, 'chat' | 'processor' | 'artifact'> & {\n onEvent?: (event: ChatEvent) => void;\n }\n >\n>;\n\nconst ChatRoot = ({ classNames, children, chat, processor, artifact, onEvent, ...props }: ChatRootProps) => {\n const space = getSpace(chat);\n\n // Messages.\n const queue = useQueue<Message>(chat?.queue.dxn);\n const messages = useMemo(\n () =>\n dedupeWith(\n [...(queue?.objects?.filter(Obj.instanceOf(Message)) ?? []), ...(processor?.messages.value ?? [])],\n (a, b) => a.id === b.id,\n ),\n [queue?.objects, processor?.messages.value],\n );\n\n // TODO(burdon): Replace with tool.\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n useEffect(() => {\n if (!processor?.streaming.value && queue?.objects && artifact) {\n const message = queue.objects[queue.objects.length - 1];\n if (dispatch && space && chat && message) {\n void dispatch(\n createIntent(CollaborationActions.InsertContent, {\n target: artifact,\n object: Ref.fromDXN(new DXN(DXN.kind.QUEUE, [...chat.queue.dxn.parts, message.id])),\n label: 'View proposal',\n }),\n );\n }\n }\n }, [queue, processor?.streaming.value]);\n\n // Events.\n const event = useMemo(() => new Event<ChatEvent>(), []);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'submit': {\n if (!processor.streaming.value) {\n void processor.request(event.text);\n }\n break;\n }\n\n case 'cancel': {\n void processor.cancel();\n break;\n }\n }\n\n onEvent?.(event);\n });\n }, [event, onEvent]);\n\n if (!space) {\n return null;\n }\n\n return (\n <ChatContextProvider event={event} chat={chat} space={space} processor={processor} messages={messages} {...props}>\n <div role='none' className={mx('flex flex-col grow', classNames)}>\n {children}\n </div>\n </ChatContextProvider>\n );\n};\n\nChatRoot.displayName = 'Chat.Root';\n\n//\n// Thread\n//\n\ntype ChatThreadProps = Omit<NativeChatThreadProps, 'identity' | 'space' | 'messages' | 'tools' | 'onPrompt'>;\n\nconst ChatThread = (props: ChatThreadProps) => {\n const { event, space, processor, messages } = useChatContext(ChatThread.displayName);\n const identity = useIdentity();\n\n const scrollerRef = useRef<ScrollController>(null);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'submit':\n case 'scroll-to-bottom':\n scrollerRef.current?.scrollToBottom('smooth');\n break;\n }\n });\n }, [event]);\n\n const handlePrompt = useCallback<NonNullable<NativeChatThreadProps['onPrompt']>>(\n (text) => {\n if (!processor.streaming.value) {\n event.emit({ type: 'submit', text });\n return true;\n }\n },\n [processor, event],\n );\n\n if (!identity) {\n return null;\n }\n\n return (\n <NativeChatThread\n {...props}\n ref={scrollerRef}\n identity={identity}\n space={space}\n messages={messages}\n tools={processor?.tools}\n onPrompt={handlePrompt}\n />\n );\n};\n\nChatThread.displayName = 'Chat.Thread';\n\n//\n// Prompt\n//\n\ntype ChatPromptProps = ThemedClassName<Pick<ChatEditorProps, 'placeholder'> & { expandable?: boolean }>;\n\nconst ChatPrompt = ({ classNames, placeholder, expandable }: ChatPromptProps) => {\n const { t } = useTranslation(meta.id);\n const { space, event, processor } = useChatContext(ChatPrompt.displayName);\n\n const [active, setActive] = useState(false);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'record-start':\n setActive(true);\n break;\n case 'record-stop':\n setActive(false);\n break;\n }\n });\n }, [event]);\n\n const editorRef = useRef<ChatEditorController>(null);\n\n // TODO(burdon): Configure capability in TranscriptionPlugin.\n const { recording } = useVoiceInput({\n active,\n onUpdate: (text) => {\n editorRef.current?.setText(text);\n editorRef.current?.focus();\n },\n });\n\n const [blueprints, handleUpdateBlueprints] = useBlueprints(processor.context);\n\n // TODO(burdon): Reconcile with object tags.\n const contextProvider = useContextProvider(space);\n const extensions = useMemo<Extension[]>(() => {\n return [\n contextProvider &&\n references({\n provider: {\n getReferences: async ({ query }) => contextProvider.query({ query }),\n resolveReference: async ({ uri }) => contextProvider.resolveMetadata({ uri }),\n },\n }),\n expandable &&\n Prec.highest(\n keymap.of([\n {\n key: 'cmd-ArrowUp',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'thread-open' });\n return true;\n },\n },\n {\n key: 'cmd-ArrowDown',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'thread-close' });\n return true;\n },\n },\n ]),\n ),\n ].filter(isNotFalsy);\n }, [event, expandable, contextProvider]);\n\n const handleSubmit = useCallback<NonNullable<ChatEditorProps['onSubmit']>>(\n (text) => {\n if (!processor.streaming.value) {\n event.emit({ type: 'submit', text });\n return true;\n }\n },\n [processor, event],\n );\n\n const handleEvent = useCallback<NonNullable<ChatActionsProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n // TODO(burdon): Update context.\n const handleUpdateReferences = useCallback<NonNullable<ChatReferencesProps['onUpdate']>>((ids) => {\n log.info('update', { ids });\n }, []);\n\n return (\n <div\n className={mx(\n 'is-full grid grid-cols-[var(--rail-action)_1fr_min-content] grid-rows-[min-content_var(--rail-action)]',\n classNames,\n )}\n >\n <Endcap>\n <ChatStatusIndicator error={processor.error.value} processing={processor.streaming.value} />\n </Endcap>\n\n <ChatEditor\n ref={editorRef}\n autoFocus\n lineWrapping\n classNames='col-span-2 pis-1 pbs-2'\n placeholder={placeholder ?? t('prompt placeholder')}\n extensions={extensions}\n onSubmit={handleSubmit}\n />\n\n <ChatOptionsMenu\n blueprintRegistry={processor.blueprintRegistry}\n blueprints={blueprints}\n onChange={handleUpdateBlueprints}\n />\n\n <ChatReferences\n classNames='flex pis-1 items-center'\n space={space}\n context={processor.context}\n onUpdate={handleUpdateReferences}\n />\n\n <ChatActions\n microphone={true}\n recording={recording}\n processing={processor.streaming.value}\n onEvent={handleEvent}\n />\n </div>\n );\n};\n\nChatPrompt.displayName = 'Chat.Prompt';\n\n//\n// Chat\n//\n\nexport const Chat = {\n Root: ChatRoot,\n Thread: ChatThread,\n Prompt: ChatPrompt,\n};\n\nexport type { ChatRootProps, ChatThreadProps, ChatPromptProps, ChatEvent };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { IconButton, Select, useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type ChatEvent } from './events';\nimport { meta } from '../../meta';\n\nexport type ChatActionsProps = {\n microphone?: boolean;\n recording?: boolean;\n processing?: boolean;\n onEvent?: (event: ChatEvent) => void;\n};\n\nexport const ChatActions = ({ microphone, recording, processing, onEvent }: ChatActionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className='flex items-center mie-1'>\n {/* TODO(burdon): Modes (models and/or presets for blueprints?). */}\n <Select.Root value={'ollama'} disabled>\n <Select.TriggerButton classNames='mie-2 text-sm' />\n <Select.Content>\n <Select.Option value={'ollama'} classNames='text-sm'>\n Ollama\n </Select.Option>\n </Select.Content>\n </Select.Root>\n\n {(processing && (\n <IconButton\n disabled={!processing}\n classNames='px-1.5'\n variant='ghost'\n size={5}\n icon='ph--x--regular'\n iconOnly\n label={t('button cancel processing')}\n onClick={() => onEvent?.({ type: 'cancel' })}\n />\n )) || (\n <IconButton\n classNames='px-1.5'\n variant='ghost'\n size={5}\n icon='ph--arrow-down--regular'\n iconOnly\n label={t('button scroll down')}\n onClick={() => onEvent?.({ type: 'scroll-to-bottom' })}\n />\n )}\n\n {microphone && (\n <IconButton\n disabled={!processing}\n classNames={mx('px-1.5', recording && 'bg-primary-500')}\n variant='ghost'\n size={5}\n icon='ph--microphone--regular'\n iconOnly\n noTooltip\n label={t('button microphone')}\n onMouseDown={() => onEvent?.({ type: 'record-start' })}\n onMouseUp={() => onEvent?.({ type: 'record-stop' })}\n onTouchStart={() => onEvent?.({ type: 'record-start' })}\n onTouchEnd={() => onEvent?.({ type: 'record-stop' })}\n />\n )}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { type Blueprint, type BlueprintRegistry } from '@dxos/assistant';\nimport { DropdownMenu, IconButton, Input, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '../../meta';\n\nexport type ChatOptionsMenuProps = {\n blueprintRegistry?: BlueprintRegistry;\n blueprints?: Blueprint[];\n onChange?: (key: string, active: boolean) => void;\n};\n\nexport const ChatOptionsMenu = ({ blueprintRegistry, blueprints, onChange }: ChatOptionsMenuProps) => {\n const { t } = useTranslation(meta.id);\n const blueprintOptions = useMemo(\n () => blueprintRegistry?.query().map((blueprint) => ({ key: blueprint.key, label: blueprint.name })),\n [blueprintRegistry],\n );\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild disabled={!blueprintOptions?.length}>\n <IconButton icon='ph--plus--regular' variant='ghost' size={5} iconOnly label={t('button add blueprint')} />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content side='left'>\n <DropdownMenu.Viewport>\n {blueprintOptions?.map((option) => (\n <DropdownMenu.Item key={option.key}>\n <Input.Root>\n <Input.Checkbox\n checked={!!blueprints?.find((blueprint) => blueprint.key === option.key)}\n onCheckedChange={(checked) => onChange?.(option.key, !!checked)}\n />\n {/* TODO(burdon): Remove need for custom margin. */}\n {/* TODO(burdon): Clicking on label doesn't toggle checkbox. */}\n <Input.Label classNames='m-0'>{option.label}</Input.Label>\n </Input.Root>\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type ContextBinder } from '@dxos/assistant';\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { type ThemedClassName, useAsyncState, useTranslation } from '@dxos/react-ui';\nimport { TagPicker, type TagPickerItemData, type TagPickerOptions } from '@dxos/react-ui-tag-picker';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nexport type ChatReferencesProps = ThemedClassName<{\n space: Space;\n context: ContextBinder;\n onUpdate?: (ids: string[]) => void;\n}>;\n\nexport const ChatReferences = ({ classNames, space, context, onUpdate }: ChatReferencesProps) => {\n const { t } = useTranslation(meta.id);\n\n const [items] = useAsyncState<TagPickerItemData[]>(async () => {\n const objects = await Ref.Array.loadAll(context.objects.value ?? []);\n return objects.filter(isNonNullable).map((obj) => ({ id: obj.id, label: Obj.getLabel(obj) ?? obj.id }));\n }, [context]);\n\n const handleSearch = useCallback<NonNullable<TagPickerOptions['onSearch']>>(\n (text, ids) => {\n // TODO(burdon): Filter by Item tag (e.g., exclude \"contacts\") and Query by object label.\n // TODO(burdon): Change to Filter.text().\n const objects = space.db.query(Filter.everything()).runSync();\n return objects\n .map(({ object }) => ({ id: object.id, label: Obj.getLabel(object) ?? '' }))\n .filter(({ id, label }) => !ids.includes(id) && label.toLocaleLowerCase().includes(text.toLocaleLowerCase()));\n },\n [space],\n );\n\n return (\n <TagPicker\n classNames={classNames}\n mode='multi-select'\n placeholder={t('context objects placeholder')}\n items={items}\n onSearch={handleSearch}\n onUpdate={onUpdate}\n />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Icon, Tooltip } from '@dxos/react-ui';\nimport { Spinner } from '@dxos/react-ui-sfx';\nimport { errorText } from '@dxos/react-ui-theme';\n\nexport type ChatStatusIndicatorProps = {\n error?: Error;\n processing?: boolean;\n};\n\nexport const ChatStatusIndicator = ({ error, processing }: ChatStatusIndicatorProps) => {\n if (error) {\n return (\n <Tooltip.Trigger content={error.message} delayDuration={0}>\n <Icon icon='ph--warning-circle--regular' classNames={errorText} size={5} />\n </Tooltip.Trigger>\n );\n }\n\n return <Spinner active={processing} />;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type CSSProperties, forwardRef, useMemo } from 'react';\n\nimport { type Message } from '@dxos/ai';\nimport { PublicKey } from '@dxos/keys';\nimport { type Space } from '@dxos/react-client/echo';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { ScrollContainer, type ScrollController } from '@dxos/react-ui-components';\nimport { mx } from '@dxos/react-ui-theme';\nimport { keyToFallback } from '@dxos/util';\n\nimport { ChatMessage, type ChatMessageProps } from './ChatMessage';\nimport { messageReducer } from './reducer';\nimport { type ChatProcessor } from '../../hooks';\n\nexport type ChatThreadProps = ThemedClassName<{\n identity?: Identity;\n space?: Space;\n // TODO(burdon): Replace with context.\n processor?: ChatProcessor;\n messages?: Message[];\n collapse?: boolean;\n}> &\n Pick<ChatMessageProps, 'debug' | 'tools' | 'onPrompt' | 'onDelete' | 'onAddToGraph'>;\n\nexport const ChatThread = forwardRef<ScrollController, ChatThreadProps>(\n ({ classNames, identity, space, processor, messages, collapse = true, ...props }, forwardedRef) => {\n const userHue = useMemo(() => {\n return identity?.profile?.data?.hue || keyToFallback(identity?.identityKey ?? PublicKey.random()).hue;\n }, [identity]);\n\n // TODO(dmaretskyi): This needs to be a separate type: `id` is not a valid ObjectId, this needs to accommodate messageId for deletion.\n const { messages: filteredMessages = [] } = useMemo(() => {\n if (collapse) {\n return (messages ?? []).reduce<{ messages: Message[]; current?: Message }>(messageReducer, {\n messages: [],\n });\n } else {\n return { messages: messages ?? [] };\n }\n }, [messages, collapse]);\n\n return (\n <ScrollContainer ref={forwardedRef} classNames={classNames} fade>\n <div\n role='none'\n className={mx(filteredMessages.length > 0 && 'pbs-6 pbe-6')}\n style={{ '--user-fill': `var(--dx-${userHue}Fill)` } as CSSProperties}\n >\n {filteredMessages.map((message) => (\n <ChatMessage\n key={message.id}\n classNames='px-4 pbe-4'\n space={space}\n processor={processor}\n message={message}\n {...props}\n />\n ))}\n </div>\n </ScrollContainer>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, type PropsWithChildren } from 'react';\n\nimport { type MessageContentBlock, type Message, type Tool } from '@dxos/ai';\nimport { Surface } from '@dxos/app-framework';\nimport { type Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { type Space } from '@dxos/react-client/echo';\nimport { Button, Icon, IconButton, type ThemedClassName } from '@dxos/react-ui';\nimport {\n MarkdownViewer,\n ToggleContainer as NativeToggleContainer,\n type ToggleContainerProps,\n} from '@dxos/react-ui-components';\nimport { mx } from '@dxos/react-ui-theme';\nimport { safeParseJson } from '@dxos/util';\n\nimport { Json, ToolBlock, isToolMessage } from './ToolBlock';\nimport { type ChatProcessor } from '../../hooks';\nimport { ToolboxContainer } from '../Toolbox';\n\nexport type ChatMessageProps = ThemedClassName<{\n space?: Space;\n processor?: ChatProcessor;\n message: Message;\n debug?: boolean;\n tools?: Tool[];\n onPrompt?: (text: string) => void;\n onDelete?: (id: string) => void;\n onAddToGraph?: (object: Obj.Any) => void;\n}>;\n\nexport const ChatMessage = ({\n classNames,\n space,\n processor,\n message,\n tools,\n onPrompt,\n onAddToGraph,\n}: ChatMessageProps) => {\n const { role, content = [] } = message;\n\n // TODO(burdon): Restructure types to make check unnecessary.\n if (isToolMessage(message)) {\n return (\n <MessageContainer classNames={mx(classNames, 'animate-[fadeIn_0.5s]')}>\n <ToolBlock classNames={panelClassNames} message={message} tools={tools} />\n </MessageContainer>\n );\n }\n\n return content.map((block, idx) => {\n // TODO(burdon): Filter empty messages.\n if (block.type === 'text' && block.text.replaceAll(/\\s+/g, '').length === 0) {\n return null;\n }\n\n const Component = components[block.type] ?? components.default;\n\n return (\n <MessageContainer\n key={idx}\n classNames={mx(classNames, 'animate-[fadeIn_0.5s]')}\n user={block.type === 'text' && role === 'user'}\n >\n <Component space={space} processor={processor} block={block} onPrompt={onPrompt} onAddToGraph={onAddToGraph} />\n </MessageContainer>\n );\n });\n};\n\ntype BlockComponent = FC<{\n space?: Space;\n /** @deprecated Replace with context */\n processor?: ChatProcessor;\n block: MessageContentBlock;\n onPrompt?: (text: string) => void;\n onAddToGraph?: (object: Obj.Any) => void;\n}>;\n\nconst components: Record<string, BlockComponent> = {\n //\n // Text\n //\n ['text' as const]: ({ block }) => {\n invariant(block.type === 'text');\n // const [open, setOpen] = useState(block.disposition === 'cot' && block.pending);\n const title = block.disposition ? titles[block.disposition] : undefined;\n if (!title) {\n return <MarkdownViewer classNames='[&>p]:animate-[fadeIn_0.5s]' content={block.text} />;\n }\n\n // TOOD(burdon): Store last time user opened/closed COT.\n // Autoclose when streaming ends.\n // useEffect(() => {\n // if (block.disposition === 'cot' && !block.pending) {\n // setOpen(false);\n // }\n // }, [block.disposition, block.pending]);\n\n return (\n <ToggleContainer\n // open={open}\n defaultOpen={systemDispositions.includes(block.disposition ?? '') && block.pending}\n title={title}\n icon={\n block.pending ? (\n <Icon icon={'ph--circle-notch--regular'} classNames='text-subdued ml-2 animate-spin' size={4} />\n ) : undefined\n }\n >\n <MarkdownViewer\n content={block.text}\n classNames={['pbe-2', systemDispositions.includes(block.disposition ?? '') && 'text-sm text-subdued']}\n />\n </ToggleContainer>\n );\n },\n\n //\n // JSON\n //\n ['json' as const]: ({ space, processor, block, onPrompt, onAddToGraph }) => {\n invariant(block.type === 'json');\n\n switch (block.disposition) {\n case 'tool_list': {\n return (\n <ToggleContainer title={titles[block.disposition]} defaultOpen={true}>\n <ToolboxContainer space={space} processor={processor} classNames='pbe-2' />\n </ToggleContainer>\n );\n }\n\n case 'suggest': {\n const { text = '' }: { text: string } = safeParseJson(block.json ?? '{}') ?? ({} as any);\n return <IconButton icon='ph--lightning--regular' label={text} onClick={() => onPrompt?.(text)} />;\n }\n\n case 'select': {\n const { options = [] }: { options: string[] } = safeParseJson(block.json ?? '{}') ?? ({} as any);\n return (\n <div className='flex flex-wrap gap-1'>\n {options.map((option, idx) => (\n <Button\n classNames={'animate-[fadeIn_0.5s] rounded-sm text-sm'}\n key={option}\n onClick={() => onPrompt?.(option)}\n >\n {option}\n </Button>\n ))}\n </div>\n );\n }\n\n case 'graph': {\n return (\n <div className='flex flex-wrap gap-1'>\n <Surface\n role='card'\n data={{ subject: JSON.parse(block.json ?? '{}') }}\n limit={1}\n fallback={<div className='font-mono text-xs text-pre'>{block.json}</div>}\n />\n {onAddToGraph && (\n <IconButton\n icon='ph--plus--regular'\n label='Add to graph'\n onClick={() => onAddToGraph?.(JSON.parse(block.json ?? '{}'))}\n />\n )}\n </div>\n );\n }\n\n default: {\n const title = block.disposition ? titles[block.disposition] : undefined;\n return (\n <ToggleContainer title={title ?? 'JSON'}>\n <Json data={safeParseJson(block.json ?? block)} />\n </ToggleContainer>\n );\n }\n }\n },\n\n //\n // Default\n //\n default: ({ block }) => {\n let title = titles[block.type];\n if (block.type === 'tool_use') {\n title = `Tool [${block.name}]`; // TODO(burdon): Get label from tool.\n }\n\n return (\n <ToggleContainer title={title ?? 'JSON'}>\n <Json data={block} />\n </ToggleContainer>\n );\n },\n};\n\n// TODO(burdon): Translations.\nconst titles: Record<string, string> = {\n ['cot' as const]: 'Chain of thought',\n ['artifact' as const]: 'Artifact',\n ['tool_use' as const]: 'Tool request',\n ['tool_result' as const]: 'Tool result',\n ['tool_list' as const]: 'Tools',\n ['artifact-update' as const]: 'Artifact(s) changed',\n};\n\nconst systemDispositions: string[] = ['cot', 'artifact-update'];\n\nconst panelClassNames = 'flex flex-col w-full px-2 bg-activeSurface rounded-sm';\nconst userClassNames = 'bg-[--user-fill] text-accentSurfaceText';\n\nconst ToggleContainer = (props: ToggleContainerProps) => {\n return <NativeToggleContainer {...props} classNames={mx(panelClassNames, props.classNames)} />;\n};\n\nconst MessageContainer = ({ children, classNames, user }: ThemedClassName<PropsWithChildren<{ user?: boolean }>>) => {\n if (!children) {\n return null;\n }\n\n return (\n <div role='list-item' className={mx('flex w-full', user && 'justify-end', classNames)}>\n <div className={mx(user ? ['px-2 py-1 rounded-sm', userClassNames] : 'w-full')}>{children}</div>\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { type AgentStatus, type Message, type Tool } from '@dxos/ai';\nimport { log } from '@dxos/log';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { NumericTabs, StatusRoll, ToggleContainer } from '@dxos/react-ui-components';\nimport { type JsonProps, Json as NativeJson } from '@dxos/react-ui-syntax-highlighter';\nimport { isNonNullable, isNotFalsy } from '@dxos/util';\n\nexport const isToolMessage = (message: Message) => {\n return message.content.some((block) => block.type === 'tool_use' || block.type === 'tool_result');\n};\n\nconst getToolName = (tool: Tool) => {\n return tool.namespace && tool.function ? `${tool.namespace}:${tool.function}` : tool.name.split('_').pop();\n};\n\nconst getToolCaption = (tool: Tool | undefined, status: AgentStatus | undefined) => {\n if (!tool) {\n return 'Calling tool...';\n }\n\n return status?.message ?? tool.caption ?? `Calling ${getToolName(tool)}...`;\n};\n\nexport type ToolBlockProps = ThemedClassName<{\n message: Message;\n tools?: Tool[];\n}>;\n\nexport const ToolBlock: FC<ToolBlockProps> = ({ classNames, message, tools }) => {\n const { content = [] } = message;\n\n let request: { tool: Tool | undefined; block: any } | undefined;\n const blocks = content.filter((block) => block.type === 'tool_use' || block.type === 'tool_result');\n const items = blocks\n .map((block) => {\n switch (block.type) {\n case 'tool_use': {\n // TODO(burdon): Skip these updates?\n if (block.pending && request?.block.id === block.id) {\n return null;\n }\n\n request = { tool: tools?.find((tool) => tool.name === block.name), block };\n return { title: getToolCaption(request.tool, block.currentStatus), block };\n }\n\n case 'tool_result': {\n if (!request) {\n log.warn('unexpected message', { block });\n return { title: 'Error', block };\n }\n\n return { title: `${getToolCaption(request.tool, undefined)} (Success)`, block };\n }\n\n default: {\n request = undefined;\n return { title: 'Error', block };\n }\n }\n })\n .filter(isNonNullable);\n\n return <ToolContainer classNames={classNames} items={items} />;\n};\n\nexport const ToolContainer: FC<ThemedClassName<{ items: { title: string; block: any }[] }>> = ({\n classNames,\n items,\n}) => {\n const tabsRef = useRef<HTMLDivElement>(null);\n const [selected, setSelected] = useState(0);\n const [open, setOpen] = useState(false);\n useEffect(() => {\n if (open) {\n tabsRef.current?.focus();\n }\n }, [open]);\n\n const handleSelect = (index: number) => {\n if (index === selected) {\n setOpen(false);\n } else {\n setSelected(index);\n }\n };\n\n const title = useMemo(() => {\n const lines = items.map((item) => item.title).filter(isNotFalsy);\n return <StatusRoll key='status-roll' lines={lines} duration={1_000} autoAdvance />;\n }, [items]);\n\n return (\n <ToggleContainer classNames={['flex flex-col', classNames]} title={title} open={open} onChangeOpen={setOpen}>\n <div className='w-full grid grid-cols-[32px_1fr]'>\n <NumericTabs ref={tabsRef} length={items.length} selected={selected} onSelect={handleSelect} />\n <Json data={items[selected].block} />\n </div>\n </ToggleContainer>\n );\n};\n\nexport const Json = ({ data }: Pick<JsonProps, 'data'>) => (\n <NativeJson data={data} classNames='!p-1 text-xs bg-transparent' />\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Message } from '@dxos/ai';\n\n// TODO(burdon): Move to util?\ntype Reducer<R, I> = (acc: R, value: I) => R;\n\n/**\n * Reducer that collapses related message blocks into single messages.\n * For example, combines tool request/response pairs into a single message.\n */\nexport const messageReducer: Reducer<{ messages: Message[]; current?: Message }, Message> = (\n { current, messages },\n message,\n) => {\n let i = 0;\n for (const block of message.content) {\n switch (block.type) {\n case 'tool_use':\n case 'tool_result': {\n if (current) {\n current.content.push(block);\n } else {\n current = {\n id: [message.id, i].join('_'),\n role: message.role,\n content: [block],\n } as any;\n messages.push(current as any);\n }\n break;\n }\n\n case 'text':\n default: {\n current = undefined;\n messages.push({\n id: [message.id, i].join('_'),\n role: message.role,\n content: [block],\n } as any);\n break;\n }\n }\n\n i++;\n }\n\n return { current, messages };\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;AAIA,SAASA,aAAAA,YAAWC,WAAAA,UAASC,YAAAA,iBAAgB;AAE7C,SAASC,sBAAAA,qBAAoBC,4BAAiD;AAC9E,SAASC,gBAAAA,eAAcC,mBAAAA,kBAAiBC,2BAA2B;AACnE,SAA2DC,0BAA0B;AACrF,SAAiCC,oBAAoB;AACrD,SAASC,oBAA2C;AACpD,SAASC,OAAAA,YAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,UAAAA,SAAQC,kBAA0CC,gBAAgB;AAC3E,SAASC,iBAAAA,sBAAqB;;;ACV9B,SAAsBC,OAAOC,UAAUC,cAAc;AAErD,SACEC,0BAMK;AAUP,SAASC,eAAe;AACxB,SAASC,WAAW;AACpB,SAASC,QAAoBC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsB/C,IAAMC,iBAAuC;EAC3CC,OAAON;EACPO,cAAc;AAChB;AASO,IAAMC,gBAAN,MAAMA;EA8CX,YACmBC,eACAC,WAAiCL,gBAClD;SAFiBI,gBAAAA;SACAC,WAAAA;SA3CFC,WAA8BZ,OAAO,CAAA,CAAE;SAMvCa,SAAkDb,OAAOc,MAAAA;SAM1DC,YAA6BhB,SAAS,MAAM,KAAKc,OAAOG,UAAUF,MAAAA;SAMlEG,QAAmCjB,OAAOc,MAAAA;SAM1CI,WAA8BnB,SAAS,MAAA;AACrD,YAAMmB,WAAW;WAAI,KAAKN,SAASI;;AACnC,UAAI,KAAKH,OAAOG,SAASE,SAASC,QAAQ;AACxC,cAAM,EAAEC,SAAS,GAAGC,KAAAA,IAASH,SAASI,IAAG;AACzC,cAAMC,UAAU;UAAE,GAAGF;UAAMD,SAAS;eAAIA;YAAS,KAAKP,OAAOG;;QAAO;AACpEE,iBAASM,KAAKD,OAAAA;MAChB;AAEA,aAAOL;IACT,CAAA;SAMQO,WAAkCX;SAqJlCY,wBAA8C,OAAOC,cAAAA;AAC3D,YAAMC,QAAQ,KAAKjB,SAASkB,YAAYD;AACxC,UAAI,CAACA,OAAO;AACV,eAAO,oBAAIE,IAAAA;MACb;AAEA,YAAMC,WAAW,oBAAID,IAAAA;AACrB,YAAME,QAAQC,IACZN,UAAUO,IAAI,OAAOC,aAAAA;AACnB,cAAM,EACJC,SAAS,CAACC,MAAAA,EAAO,IACf,MAAMT,MAAMU,GAAGC,MAAMnC,OAAOoC,IAAIL,SAASM,EAAE,CAAA,EAAGC,IAAG;AACrD,YAAI,CAACL,QAAQ;AACX;QACF;AACAN,iBAASY,IAAIR,SAASM,IAAI;UACxBG,SAASvC,WAAWgC,MAAAA;UACpBQ,MAAM,kBAAkBC,KAAKC,UAAUV,MAAAA,CAAAA;QACzC,CAAA;MACF,CAAA,CAAA;AAEF,aAAON;IACT;AArKE,SAAKiB,SAAS;SAAKrC,SAASsC,SAAS,CAAA;;EACvC;EAEA,IAAIC,eAAe;AACjB,WAAO,KAAKxC;EACd;EAEA,IAAIyC,UAAyB;AAC3B,WAAO,KAAKzC,cAAcyC;EAC5B;EAEA,IAAIC,oBAAoB;AACtB,WAAO,KAAKzC,SAASyC;EACvB;EAEA,IAAIH,QAAQ;AACV,WAAO,KAAKD;EACd;;;;EAKAK,SAASJ,OAA+B;AACtC,SAAKD,SAASC;EAChB;;;;EAKA,MAAMK,QAAQ/B,SAAiBgC,UAA0B,CAAC,GAAuB;;;;;;;YACnEC,MAAAA,4BAAAA,KAAMtD,QAAQuD,QAAO,QAAA;;;;AAEjC,WAAK/C,cAAcgD,QAAQC,GAAGH,KAAK,CAACI,YAAAA;AAClCzD,YAAI0D,KAAK,WAAW;UAAED;UAASE,YAAYN,IAAIO;QAAS,GAAA;;;;;;AAExD,aAAKtC,WAAWmC;AAChBJ,YAAIQ,UAAU,MAAA;AACZ7D,cAAI0D,KAAK,aAAa;YAAED;YAASE,YAAYN,IAAIO;UAAS,GAAA;;;;;;AAC1D,cAAI,KAAKtC,aAAamC,SAAS;AAC7B,iBAAKnC,WAAWX;UAClB;QACF,CAAA;AAGA8C,gBAAQrC,QAAQoC,GAAG,CAACpC,aAAAA;AAClBzB,gBAAM,MAAA;AACJ,iBAAKc,SAASI,QAAQ;iBAAI,KAAKJ,SAASI;cAAOO;;AAC/C,iBAAKV,OAAOG,QAAQF;UACtB,CAAA;QACF,CAAA;AAGA8C,gBAAQK,OAAON,GAAG,CAACO,UAAAA;AACjBpE,gBAAM,MAAA;AACJ,iBAAKe,OAAOG,QAAQkD;UACtB,CAAA;QACF,CAAA;AAEAN,gBAAQO,YAAYR,GAAG,CAACpC,aAAAA;AACtBpB,cAAI0D,KAAK,eAAe;YAAEtC,SAAAA;UAAQ,GAAA;;;;;;AAClC,eAAKX,SAASI,QAAQ;eAAI,KAAKJ,SAASI;YAAOO;;QACjD,CAAA;AAEAqC,gBAAQQ,iBAAiBT,GAAG,CAAC,EAAEpC,SAAAA,UAAS8C,OAAM,MAAE;AAC9C,gBAAMC,MAAM,KAAK1D,SAAS2D,KAAI,EAAGC,KAAK,CAACC,MAAMA,EAAEhC,OAAOlB,SAAQkB,EAAE;AAChE,gBAAMiC,UAAUJ,KAAKlD,QAAQoD,KAAK,CAACN,WAAUA,OAAMS,SAAS,UAAA;AAC5D,cAAI,CAACD,SAAS;AACZ;UACF;AAEA,gBAAMR,QAAQI,KAAKlD,QAAQoD,KACzB,CAACN,WAAwCA,OAAMS,SAAS,cAAcT,OAAMzB,OAAOiC,QAAQjC,EAAE;AAE/F,cAAIyB,OAAO;AACT,iBAAKtD,SAASI,QAAQ,KAAKJ,SAASI,MAAMkB,IAAI,CAACuC,MAAAA;AAC7C,kBAAIA,EAAEhC,OAAOlB,SAAQkB,IAAI;AACvB,uBAAO;kBACL,GAAGgC;kBACHrD,SAASqD,EAAErD,QAAQc,IAAI,CAACgC,WACtBA,OAAMS,SAAS,cAAcT,OAAMzB,OAAOiC,QAAQjC,KAAK;oBAAE,GAAGyB;oBAAOU,eAAeP;kBAAO,IAAIH,MAAAA;gBAEjG;cACF;AAEA,qBAAOO;YACT,CAAA;UACF,OAAO;AACLtE,gBAAI0E,KAAK,8BAAA,QAAA;;;;;;UACX;QACF,CAAA;MACF,CAAA;AAEA,UAAI;AACF,cAAM3D,WAAW,MAAM,KAAKR,cAAcgC,IAAI;UAC5Cf,WAAW;eAAK,KAAKhB,SAASgB,aAAa,CAAA;;UAC3CmD,qBAAqB,KAAKnE,SAASgB,WAAWO,IAAI,CAACC,aAAaA,SAASM,EAAE,KAAK,CAAA;;UAGhFQ,OAAO,KAAKD,UAAU,CAAA;UACtBxC,cAAc,KAAKG,SAASH;UAC5BuE,QAAQxD;UACRM,YAAY,KAAKlB,SAASkB;UAC1BmD,sBAAsB,KAAKtD;UAC3BuD,mBAAmB;YACjB1E,OAAO,KAAKI,SAASJ;UACvB;QACF,CAAA;AAEAJ,YAAI,aAAa;UAAEe;QAAS,GAAA;;;;;;MAC9B,SAASgE,KAAK;AACZ/E,YAAIgF,MAAMD,KAAAA,QAAAA;;;;;;AACV,YAAIA,eAAeE,SAASF,IAAI3D,QAAQ8D,SAAS,YAAA,GAAe;AAC9D,eAAKpE,MAAMD,QAAQ,IAAIsE,yBAAyB,yBAAyB;YAAEC,OAAOL;UAAI,CAAA;QACxF,OAAO;AACL,eAAKjE,MAAMD,QAAQ,IAAIoE,MAAM,oBAAoB;YAAEG,OAAOL;UAAI,CAAA;QAChE;MACF;AAEA,aAAO,KAAKM,OAAM;;;;;;;;EACpB;;;;;EAMA,MAAMC,SAA6B;AACjCtF,QAAI0D,KAAK,iBAAA,QAAA;;;;;;AAGT,SAAKpC,UAAUiE,MAAAA;AACf,WAAO,KAAKF,OAAM;EACpB;EAEA,MAAcA,SAA6B;AACzC,UAAMtE,WAAW,KAAKN,SAASI;AAC/BlB,UAAM,MAAA;AACJ,WAAKc,SAASI,QAAQ,CAAA;AACtB,WAAKH,OAAOG,QAAQF;IACtB,CAAA;AAEA,WAAOI;EACT;AAyBF;AAGO,IAAMoE,2BAAN,cAAuCF,MAAAA;EAAvC;;AACLO,gBAAO;;AACT;;;;ACpRA,SAASC,aAAaC,gBAAgB;AAGtC,SAASC,WAAW;AACpB,SAASC,OAAAA,YAAW;AACpB,SAASC,kBAAkB;AAC3B,SAASC,qBAAqB;;AAIvB,IAAMC,gBAAgB,CAACC,YAAAA;;;AAC5B,UAAM,CAACC,YAAYC,aAAAA,IAAiBR,SAAsB,CAAA,CAAE;AAC5DG,eACE,YAAA;AACE,YAAMI,eAAc,MAAMN,IAAIQ,MAAMC,QAAQJ,QAAQC,WAAWI,SAAS,CAAA,CAAE,GAAGC,OAAOR,aAAAA;AACpFI,oBAAcD,WAAAA;IAChB,GACA,GACA;MAACD;KAAQ;AAGX,UAAMO,eAAed,YAA4B,CAACe,KAAaC,WAAAA;AAC7Db,MAAAA,KAAIc,KAAK,UAAU;QAAEF;QAAKC;MAAO,GAAA;;;;;;IACnC,GAAG,CAAA,CAAE;AAEL,WAAO;MAACR;MAAYM;;;;;AACtB;;;AC1BA,SAASI,eAAe;AAExB,SAASC,cAAcC,uBAAuB;AAE9C,SAASC,UAAAA,SAAQC,WAAsB;AAahC,IAAMC,qBAAqB,CAACC,UAAAA;AACjC,QAAMC,sBAAsBC,gBAAgBC,aAAaC,kBAAkB;AAE3E,SAAOC,QAAqC,MAAA;AAC1C,QAAI,CAACL,OAAO;AACV,aAAOM;IACT;AAEA,WAAO;MACLC,OAAO,OAAO,EAAEA,MAAK,MAAE;AACrB,cAAMC,kBAAkBP,oBAAoBQ,IAAI,CAACC,aAAaA,SAASC,MAAM;AAC7E,cAAM,EAAEC,QAAO,IAAK,MAAMZ,MAAMa,GAC7BN,MAAMO,QAAOC,GAAE,GAAIP,gBAAgBC,IAAI,CAACE,WAAWG,QAAOE,KAAKL,MAAAA,CAAAA,CAAAA,CAAAA,EAC/DM,IAAG;AAEN,eACEL,QAMGM,OAAO,CAACC,WAAWC,YAAYb,OAAOc,IAAIC,SAASH,MAAAA,KAAkB,EAAA,CAAA,EAErED,OAAO,CAACC,WAAW,CAAC,CAACE,IAAIE,OAAOJ,MAAAA,CAAAA,EAChCV,IAAI,CAACU,YAAY;UAChBK,KAAKH,IAAIE,OAAOJ,MAAAA,EAAgBM,SAAQ;UACxCC,OAAOL,IAAIC,SAASH,MAAAA,KAAkB;QACxC,EAAA;MAEN;MACAQ,iBAAiB,OAAO,EAAEH,IAAG,MAAE;AAC7B,cAAML,SAAS,MAAMnB,MAAMa,GAAGN,MAAMO,QAAOc,IAAIJ,GAAAA,CAAAA,EAAMK,MAAK;AAC1D,eAAO;UAAEL;UAAKE,OAAOL,IAAIC,SAASH,MAAAA,KAAW;QAAG;MAClD;IACF;EACF,GAAG;IAACnB;IAAOC;GAAoB;AACjC;AAEA,IAAMmB,cAAc,CAACb,OAAemB,UAAkBA,MAAMI,YAAW,EAAGC,WAAWxB,MAAMuB,YAAW,CAAA;;;;ACxDtG,SAASE,WAAWC,WAAAA,UAASC,YAAAA,iBAAgB;AAE7C,SAASC,oBAAoB;AAC7B,SAASC,gBAAAA,eAAcC,mBAAAA,kBAAiBC,qBAAqB;AAC7D,SAASC,WAAWC,iBAAiBC,cAAcC,kBAAkBC,2BAA2B;AASzF,IAAMC,sBAAsB,CAAC,EAAEC,MAAK,MAA4B;;;AACrE,UAAMC,WAAWC,cAAcC,sBAAsBC,QAAQ;AAC7D,UAAMC,QAAQC,iBAAgBC,cAAaC,KAAK,EAAEC,KAAI;AAEtD,UAAM,CAACC,YAAAA,IAAgBC,UAAS,MAAM,IAAIC,aAAa,CAAA,CAAE,CAAA;AACzDC,cAAU,MAAA;AACR,iBAAWC,QAAQT,OAAO;AACxB,YAAI,CAACK,aAAaK,IAAID,IAAAA,GAAO;AAC3BJ,uBAAaM,SAASF,IAAAA;QACxB;MACF;IACF,GAAG;MAACJ;MAAcO,KAAKC,UAAUb,MAAMc,IAAI,CAACL,SAASA,KAAKM,EAAE,CAAA;KAAG;AAE/D,WAAOC,SACL,MACE,IAAIC,iBAAAA,EAAmBC,YAAY;MACjCC,IAAIC,UAAUC,KAAKzB,SAAS0B,KAAK;MACjCC,UAAU5B,QAAQ6B,gBAAgBH,KAAK1B,MAAM8B,EAAE,IAAIC;MACnDC,QAAQhC,QAAQiC,aAAaP,KAAK1B,MAAMgC,QAAQD,MAAAA,IAAaA;;MAE7DG,cAAcC,oBAAoBT,KAAKhB,YAAAA;IACzC,CAAA,GACF;MAACV;MAAOC;KAAS;;;;AAErB;;;;ACrCA,SAASmC,YAAAA,WAAUC,eAAAA,oBAAuE;;;ACA1F,SAASC,YAAiCC,kBAAkB;AAC5D,SAASC,YAAY;AACrB,SAASC,kBAAkBC,oCAAoC;AAE/D,SAASC,OAAAA,YAAW;AAEpB,SAASC,eAAe;;AAGjB,IAAMC,wBAAwB,CACnCC,IACAC,SACAC,YAAAA;AAEA,MAAI,CAACF,GAAGG,eAAe,CAACH,GAAGI,aAAa;AACtC,WAAOC;EACT;AACA,QAAMC,sBAAsBV,6BAA6BE,QAAQE,EAAAA,CAAAA;AACjE,MAAI,CAACM,qBAAqB;AACxB,WAAOD;EACT;AAEA,QAAME,MAAMZ,iBAAiBW,qBAAqBL,SAAS;IAAEC;EAAQ,CAAA;AAErE,SAAOV,WAAW,iBAAiB;IACjCgB,MAAMR,GAAGQ;IACTL,aAAaH,GAAGG;IAChBM,QAAQf,KAAKgB,eAAeV,GAAGI,WAAW;IAC1CO,SAAS,OAAOC,UAAAA;AACdf,MAAAA,KAAIgB,KAAK,yBAAyB;QAAEL,MAAMR,GAAGQ;QAAMD;QAAKK;MAAM,GAAA;;;;;;AAC9D,YAAME,WAAW,MAAMC,MAAMR,KAAK;QAChCS,QAAQ;QACRC,SAAS;UACP,gBAAgB;QAClB;QACAC,MAAMC,KAAKC,UAAUR,KAAAA;MACvB,CAAA;AAEA,aAAOnB,WAAW4B,QAAQ,MAAMP,SAASQ,KAAI,CAAA;IAC/C;EACF,CAAA;AACF;;;ACzCA,SAASC,cAAc;AACvB,OAAOC,iBAAiB;AAGxB,SAA8BC,cAAAA,aAAYC,qBAAqB;AAC/D,SAASC,QAAAA,aAAY;AACrB,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,qBAAqB;;AASvB,IAAMC,yBAAyB,OAAOC,YAAAA;AAC3CJ,YAAUI,QAAQC,YAAYC,WAAW,KAAKF,QAAQC,WAAW,CAAA,EAAGE,SAAS,OAAA,QAAA;;;;;;;;;AAC7E,QAAMC,QAAQJ,QAAQC,WAAW,CAAA;AACjCL,YAAUQ,MAAMC,WAAS,QAAA;;;;;;;;;AACzBT,YAAUQ,MAAMC,WAAS,QAAA;;;;;;;;;AACzB,SAAOC,mBAAmBF,MAAMC,WAAW;IAAEE,eAAeH,MAAMG;EAAc,CAAA;AAClF;AAEO,IAAMD,qBAAqB,OAChCE,KACAC,YAAAA;AAEA,QAAMC,MAAM,MAAMC,MAAMH,GAAAA;AACxB,QAAMI,OAAQ,MAAMF,IAAIG,KAAI;AAC5BhB,EAAAA,KAAI,QAAQ;IAAEe;EAAK,GAAA;;;;;;AAEnB,QAAME,QAA0B,CAAA;AAChC,aAAW,CAACC,MAAMC,QAAAA,KAAaC,OAAOC,QAAQN,KAAKO,KAAK,GAAG;AACzD,QAAI,OAAOH,aAAa,UAAU;AAChC;IACF;AAEA,UAAM,EAAE,GAAGI,QAAAA,IAAYJ;AACvB,eAAW,CAACK,QAAQC,CAAAA,KAAML,OAAOC,QAAQE,OAAAA,GAAU;AACjD,YAAMG,aAAwCD;AAC9CzB,MAAAA,KAAI,cAAc;QAAEkB;QAAMM;QAAQE;MAAW,GAAA;;;;;;AAE7C,YAAMC,qBACJD,WAAWE,YAAYC,IAAI,CAACC,cAAAA;AAC1B,cAAMC,WAAWC,kBAAkBF,WAAWf,IAAAA;AAC9C,eAAOgB;MACT,CAAA,KAAM,CAAA;AAER,YAAME,cAA+B;QACnCC,MAAM;QACNC,YAAY,CAAC;MACf;AAEA,YAAMC,qBAAkD,CAAA;AACxD,iBAAWN,aAAaH,oBAAoB;AAC1C3B,QAAAA,KAAI,aAAa;UAAE8B;QAAU,GAAA;;;;;;AAE7B,YACElB,SAASF,eAAewB,SAAS,aACjCtB,QAAQF,cAAc2B,UAAUH,SAAS,WACzCJ,UAAUQ,OAAO,WACjBR,UAAUS,SAAS3B,QAAQF,cAAc2B,UAAUE,MACnD;AACA;QACF;AAEAH,2BAAmBI,KAAKV,SAAAA;AAExB,YAAIA,UAAUW,QAAQ;AACpBR,sBAAYE,WAAYL,UAAUS,IAAI,IAAIzC,gBAAgBgC,UAAUW,MAAM;QAC5E,WAAW,OAAOX,UAAUI,SAAS,UAAU;AAC7C,gBAAM,EAAEK,MAAMD,IAAII,KAAKC,UAAU,GAAGF,OAAAA,IAAWX;AAC/CG,sBAAYE,WAAYI,IAAAA,IAAQzC,gBAAgB2C,MAAAA;AAChD,cAAIE,UAAU;AACZV,wBAAYU,aAAa,CAAA;AACzBV,wBAAYU,SAAUH,KAAKD,IAAAA;UAC7B;QACF;MACF;AAEAvC,MAAAA,KAAI,eAAe;QAAEiC;MAAY,GAAA;;;;;;AACjCxC,aAAOmD,aAAa/C,MAAKgD,UAAU,EAAEZ,WAAAA;AAErC,YAAMa,cAAcpB,WAAWoB,eAAepB,WAAWqB;AACzD,UAAI,CAACD,aAAa;AAChB9C,QAAAA,KAAIgD,KAAK,kBAAkB;UAAE9B;UAAMM;QAAO,GAAA;;;;;;AAC1C;MACF;AAEA,YAAMyB,WAA+B;QACnCC,UAAUnC;QACVG;QACAM;QACAI,YAAYQ;QACZ1B,eAAeE,SAASF;MAC1B;AAEAO,YAAMuB;;QAEJ5C,cAAc,WAAW;UACvB2C,MAAMY,YAAYjC,MAAMM,QAAQE,UAAAA;UAChCoB,aAAalC,SAASwC,eAAe,GAAGxC,QAAQwC,YAAY;;EAAON,WAAAA,KAAgBA;UACnFlB,YAAYK;UACZoB,SAAS,OAAOC,UAAAA;AACd,kBAAMC,WAAW,MAAMC,gBAAgBP,UAAUK,KAAAA;AACjD,mBAAO3D,YAAW8D,QAAQF,QAAAA;UAC5B;QACF,CAAA;MAAA;IAEJ;EACF;AAEA,SAAOtC;AACT;AAEA,IAAMkC,cAAc,CAACjC,MAAcM,QAAgBE,eAAAA;AACjD,MAAIA,WAAWgC,aAAa;AAC1B,WAAOhC,WAAWgC;EACpB;AAGA,MAAInB,OAAO,GAAGf,OAAOmC,YAAW,CAAA,IAAMzC,KAAK0C,WAAW,UAAU,GAAA,CAAA;AAChE,SAAOrB,KAAKlC,SAASwD,sBAAsB;AACzC,UAAMC,eAAevB,KAAKlC;AAE1B,eAAW0D,QAAQC,eAAe;AAChC,UAAIzB,KAAK0B,SAASF,IAAAA,GAAO;AACvBxB,eAAOA,KAAK2B,QAAQH,MAAM,EAAA;AAC1B;MACF;IACF;AACAxB,WAAOA,KAAKqB,WAAW,MAAM,GAAA,EAAKM,QAAQ,MAAM,EAAA;AAEhD,UAAMC,cAAc5B,KAAKlC;AACzB,QAAIyD,iBAAiBK,aAAa;AAChC;IACF;EACF;AACA5B,SAAOA,KAAKqB,WAAW,MAAM,GAAA,EAAKM,QAAQ,MAAM,EAAA,EAAIA,QAAQ,MAAM,EAAA;AAElE,SAAO3B,KAAK6B,MAAM,GAAGP,oBAAAA;AACvB;AAEA,IAAMA,uBAAuB;AAC7B,IAAMG,gBAAgB;EACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAWF,IAAMR,kBAAkB,OAAOP,UAA8BK,UAAAA;AAC3DtD,EAAAA,KAAIqE,KAAK,YAAY;IAAE7C,QAAQyB,SAASzB;IAAQe,MAAMU,SAAS/B;IAAMoC;EAAM,GAAA;;;;;;AAE3E,MAAI3C,MAAM2D,eAAerB,QAAAA;AACzB,QAAMsB,UAAuB;IAC3B/C,QAAQyB,SAASzB;IACjBgD,SAAS,CAAC;EACZ;AACA,QAAMC,QAAQ,IAAIC,gBAAAA;AAClB,MAAIC;AACJ,aAAW7C,aAAamB,SAASrB,YAAY;AAC3C,QAAI0B,MAAMxB,UAAUS,IAAI,MAAMqC,QAAW;AACvC;IACF;AAEA,YAAQ9C,UAAUQ,IAAE;MAClB,KAAK,UAAU;AACb,YAAIR,UAAU+C,SAAS;AACpBN,kBAAQC,QAAgB1C,UAAUS,IAAI,IAAIT,UAAUgD;QACvD;AACA;MACF;MACA,KAAK,QAAQ;AACXnE,cAAMA,IAAIuD,QAAQ,IAAIpC,UAAUS,IAAI,KAAKwC,mBAAmBzB,MAAMxB,UAAUS,IAAI,CAAC,CAAA;AACjF;MACF;MACA,KAAK,QAAQ;AACX,cAAMyC,QAAQ1B,MAAMxB,UAAUS,IAAI;AAGlC,cAAM0C,eAAepF,MAAKqF,eAAepD,UAAUW,MAAM;AACzDhD,eAAOmD,aAAaqC,YAAAA,EAAcD,KAAAA;AAElC,YAAIL,MAAM;AACR,gBAAM,IAAIQ,MAAM,6BAA6BrD,UAAUS,IAAI,EAAE;QAC/D;AACAoC,eAAOK;AACP;MACF;MACA,KAAK,SAAS;AACZP,cAAMW,IAAItD,UAAUS,MAAMe,MAAMxB,UAAUS,IAAI,CAAC;AAC/C;MACF;IACF;EACF;AAEA,MACGU,SAASvC,eAAewB,SAAS,aAAae,SAASvC,cAAc2B,UAAUH,SAAS,0BACzFe,SAASvC,eAAewB,SAAS,SACjC;AACCqC,YAAQC,QAAgBa,gBAAgB,MAAMC,qBAAqBrC,SAASvC,aAAa;EAC5F,WAAWuC,SAASvC,eAAewB,SAAS,aAAae,SAASvC,cAAc2B,UAAUH,SAAS,SAAS;AAC1GuC,UAAMW,IAAInC,SAASvC,cAAc2B,UAAUE,MAAMU,SAASvC,cAAc6E,GAAG;EAC7E;AAEA,MAAId,MAAMe,OAAO,GAAG;AAClB7E,WAAO,IAAI8D,MAAMgB,SAAQ,CAAA;EAC3B;AAEA,MAAId,MAAM;AACRJ,YAAQI,OAAOe,KAAKC,UAAUhB,IAAAA;AAC7BJ,YAAQC,QAAgB,cAAA,IAAkB;EAC7C;AAEAxE,EAAAA,KAAIqE,KAAK,WAAW;IAAE1D;IAAK4D;EAAQ,GAAA;;;;;;AACnC,QAAMhB,WAAW,MAAMzC,MAAMH,KAAK4D,OAAAA;AAElCvE,EAAAA,KAAIqE,KAAK,YAAY;IAAEuB,IAAIrC,SAASqC;IAAIC,QAAQtC,SAASsC;IAAQC,YAAYvC,SAASuC;EAAW,GAAA;;;;;;AAEjG,MAAIvC,SAASqC,IAAI;AACf,UAAMG,cAAcxC,SAASiB,QAAQwB,IAAI,cAAA;AACzC,QAAID,aAAa9B,SAAS,kBAAA,GAAqB;AAC7C,aAAO,MAAMV,SAASvC,KAAI;IAC5B,OAAO;AACL,aAAO,MAAMuC,SAAS0C,KAAI;IAC5B;EACF,OAAO;AACL,QAAI1C,SAASiB,QAAQwB,IAAI,cAAA,GAAiB/B,SAAS,kBAAA,GAAqB;AACtE,YAAMiC,eAAe,MAAM3C,SAAS0C,KAAI;AACxC,UAAIE;AACJ,UAAI;AACFA,gBAAQT,KAAKU,MAAMF,YAAAA;MACrB,QAAQ;AACNC,gBAAQD;MACV;AACAlG,MAAAA,KAAImG,MAAM,SAAS;QAAEA;MAAM,GAAA;;;;;;AAC3B,YAAM,IAAIhB,MAAMgB,MAAME,OAAO;IAC/B,OAAO;AACL,YAAMF,QAAQ,MAAM5C,SAAS0C,KAAI;AACjCjG,MAAAA,KAAImG,MAAM,SAAS;QAAEA;MAAM,GAAA;;;;;;AAC3B,YAAM,IAAIhB,MAAMgB,KAAAA;IAClB;EACF;AACF;AAEA,IAAM7B,iBAAiB,CAACrB,aAAAA;AACtB,MAAItC,MAAM;AACV,MAAI2F,OAAOrD,SAASC,QAAQ,KAAKD,SAASC,SAASqD,WAAWtD,SAASC,SAASqD,QAAQlG,SAAS,GAAG;AAClGM,UAAMsC,SAASC,SAASqD,QAAQ,CAAA,EAAG5F;EACrC,OAAO;AACLZ,cAAU,CAACuG,OAAOrD,SAASC,QAAQ,GAAA,QAAA;;;;;;;;;AACnCvC,UAAM,GAAGsC,SAASC,SAASsD,UAAU,CAAA,KAAM,OAAA,MAAavD,SAASC,SAASuD,IAAI;EAChF;AAEA,MAAI,CAACH,OAAOrD,SAASC,QAAQ,KAAKD,SAASC,SAASwD,UAAU;AAC5D/F,WAAOsC,SAASC,SAASwD;EAC3B;AAEA/F,SAAOsC,SAAS/B;AAEhB,SAAOP;AACT;AAEO,IAAM2E,uBAAuB,OAAO5E,kBAAAA;AACzC,UAAQA,cAAcwB,MAAI;IACxB,KAAK,WAAW;AACdnC,gBAAUW,cAAc2B,UAAUH,SAAS,wBAAA,QAAA;;;;;;;;;AAC3C,aAAO,UAAUxB,cAAc6E,GAAG;IACpC;IACA,KAAK,SAAS;AACZ,YAAMhC,WAAW,MAAMzC,MAAMJ,cAAciG,UAAU;QACnDnF,QAAQ;QACRgD,SAAS;UACP,gBAAgB;QAClB;QACAG,MAAM,cAAcjE,cAAckG,SAAS,cAAclG,cAAcmG,QAAQ,kBAAkBnG,cAAcoG,YAAY;MAC7H,CAAA;AACA,YAAMC,OAAO,MAAMxD,SAASvC,KAAI;AAChC,aAAO,UAAU+F,KAAKC,YAAY;IACpC;IACA,SAAS;AACP,YAAM,IAAI7B,MAAM,+BAAgCzE,cAAsBwB,IAAI,EAAE;IAC9E;EACF;AACF;AAOA,IAAMF,oBAAoB,CAACS,QAAawE,SAAAA;AACtC,SAAOhH,cAAcwC,QAAQ,CAACuC,OAAOkC,YAAAA;AACnC,QAAI,OAAOlC,UAAU,YAAYA,UAAU,QAAQ,UAAUA,SAAS,OAAOA,MAAMmC,SAAS,UAAU;AACpG,UAAInC,MAAMmC,KAAKC,WAAW,GAAA,GAAM;AAC9B,cAAMrF,WAAWrC,YAAYsG,IAAIiB,MAAMjC,MAAMmC,KAAK/C,MAAM,CAAA,CAAA;AACxD,YAAIrC,UAAU;AACZ,iBAAOmF,QAAQnF,QAAAA;QACjB,OAAO;AACL/B,UAAAA,KAAIgD,KAAK,cAAc;YAAEqE,KAAKrC,MAAMmC;YAAMF;UAAK,GAAA;;;;;;QACjD;MACF;IACF;AACA,WAAOC,QAAQlC,KAAAA;EACjB,CAAA;AACF;AAEA,IAAMsB,SAAS,CAACpD,aAAAA;AACd,SAAQA,SAAiBoE,YAAY;AACvC;;;;APzSO,IAAMC,mBAAmB,CAAC,EAC/BC,OAAO,QACPC,OACAC,MACAC,kBACAC,mBACAC,UACAC,cACAC,UACAC,kBAAiB,MACK;AACtB,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AACtC,QAAMC,cAAcC,iBAAgBC,cAAaC,KAAK;AAGtD,MAAIC,YAA2CH,iBAAgBC,cAAaG,kBAAkB;AAC9F,MAAIT,mBAAmB;AACrBQ,gBAAYE,OAAOC;EACrB;AAGA,QAAMC,WAAWC,SAASpB,OAAOqB,QAAOC,KAAKC,WAAAA,CAAAA;AAC7C,QAAM,CAACC,cAAcC,eAAAA,IAAmBC,UAA2B,CAAA,CAAE;AACrEC,EAAAA,WAAU,MAAA;AACRC,IAAAA,KAAI,6BAAA,QAAA;;;;;;AACJC,mBAAe,YAAA;AACb,YAAMC,SAAQ,MAAMC,QAAQC,IAAIb,SAASc,IAAI,CAACC,YAAYC,uBAAuBD,OAAAA,CAAAA,CAAAA;AACjFT,sBAAgBK,OAAMM,KAAI,CAAA;IAC5B,CAAA;EACF,GAAG;IAACjB;GAAS;AAGb,QAAMkB,SAASC,UAAAA;AACf,QAAMC,YAAYnB,SAASpB,OAAOqB,QAAOC,KAAKkB,YAAAA,CAAAA;AAC9C,QAAMC,SAASC,SAAQ,MAAOzC,OAAO0C,iBAAiB1C,IAAAA,IAAQ2C,QAAY;IAAC3C;GAAK;AAChF,QAAM,CAAC6B,OAAOe,UAAAA,IAAcH,SAAQ,MAAA;AAClCd,IAAAA,KAAI,qBAAA,QAAA;;;;;;AACJ,UAAME,SAA0B;SAC3BnB,YAAYyB,KAAI;SAChBZ;SACAe,UACAN,IAAI,CAACa,OAAOC,sBAAsBD,IAAIT,OAAOW,OAAOC,SAAS9B,UAAU+B,MAAMC,OAAO,IAAInD,OAAOoD,EAAAA,CAAAA,EAC/FC,OAAOC,cAAAA;;AAEZ,UAAMT,cAAa;MAAE9C;MAAMC;MAAOS;MAAU8C,SAASd;IAAO;AAC5D,WAAO;MAACX;MAAOe;;EACjB,GAAG;IAACpC;IAAUE;IAAaX;IAAOyC;IAAQjB;IAAce;GAAU;AAGlE,QAAMiB,eAAed,SACnB,MACEe,mBAAmB;IACjB1C,WAAWA,UAAUkB,IAAI,CAACyB,eAAe,GAAGA,WAAWC,IAAI;EAAKD,WAAWrD,YAAY,EAAE;IACzFC;IACAD;EACF,CAAA,GACF;IAACU;IAAWT;IAAUD;GAAa;AAIrC,QAAMuD,QACJxD,UAAUyD,gBAAgB,WACpBzD,UAAU0D,eAAeC,uBACzB3D,UAAU4D,aAAaC;AAE/B,QAAMC,eAAexB,SAAQ,MAAA;AAC3B,QAAI,CAACzC,MAAMkE,MAAMC,QAAQ;AACvB;IACF;AAEA,WAAO,IAAIC,aAAa;MACtBnE;MACAiE,OAAOlE,KAAKkE,MAAMC;IACpB,CAAA;EACF,GAAG;IAACnE,MAAMkE,MAAMC;IAAQlE;GAAiB;AAIzC,QAAMoE,YAAY5B,SAAQ,MAAA;AACxB,QAAI,CAACwB,cAAc;AACjB,aAAOtB;IACT;AAEAhB,IAAAA,KAAI,yBAAyB;MAAExB;IAAS,GAAA;;;;;;AACxC,WAAO,IAAImE,cAAcL,cAAc;MACrCpC;MACAe;MACA1C;MACAY;MACAyC;MACAI;IACF,CAAA;EACF,GAAG;IAACM;IAAcpC;IAAO3B;IAAmBY;IAAW8B;IAAYW;IAAcI;GAAM;AAEvF,SAAOU;AACT;AAGO,IAAMrD,SAASuD,OAAOC,OAAO;EAClCvD,OAAO,CAAA;EACPwD,QAAQ,CAAC;AACX,CAAA;;;;AQzIA,OAAOC,SAASC,YAAAA,WAAUC,aAAAA,YAAWC,gBAAyB;AAE9D,SAASC,qBAAgC;AACzC,SAASC,gBAAAA,eAAcC,mBAAAA,wBAAuB;AAI9C,SAASC,gBAAAA,qBAAoB;AAC7B,SAASC,OAAAA,YAAW;AACpB,SAASC,UAAAA,SAAoBC,YAAAA,iBAAgB;AAE7C,SAASC,sBAAsB;AAC/B,SAASC,UAAU;;AAgBZ,IAAMC,UAAU,CAAC,EACtBC,YACAC,WACAC,WACAC,UACAC,YACAC,kBACAC,QAAO,MACM;;;AACb,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,WACE,sBAAA,cAACC,OAAAA;MAAIC,WAAWC,GAAG,6CAA6Cb,UAAAA;OAC7DI,cAAcA,WAAWU,SAAS,KACjC,sBAAA,cAACC,SAAAA;MACCC,OAAM;MACNC,OAAOb,WAAWc,IAAI,CAAC,EAAEC,OAAM,OAAQ;QACrCC,MAAMD,QAAQC,QAAQ;QACtBC,aAAaF,QAAQE,eAAe;QACpCC,UAAUH,QAAQI,MAAML,IAAI,CAACM,YAAY;UAAEJ,MAAM,UAAKK,cAAcD,MAAAA,CAAAA;QAAU,EAAA;MAChF,EAAA;QAIHnB,oBAAoBA,iBAAiBS,SAAS,KAC7C,sBAAA,cAACC,SAAAA;MACCC,OAAM;MACNC,OAAOZ,iBAAiBa,IAAI,CAAC,EAAEC,OAAM,OAAQ;QAC3CC,MAAMD,QAAQC,QAAQ;QACtBC,aAAaF,QAAQE,eAAe;QACpCC,UAAUH,QAAQI,MAAML,IAAI,CAACM,YAAY;UAAEJ,MAAM,UAAKK,cAAcD,MAAAA,CAAAA;QAAU,EAAA;MAChF,EAAA;QAIHvB,aAAaA,UAAUa,SAAS,KAC/B,sBAAA,cAACC,SAAAA;MACCC,OAAM;MACNC,OAAOhB,UAAUiB,IAAI,CAAC,EAAEE,MAAMC,aAAaE,MAAK,OAAQ;QACtDH;QACAC;QACAC,UAAUC,MAAML,IAAI,CAAC,EAAEE,MAAAA,OAAMC,aAAAA,aAAW,OAAQ;UAAED,MAAM,UAAKK,cAAcL,KAAAA,CAAAA;UAASC,aAAAA;QAAY,EAAA;MAClG,EAAA;QAIHlB,YAAYA,SAASW,SAAS,KAC7B,sBAAA,cAACC,SAAAA;MACCC,OAAM;MACNC,OAAOd,SAASe,IAAI,CAAC,EAAEQ,SAAS,EAAEC,WAAWP,MAAMC,YAAW,GAAIE,MAAK,OAAQ;QAC7EH,MAAMA,QAAQO;QACdN;QACAC,UAAUC,MAAML,IAAI,CAAC,EAAEE,MAAAA,OAAMC,aAAAA,aAAW,OAAQ;UAAED,MAAM,UAAKA,KAAAA;UAAQC,aAAAA;QAAY,EAAA;MACnF,EAAA;QAIHnB,aAAaA,UAAUY,SAAS,KAC/B,sBAAA,cAACC,SAAAA;MAAQC,OAAM;MAAYC,OAAOf,UAAUgB,IAAI,CAAC,EAAEE,MAAMC,YAAW,OAAQ;QAAED;QAAMC;MAAY,EAAA;QAGjG,CAACjB,YAAYU,UACZ,CAACT,kBAAkBS,UACnB,CAACb,WAAWa,UACZ,CAACX,UAAUW,UACX,CAACZ,WAAWY,UAAU,sBAAA,cAACH,OAAAA,MAAKJ,EAAE,UAAA,CAAA,CAAA;;;;AAGtC;AAEA,IAAMQ,UAID,CAAC,EAAEC,OAAOC,OAAOX,QAAO,MAAE;;;AAC7B,UAAMsB,mBAAmB;AACzB,UAAMC,iBAAiB;AACvB,UAAMC,oBAAoBjB,GAAG,qDAAqDP,WAAWsB,gBAAAA;AAE7F,WACE,sBAAA,cAACjB,OAAAA,MACC,sBAAA,cAACoB,MAAAA;MAAGnB,WAAU;OAAgBI,KAAAA,GAC9B,sBAAA,cAACL,OAAAA;MAAIC,WAAWiB;OACbZ,MAAMC,IAAI,CAAC,EAAEE,MAAMC,aAAaC,SAAQ,GAAIU,MAC3C,sBAAA,cAACC,UAAAA;MAASC,KAAKF;OACZZ,QACC,sBAAA,cAACT,OAAAA;MAAIC,WAAWkB;OACd,sBAAA,cAACnB,OAAAA;MAAIC,WAAU;OAA6BQ,IAAAA,GAC5C,sBAAA,cAACT,OAAAA;MAAIC,WAAU;OAAgBS,WAAAA,CAAAA,GAGlCC,UAAUJ,IAAI,CAAC,EAAEE,MAAAA,OAAMC,aAAAA,aAAW,GAAIW,OACrC,sBAAA,cAACrB,OAAAA;MAAIuB,KAAKF;MAAGpB,WAAWC,GAAGiB,mBAAmBxB,WAAWsB,gBAAAA;OACvD,sBAAA,cAACjB,OAAAA;MAAIC,WAAU;OAAYQ,KAAAA,GAC3B,sBAAA,cAACT,OAAAA;MAAIC,WAAU;OAA6BS,YAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;;;;AAQ5D;AAIO,IAAMc,mBAAmB,CAAC,EAAEnC,YAAYoC,OAAOC,UAAS,MAAyB;;;AAEtF,UAAMC,sBAAsBC,iBAAgBC,cAAaC,kBAAkB;AAG3E,UAAMtC,WAAWuC,UAASN,OAAOO,QAAOC,KAAKC,WAAAA,CAAAA;AAC7C,UAAM,CAACC,cAAcC,eAAAA,IAAmBC,UAAoD,CAAA,CAAE;AAC9FC,IAAAA,WAAU,MAAA;AACRC,MAAAA,KAAI,6BAA6B;QAAE/C,UAAUA,SAASW;MAAO,GAAA;;;;;;AAC7DqC,qBAAe,YAAA;AACb,cAAM5B,QAAQ,MAAM6B,QAAQC,IAC1BlD,SAASe,IAAI,OAAOQ,aAAa;UAAEA;UAASH,OAAO,MAAM+B,uBAAuB5B,OAAAA;QAAS,EAAA,CAAA;AAG3FqB,wBAAgBxB,KAAAA;MAClB,CAAA;IACF,GAAG;MAACpB;KAAS;AAGb,UAAMD,YAAYwC,UAASN,OAAOO,QAAOC,KAAKW,aAAAA,CAAAA;AAE9C,WACE,sBAAA,cAACxD,SAAAA;MACCC;MACAI,YAAYiC,WAAWmB,QAAQpD,WAAWqD;MAC1CxD,WAAWqC;MACXnC,UAAU2C;MACV5C;;;;;AAGN;;;;ACpKA,SAAyBwD,YAAY;AACrC,SAASC,cAAc;AACvB,SAASC,qBAAqB;AAC9B,SAASC,kBAAkB;AAC3B,OAAOC,UAAiCC,eAAAA,cAAaC,aAAAA,YAAWC,WAAAA,UAASC,UAAAA,SAAQC,YAAAA,iBAAgB;AAEjG,SAASC,eAAe;AACxB,SAASC,sBAAsBC,cAAcC,uBAAAA,4BAA2B;AACxE,SAASC,aAAa;AACtB,SAASC,KAAKC,OAAAA,MAAKC,OAAAA,YAAW;AAC9B,SAASC,OAAAA,YAAW;AACpB,SAASC,qBAAqB;AAC9B,SAAuBC,UAAUC,gBAA4B;AAC7D,SAASC,mBAAmB;AAC5B,SAASC,kBAAAA,uBAA4C;AACrD,SAASC,YAA6DC,kBAAkB;AAExF,SAASC,MAAAA,WAAU;AACnB,SAASC,cAAAA,mBAAkB;;;;AClB3B,OAAOC,YAAW;AAElB,SAASC,YAAYC,QAAQC,kBAAAA,uBAAsB;AACnD,SAASC,MAAAA,WAAU;AAYZ,IAAMC,cAAc,CAAC,EAAEC,YAAYC,WAAWC,YAAYC,QAAO,MAAoB;;;AAC1F,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AAEpC,WACE,gBAAAC,OAAA,cAACC,OAAAA;MAAIC,WAAU;OAEb,gBAAAF,OAAA,cAACG,OAAOC,MAAI;MAACC,OAAO;MAAUC,UAAAA;OAC5B,gBAAAN,OAAA,cAACG,OAAOI,eAAa;MAACC,YAAW;QACjC,gBAAAR,OAAA,cAACG,OAAOM,SAAO,MACb,gBAAAT,OAAA,cAACG,OAAOO,QAAM;MAACL,OAAO;MAAUG,YAAW;OAAU,QAAA,CAAA,CAAA,GAMvDd,cACA,gBAAAM,OAAA,cAACW,YAAAA;MACCL,UAAU,CAACZ;MACXc,YAAW;MACXI,SAAQ;MACRC,MAAM;MACNC,MAAK;MACLC,UAAAA;MACAC,OAAOpB,EAAE,0BAAA;MACTqB,SAAS,MAAMtB,UAAU;QAAEuB,MAAM;MAAS,CAAA;UAG5C,gBAAAlB,OAAA,cAACW,YAAAA;MACCH,YAAW;MACXI,SAAQ;MACRC,MAAM;MACNC,MAAK;MACLC,UAAAA;MACAC,OAAOpB,EAAE,oBAAA;MACTqB,SAAS,MAAMtB,UAAU;QAAEuB,MAAM;MAAmB,CAAA;QAIvD1B,cACC,gBAAAQ,OAAA,cAACW,YAAAA;MACCL,UAAU,CAACZ;MACXc,YAAYW,IAAG,UAAU1B,aAAa,gBAAA;MACtCmB,SAAQ;MACRC,MAAM;MACNC,MAAK;MACLC,UAAAA;MACAK,WAAAA;MACAJ,OAAOpB,EAAE,mBAAA;MACTyB,aAAa,MAAM1B,UAAU;QAAEuB,MAAM;MAAe,CAAA;MACpDI,WAAW,MAAM3B,UAAU;QAAEuB,MAAM;MAAc,CAAA;MACjDK,cAAc,MAAM5B,UAAU;QAAEuB,MAAM;MAAe,CAAA;MACrDM,YAAY,MAAM7B,UAAU;QAAEuB,MAAM;MAAc,CAAA;;;;;AAK5D;;;;ACvEA,OAAOO,UAASC,WAAAA,gBAAe;AAG/B,SAASC,cAAcC,cAAAA,aAAYC,OAAOC,kBAAAA,uBAAsB;AAUzD,IAAMC,kBAAkB,CAAC,EAAEC,mBAAmBC,YAAYC,SAAQ,MAAwB;;;AAC/F,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AACpC,UAAMC,mBAAmBC,SACvB,MAAMR,mBAAmBS,MAAAA,EAAQC,IAAI,CAACC,eAAe;MAAEC,KAAKD,UAAUC;MAAKC,OAAOF,UAAUG;IAAK,EAAA,GACjG;MAACd;KAAkB;AAGrB,WACE,gBAAAe,OAAA,cAACC,aAAaC,MAAI,MAChB,gBAAAF,OAAA,cAACC,aAAaE,SAAO;MAACC,SAAAA;MAAQC,UAAU,CAACb,kBAAkBc;OACzD,gBAAAN,OAAA,cAACO,aAAAA;MAAWC,MAAK;MAAoBC,SAAQ;MAAQC,MAAM;MAAGC,UAAAA;MAASb,OAAOV,EAAE,sBAAA;SAElF,gBAAAY,OAAA,cAACC,aAAaW,QAAM,MAClB,gBAAAZ,OAAA,cAACC,aAAaY,SAAO;MAACC,MAAK;OACzB,gBAAAd,OAAA,cAACC,aAAac,UAAQ,MACnBvB,kBAAkBG,IAAI,CAACqB,WACtB,gBAAAhB,OAAA,cAACC,aAAagB,MAAI;MAACpB,KAAKmB,OAAOnB;OAC7B,gBAAAG,OAAA,cAACkB,MAAMhB,MAAI,MACT,gBAAAF,OAAA,cAACkB,MAAMC,UAAQ;MACbC,SAAS,CAAC,CAAClC,YAAYmC,KAAK,CAACzB,cAAcA,UAAUC,QAAQmB,OAAOnB,GAAG;MACvEyB,iBAAiB,CAACF,YAAYjC,WAAW6B,OAAOnB,KAAK,CAAC,CAACuB,OAAAA;QAIzD,gBAAApB,OAAA,cAACkB,MAAMK,OAAK;MAACC,YAAW;OAAOR,OAAOlB,KAAK,CAAA,CAAA,CAAA,CAAA,GAKnD,gBAAAE,OAAA,cAACC,aAAawB,OAAK,IAAA,CAAA,CAAA,CAAA;;;;AAK7B;;;;AC/CA,OAAOC,UAASC,eAAAA,oBAAmB;AAInC,SAASC,UAAAA,SAAQC,OAAAA,MAAKC,OAAAA,YAAW;AACjC,SAA+BC,eAAeC,kBAAAA,uBAAsB;AACpE,SAASC,iBAAgE;AACzE,SAASC,iBAAAA,sBAAqB;AAUvB,IAAMC,iBAAiB,CAAC,EAAEC,YAAYC,OAAOC,SAASC,SAAQ,MAAuB;;;AAC1F,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AAEpC,UAAM,CAACC,KAAAA,IAASC,cAAmC,YAAA;AACjD,YAAMC,UAAU,MAAMC,KAAIC,MAAMC,QAAQX,QAAQQ,QAAQI,SAAS,CAAA,CAAE;AACnE,aAAOJ,QAAQK,OAAOC,cAAAA,EAAeC,IAAI,CAACC,SAAS;QAAEX,IAAIW,IAAIX;QAAIY,OAAOC,KAAIC,SAASH,GAAAA,KAAQA,IAAIX;MAAG,EAAA;IACtG,GAAG;MAACL;KAAQ;AAEZ,UAAMoB,eAAeC,aACnB,CAACC,MAAMC,QAAAA;AAGL,YAAMf,UAAUT,MAAMyB,GAAGC,MAAMC,QAAOC,WAAU,CAAA,EAAIC,QAAO;AAC3D,aAAOpB,QACJO,IAAI,CAAC,EAAEc,OAAM,OAAQ;QAAExB,IAAIwB,OAAOxB;QAAIY,OAAOC,KAAIC,SAASU,MAAAA,KAAW;MAAG,EAAA,EACxEhB,OAAO,CAAC,EAAER,IAAIY,MAAK,MAAO,CAACM,IAAIO,SAASzB,EAAAA,KAAOY,MAAMc,kBAAiB,EAAGD,SAASR,KAAKS,kBAAiB,CAAA,CAAA;IAC7G,GACA;MAAChC;KAAM;AAGT,WACE,gBAAAiC,OAAA,cAACC,WAAAA;MACCnC;MACAoC,MAAK;MACLC,aAAajC,EAAE,6BAAA;MACfI;MACA8B,UAAUhB;MACVnB;;;;;AAGN;;;;AC/CA,OAAOoC,YAAW;AAElB,SAASC,MAAMC,eAAe;AAC9B,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAOnB,IAAMC,sBAAsB,CAAC,EAAEC,OAAOC,WAAU,MAA4B;;;AACjF,QAAID,OAAO;AACT,aACE,gBAAAE,OAAA,cAACC,QAAQC,SAAO;QAACC,SAASL,MAAMM;QAASC,eAAe;SACtD,gBAAAL,OAAA,cAACM,MAAAA;QAAKC,MAAK;QAA8BC,YAAYC;QAAWC,MAAM;;IAG5E;AAEA,WAAO,gBAAAV,OAAA,cAACW,SAAAA;MAAQC,QAAQb;;;;;AAC1B;;;;ACrBA,OAAOc,UAA6BC,YAAYC,WAAAA,gBAAe;AAG/D,SAASC,iBAAiB;AAI1B,SAASC,uBAA8C;AACvD,SAASC,MAAAA,WAAU;AACnB,SAASC,qBAAqB;;;;ACT9B,OAAOC,YAAgD;AAGvD,SAASC,eAAe;AAExB,SAASC,aAAAA,kBAAiB;AAE1B,SAASC,QAAQC,QAAAA,OAAMC,cAAAA,mBAAwC;AAC/D,SACEC,gBACAC,mBAAmBC,6BAEd;AACP,SAASC,MAAAA,WAAU;AACnB,SAASC,qBAAqB;;;;ACd9B,OAAOC,UAAkBC,aAAAA,YAAWC,WAAAA,UAASC,QAAQC,YAAAA,iBAAgB;AAGrE,SAASC,OAAAA,YAAW;AAEpB,SAASC,aAAaC,YAAYC,uBAAuB;AACzD,SAAyBC,QAAQC,kBAAkB;AACnD,SAASC,iBAAAA,gBAAeC,kBAAkB;;AAEnC,IAAMC,gBAAgB,CAACC,YAAAA;AAC5B,SAAOA,QAAQC,QAAQC,KAAK,CAACC,UAAUA,MAAMC,SAAS,cAAcD,MAAMC,SAAS,aAAA;AACrF;AAEA,IAAMC,eAAc,CAACC,SAAAA;AACnB,SAAOA,KAAKC,aAAaD,KAAKE,WAAW,GAAGF,KAAKC,SAAS,IAAID,KAAKE,QAAQ,KAAKF,KAAKG,KAAKC,MAAM,GAAA,EAAKC,IAAG;AAC1G;AAEA,IAAMC,iBAAiB,CAACN,MAAwBO,WAAAA;AAC9C,MAAI,CAACP,MAAM;AACT,WAAO;EACT;AAEA,SAAOO,QAAQb,WAAWM,KAAKQ,WAAW,WAAWT,aAAYC,IAAAA,CAAAA;AACnE;AAOO,IAAMS,YAAgC,CAAC,EAAEC,YAAYhB,SAASiB,MAAK,MAAE;;;AAC1E,UAAM,EAAEhB,UAAU,CAAA,EAAE,IAAKD;AAEzB,QAAIkB;AACJ,UAAMC,SAASlB,QAAQmB,OAAO,CAACjB,UAAUA,MAAMC,SAAS,cAAcD,MAAMC,SAAS,aAAA;AACrF,UAAMiB,QAAQF,OACXG,IAAI,CAACnB,UAAAA;AACJ,cAAQA,MAAMC,MAAI;QAChB,KAAK,YAAY;AAEf,cAAID,MAAMoB,WAAWL,SAASf,MAAMqB,OAAOrB,MAAMqB,IAAI;AACnD,mBAAO;UACT;AAEAN,oBAAU;YAAEZ,MAAMW,OAAOQ,KAAK,CAACnB,SAASA,KAAKG,SAASN,MAAMM,IAAI;YAAGN;UAAM;AACzE,iBAAO;YAAEuB,OAAOd,eAAeM,QAAQZ,MAAMH,MAAMwB,aAAa;YAAGxB;UAAM;QAC3E;QAEA,KAAK,eAAe;AAClB,cAAI,CAACe,SAAS;AACZ3B,YAAAA,KAAIqC,KAAK,sBAAsB;cAAEzB;YAAM,GAAA;;;;;;AACvC,mBAAO;cAAEuB,OAAO;cAASvB;YAAM;UACjC;AAEA,iBAAO;YAAEuB,OAAO,GAAGd,eAAeM,QAAQZ,MAAMuB,MAAAA,CAAAA;YAAwB1B;UAAM;QAChF;QAEA,SAAS;AACPe,oBAAUW;AACV,iBAAO;YAAEH,OAAO;YAASvB;UAAM;QACjC;MACF;IACF,CAAA,EACCiB,OAAOvB,cAAAA;AAEV,WAAO,gBAAAX,OAAA,cAAC4C,eAAAA;MAAcd;MAAwBK;;;;;AAChD;AAEO,IAAMS,gBAAiF,CAAC,EAC7Fd,YACAK,MAAK,MACN;;;AACC,UAAMU,UAAU1C,OAAuB,IAAA;AACvC,UAAM,CAAC2C,UAAUC,WAAAA,IAAe3C,UAAS,CAAA;AACzC,UAAM,CAAC4C,MAAMC,OAAAA,IAAW7C,UAAS,KAAA;AACjCH,IAAAA,WAAU,MAAA;AACR,UAAI+C,MAAM;AACRH,gBAAQK,SAASC,MAAAA;MACnB;IACF,GAAG;MAACH;KAAK;AAET,UAAMI,eAAe,CAACC,UAAAA;AACpB,UAAIA,UAAUP,UAAU;AACtBG,gBAAQ,KAAA;MACV,OAAO;AACLF,oBAAYM,KAAAA;MACd;IACF;AAEA,UAAMb,QAAQtC,SAAQ,MAAA;AACpB,YAAMoD,QAAQnB,MAAMC,IAAI,CAACmB,SAASA,KAAKf,KAAK,EAAEN,OAAOtB,UAAAA;AACrD,aAAO,gBAAAZ,OAAA,cAACO,YAAAA;QAAWiD,KAAI;QAAcF;QAAcG,UAAU;QAAOC,aAAAA;;IACtE,GAAG;MAACvB;KAAM;AAEV,WACE,gBAAAnC,OAAA,cAACQ,iBAAAA;MAAgBsB,YAAY;QAAC;QAAiBA;;MAAaU;MAAcQ;MAAYW,cAAcV;OAClG,gBAAAjD,OAAA,cAAC4D,OAAAA;MAAIC,WAAU;OACb,gBAAA7D,OAAA,cAACM,aAAAA;MAAYwD,KAAKjB;MAASkB,QAAQ5B,MAAM4B;MAAQjB;MAAoBkB,UAAUZ;QAC/E,gBAAApD,OAAA,cAACS,MAAAA;MAAKwD,MAAM9B,MAAMW,QAAAA,EAAU7B;;;;;AAIpC;AAEO,IAAMR,OAAO,CAAC,EAAEwD,KAAI,MAA2B;;;WACpD,gBAAAjE,OAAA,cAACU,YAAAA;MAAWuD;MAAYnC,YAAW;;;;;;;;;AD1E9B,IAAMoC,cAAc,CAAC,EAC1BC,YACAC,OACAC,WACAC,SACAC,OACAC,UACAC,aAAY,MACK;;;AACjB,UAAM,EAAEC,MAAMC,UAAU,CAAA,EAAE,IAAKL;AAG/B,QAAIM,cAAcN,OAAAA,GAAU;AAC1B,aACE,gBAAAO,OAAA,cAACC,kBAAAA;QAAiBX,YAAYY,IAAGZ,YAAY,uBAAA;SAC3C,gBAAAU,OAAA,cAACG,WAAAA;QAAUb,YAAYc;QAAiBX;QAAkBC;;IAGhE;AAEA,WAAOI,QAAQO,IAAI,CAACC,OAAOC,QAAAA;AAEzB,UAAID,MAAME,SAAS,UAAUF,MAAMG,KAAKC,WAAW,QAAQ,EAAA,EAAIC,WAAW,GAAG;AAC3E,eAAO;MACT;AAEA,YAAMC,YAAYC,WAAWP,MAAME,IAAI,KAAKK,WAAWC;AAEvD,aACE,gBAAAd,OAAA,cAACC,kBAAAA;QACCc,KAAKR;QACLjB,YAAYY,IAAGZ,YAAY,uBAAA;QAC3B0B,MAAMV,MAAME,SAAS,UAAUX,SAAS;SAExC,gBAAAG,OAAA,cAACY,WAAAA;QAAUrB;QAAcC;QAAsBc;QAAcX;QAAoBC;;IAGvF,CAAA;;;;AACF;AAWA,IAAMiB,aAA6C;;;;EAIjD,CAAC,MAAA,GAAkB,CAAC,EAAEP,MAAK,MAAE;AAC3BW,IAAAA,WAAUX,MAAME,SAAS,QAAA,QAAA;;;;;;;;;AAEzB,UAAMU,QAAQZ,MAAMa,cAAcC,OAAOd,MAAMa,WAAW,IAAIE;AAC9D,QAAI,CAACH,OAAO;AACV,aAAO,gBAAAlB,OAAA,cAACsB,gBAAAA;QAAehC,YAAW;QAA8BQ,SAASQ,MAAMG;;IACjF;AAUA,WACE,gBAAAT,OAAA,cAACuB,kBAAAA;;MAECC,aAAaC,mBAAmBC,SAASpB,MAAMa,eAAe,EAAA,KAAOb,MAAMqB;MAC3ET;MACAU,MACEtB,MAAMqB,UACJ,gBAAA3B,OAAA,cAAC6B,OAAAA;QAAKD,MAAM;QAA6BtC,YAAW;QAAiCwC,MAAM;WACzFT;OAGN,gBAAArB,OAAA,cAACsB,gBAAAA;MACCxB,SAASQ,MAAMG;MACfnB,YAAY;QAAC;QAASmC,mBAAmBC,SAASpB,MAAMa,eAAe,EAAA,KAAO;;;EAItF;;;;EAKA,CAAC,MAAA,GAAkB,CAAC,EAAE5B,OAAOC,WAAWc,OAAOX,UAAUC,aAAY,MAAE;AACrEqB,IAAAA,WAAUX,MAAME,SAAS,QAAA,QAAA;;;;;;;;;AAEzB,YAAQF,MAAMa,aAAW;MACvB,KAAK,aAAa;AAChB,eACE,gBAAAnB,OAAA,cAACuB,kBAAAA;UAAgBL,OAAOE,OAAOd,MAAMa,WAAW;UAAGK,aAAa;WAC9D,gBAAAxB,OAAA,cAAC+B,kBAAAA;UAAiBxC;UAAcC;UAAsBF,YAAW;;MAGvE;MAEA,KAAK,WAAW;AACd,cAAM,EAAEmB,OAAO,GAAE,IAAuBuB,cAAc1B,MAAM2B,QAAQ,IAAA,KAAU,CAAC;AAC/E,eAAO,gBAAAjC,OAAA,cAACkC,aAAAA;UAAWN,MAAK;UAAyBO,OAAO1B;UAAM2B,SAAS,MAAMzC,WAAWc,IAAAA;;MAC1F;MAEA,KAAK,UAAU;AACb,cAAM,EAAE4B,UAAU,CAAA,EAAE,IAA4BL,cAAc1B,MAAM2B,QAAQ,IAAA,KAAU,CAAC;AACvF,eACE,gBAAAjC,OAAA,cAACsC,OAAAA;UAAIC,WAAU;WACZF,QAAQhC,IAAI,CAACmC,QAAQjC,QACpB,gBAAAP,OAAA,cAACyC,QAAAA;UACCnD,YAAY;UACZyB,KAAKyB;UACLJ,SAAS,MAAMzC,WAAW6C,MAAAA;WAEzBA,MAAAA,CAAAA,CAAAA;MAKX;MAEA,KAAK,SAAS;AACZ,eACE,gBAAAxC,OAAA,cAACsC,OAAAA;UAAIC,WAAU;WACb,gBAAAvC,OAAA,cAAC0C,SAAAA;UACC7C,MAAK;UACL8C,MAAM;YAAEC,SAASC,KAAKC,MAAMxC,MAAM2B,QAAQ,IAAA;UAAM;UAChDc,OAAO;UACPC,UAAU,gBAAAhD,OAAA,cAACsC,OAAAA;YAAIC,WAAU;aAA8BjC,MAAM2B,IAAI;YAElErC,gBACC,gBAAAI,OAAA,cAACkC,aAAAA;UACCN,MAAK;UACLO,OAAM;UACNC,SAAS,MAAMxC,eAAeiD,KAAKC,MAAMxC,MAAM2B,QAAQ,IAAA,CAAA;;MAKjE;MAEA,SAAS;AACP,cAAMf,QAAQZ,MAAMa,cAAcC,OAAOd,MAAMa,WAAW,IAAIE;AAC9D,eACE,gBAAArB,OAAA,cAACuB,kBAAAA;UAAgBL,OAAOA,SAAS;WAC/B,gBAAAlB,OAAA,cAACiD,MAAAA;UAAKN,MAAMX,cAAc1B,MAAM2B,QAAQ3B,KAAAA;;MAG9C;IACF;EACF;;;;EAKAQ,SAAS,CAAC,EAAER,MAAK,MAAE;AACjB,QAAIY,QAAQE,OAAOd,MAAME,IAAI;AAC7B,QAAIF,MAAME,SAAS,YAAY;AAC7BU,cAAQ,SAASZ,MAAM4C,IAAI;IAC7B;AAEA,WACE,gBAAAlD,OAAA,cAACuB,kBAAAA;MAAgBL,OAAOA,SAAS;OAC/B,gBAAAlB,OAAA,cAACiD,MAAAA;MAAKN,MAAMrC;;EAGlB;AACF;AAGA,IAAMc,SAAiC;EACrC,CAAC,KAAA,GAAiB;EAClB,CAAC,UAAA,GAAsB;EACvB,CAAC,UAAA,GAAsB;EACvB,CAAC,aAAA,GAAyB;EAC1B,CAAC,WAAA,GAAuB;EACxB,CAAC,iBAAA,GAA6B;AAChC;AAEA,IAAMK,qBAA+B;EAAC;EAAO;;AAE7C,IAAMrB,kBAAkB;AACxB,IAAM+C,iBAAiB;AAEvB,IAAM5B,mBAAkB,CAAC6B,UAAAA;;;AACvB,WAAO,gBAAApD,OAAA,cAACqD,uBAAAA;MAAuB,GAAGD;MAAO9D,YAAYY,IAAGE,iBAAiBgD,MAAM9D,UAAU;;;;;AAC3F;AAEA,IAAMW,mBAAmB,CAAC,EAAEqD,UAAUhE,YAAY0B,KAAI,MAA0D;;;AAC9G,QAAI,CAACsC,UAAU;AACb,aAAO;IACT;AAEA,WACE,gBAAAtD,OAAA,cAACsC,OAAAA;MAAIzC,MAAK;MAAY0C,WAAWrC,IAAG,eAAec,QAAQ,eAAe1B,UAAAA;OACxE,gBAAAU,OAAA,cAACsC,OAAAA;MAAIC,WAAWrC,IAAGc,OAAO;QAAC;QAAwBmC;UAAkB,QAAA;OAAYG,QAAAA,CAAAA;;;;AAGvF;;;AEhOO,IAAMC,iBAA+E,CAC1F,EAAEC,SAASC,SAAQ,GACnBC,YAAAA;AAEA,MAAIC,IAAI;AACR,aAAWC,SAASF,QAAQG,SAAS;AACnC,YAAQD,MAAME,MAAI;MAChB,KAAK;MACL,KAAK,eAAe;AAClB,YAAIN,SAAS;AACXA,kBAAQK,QAAQE,KAAKH,KAAAA;QACvB,OAAO;AACLJ,oBAAU;YACRQ,IAAI;cAACN,QAAQM;cAAIL;cAAGM,KAAK,GAAA;YACzBC,MAAMR,QAAQQ;YACdL,SAAS;cAACD;;UACZ;AACAH,mBAASM,KAAKP,OAAAA;QAChB;AACA;MACF;MAEA,KAAK;MACL,SAAS;AACPA,kBAAUW;AACVV,iBAASM,KAAK;UACZC,IAAI;YAACN,QAAQM;YAAIL;YAAGM,KAAK,GAAA;UACzBC,MAAMR,QAAQQ;UACdL,SAAS;YAACD;;QACZ,CAAA;AACA;MACF;IACF;AAEAD;EACF;AAEA,SAAO;IAAEH;IAASC;EAAS;AAC7B;;;AHtBO,IAAMW,aAAaC,2BACxB,CAAC,EAAEC,YAAYC,UAAUC,OAAOC,WAAWC,UAAUC,WAAW,MAAM,GAAGC,MAAAA,GAASC,iBAAAA;;;AAChF,UAAMC,UAAUC,SAAQ,MAAA;AACtB,aAAOR,UAAUS,SAASC,MAAMC,OAAOC,cAAcZ,UAAUa,eAAeC,UAAUC,OAAM,CAAA,EAAIJ;IACpG,GAAG;MAACX;KAAS;AAGb,UAAM,EAAEG,UAAUa,mBAAmB,CAAA,EAAE,IAAKR,SAAQ,MAAA;AAClD,UAAIJ,UAAU;AACZ,gBAAQD,YAAY,CAAA,GAAIc,OAAmDC,gBAAgB;UACzFf,UAAU,CAAA;QACZ,CAAA;MACF,OAAO;AACL,eAAO;UAAEA,UAAUA,YAAY,CAAA;QAAG;MACpC;IACF,GAAG;MAACA;MAAUC;KAAS;AAEvB,WACE,gBAAAe,OAAA,cAACC,iBAAAA;MAAgBC,KAAKf;MAAcP;MAAwBuB,MAAAA;OAC1D,gBAAAH,OAAA,cAACI,OAAAA;MACCC,MAAK;MACLC,WAAWC,IAAGV,iBAAiBW,SAAS,KAAK,aAAA;MAC7CC,OAAO;QAAE,eAAe,YAAYrB,OAAAA;MAAe;OAElDS,iBAAiBa,IAAI,CAACC,YACrB,gBAAAX,OAAA,cAACY,aAAAA;MACCC,KAAKF,QAAQG;MACblC,YAAW;MACXE;MACAC;MACA4B;MACC,GAAGzB;;;;;AAMhB,CAAA;;;;AL3BF,IAAM6B,SAAS,CAAC,EAAEC,SAAQ,MAAqB;;;AAC7C,WACE,gBAAAC,OAAA,cAACC,OAAAA;MAAIC,WAAU;OAAkFH,QAAAA;;;;AAErG;AAqBA,IAAM,CAACI,qBAAqBC,cAAAA,IAAkBC,cAAgC,MAAA;AAc9E,IAAMC,WAAW,CAAC,EAAEC,YAAYR,UAAUS,MAAMC,WAAWC,UAAUC,SAAS,GAAGC,MAAAA,MAAsB;;;AACrG,UAAMC,QAAQC,SAASN,IAAAA;AAGvB,UAAMO,QAAQC,SAAkBR,MAAMO,MAAME,GAAAA;AAC5C,UAAMC,WAAWC,SACf,MACEC,WACE;SAAKL,OAAOM,SAASC,OAAOC,KAAIC,WAAWC,OAAAA,CAAAA,KAAa,CAAA;SAAShB,WAAWS,SAASQ,SAAS,CAAA;OAC9F,CAACC,GAAGC,MAAMD,EAAEE,OAAOD,EAAEC,EAAE,GAE3B;MAACd,OAAOM;MAASZ,WAAWS,SAASQ;KAAM;AAI7C,UAAM,EAAEI,iBAAiBC,SAAQ,IAAKC,qBAAAA;AACtCC,IAAAA,WAAU,MAAA;AACR,UAAI,CAACxB,WAAWyB,UAAUR,SAASX,OAAOM,WAAWX,UAAU;AAC7D,cAAMyB,UAAUpB,MAAMM,QAAQN,MAAMM,QAAQe,SAAS,CAAA;AACrD,YAAIL,YAAYlB,SAASL,QAAQ2B,SAAS;AACxC,eAAKJ,SACHM,aAAaC,qBAAqBC,eAAe;YAC/CC,QAAQ9B;YACR+B,QAAQC,KAAIC,QAAQ,IAAIC,IAAIA,IAAIC,KAAKC,OAAO;iBAAItC,KAAKO,MAAME,IAAI8B;cAAOZ,QAAQN;aAAG,CAAA;YACjFmB,OAAO;UACT,CAAA,CAAA;QAEJ;MACF;IACF,GAAG;MAACjC;MAAON,WAAWyB,UAAUR;KAAM;AAGtC,UAAMuB,QAAQ9B,SAAQ,MAAM,IAAI+B,MAAAA,GAAoB,CAAA,CAAE;AACtDjB,IAAAA,WAAU,MAAA;AACR,aAAOgB,MAAME,GAAG,CAACF,WAAAA;AACf,gBAAQA,OAAMG,MAAI;UAChB,KAAK,UAAU;AACb,gBAAI,CAAC3C,UAAUyB,UAAUR,OAAO;AAC9B,mBAAKjB,UAAU4C,QAAQJ,OAAMK,IAAI;YACnC;AACA;UACF;UAEA,KAAK,UAAU;AACb,iBAAK7C,UAAU8C,OAAM;AACrB;UACF;QACF;AAEA5C,kBAAUsC,MAAAA;MACZ,CAAA;IACF,GAAG;MAACA;MAAOtC;KAAQ;AAEnB,QAAI,CAACE,OAAO;AACV,aAAO;IACT;AAEA,WACE,gBAAAb,OAAA,cAACG,qBAAAA;MAAoB8C;MAAczC;MAAYK;MAAcJ;MAAsBS;MAAqB,GAAGN;OACzG,gBAAAZ,OAAA,cAACC,OAAAA;MAAIuD,MAAK;MAAOtD,WAAWuD,IAAG,sBAAsBlD,UAAAA;OAClDR,QAAAA,CAAAA;;;;AAIT;AAEAO,SAASoD,cAAc;AAQvB,IAAMC,cAAa,CAAC/C,UAAAA;;;AAClB,UAAM,EAAEqC,OAAOpC,OAAOJ,WAAWS,SAAQ,IAAKd,eAAeuD,YAAWD,WAAW;AACnF,UAAME,WAAWC,YAAAA;AAEjB,UAAMC,cAAcC,QAAyB,IAAA;AAC7C9B,IAAAA,WAAU,MAAA;AACR,aAAOgB,MAAME,GAAG,CAACF,WAAAA;AACf,gBAAQA,OAAMG,MAAI;UAChB,KAAK;UACL,KAAK;AACHU,wBAAYE,SAASC,eAAe,QAAA;AACpC;QACJ;MACF,CAAA;IACF,GAAG;MAAChB;KAAM;AAEV,UAAMiB,eAAeC,aACnB,CAACb,SAAAA;AACC,UAAI,CAAC7C,UAAUyB,UAAUR,OAAO;AAC9BuB,cAAMmB,KAAK;UAAEhB,MAAM;UAAUE;QAAK,CAAA;AAClC,eAAO;MACT;IACF,GACA;MAAC7C;MAAWwC;KAAM;AAGpB,QAAI,CAACW,UAAU;AACb,aAAO;IACT;AAEA,WACE,gBAAA5D,OAAA,cAACqE,YAAAA;MACE,GAAGzD;MACJ0D,KAAKR;MACLF;MACA/C;MACAK;MACAqD,OAAO9D,WAAW8D;MAClBC,UAAUN;;;;;AAGhB;AAEAP,YAAWD,cAAc;AAQzB,IAAMe,aAAa,CAAC,EAAElE,YAAYmE,aAAaC,WAAU,MAAmB;;;AAC1E,UAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKjD,EAAE;AACpC,UAAM,EAAEhB,OAAOoC,OAAOxC,UAAS,IAAKL,eAAeqE,WAAWf,WAAW;AAEzE,UAAM,CAACqB,QAAQC,SAAAA,IAAaC,UAAS,KAAA;AACrChD,IAAAA,WAAU,MAAA;AACR,aAAOgB,MAAME,GAAG,CAACF,WAAAA;AACf,gBAAQA,OAAMG,MAAI;UAChB,KAAK;AACH4B,sBAAU,IAAA;AACV;UACF,KAAK;AACHA,sBAAU,KAAA;AACV;QACJ;MACF,CAAA;IACF,GAAG;MAAC/B;KAAM;AAEV,UAAMiC,YAAYnB,QAA6B,IAAA;AAG/C,UAAM,EAAEoB,UAAS,IAAKC,cAAc;MAClCL;MACAM,UAAU,CAAC/B,SAAAA;AACT4B,kBAAUlB,SAASsB,QAAQhC,IAAAA;AAC3B4B,kBAAUlB,SAASuB,MAAAA;MACrB;IACF,CAAA;AAEA,UAAM,CAACC,YAAYC,sBAAAA,IAA0BC,cAAcjF,UAAUkF,OAAO;AAG5E,UAAMC,kBAAkBC,mBAAmBhF,KAAAA;AAC3C,UAAMiF,aAAa3E,SAAqB,MAAA;AACtC,aAAO;QACLyE,mBACEG,WAAW;UACTC,UAAU;YACRC,eAAe,OAAO,EAAEC,MAAK,MAAON,gBAAgBM,MAAM;cAAEA;YAAM,CAAA;YAClEC,kBAAkB,OAAO,EAAEC,IAAG,MAAOR,gBAAgBS,gBAAgB;cAAED;YAAI,CAAA;UAC7E;QACF,CAAA;QACFzB,cACE2B,KAAKC,QACHC,OAAOC,GAAG;UACR;YACEC,KAAK;YACLC,gBAAgB;YAChBC,KAAK,MAAA;AACH3D,oBAAMmB,KAAK;gBAAEhB,MAAM;cAAc,CAAA;AACjC,qBAAO;YACT;UACF;UACA;YACEsD,KAAK;YACLC,gBAAgB;YAChBC,KAAK,MAAA;AACH3D,oBAAMmB,KAAK;gBAAEhB,MAAM;cAAe,CAAA;AAClC,qBAAO;YACT;UACF;SACD,CAAA;QAEL9B,OAAOuF,WAAAA;IACX,GAAG;MAAC5D;MAAO0B;MAAYiB;KAAgB;AAEvC,UAAMkB,eAAe3C,aACnB,CAACb,SAAAA;AACC,UAAI,CAAC7C,UAAUyB,UAAUR,OAAO;AAC9BuB,cAAMmB,KAAK;UAAEhB,MAAM;UAAUE;QAAK,CAAA;AAClC,eAAO;MACT;IACF,GACA;MAAC7C;MAAWwC;KAAM;AAGpB,UAAM8D,cAAc5C,aAClB,CAAC6C,OAAAA;AACC/D,YAAMmB,KAAK4C,EAAAA;IACb,GACA;MAAC/D;KAAM;AAIT,UAAMgE,yBAAyB9C,aAA0D,CAAC+C,QAAAA;AACxFC,MAAAA,KAAIC,KAAK,UAAU;QAAEF;MAAI,GAAA;;;;;;IAC3B,GAAG,CAAA,CAAE;AAEL,WACE,gBAAAlH,OAAA,cAACC,OAAAA;MACCC,WAAWuD,IACT,0GACAlD,UAAAA;OAGF,gBAAAP,OAAA,cAACF,QAAAA,MACC,gBAAAE,OAAA,cAACqH,qBAAAA;MAAoBC,OAAO7G,UAAU6G,MAAM5F;MAAO6F,YAAY9G,UAAUyB,UAAUR;SAGrF,gBAAA1B,OAAA,cAACwH,YAAAA;MACClD,KAAKY;MACLuC,WAAAA;MACAC,cAAAA;MACAnH,YAAW;MACXmE,aAAaA,eAAeE,EAAE,oBAAA;MAC9BkB;MACA6B,UAAUb;QAGZ,gBAAA9G,OAAA,cAAC4H,iBAAAA;MACCC,mBAAmBpH,UAAUoH;MAC7BrC;MACAsC,UAAUrC;QAGZ,gBAAAzF,OAAA,cAAC+H,gBAAAA;MACCxH,YAAW;MACXM;MACA8E,SAASlF,UAAUkF;MACnBN,UAAU4B;QAGZ,gBAAAjH,OAAA,cAACgI,aAAAA;MACCC,YAAY;MACZ9C;MACAoC,YAAY9G,UAAUyB,UAAUR;MAChCf,SAASoG;;;;;AAIjB;AAEAtC,WAAWf,cAAc;AAMlB,IAAMwE,OAAO;EAClBC,MAAM7H;EACN8H,QAAQzE;EACR0E,QAAQ5D;AACV;",
|
|
6
|
+
"names": ["useEffect", "useMemo", "useState", "DEFAULT_EDGE_MODEL", "DEFAULT_OLLAMA_MODEL", "Capabilities", "useCapabilities", "useIntentDispatcher", "createSystemPrompt", "Conversation", "FunctionType", "log", "useConfig", "Filter", "fullyQualifiedId", "useQuery", "isNonNullable", "batch", "computed", "signal", "DEFAULT_EDGE_MODEL", "Context", "log", "Filter", "getVersion", "defaultOptions", "model", "systemPrompt", "ChatProcessor", "_conversation", "_options", "_pending", "_block", "undefined", "streaming", "value", "error", "messages", "length", "content", "rest", "pop", "message", "push", "_session", "_artifactDiffResolver", "artifacts", "space", "extensions", "Map", "versions", "Promise", "all", "map", "artifact", "objects", "object", "db", "query", "ids", "id", "run", "set", "version", "diff", "JSON", "stringify", "_tools", "tools", "conversation", "context", "blueprintRegistry", "setTools", "request", "options", "ctx", "default", "onBegin", "on", "session", "info", "isDisposed", "disposed", "onDispose", "update", "block", "userMessage", "toolStatusReport", "status", "msg", "peek", "find", "m", "toolUse", "type", "currentStatus", "warn", "requiredArtifactIds", "prompt", "artifactDiffResolver", "generationOptions", "err", "catch", "Error", "includes", "AiServiceOverloadedError", "cause", "_reset", "cancel", "abort", "code", "useCallback", "useState", "Ref", "log", "useTimeout", "isNonNullable", "useBlueprints", "context", "blueprints", "setBlueprints", "Array", "loadAll", "value", "filter", "handleUpdate", "key", "active", "info", "useMemo", "Capabilities", "useCapabilities", "Filter", "Obj", "useContextProvider", "space", "artifactDefinitions", "useCapabilities", "Capabilities", "ArtifactDefinition", "useMemo", "undefined", "query", "artifactSchemas", "map", "artifact", "schema", "objects", "db", "Filter", "or", "type", "run", "filter", "object", "stringMatch", "Obj", "getLabel", "getDXN", "uri", "toString", "label", "resolveMetadata", "ids", "first", "toLowerCase", "startsWith", "useEffect", "useMemo", "useState", "ToolRegistry", "Capabilities", "useCapabilities", "useCapability", "AiService", "DatabaseService", "QueueService", "ServiceContainer", "ToolResolverService", "useServiceContainer", "space", "aiClient", "useCapability", "AssistantCapabilities", "AiClient", "tools", "useCapabilities", "Capabilities", "Tools", "flat", "toolRegistry", "useState", "ToolRegistry", "useEffect", "tool", "has", "register", "JSON", "stringify", "map", "id", "useMemo", "ServiceContainer", "setServices", "ai", "AiService", "make", "value", "database", "DatabaseService", "db", "undefined", "queues", "QueueService", "toolResolver", "ToolResolverService", "useState", "useCallback", "createTool", "ToolResult", "Type", "getInvocationUrl", "getUserFunctionUrlInMetadata", "log", "getMeta", "convertFunctionToTool", "fn", "edgeUrl", "spaceId", "description", "inputSchema", "undefined", "existingFunctionUrl", "url", "name", "schema", "toEffectSchema", "execute", "input", "info", "response", "fetch", "method", "headers", "body", "JSON", "stringify", "Success", "text", "Schema", "jsonpointer", "ToolResult", "createRawTool", "Type", "normalizeSchema", "invariant", "log", "deepMapValues", "createToolsFromService", "service", "interfaces", "length", "kind", "iface", "schemaUrl", "createToolsFromApi", "authorization", "url", "options", "res", "fetch", "spec", "json", "tools", "path", "pathItem", "Object", "entries", "paths", "methods", "method", "m", "methodItem", "parametersResolved", "parameters", "map", "parameter", "resolved", "resolveJsonSchema", "inputSchema", "type", "properties", "endpointParameters", "placement", "in", "name", "push", "schema", "_in", "required", "validateSync", "JsonSchema", "description", "summary", "warn", "endpoint", "document", "getToolName", "instructions", "execute", "input", "response", "callApiEndpoint", "Success", "operationId", "toLowerCase", "replaceAll", "MAX_TOOL_NAME_LENGTH", "lengthBefore", "word", "GENERIC_WORDS", "includes", "replace", "lengthAfter", "slice", "info", "getEndpointUrl", "request", "headers", "query", "URLSearchParams", "body", "undefined", "example", "default", "encodeURIComponent", "value", "effectSchema", "toEffectSchema", "Error", "set", "Authorization", "resolveAuthorization", "key", "size", "toString", "JSON", "stringify", "ok", "status", "statusText", "contentType", "get", "text", "responseBody", "error", "parse", "message", "isV3_1", "servers", "schemes", "host", "basePath", "tokenUrl", "grantType", "clientId", "clientSecret", "data", "access_token", "base", "recurse", "$ref", "startsWith", "ref", "openapi", "useChatProcessor", "part", "space", "chat", "serviceContainer", "blueprintRegistry", "settings", "instructions", "artifact", "noPluginArtifacts", "dispatchPromise", "dispatch", "useIntentDispatcher", "globalTools", "useCapabilities", "Capabilities", "Tools", "artifacts", "ArtifactDefinition", "Stable", "array", "services", "useQuery", "Filter", "type", "ServiceType", "serviceTools", "setServiceTools", "useState", "useEffect", "log", "queueMicrotask", "tools", "Promise", "all", "map", "service", "createToolsFromService", "flat", "config", "useConfig", "functions", "FunctionType", "chatId", "useMemo", "fullyQualifiedId", "undefined", "extensions", "fn", "convertFunctionToTool", "values", "runtime", "edge", "url", "id", "filter", "isNonNullable", "pivotId", "systemPrompt", "createSystemPrompt", "definition", "name", "model", "llmProvider", "ollamaModel", "DEFAULT_OLLAMA_MODEL", "edgeModel", "DEFAULT_EDGE_MODEL", "conversation", "queue", "target", "Conversation", "processor", "ChatProcessor", "Object", "freeze", "object", "React", "useState", "useEffect", "Fragment", "parseToolName", "Capabilities", "useCapabilities", "FunctionType", "log", "Filter", "useQuery", "useTranslation", "mx", "Toolbox", "classNames", "artifacts", "functions", "services", "blueprints", "activeBlueprints", "striped", "t", "useTranslation", "meta", "id", "div", "className", "mx", "length", "Section", "title", "items", "map", "target", "name", "description", "subitems", "tools", "toolId", "parseToolName", "service", "serviceId", "stripeClassNames", "gridClassNames", "subGridClassNames", "h1", "i", "Fragment", "key", "ToolboxContainer", "space", "processor", "artifactDefinitions", "useCapabilities", "Capabilities", "ArtifactDefinition", "useQuery", "Filter", "type", "ServiceType", "serviceTools", "setServiceTools", "useState", "useEffect", "log", "queueMicrotask", "Promise", "all", "createToolsFromService", "FunctionType", "context", "value", "Prec", "keymap", "createContext", "dedupeWith", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Message", "CollaborationActions", "createIntent", "useIntentDispatcher", "Event", "DXN", "Obj", "Ref", "log", "useVoiceInput", "getSpace", "useQueue", "useIdentity", "useTranslation", "ChatEditor", "references", "mx", "isNotFalsy", "React", "IconButton", "Select", "useTranslation", "mx", "ChatActions", "microphone", "recording", "processing", "onEvent", "t", "useTranslation", "meta", "id", "React", "div", "className", "Select", "Root", "value", "disabled", "TriggerButton", "classNames", "Content", "Option", "IconButton", "variant", "size", "icon", "iconOnly", "label", "onClick", "type", "mx", "noTooltip", "onMouseDown", "onMouseUp", "onTouchStart", "onTouchEnd", "React", "useMemo", "DropdownMenu", "IconButton", "Input", "useTranslation", "ChatOptionsMenu", "blueprintRegistry", "blueprints", "onChange", "t", "useTranslation", "meta", "id", "blueprintOptions", "useMemo", "query", "map", "blueprint", "key", "label", "name", "React", "DropdownMenu", "Root", "Trigger", "asChild", "disabled", "length", "IconButton", "icon", "variant", "size", "iconOnly", "Portal", "Content", "side", "Viewport", "option", "Item", "Input", "Checkbox", "checked", "find", "onCheckedChange", "Label", "classNames", "Arrow", "React", "useCallback", "Filter", "Obj", "Ref", "useAsyncState", "useTranslation", "TagPicker", "isNonNullable", "ChatReferences", "classNames", "space", "context", "onUpdate", "t", "useTranslation", "meta", "id", "items", "useAsyncState", "objects", "Ref", "Array", "loadAll", "value", "filter", "isNonNullable", "map", "obj", "label", "Obj", "getLabel", "handleSearch", "useCallback", "text", "ids", "db", "query", "Filter", "everything", "runSync", "object", "includes", "toLocaleLowerCase", "React", "TagPicker", "mode", "placeholder", "onSearch", "React", "Icon", "Tooltip", "Spinner", "errorText", "ChatStatusIndicator", "error", "processing", "React", "Tooltip", "Trigger", "content", "message", "delayDuration", "Icon", "icon", "classNames", "errorText", "size", "Spinner", "active", "React", "forwardRef", "useMemo", "PublicKey", "ScrollContainer", "mx", "keyToFallback", "React", "Surface", "invariant", "Button", "Icon", "IconButton", "MarkdownViewer", "ToggleContainer", "NativeToggleContainer", "mx", "safeParseJson", "React", "useEffect", "useMemo", "useRef", "useState", "log", "NumericTabs", "StatusRoll", "ToggleContainer", "Json", "NativeJson", "isNonNullable", "isNotFalsy", "isToolMessage", "message", "content", "some", "block", "type", "getToolName", "tool", "namespace", "function", "name", "split", "pop", "getToolCaption", "status", "caption", "ToolBlock", "classNames", "tools", "request", "blocks", "filter", "items", "map", "pending", "id", "find", "title", "currentStatus", "warn", "undefined", "ToolContainer", "tabsRef", "selected", "setSelected", "open", "setOpen", "current", "focus", "handleSelect", "index", "lines", "item", "key", "duration", "autoAdvance", "onChangeOpen", "div", "className", "ref", "length", "onSelect", "data", "ChatMessage", "classNames", "space", "processor", "message", "tools", "onPrompt", "onAddToGraph", "role", "content", "isToolMessage", "React", "MessageContainer", "mx", "ToolBlock", "panelClassNames", "map", "block", "idx", "type", "text", "replaceAll", "length", "Component", "components", "default", "key", "user", "invariant", "title", "disposition", "titles", "undefined", "MarkdownViewer", "ToggleContainer", "defaultOpen", "systemDispositions", "includes", "pending", "icon", "Icon", "size", "ToolboxContainer", "safeParseJson", "json", "IconButton", "label", "onClick", "options", "div", "className", "option", "Button", "Surface", "data", "subject", "JSON", "parse", "limit", "fallback", "Json", "name", "userClassNames", "props", "NativeToggleContainer", "children", "messageReducer", "current", "messages", "message", "i", "block", "content", "type", "push", "id", "join", "role", "undefined", "ChatThread", "forwardRef", "classNames", "identity", "space", "processor", "messages", "collapse", "props", "forwardedRef", "userHue", "useMemo", "profile", "data", "hue", "keyToFallback", "identityKey", "PublicKey", "random", "filteredMessages", "reduce", "messageReducer", "React", "ScrollContainer", "ref", "fade", "div", "role", "className", "mx", "length", "style", "map", "message", "ChatMessage", "key", "id", "Endcap", "children", "React", "div", "className", "ChatContextProvider", "useChatContext", "createContext", "ChatRoot", "classNames", "chat", "processor", "artifact", "onEvent", "props", "space", "getSpace", "queue", "useQueue", "dxn", "messages", "useMemo", "dedupeWith", "objects", "filter", "Obj", "instanceOf", "Message", "value", "a", "b", "id", "dispatchPromise", "dispatch", "useIntentDispatcher", "useEffect", "streaming", "message", "length", "createIntent", "CollaborationActions", "InsertContent", "target", "object", "Ref", "fromDXN", "DXN", "kind", "QUEUE", "parts", "label", "event", "Event", "on", "type", "request", "text", "cancel", "role", "mx", "displayName", "ChatThread", "identity", "useIdentity", "scrollerRef", "useRef", "current", "scrollToBottom", "handlePrompt", "useCallback", "emit", "NativeChatThread", "ref", "tools", "onPrompt", "ChatPrompt", "placeholder", "expandable", "t", "useTranslation", "meta", "active", "setActive", "useState", "editorRef", "recording", "useVoiceInput", "onUpdate", "setText", "focus", "blueprints", "handleUpdateBlueprints", "useBlueprints", "context", "contextProvider", "useContextProvider", "extensions", "references", "provider", "getReferences", "query", "resolveReference", "uri", "resolveMetadata", "Prec", "highest", "keymap", "of", "key", "preventDefault", "run", "isNotFalsy", "handleSubmit", "handleEvent", "ev", "handleUpdateReferences", "ids", "log", "info", "ChatStatusIndicator", "error", "processing", "ChatEditor", "autoFocus", "lineWrapping", "onSubmit", "ChatOptionsMenu", "blueprintRegistry", "onChange", "ChatReferences", "ChatActions", "microphone", "Chat", "Root", "Thread", "Prompt"]
|
|
7
|
+
}
|
|
@@ -1,29 +1,69 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./chunk-
|
|
2
|
+
meta
|
|
3
|
+
} from "./chunk-LKP65RPA.mjs";
|
|
4
4
|
|
|
5
|
-
//
|
|
5
|
+
// src/types/schema.ts
|
|
6
6
|
import { Schema } from "effect";
|
|
7
|
-
import { Queue } from "@dxos/client/echo";
|
|
7
|
+
import { SpaceSchema, Queue } from "@dxos/client/echo";
|
|
8
|
+
import { Sequence } from "@dxos/conductor";
|
|
8
9
|
import { Type } from "@dxos/echo";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
10
|
+
import { LabelAnnotation } from "@dxos/echo-schema";
|
|
11
|
+
var LLM_PROVIDERS = [
|
|
12
|
+
"edge",
|
|
13
|
+
"ollama",
|
|
14
|
+
"lmstudio"
|
|
15
|
+
];
|
|
16
|
+
(function(Assistant2) {
|
|
17
|
+
Assistant2.Chat = Schema.Struct({
|
|
18
|
+
id: Type.ObjectId,
|
|
19
|
+
name: Schema.optional(Schema.String),
|
|
20
|
+
queue: Type.Ref(Queue)
|
|
21
|
+
}).pipe(Type.Obj({
|
|
22
|
+
typename: "dxos.org/type/assistant/Chat",
|
|
23
|
+
version: "0.2.0"
|
|
24
|
+
}), LabelAnnotation.set([
|
|
25
|
+
"name"
|
|
26
|
+
]));
|
|
27
|
+
Assistant2.CompanionTo = Schema.Struct({
|
|
28
|
+
id: Type.ObjectId
|
|
29
|
+
}).pipe(Type.Relation({
|
|
30
|
+
typename: "dxos.org/relation/assistant/CompanionTo",
|
|
31
|
+
version: "0.1.0",
|
|
32
|
+
source: Assistant2.Chat,
|
|
33
|
+
target: Type.Expando
|
|
34
|
+
}));
|
|
35
|
+
Assistant2.Settings = Schema.mutable(Schema.Struct({
|
|
36
|
+
llmProvider: Schema.optional(Schema.Literal(...LLM_PROVIDERS)),
|
|
37
|
+
edgeModel: Schema.optional(Schema.String),
|
|
38
|
+
ollamaModel: Schema.optional(Schema.String),
|
|
39
|
+
lmstudioModel: Schema.optional(Schema.String),
|
|
40
|
+
customPrompts: Schema.optional(Schema.Boolean)
|
|
41
|
+
}));
|
|
42
|
+
class CreateChat extends Schema.TaggedClass()(`${meta.id}/action}/create-chat`, {
|
|
43
|
+
input: Schema.Struct({
|
|
44
|
+
space: SpaceSchema,
|
|
45
|
+
name: Schema.optional(Schema.String)
|
|
46
|
+
}),
|
|
47
|
+
output: Schema.Struct({
|
|
48
|
+
object: Assistant2.Chat
|
|
49
|
+
})
|
|
50
|
+
}) {
|
|
51
|
+
}
|
|
52
|
+
Assistant2.CreateChat = CreateChat;
|
|
53
|
+
class CreateSequence extends Schema.TaggedClass()(`${meta.id}/action}/create-sequence`, {
|
|
54
|
+
input: Schema.Struct({
|
|
55
|
+
name: Schema.optional(Schema.String)
|
|
56
|
+
}),
|
|
57
|
+
output: Schema.Struct({
|
|
58
|
+
object: Sequence
|
|
59
|
+
})
|
|
60
|
+
}) {
|
|
61
|
+
}
|
|
62
|
+
Assistant2.CreateSequence = CreateSequence;
|
|
63
|
+
})(Assistant || (Assistant = {}));
|
|
64
|
+
var Assistant;
|
|
25
65
|
|
|
26
|
-
//
|
|
66
|
+
// src/types/service.ts
|
|
27
67
|
import { Schema as Schema2 } from "effect";
|
|
28
68
|
import { ComputeGraph } from "@dxos/conductor";
|
|
29
69
|
import { Type as Type2 } from "@dxos/echo";
|
|
@@ -98,10 +138,10 @@ var categoryIcons = {
|
|
|
98
138
|
weather: "ph--cloud-rain--regular"
|
|
99
139
|
};
|
|
100
140
|
|
|
101
|
-
//
|
|
141
|
+
// src/types/template.ts
|
|
102
142
|
import { Schema as Schema3 } from "effect";
|
|
103
143
|
import { Type as Type3 } from "@dxos/echo";
|
|
104
|
-
import { LabelAnnotation } from "@dxos/echo-schema";
|
|
144
|
+
import { LabelAnnotation as LabelAnnotation2 } from "@dxos/echo-schema";
|
|
105
145
|
var TemplateInputType = /* @__PURE__ */ function(TemplateInputType2) {
|
|
106
146
|
TemplateInputType2[TemplateInputType2["VALUE"] = 0] = "VALUE";
|
|
107
147
|
TemplateInputType2[TemplateInputType2["PASS_THROUGH"] = 1] = "PASS_THROUGH";
|
|
@@ -141,58 +181,16 @@ var TemplateType = Schema3.Struct({
|
|
|
141
181
|
source: Schema3.String,
|
|
142
182
|
inputs: Schema3.optional(Schema3.mutable(Schema3.Array(TemplateInputSchema))),
|
|
143
183
|
command: Schema3.optional(Schema3.String)
|
|
144
|
-
}).pipe(
|
|
184
|
+
}).pipe(LabelAnnotation2.set([
|
|
145
185
|
"name"
|
|
146
186
|
]), Type3.Obj({
|
|
147
187
|
typename: "dxos.org/type/Template",
|
|
148
188
|
version: "0.1.0"
|
|
149
189
|
}));
|
|
150
190
|
|
|
151
|
-
// packages/plugins/plugin-assistant/src/types/types.ts
|
|
152
|
-
import { Schema as Schema4 } from "effect";
|
|
153
|
-
import { Blueprint } from "@dxos/assistant";
|
|
154
|
-
import { SpaceSchema } from "@dxos/react-client/echo";
|
|
155
|
-
(function(AssistantAction2) {
|
|
156
|
-
const ASSISTANT_ACTION = `${ASSISTANT_PLUGIN}/action`;
|
|
157
|
-
class CreateChat extends Schema4.TaggedClass()(`${ASSISTANT_ACTION}/create-chat`, {
|
|
158
|
-
input: Schema4.Struct({
|
|
159
|
-
space: SpaceSchema,
|
|
160
|
-
name: Schema4.optional(Schema4.String)
|
|
161
|
-
}),
|
|
162
|
-
output: Schema4.Struct({
|
|
163
|
-
object: AIChatType
|
|
164
|
-
})
|
|
165
|
-
}) {
|
|
166
|
-
}
|
|
167
|
-
AssistantAction2.CreateChat = CreateChat;
|
|
168
|
-
class CreateBlueprint extends Schema4.TaggedClass()(`${ASSISTANT_ACTION}/create-blueprint`, {
|
|
169
|
-
input: Schema4.Struct({
|
|
170
|
-
name: Schema4.optional(Schema4.String)
|
|
171
|
-
}),
|
|
172
|
-
output: Schema4.Struct({
|
|
173
|
-
object: Blueprint
|
|
174
|
-
})
|
|
175
|
-
}) {
|
|
176
|
-
}
|
|
177
|
-
AssistantAction2.CreateBlueprint = CreateBlueprint;
|
|
178
|
-
})(AssistantAction || (AssistantAction = {}));
|
|
179
|
-
var LLM_PROVIDERS = [
|
|
180
|
-
"edge",
|
|
181
|
-
"ollama",
|
|
182
|
-
"lmstudio"
|
|
183
|
-
];
|
|
184
|
-
var AssistantSettingsSchema = Schema4.mutable(Schema4.Struct({
|
|
185
|
-
llmProvider: Schema4.optional(Schema4.Literal(...LLM_PROVIDERS)),
|
|
186
|
-
edgeModel: Schema4.optional(Schema4.String),
|
|
187
|
-
ollamaModel: Schema4.optional(Schema4.String),
|
|
188
|
-
lmstudioModel: Schema4.optional(Schema4.String),
|
|
189
|
-
customPrompts: Schema4.optional(Schema4.Boolean)
|
|
190
|
-
}));
|
|
191
|
-
var AssistantAction;
|
|
192
|
-
|
|
193
191
|
export {
|
|
194
|
-
|
|
195
|
-
|
|
192
|
+
LLM_PROVIDERS,
|
|
193
|
+
Assistant,
|
|
196
194
|
ApiAuthorization,
|
|
197
195
|
ServiceType,
|
|
198
196
|
categoryIcons,
|
|
@@ -200,9 +198,6 @@ export {
|
|
|
200
198
|
TemplateInputSchema,
|
|
201
199
|
TemplateKinds,
|
|
202
200
|
TemplateKindSchema,
|
|
203
|
-
TemplateType
|
|
204
|
-
LLM_PROVIDERS,
|
|
205
|
-
AssistantSettingsSchema,
|
|
206
|
-
AssistantAction
|
|
201
|
+
TemplateType
|
|
207
202
|
};
|
|
208
|
-
//# sourceMappingURL=chunk-
|
|
203
|
+
//# sourceMappingURL=chunk-TU7UUGWQ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types/schema.ts", "../../../src/types/service.ts", "../../../src/types/template.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { SpaceSchema, Queue } from '@dxos/client/echo';\nimport { Sequence } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport { LabelAnnotation } from '@dxos/echo-schema';\n\nimport { meta } from '../meta';\n\nexport const LLM_PROVIDERS = ['edge', 'ollama', 'lmstudio'] as const;\n\nexport namespace Assistant {\n //\n // Types\n //\n\n export const Chat = Schema.Struct({\n id: Type.ObjectId,\n name: Schema.optional(Schema.String),\n queue: Type.Ref(Queue),\n }).pipe(\n Type.Obj({\n typename: 'dxos.org/type/assistant/Chat',\n version: '0.2.0',\n }),\n LabelAnnotation.set(['name']),\n );\n\n export interface Chat extends Schema.Schema.Type<typeof Chat> {}\n\n export const CompanionTo = Schema.Struct({\n id: Type.ObjectId,\n }).pipe(\n Type.Relation({\n typename: 'dxos.org/relation/assistant/CompanionTo',\n version: '0.1.0',\n source: Chat,\n target: Type.Expando,\n }),\n );\n\n export interface CompanionTo extends Schema.Schema.Type<typeof CompanionTo> {}\n\n //\n // Settings\n //\n\n export const Settings = Schema.mutable(\n Schema.Struct({\n llmProvider: Schema.optional(Schema.Literal(...LLM_PROVIDERS)),\n edgeModel: Schema.optional(Schema.String),\n ollamaModel: Schema.optional(Schema.String),\n lmstudioModel: Schema.optional(Schema.String),\n customPrompts: Schema.optional(Schema.Boolean),\n }),\n );\n\n export type Settings = Schema.Schema.Type<typeof Settings>;\n\n //\n // Actions\n //\n\n export class CreateChat extends Schema.TaggedClass<CreateChat>()(`${meta.id}/action}/create-chat`, {\n input: Schema.Struct({\n space: SpaceSchema,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Assistant.Chat,\n }),\n }) {}\n\n export class CreateSequence extends Schema.TaggedClass<CreateSequence>()(`${meta.id}/action}/create-sequence`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Sequence,\n }),\n }) {}\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport { TypedObject } from '@dxos/echo-schema';\nimport { FunctionType } from '@dxos/functions';\n\nconst ApiAuthorizationKey = Schema.Struct({\n type: Schema.Literal('api-key'),\n key: Schema.String,\n placement: Schema.Union(\n Schema.Struct({\n type: Schema.Literal('authorization-header'),\n }),\n Schema.Struct({\n type: Schema.Literal('query'),\n name: Schema.String,\n }),\n ),\n});\n\nconst ApiAuthorizationOauth = Schema.Struct({\n type: Schema.Literal('oauth'),\n clientId: Schema.String,\n clientSecret: Schema.String,\n tokenUrl: Schema.String,\n grantType: Schema.String,\n});\n\nexport const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);\nexport type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;\n\nconst ServiceInterfaceFunction = Schema.Struct({\n kind: Schema.Literal('function'),\n fn: Type.Ref(FunctionType),\n});\n\nconst ServiceInterfaceWorkflow = Schema.Struct({\n kind: Schema.Literal('workflow'),\n workflow: Type.Ref(ComputeGraph),\n});\n\nconst ServiceInterfaceApi = Schema.Struct({\n kind: Schema.Literal('api'),\n\n /**\n * URL to fetch the openapi schema.\n */\n schemaUrl: Schema.optional(Schema.String),\n\n /**\n * Inlined openapi schema.\n */\n schema: Schema.optional(Schema.Any),\n\n /**\n * Authorization configuration if required.\n */\n authorization: Schema.optional(ApiAuthorization),\n});\n\nconst ServiceInterface = Schema.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);\nexport type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;\n\nexport class ServiceType extends TypedObject({\n typename: 'dxos.org/type/ServiceType',\n version: '0.1.0',\n})({\n serviceId: Schema.String,\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n category: Schema.optional(Schema.String),\n enabled: Schema.optional(Schema.Boolean),\n\n /**\n * Entries exposed: functions, workflows, and APIs.\n */\n interfaces: Schema.optional(Schema.Array(ServiceInterface)),\n}) {}\n\n//\n// Service Registry\n//\n\nexport type ServiceQuery = {\n name?: string;\n category?: string;\n};\n\nexport interface BaseServiceRegistry {\n queryServices(query?: ServiceQuery): Promise<ServiceType[]>;\n}\n\nexport const categoryIcons: Record<string, string> = {\n finance: 'ph--bank--regular',\n health: 'ph--heart--regular',\n geolocation: 'ph--globe-simple--regular',\n education: 'ph--books--regular',\n entertainment: 'ph--music-notes--regular',\n shopping: 'ph--shopping-cart--regular',\n travel: 'ph--airplane-takeoff--regular',\n utilities: 'ph--lightning--regular',\n weather: 'ph--cloud-rain--regular',\n} as const;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\nimport { LabelAnnotation } from '@dxos/echo-schema';\n\n// TODO(burdon): Change to Schema.Literal (and discriminated union).\nexport enum TemplateInputType {\n VALUE = 0,\n PASS_THROUGH = 1,\n RETRIEVER = 2,\n FUNCTION = 3,\n QUERY = 4,\n RESOLVER = 5,\n CONTEXT = 6,\n SCHEMA = 7,\n}\n\nexport const TemplateInputSchema = Schema.mutable(\n Schema.Struct({\n name: Schema.String,\n type: Schema.optional(Schema.Enums(TemplateInputType)),\n value: Schema.optional(Schema.String),\n }),\n);\n\nexport type TemplateInput = Schema.Schema.Type<typeof TemplateInputSchema>;\n\nexport const TemplateKinds = ['always', 'schema-matching', 'automatically', 'manual'] as const;\nexport type TemplateKind = (typeof TemplateKinds)[number];\n\nexport const TemplateKindSchema = Schema.Union(\n Schema.Struct({\n include: Schema.Literal('always'),\n }),\n Schema.Struct({\n include: Schema.Literal('schema-matching'),\n typename: Schema.String,\n }),\n Schema.Struct({\n include: Schema.Literal('automatically'),\n description: Schema.String,\n }),\n Schema.Struct({\n include: Schema.Literal('manual'),\n }),\n);\n\nexport type TemplateKindType = Schema.Schema.Type<typeof TemplateKindSchema>;\nexport const TemplateType = Schema.Struct({\n name: Schema.optional(Schema.String),\n kind: Schema.mutable(TemplateKindSchema),\n source: Schema.String,\n inputs: Schema.optional(Schema.mutable(Schema.Array(TemplateInputSchema))),\n command: Schema.optional(Schema.String),\n}).pipe(\n LabelAnnotation.set(['name']),\n Type.Obj({\n typename: 'dxos.org/type/Template',\n version: '0.1.0',\n }),\n);\nexport interface TemplateType extends Schema.Schema.Type<typeof TemplateType> {}\n"],
|
|
5
|
+
"mappings": ";;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,aAAaC,aAAa;AACnC,SAASC,gBAAgB;AACzB,SAASC,YAAY;AACrB,SAASC,uBAAuB;AAIzB,IAAMC,gBAAgB;EAAC;EAAQ;EAAU;;UAE/BC,YAAAA;aAKFC,OAAOC,OAAOC,OAAO;IAChCC,IAAIC,KAAKC;IACTC,MAAML,OAAOM,SAASN,OAAOO,MAAM;IACnCC,OAAOL,KAAKM,IAAIC,KAAAA;EAClB,CAAA,EAAGC,KACDR,KAAKS,IAAI;IACPC,UAAU;IACVC,SAAS;EACX,CAAA,GACAC,gBAAgBC,IAAI;IAAC;GAAO,CAAA;aAKjBC,cAAcjB,OAAOC,OAAO;IACvCC,IAAIC,KAAKC;EACX,CAAA,EAAGO,KACDR,KAAKe,SAAS;IACZL,UAAU;IACVC,SAAS;IACTK,QAAMrB,WAAEC;IACRqB,QAAQjB,KAAKkB;EACf,CAAA,CAAA;aASWC,WAAWtB,OAAOuB,QAC7BvB,OAAOC,OAAO;IACZuB,aAAaxB,OAAOM,SAASN,OAAOyB,QAAO,GAAI5B,aAAAA,CAAAA;IAC/C6B,WAAW1B,OAAOM,SAASN,OAAOO,MAAM;IACxCoB,aAAa3B,OAAOM,SAASN,OAAOO,MAAM;IAC1CqB,eAAe5B,OAAOM,SAASN,OAAOO,MAAM;IAC5CsB,eAAe7B,OAAOM,SAASN,OAAO8B,OAAO;EAC/C,CAAA,CAAA;EASK,MAAMC,mBAAmB/B,OAAOgC,YAAW,EAAe,GAAGC,KAAK/B,EAAE,wBAAwB;IACjGgC,OAAOlC,OAAOC,OAAO;MACnBkC,OAAOC;MACP/B,MAAML,OAAOM,SAASN,OAAOO,MAAM;IACrC,CAAA;IACA8B,QAAQrC,OAAOC,OAAO;MACpBqC,QAAQxC,WAAUC;IACpB,CAAA;EACF,CAAA,EAAA;EAAI;aARSgC,aAAAA;EAUN,MAAMQ,uBAAuBvC,OAAOgC,YAAW,EAAmB,GAAGC,KAAK/B,EAAE,4BAA4B;IAC7GgC,OAAOlC,OAAOC,OAAO;MACnBI,MAAML,OAAOM,SAASN,OAAOO,MAAM;IACrC,CAAA;IACA8B,QAAQrC,OAAOC,OAAO;MACpBqC,QAAQE;IACV,CAAA;EACF,CAAA,EAAA;EAAI;aAPSD,iBAAAA;AAQf,GAtEiBzC,cAAAA,YAAAA,CAAAA,EAAAA;;;;ACXjB,SAAS2C,UAAAA,eAAc;AAEvB,SAASC,oBAAoB;AAC7B,SAASC,QAAAA,aAAY;AACrB,SAASC,mBAAmB;AAC5B,SAASC,oBAAoB;AAE7B,IAAMC,sBAAsBC,QAAOC,OAAO;EACxCC,MAAMF,QAAOG,QAAQ,SAAA;EACrBC,KAAKJ,QAAOK;EACZC,WAAWN,QAAOO,MAChBP,QAAOC,OAAO;IACZC,MAAMF,QAAOG,QAAQ,sBAAA;EACvB,CAAA,GACAH,QAAOC,OAAO;IACZC,MAAMF,QAAOG,QAAQ,OAAA;IACrBK,MAAMR,QAAOK;EACf,CAAA,CAAA;AAEJ,CAAA;AAEA,IAAMI,wBAAwBT,QAAOC,OAAO;EAC1CC,MAAMF,QAAOG,QAAQ,OAAA;EACrBO,UAAUV,QAAOK;EACjBM,cAAcX,QAAOK;EACrBO,UAAUZ,QAAOK;EACjBQ,WAAWb,QAAOK;AACpB,CAAA;AAEO,IAAMS,mBAAmBd,QAAOO,MAAMR,qBAAqBU,qBAAAA;AAGlE,IAAMM,2BAA2Bf,QAAOC,OAAO;EAC7Ce,MAAMhB,QAAOG,QAAQ,UAAA;EACrBc,IAAIC,MAAKC,IAAIC,YAAAA;AACf,CAAA;AAEA,IAAMC,2BAA2BrB,QAAOC,OAAO;EAC7Ce,MAAMhB,QAAOG,QAAQ,UAAA;EACrBmB,UAAUJ,MAAKC,IAAII,YAAAA;AACrB,CAAA;AAEA,IAAMC,sBAAsBxB,QAAOC,OAAO;EACxCe,MAAMhB,QAAOG,QAAQ,KAAA;;;;EAKrBsB,WAAWzB,QAAO0B,SAAS1B,QAAOK,MAAM;;;;EAKxCsB,QAAQ3B,QAAO0B,SAAS1B,QAAO4B,GAAG;;;;EAKlCC,eAAe7B,QAAO0B,SAASZ,gBAAAA;AACjC,CAAA;AAEA,IAAMgB,mBAAmB9B,QAAOO,MAAMQ,0BAA0BM,0BAA0BG,mBAAAA;AAGnF,IAAMO,cAAN,cAA0BC,YAAY;EAC3CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;EACDC,WAAWnC,QAAOK;EAClBG,MAAMR,QAAO0B,SAAS1B,QAAOK,MAAM;EACnC+B,aAAapC,QAAO0B,SAAS1B,QAAOK,MAAM;EAC1CgC,UAAUrC,QAAO0B,SAAS1B,QAAOK,MAAM;EACvCiC,SAAStC,QAAO0B,SAAS1B,QAAOuC,OAAO;;;;EAKvCC,YAAYxC,QAAO0B,SAAS1B,QAAOyC,MAAMX,gBAAAA,CAAAA;AAC3C,CAAA,EAAA;AAAI;AAeG,IAAMY,gBAAwC;EACnDC,SAAS;EACTC,QAAQ;EACRC,aAAa;EACbC,WAAW;EACXC,eAAe;EACfC,UAAU;EACVC,QAAQ;EACRC,WAAW;EACXC,SAAS;AACX;;;ACvGA,SAASC,UAAAA,eAAc;AAEvB,SAASC,QAAAA,aAAY;AACrB,SAASC,mBAAAA,wBAAuB;AAGzB,IAAKC,oBAAAA,yBAAAA,oBAAAA;;;;;;;;;SAAAA;;AAWL,IAAMC,sBAAsBC,QAAOC,QACxCD,QAAOE,OAAO;EACZC,MAAMH,QAAOI;EACbC,MAAML,QAAOM,SAASN,QAAOO,MAAMT,iBAAAA,CAAAA;EACnCU,OAAOR,QAAOM,SAASN,QAAOI,MAAM;AACtC,CAAA,CAAA;AAKK,IAAMK,gBAAgB;EAAC;EAAU;EAAmB;EAAiB;;AAGrE,IAAMC,qBAAqBV,QAAOW,MACvCX,QAAOE,OAAO;EACZU,SAASZ,QAAOa,QAAQ,QAAA;AAC1B,CAAA,GACAb,QAAOE,OAAO;EACZU,SAASZ,QAAOa,QAAQ,iBAAA;EACxBC,UAAUd,QAAOI;AACnB,CAAA,GACAJ,QAAOE,OAAO;EACZU,SAASZ,QAAOa,QAAQ,eAAA;EACxBE,aAAaf,QAAOI;AACtB,CAAA,GACAJ,QAAOE,OAAO;EACZU,SAASZ,QAAOa,QAAQ,QAAA;AAC1B,CAAA,CAAA;AAIK,IAAMG,eAAehB,QAAOE,OAAO;EACxCC,MAAMH,QAAOM,SAASN,QAAOI,MAAM;EACnCa,MAAMjB,QAAOC,QAAQS,kBAAAA;EACrBQ,QAAQlB,QAAOI;EACfe,QAAQnB,QAAOM,SAASN,QAAOC,QAAQD,QAAOoB,MAAMrB,mBAAAA,CAAAA,CAAAA;EACpDsB,SAASrB,QAAOM,SAASN,QAAOI,MAAM;AACxC,CAAA,EAAGkB,KACDC,iBAAgBC,IAAI;EAAC;CAAO,GAC5BC,MAAKC,IAAI;EACPZ,UAAU;EACVa,SAAS;AACX,CAAA,CAAA;",
|
|
6
|
+
"names": ["Schema", "SpaceSchema", "Queue", "Sequence", "Type", "LabelAnnotation", "LLM_PROVIDERS", "Assistant", "Chat", "Schema", "Struct", "id", "Type", "ObjectId", "name", "optional", "String", "queue", "Ref", "Queue", "pipe", "Obj", "typename", "version", "LabelAnnotation", "set", "CompanionTo", "Relation", "source", "target", "Expando", "Settings", "mutable", "llmProvider", "Literal", "edgeModel", "ollamaModel", "lmstudioModel", "customPrompts", "Boolean", "CreateChat", "TaggedClass", "meta", "input", "space", "SpaceSchema", "output", "object", "CreateSequence", "Sequence", "Schema", "ComputeGraph", "Type", "TypedObject", "FunctionType", "ApiAuthorizationKey", "Schema", "Struct", "type", "Literal", "key", "String", "placement", "Union", "name", "ApiAuthorizationOauth", "clientId", "clientSecret", "tokenUrl", "grantType", "ApiAuthorization", "ServiceInterfaceFunction", "kind", "fn", "Type", "Ref", "FunctionType", "ServiceInterfaceWorkflow", "workflow", "ComputeGraph", "ServiceInterfaceApi", "schemaUrl", "optional", "schema", "Any", "authorization", "ServiceInterface", "ServiceType", "TypedObject", "typename", "version", "serviceId", "description", "category", "enabled", "Boolean", "interfaces", "Array", "categoryIcons", "finance", "health", "geolocation", "education", "entertainment", "shopping", "travel", "utilities", "weather", "Schema", "Type", "LabelAnnotation", "TemplateInputType", "TemplateInputSchema", "Schema", "mutable", "Struct", "name", "String", "type", "optional", "Enums", "value", "TemplateKinds", "TemplateKindSchema", "Union", "include", "Literal", "typename", "description", "TemplateType", "kind", "source", "inputs", "Array", "command", "pipe", "LabelAnnotation", "set", "Type", "Obj", "version"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// src/capabilities/index.ts
|
|
2
|
+
import { lazy } from "@dxos/app-framework";
|
|
3
|
+
var AiClient = lazy(() => import("./ai-client-ML7OQWAO.mjs"));
|
|
4
|
+
var AppGraphBuilder = lazy(() => import("./app-graph-builder-UJ5NHRGK.mjs"));
|
|
5
|
+
var IntentResolver = lazy(() => import("./intent-resolver-LEAPB55Q.mjs"));
|
|
6
|
+
var ReactSurface = lazy(() => import("./react-surface-TMF7JJA4.mjs"));
|
|
7
|
+
var Settings = lazy(() => import("./settings-N4HEXADL.mjs"));
|
|
8
|
+
|
|
9
|
+
export {
|
|
10
|
+
AiClient,
|
|
11
|
+
AppGraphBuilder,
|
|
12
|
+
IntentResolver,
|
|
13
|
+
ReactSurface,
|
|
14
|
+
Settings
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=chunk-WPZ4UANI.mjs.map
|