@dxos/plugin-assistant 0.8.4-main.7996785055 → 0.8.4-main.8baae0fced
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/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/neutral/AgentArticle-ZHWYIH64.mjs +166 -0
- package/dist/lib/neutral/AgentArticle-ZHWYIH64.mjs.map +7 -0
- package/dist/lib/neutral/AgentProperties-W6LD56IB.mjs +40 -0
- package/dist/lib/neutral/AgentProperties-W6LD56IB.mjs.map +7 -0
- package/dist/lib/neutral/AssistantPlugin.mjs +10 -0
- package/dist/lib/neutral/AssistantPlugin.node.mjs +59 -0
- package/dist/lib/neutral/AssistantPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/AssistantPlugin.workerd.mjs +40 -0
- package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs +40 -0
- package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs.map +7 -0
- package/dist/lib/{browser/BlueprintArticle-O7IDKYXB.mjs → neutral/BlueprintArticle-U7LUBFOS.mjs} +3 -13
- package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs.map +7 -0
- package/dist/lib/neutral/ChatArticle-WVAFZPVI.mjs +8 -0
- package/dist/lib/neutral/ChatCompanion-DFRMRUK3.mjs +133 -0
- package/dist/lib/neutral/ChatCompanion-DFRMRUK3.mjs.map +7 -0
- package/dist/lib/{browser/ChatDialog-TNC4CHJE.mjs → neutral/ChatDialog-QKZLG7SQ.mjs} +12 -26
- package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs.map +7 -0
- package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs +28 -0
- package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs.map +7 -0
- package/dist/lib/neutral/RoutineArticle-EZKJR3KV.mjs +119 -0
- package/dist/lib/neutral/RoutineArticle-EZKJR3KV.mjs.map +7 -0
- package/dist/lib/{browser/PromptList-LS4ZIZJP.mjs → neutral/RoutineList-CLDXGQUD.mjs} +11 -18
- package/dist/lib/neutral/RoutineList-CLDXGQUD.mjs.map +7 -0
- package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs +17 -0
- package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs.map +7 -0
- package/dist/lib/neutral/TracePanel-STGKU65N.mjs +125 -0
- package/dist/lib/neutral/TracePanel-STGKU65N.mjs.map +7 -0
- package/dist/lib/{browser/TriggerStatus-YVPE6X6O.mjs → neutral/TriggerStatus-WTFYUIG5.mjs} +26 -39
- package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs.map +7 -0
- package/dist/lib/neutral/ai-service-7SQH5S4F.mjs +34 -0
- package/dist/lib/neutral/ai-service-7SQH5S4F.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-B6FDKG57.mjs +199 -0
- package/dist/lib/neutral/app-graph-builder-B6FDKG57.mjs.map +7 -0
- package/dist/lib/{browser/blueprint-definition-IFOVIZSP.mjs → neutral/blueprint-definition-VXJYQ5AE.mjs} +9 -16
- package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/blueprints/index.mjs +1 -4
- package/dist/lib/neutral/capabilities/index.mjs +35 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/{browser/chunk-2VIEX4RA.mjs → neutral/chunk-4IXVWSOO.mjs} +7 -7
- package/dist/lib/neutral/chunk-4IXVWSOO.mjs.map +7 -0
- package/dist/lib/neutral/chunk-5AZPD56S.mjs +8 -0
- package/dist/lib/neutral/chunk-5AZPD56S.mjs.map +7 -0
- package/dist/lib/{browser/chunk-YFCVKIRQ.mjs → neutral/chunk-5H6UJHLF.mjs} +4 -7
- package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +7 -0
- package/dist/lib/neutral/chunk-IZQWGJNG.mjs +380 -0
- package/dist/lib/neutral/chunk-IZQWGJNG.mjs.map +7 -0
- package/dist/lib/neutral/chunk-OWFOSXKR.mjs +98 -0
- package/dist/lib/neutral/chunk-OWFOSXKR.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-JXAI2DNW.mjs → neutral/chunk-SLIPV6NN.mjs} +32 -30
- package/dist/lib/neutral/chunk-SLIPV6NN.mjs.map +7 -0
- package/dist/lib/neutral/companion-chat-provisioner-2Y6PRSDK.mjs +116 -0
- package/dist/lib/neutral/companion-chat-provisioner-2Y6PRSDK.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +2371 -0
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +29 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/{browser/create-chat-ZYARKO3O.mjs → neutral/create-chat-QQZURUBW.mjs} +26 -36
- package/dist/lib/neutral/create-chat-QQZURUBW.mjs.map +7 -0
- package/dist/lib/neutral/create-object-RVJO3ZP6.mjs +90 -0
- package/dist/lib/neutral/create-object-RVJO3ZP6.mjs.map +7 -0
- package/dist/lib/{browser/edge-model-resolver-YTMFQEN5.mjs → neutral/edge-model-resolver-XDNBZ3US.mjs} +2 -2
- package/dist/lib/{browser/edge-model-resolver-YTMFQEN5.mjs.map → neutral/edge-model-resolver-XDNBZ3US.mjs.map} +3 -3
- package/dist/lib/neutral/ensure-companion-chat-5S4LZM2H.mjs +58 -0
- package/dist/lib/neutral/ensure-companion-chat-5S4LZM2H.mjs.map +7 -0
- package/dist/lib/neutral/execution-graph/index.mjs +658 -0
- package/dist/lib/neutral/execution-graph/index.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +938 -0
- package/dist/lib/neutral/hooks/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +32 -0
- package/dist/lib/{browser/local-model-resolver-CGRQH37T.mjs → neutral/local-model-resolver-I2BENFFS.mjs} +8 -4
- package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs.map +7 -0
- package/dist/lib/{browser/markdown-EKDPL7HL.mjs → neutral/markdown-KTBFOMFM.mjs} +7 -11
- package/dist/lib/neutral/markdown-KTBFOMFM.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +12 -0
- package/dist/lib/neutral/migrations-7DEMVBOG.mjs +28 -0
- package/dist/lib/neutral/migrations-7DEMVBOG.mjs.map +7 -0
- package/dist/lib/neutral/on-create-space-Q2R7OSP6.mjs +19 -0
- package/dist/lib/neutral/on-create-space-Q2R7OSP6.mjs.map +7 -0
- package/dist/lib/{browser/operation-handler-V3LRD63Z.mjs → neutral/operation-handler-SF36MOB5.mjs} +3 -7
- package/dist/lib/neutral/operation-handler-SF36MOB5.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +8 -0
- package/dist/lib/neutral/plugin.mjs +16 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-T4R65UJU.mjs +174 -0
- package/dist/lib/neutral/react-surface-T4R65UJU.mjs.map +7 -0
- package/dist/lib/{browser/resolve-navigation-targets-7Z37XH6T.mjs → neutral/resolve-navigation-targets-VXBSWV5L.mjs} +4 -7
- package/dist/lib/neutral/resolve-navigation-targets-VXBSWV5L.mjs.map +7 -0
- package/dist/lib/{browser/run-prompt-in-new-chat-BTTYZUFT.mjs → neutral/run-prompt-in-new-chat-KPXN5YJ2.mjs} +29 -39
- package/dist/lib/neutral/run-prompt-in-new-chat-KPXN5YJ2.mjs.map +7 -0
- package/dist/lib/neutral/set-current-chat-ZFDCYK5I.mjs +48 -0
- package/dist/lib/neutral/set-current-chat-ZFDCYK5I.mjs.map +7 -0
- package/dist/lib/{browser/settings-2KRFM5GU.mjs → neutral/settings-W4BLWQ53.mjs} +6 -11
- package/dist/lib/neutral/settings-W4BLWQ53.mjs.map +7 -0
- package/dist/lib/{browser/state-4UTSI3FD.mjs → neutral/state-H3G7QCU6.mjs} +10 -9
- package/dist/lib/neutral/state-H3G7QCU6.mjs.map +7 -0
- package/dist/lib/neutral/testing.mjs +8 -0
- package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs +21 -0
- package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs.map +7 -0
- package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs +14 -0
- package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +175 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +20 -0
- package/dist/lib/neutral/update-chat-name-ENXRUMDJ.mjs +54 -0
- package/dist/lib/neutral/update-chat-name-ENXRUMDJ.mjs.map +7 -0
- package/dist/types/src/AssistantPlugin.d.ts +1 -0
- package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
- package/dist/types/src/AssistantPlugin.node.d.ts +4 -0
- package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -0
- package/dist/types/src/AssistantPlugin.test.d.ts +2 -0
- package/dist/types/src/AssistantPlugin.test.d.ts.map +1 -0
- package/dist/types/src/AssistantPlugin.workerd.d.ts +4 -0
- package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -0
- package/dist/types/src/blueprints/assistant/blueprint.d.ts +2 -2
- package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -1
- package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts +2 -0
- package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts.map +1 -0
- package/dist/types/src/capabilities/{ai-service/ai-service.d.ts → ai-service.d.ts} +2 -1
- package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +9 -0
- package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -0
- package/dist/types/src/capabilities/create-object.d.ts +31 -0
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
- package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +55 -11
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/local-model-resolver.d.ts +16 -0
- package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
- package/dist/types/src/capabilities/migrations.d.ts +6 -0
- package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
- package/dist/types/src/capabilities/{operation-handler/operation-handler.d.ts → operation-handler.d.ts} +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings.d.ts +6 -0
- package/dist/types/src/capabilities/settings.d.ts.map +1 -0
- package/dist/types/src/capabilities/{state/state.d.ts → state.d.ts} +4 -2
- package/dist/types/src/capabilities/state.d.ts.map +1 -0
- package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
- package/dist/types/src/components/AgentProperties/AgentProperties.d.ts +7 -0
- package/dist/types/src/components/AgentProperties/AgentProperties.d.ts.map +1 -0
- package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts +15 -0
- package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -0
- package/dist/types/src/components/AgentProperties/index.d.ts +2 -0
- package/dist/types/src/components/AgentProperties/index.d.ts.map +1 -0
- package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +6 -0
- package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -0
- package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts +15 -0
- package/dist/types/src/components/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/AssistantSettings/index.d.ts +2 -0
- package/dist/types/src/components/AssistantSettings/index.d.ts.map +1 -0
- package/dist/types/src/components/Chat/Chat.d.ts +38 -48
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
- package/dist/types/src/components/Chat/context.d.ts +29 -0
- package/dist/types/src/components/Chat/context.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -1
- package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts +12 -0
- package/dist/types/src/components/ChatPrompt/ChatMcpErrors.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +8 -4
- package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +19 -0
- package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +28 -0
- package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +2 -2
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts +20 -0
- package/dist/types/src/components/ChatPrompt/ChatStatus.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/index.d.ts +3 -0
- package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/Anchor.stories.d.ts +14 -0
- package/dist/types/src/components/ChatThread/Anchor.stories.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/ChatThread.d.ts +6 -3
- package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +7 -433
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +42 -0
- package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/registry.d.ts +18 -0
- package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/sync.d.ts +44 -17
- package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/tool-widget-state.d.ts +18 -0
- package/dist/types/src/components/ChatThread/tool-widget-state.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts +2 -0
- package/dist/types/src/components/ChatThread/tool-widget-state.test.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts +8 -0
- package/dist/types/src/components/ChatThread/widgets/FallbackWidget.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts +25 -0
- package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +18 -0
- package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts +9 -0
- package/dist/types/src/components/ChatThread/widgets/ReferenceWidget.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts +14 -0
- package/dist/types/src/components/ChatThread/widgets/SelectWidget.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts +12 -0
- package/dist/types/src/components/ChatThread/widgets/StatsWidget.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts +12 -0
- package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts +11 -0
- package/dist/types/src/components/ChatThread/widgets/SuggestionWidget.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts +5 -0
- package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts +9 -0
- package/dist/types/src/components/ChatThread/widgets/ToolWidget.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts +15 -0
- package/dist/types/src/components/ChatThread/widgets/ToolWidget.stories.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/defaults.d.ts +5 -0
- package/dist/types/src/components/ChatThread/widgets/defaults.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/index.d.ts +10 -0
- package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -0
- package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +11 -0
- package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -0
- package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +7 -0
- package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -0
- package/dist/types/src/components/ProcessTree/index.d.ts +2 -0
- package/dist/types/src/components/ProcessTree/index.d.ts.map +1 -0
- package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts +7 -0
- package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts.map +1 -0
- package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts +15 -0
- package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts.map +1 -0
- package/dist/types/src/components/RoutineProperties/index.d.ts +2 -0
- package/dist/types/src/components/RoutineProperties/index.d.ts.map +1 -0
- package/dist/types/src/components/TaskList/TaskList.d.ts +10 -0
- package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -0
- package/dist/types/src/components/TaskList/TaskList.stories.d.ts +16 -0
- package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -0
- package/dist/types/src/components/TaskList/index.d.ts +2 -0
- package/dist/types/src/components/TaskList/index.d.ts.map +1 -0
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -6
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +1 -425
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +4 -5
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +2 -426
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -1
- package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +4 -13
- package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.d.ts +4 -8
- package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +1 -425
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +6 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts +6 -0
- package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -0
- package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +21 -0
- package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/AgentArticle/index.d.ts +2 -0
- package/dist/types/src/containers/AgentArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts +6 -0
- package/dist/types/src/containers/AgentProperties/AgentProperties.d.ts.map +1 -0
- package/dist/types/src/containers/AgentProperties/index.d.ts +2 -0
- package/dist/types/src/containers/AgentProperties/index.d.ts.map +1 -0
- package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +3 -3
- package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -1
- package/dist/types/src/containers/BlueprintArticle/index.d.ts +1 -2
- package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -1
- package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +12 -0
- package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -0
- package/dist/types/src/containers/ChatArticle/ChatArticle.stories.d.ts +15 -0
- package/dist/types/src/containers/ChatArticle/ChatArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/ChatArticle/index.d.ts +2 -0
- package/dist/types/src/containers/ChatArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +14 -9
- package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
- package/dist/types/src/containers/ChatCompanion/index.d.ts +1 -2
- package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -1
- package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
- package/dist/types/src/containers/ChatDialog/index.d.ts +1 -2
- package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -1
- package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts +6 -0
- package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +1 -0
- package/dist/types/src/containers/PlanArticle/index.d.ts +2 -0
- package/dist/types/src/containers/PlanArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +6 -0
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -0
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +15 -0
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/RoutineArticle/index.d.ts +2 -0
- package/dist/types/src/containers/RoutineArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/RoutineList/RoutineList.d.ts +6 -0
- package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +1 -0
- package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +21 -0
- package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +1 -0
- package/dist/types/src/containers/RoutineList/index.d.ts +2 -0
- package/dist/types/src/containers/RoutineList/index.d.ts.map +1 -0
- package/dist/types/src/containers/TracePanel/TracePanel.d.ts +6 -4
- package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -1
- package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts +15 -0
- package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -0
- package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts +1 -1
- package/dist/types/src/containers/TracePanel/dxn-extractor.d.ts.map +1 -1
- package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -1
- package/dist/types/src/containers/TracePanel/testing/index.d.ts +3 -0
- package/dist/types/src/containers/TracePanel/testing/index.d.ts.map +1 -0
- package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +14 -0
- package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -0
- package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts +12 -0
- package/dist/types/src/containers/TracePanel/testing/snapshot-playback.d.ts.map +1 -0
- package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +3 -2
- package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
- package/dist/types/src/containers/TriggerStatus/index.d.ts +1 -2
- package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +6 -5
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/execution-graph/execution-graph.d.ts +108 -0
- package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -0
- package/dist/types/src/execution-graph/execution-graph.test.d.ts +2 -0
- package/dist/types/src/execution-graph/execution-graph.test.d.ts.map +1 -0
- package/dist/types/src/execution-graph/index.d.ts +3 -0
- package/dist/types/src/execution-graph/index.d.ts.map +1 -0
- package/dist/types/src/execution-graph/remote-snapshot.test.d.ts +2 -0
- package/dist/types/src/execution-graph/remote-snapshot.test.d.ts.map +1 -0
- package/dist/types/src/execution-graph/span-tree.d.ts +76 -0
- package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -0
- package/dist/types/src/execution-graph/span-tree.test.d.ts +2 -0
- package/dist/types/src/execution-graph/span-tree.test.d.ts.map +1 -0
- package/dist/types/src/execution-graph/testing/collect-trace-events.d.ts +40 -0
- package/dist/types/src/execution-graph/testing/collect-trace-events.d.ts.map +1 -0
- package/dist/types/src/execution-graph/testing/index.d.ts +2 -0
- package/dist/types/src/execution-graph/testing/index.d.ts.map +1 -0
- package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
- package/dist/types/src/feed-logger.d.ts +13 -0
- package/dist/types/src/feed-logger.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +2 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts +4 -4
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatKeymap.d.ts +12 -0
- package/dist/types/src/hooks/useChatKeymap.d.ts.map +1 -0
- package/dist/types/src/hooks/useChatProcessor.d.ts +6 -6
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatServices.d.ts +7 -5
- package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
- package/dist/types/src/hooks/useContextBinder.d.ts +4 -3
- package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
- package/dist/types/src/hooks/useContextObjects.d.ts +2 -2
- package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
- package/dist/types/src/hooks/useDebug.d.ts +10 -0
- package/dist/types/src/hooks/useDebug.d.ts.map +1 -0
- package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -1
- package/dist/types/src/hooks/useFlush.d.ts +1 -1
- package/dist/types/src/hooks/useFlush.d.ts.map +1 -1
- package/dist/types/src/hooks/usePresets.d.ts +1 -1
- package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
- package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +0 -5
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/create-chat.d.ts +3 -3
- package/dist/types/src/operations/create-chat.d.ts.map +1 -1
- package/dist/types/src/operations/ensure-companion-chat.d.ts +5 -0
- package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +1 -2
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/on-create-space.d.ts +3 -3
- package/dist/types/src/operations/on-create-space.d.ts.map +1 -1
- package/dist/types/src/operations/prompt.node.test.d.ts +2 -0
- package/dist/types/src/operations/prompt.node.test.d.ts.map +1 -0
- package/dist/types/src/operations/resolve-navigation-targets.d.ts +2 -2
- package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -1
- package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +3 -3
- package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
- package/dist/types/src/operations/set-current-chat.d.ts +3 -3
- package/dist/types/src/operations/set-current-chat.d.ts.map +1 -1
- package/dist/types/src/operations/toggle-trace-panel-debug.d.ts +5 -0
- package/dist/types/src/operations/toggle-trace-panel-debug.d.ts.map +1 -0
- package/dist/types/src/operations/update-chat-name.d.ts +3 -3
- package/dist/types/src/operations/update-chat-name.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/processor/index.d.ts +0 -1
- package/dist/types/src/processor/index.d.ts.map +1 -1
- package/dist/types/src/processor/presets.d.ts +1 -1
- package/dist/types/src/processor/presets.d.ts.map +1 -1
- package/dist/types/src/processor/processor.d.ts +76 -36
- package/dist/types/src/processor/processor.d.ts.map +1 -1
- package/dist/types/src/processor/processor.node.test.d.ts +2 -0
- package/dist/types/src/processor/processor.node.test.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +2 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/snapshot.d.ts +21 -0
- package/dist/types/src/testing/snapshot.d.ts.map +1 -0
- package/dist/types/src/testing/test-generator.d.ts +2 -3
- package/dist/types/src/testing/test-generator.d.ts.map +1 -1
- package/dist/types/src/testing/test-generator.test.d.ts +2 -0
- package/dist/types/src/testing/test-generator.test.d.ts.map +1 -0
- package/dist/types/src/testing/test-sequence.d.ts +3 -3
- package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
- package/dist/types/src/testing/test-services.d.ts +1 -1
- package/dist/types/src/testing/test-services.d.ts.map +1 -1
- package/dist/types/src/testing/test-trace.d.ts +5 -0
- package/dist/types/src/testing/test-trace.d.ts.map +1 -0
- package/dist/types/src/testing/trace-timeline.node.test.d.ts +2 -0
- package/dist/types/src/testing/trace-timeline.node.test.d.ts.map +1 -0
- package/dist/types/src/testing.d.ts +2 -0
- package/dist/types/src/testing.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +2 -425
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Assistant.d.ts +31 -13
- package/dist/types/src/types/Assistant.d.ts.map +1 -1
- package/dist/types/src/types/AssistantCapabilities.d.ts +30 -0
- package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -0
- package/dist/types/src/types/AssistantEvents.d.ts +3 -0
- package/dist/types/src/types/AssistantEvents.d.ts.map +1 -0
- package/dist/types/src/{operations/definitions.d.ts → types/AssistantOperation.d.ts} +65 -23
- package/dist/types/src/types/AssistantOperation.d.ts.map +1 -0
- package/dist/types/src/types/Settings.d.ts +27 -0
- package/dist/types/src/types/Settings.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +3 -3
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/service.d.ts +1 -1
- package/dist/types/src/types/service.d.ts.map +1 -1
- package/dist/types/src/util/suggestions.d.ts +9 -0
- package/dist/types/src/util/suggestions.d.ts.map +1 -0
- package/dist/types/src/util/suggestions.test.d.ts +2 -0
- package/dist/types/src/util/suggestions.test.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +173 -113
- package/src/AssistantPlugin.node.ts +66 -0
- package/src/AssistantPlugin.test.ts +49 -0
- package/src/AssistantPlugin.ts +126 -0
- package/src/AssistantPlugin.workerd.ts +41 -0
- package/src/blueprints/assistant/{blueprint.test.ts → blueprint.node.test.ts} +13 -15
- package/src/blueprints/assistant/blueprint.ts +4 -4
- package/src/capabilities/ai-service.ts +44 -0
- package/src/capabilities/app-graph-builder.ts +197 -0
- package/src/capabilities/{blueprint-definition/blueprint-definition.ts → blueprint-definition.ts} +11 -13
- package/src/capabilities/companion-chat-provisioner.ts +163 -0
- package/src/capabilities/create-object.ts +102 -0
- package/src/capabilities/index.ts +24 -11
- package/src/capabilities/{local-model-resolver/local-model-resolver.ts → local-model-resolver.ts} +14 -4
- package/src/capabilities/{markdown/markdown.ts → markdown.ts} +3 -2
- package/src/capabilities/migrations.ts +28 -0
- package/src/capabilities/{operation-handler/operation-handler.ts → operation-handler.ts} +2 -2
- package/src/capabilities/react-surface.tsx +175 -0
- package/src/capabilities/{settings/settings.ts → settings.ts} +2 -2
- package/src/capabilities/{state/state.ts → state.ts} +10 -3
- package/src/capabilities/{toolkit/toolkit.ts → toolkit.ts} +2 -4
- package/src/components/AgentProperties/AgentProperties.stories.tsx +74 -0
- package/src/components/AgentProperties/AgentProperties.tsx +104 -0
- package/src/components/AgentProperties/index.ts +5 -0
- package/src/components/AssistantSettings/AssistantSettings.stories.tsx +35 -0
- package/src/components/AssistantSettings/AssistantSettings.tsx +43 -0
- package/src/components/AssistantSettings/index.ts +5 -0
- package/src/components/Chat/Chat.tsx +113 -273
- package/src/components/Chat/context.ts +39 -0
- package/src/components/ChatPrompt/ChatActions.tsx +28 -16
- package/src/components/ChatPrompt/ChatMcpErrors.tsx +50 -0
- package/src/components/ChatPrompt/ChatOptions.stories.tsx +136 -0
- package/src/components/ChatPrompt/ChatOptions.tsx +246 -59
- package/src/components/ChatPrompt/ChatPrompt.tsx +182 -0
- package/src/components/ChatPrompt/ChatReferences.tsx +7 -7
- package/src/components/ChatPrompt/ChatStatus.tsx +123 -0
- package/src/components/ChatPrompt/ChatStatusIndicator.tsx +1 -1
- package/src/components/ChatPrompt/index.ts +3 -0
- package/src/components/ChatThread/Anchor.stories.tsx +95 -0
- package/src/components/ChatThread/ChatThread.stories.tsx +56 -67
- package/src/components/ChatThread/ChatThread.tsx +46 -33
- package/src/components/ChatThread/DEBUG.md +41 -0
- package/src/components/ChatThread/MarkdownStream.stories.tsx +281 -0
- package/src/components/ChatThread/registry.tsx +148 -65
- package/src/components/ChatThread/sync.test.ts +183 -25
- package/src/components/ChatThread/sync.ts +93 -103
- package/src/components/ChatThread/testing/reasoning.md +25 -0
- package/src/components/ChatThread/testing/thinking.md +21 -0
- package/src/components/ChatThread/testing/thread-1.md +30 -0
- package/src/components/ChatThread/testing/{thread.md → thread-2.md} +19 -0
- package/src/components/ChatThread/testing/thread-widgets.md +79 -0
- package/src/components/ChatThread/tool-widget-state.test.ts +34 -0
- package/src/components/ChatThread/tool-widget-state.ts +48 -0
- package/src/components/ChatThread/widgets/FallbackWidget.tsx +26 -0
- package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +68 -0
- package/src/components/ChatThread/widgets/ReasoningWidget.ts +133 -0
- package/src/components/ChatThread/widgets/ReferenceWidget.ts +33 -0
- package/src/components/ChatThread/widgets/SelectWidget.ts +39 -0
- package/src/components/ChatThread/widgets/StatsWidget.ts +31 -0
- package/src/components/ChatThread/widgets/StatusWidget.ts +53 -0
- package/src/components/ChatThread/widgets/SuggestionWidget.ts +41 -0
- package/src/components/ChatThread/widgets/SummaryWidget.tsx +27 -0
- package/src/components/ChatThread/widgets/ToolWidget.stories.tsx +55 -0
- package/src/components/ChatThread/widgets/ToolWidget.tsx +156 -0
- package/src/components/ChatThread/widgets/defaults.ts +8 -0
- package/src/components/ChatThread/widgets/index.ts +13 -0
- package/src/components/ProcessTree/ProcessTree.stories.tsx +83 -0
- package/src/components/ProcessTree/ProcessTree.tsx +119 -0
- package/src/components/ProcessTree/index.ts +5 -0
- package/src/components/RoutineProperties/RoutineProperties.stories.tsx +59 -0
- package/src/components/RoutineProperties/RoutineProperties.tsx +23 -0
- package/src/components/RoutineProperties/index.ts +5 -0
- package/src/components/TaskList/TaskList.stories.tsx +44 -0
- package/src/components/TaskList/TaskList.tsx +45 -0
- package/src/components/{Typewriter → TaskList}/index.ts +1 -1
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +3 -3
- package/src/components/TemplateEditor/TemplateEditor.tsx +10 -7
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +5 -9
- package/src/components/TemplateEditor/TemplateForm.tsx +52 -73
- package/src/components/TemplateEditor/extensions/handlebars-extension.ts +1 -1
- package/src/components/ToolBlock/ToolBlock.tsx +10 -9
- package/src/components/Toolbox/Toolbox.stories.tsx +5 -5
- package/src/components/Toolbox/Toolbox.tsx +6 -5
- package/src/components/index.ts +8 -0
- package/src/containers/AgentArticle/AgentArticle.stories.tsx +120 -0
- package/src/containers/AgentArticle/AgentArticle.tsx +197 -0
- package/src/containers/AgentArticle/index.ts +5 -0
- package/src/containers/AgentProperties/AgentProperties.tsx +43 -0
- package/src/containers/AgentProperties/index.ts +5 -0
- package/src/containers/BlueprintArticle/BlueprintArticle.tsx +4 -4
- package/src/containers/BlueprintArticle/index.ts +1 -3
- package/src/containers/ChatArticle/ChatArticle.stories.tsx +76 -0
- package/src/containers/{ChatContainer/ChatContainer.tsx → ChatArticle/ChatArticle.tsx} +36 -21
- package/src/containers/ChatArticle/index.ts +5 -0
- package/src/containers/ChatCompanion/ChatCompanion.tsx +34 -132
- package/src/containers/ChatCompanion/index.ts +1 -3
- package/src/containers/ChatDialog/ChatDialog.tsx +8 -14
- package/src/containers/ChatDialog/index.ts +1 -3
- package/src/containers/PlanArticle/PlanArticle.tsx +33 -0
- package/src/containers/PlanArticle/index.ts +5 -0
- package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +75 -0
- package/src/containers/RoutineArticle/RoutineArticle.tsx +109 -0
- package/src/containers/RoutineArticle/index.ts +5 -0
- package/src/containers/{PromptList/PromptList.stories.tsx → RoutineList/RoutineList.stories.tsx} +14 -14
- package/src/containers/{PromptList/PromptList.tsx → RoutineList/RoutineList.tsx} +10 -9
- package/src/containers/RoutineList/index.ts +5 -0
- package/src/containers/TracePanel/TracePanel.stories.tsx +319 -0
- package/src/containers/TracePanel/TracePanel.tsx +152 -322
- package/src/containers/TracePanel/dxn-extractor.test.ts +7 -7
- package/src/containers/TracePanel/dxn-extractor.ts +11 -11
- package/src/containers/TracePanel/testing/index.ts +6 -0
- package/src/containers/TracePanel/testing/simulated-agent.ts +114 -0
- package/src/containers/TracePanel/testing/snapshot-playback.ts +45 -0
- package/src/containers/TriggerStatus/TriggerStatus.tsx +23 -38
- package/src/containers/TriggerStatus/index.ts +1 -3
- package/src/containers/index.ts +6 -6
- package/src/execution-graph/SPEC.md +678 -0
- package/src/execution-graph/execution-graph.test.ts +799 -0
- package/src/execution-graph/execution-graph.ts +714 -0
- package/src/execution-graph/index.ts +24 -0
- package/src/execution-graph/remote-snapshot.test.ts +116 -0
- package/src/execution-graph/span-tree.test.ts +249 -0
- package/src/execution-graph/span-tree.ts +259 -0
- package/src/execution-graph/testing/collect-trace-events.ts +74 -0
- package/src/execution-graph/testing/index.ts +5 -0
- package/src/extensions/prompt-extension.ts +3 -3
- package/src/{queue-logger.ts → feed-logger.ts} +45 -24
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useBlueprintRegistry.ts +13 -7
- package/src/hooks/useChatKeymap.ts +52 -0
- package/src/hooks/useChatProcessor.ts +53 -25
- package/src/hooks/useChatServices.ts +10 -21
- package/src/hooks/useChatToolbarActions.ts +88 -90
- package/src/hooks/useContextBinder.ts +19 -8
- package/src/hooks/useContextObjects.ts +2 -2
- package/src/hooks/useDebug.ts +38 -0
- package/src/hooks/usePresets.ts +2 -1
- package/src/index.ts +0 -6
- package/src/meta.ts +5 -2
- package/src/operations/create-chat.ts +28 -19
- package/src/operations/ensure-companion-chat.ts +63 -0
- package/src/operations/index.ts +3 -3
- package/src/operations/on-create-space.ts +4 -4
- package/src/operations/prompt.node.test.ts +80 -0
- package/src/operations/resolve-navigation-targets.ts +3 -3
- package/src/operations/run-prompt-in-new-chat.ts +88 -82
- package/src/operations/set-current-chat.ts +32 -10
- package/src/operations/toggle-trace-panel-debug.ts +27 -0
- package/src/operations/update-chat-name.ts +48 -30
- package/src/plugin.ts +11 -0
- package/src/processor/index.ts +0 -1
- package/src/processor/presets.ts +11 -3
- package/src/processor/processor.node.test.ts +41 -0
- package/src/processor/processor.ts +254 -193
- package/src/testing/data/trace-timeline-multiple.dx.json +1 -0
- package/src/testing/data/trace-timeline-remote.dx.json +1 -0
- package/src/testing/data/trace-timeline.dx.json +4657 -0
- package/src/testing/index.ts +2 -0
- package/src/testing/snapshot.ts +35 -0
- package/src/testing/test-generator.test.ts +70 -0
- package/src/testing/test-generator.ts +214 -192
- package/src/testing/test-sequence.ts +3 -3
- package/src/testing/test-services.ts +1 -1
- package/src/testing/test-trace.ts +20 -0
- package/src/testing/trace-timeline.conversations.json +1 -0
- package/src/testing/trace-timeline.node.conversations.json +1 -0
- package/src/testing/trace-timeline.node.test.ts +251 -0
- package/src/testing.ts +9 -0
- package/src/translations.ts +155 -112
- package/src/types/Assistant.ts +16 -18
- package/src/types/AssistantCapabilities.ts +35 -0
- package/src/types/AssistantEvents.ts +11 -0
- package/src/{operations/definitions.ts → types/AssistantOperation.ts} +36 -7
- package/src/types/Settings.ts +82 -0
- package/src/types/index.ts +5 -3
- package/src/types/service.ts +1 -1
- package/src/util/suggestions.test.ts +52 -0
- package/src/util/suggestions.ts +42 -0
- package/dist/lib/browser/AssistantSettings-SDYAAIS2.mjs +0 -93
- package/dist/lib/browser/AssistantSettings-SDYAAIS2.mjs.map +0 -7
- package/dist/lib/browser/BlueprintArticle-O7IDKYXB.mjs.map +0 -7
- package/dist/lib/browser/ChatCompanion-QDT435XP.mjs +0 -206
- package/dist/lib/browser/ChatCompanion-QDT435XP.mjs.map +0 -7
- package/dist/lib/browser/ChatContainer-6IA3SIYM.mjs +0 -14
- package/dist/lib/browser/ChatDialog-TNC4CHJE.mjs.map +0 -7
- package/dist/lib/browser/ProjectArticle-FJJFE4LS.mjs +0 -97
- package/dist/lib/browser/ProjectArticle-FJJFE4LS.mjs.map +0 -7
- package/dist/lib/browser/ProjectSettings-DDYTUL25.mjs +0 -117
- package/dist/lib/browser/ProjectSettings-DDYTUL25.mjs.map +0 -7
- package/dist/lib/browser/PromptArticle-NA7IJYBW.mjs +0 -73
- package/dist/lib/browser/PromptArticle-NA7IJYBW.mjs.map +0 -7
- package/dist/lib/browser/PromptList-LS4ZIZJP.mjs.map +0 -7
- package/dist/lib/browser/TracePanel-YPDUZKH5.mjs +0 -407
- package/dist/lib/browser/TracePanel-YPDUZKH5.mjs.map +0 -7
- package/dist/lib/browser/TriggerStatus-YVPE6X6O.mjs.map +0 -7
- package/dist/lib/browser/ai-service-CY2BYPH6.mjs +0 -22
- package/dist/lib/browser/ai-service-CY2BYPH6.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-LATYLZE6.mjs +0 -255
- package/dist/lib/browser/app-graph-builder-LATYLZE6.mjs.map +0 -7
- package/dist/lib/browser/blueprint-definition-IFOVIZSP.mjs.map +0 -7
- package/dist/lib/browser/chunk-2VIEX4RA.mjs.map +0 -7
- package/dist/lib/browser/chunk-5B7RDLFZ.mjs +0 -8
- package/dist/lib/browser/chunk-5B7RDLFZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-HE6DIUYX.mjs +0 -149
- package/dist/lib/browser/chunk-HE6DIUYX.mjs.map +0 -7
- package/dist/lib/browser/chunk-ITKPUTIW.mjs +0 -103
- package/dist/lib/browser/chunk-ITKPUTIW.mjs.map +0 -7
- package/dist/lib/browser/chunk-L6R55X33.mjs +0 -155
- package/dist/lib/browser/chunk-L6R55X33.mjs.map +0 -7
- package/dist/lib/browser/chunk-RI3GWI6T.mjs +0 -2135
- package/dist/lib/browser/chunk-RI3GWI6T.mjs.map +0 -7
- package/dist/lib/browser/chunk-RTUG64Q4.mjs +0 -314
- package/dist/lib/browser/chunk-RTUG64Q4.mjs.map +0 -7
- package/dist/lib/browser/chunk-YFCVKIRQ.mjs.map +0 -7
- package/dist/lib/browser/create-chat-ZYARKO3O.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -435
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/local-model-resolver-CGRQH37T.mjs.map +0 -7
- package/dist/lib/browser/markdown-EKDPL7HL.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/on-create-space-QBTI5UPD.mjs +0 -23
- package/dist/lib/browser/on-create-space-QBTI5UPD.mjs.map +0 -7
- package/dist/lib/browser/operation-handler-V3LRD63Z.mjs.map +0 -7
- package/dist/lib/browser/operations/index.mjs +0 -13
- package/dist/lib/browser/react-surface-RLHFSOO7.mjs +0 -172
- package/dist/lib/browser/react-surface-RLHFSOO7.mjs.map +0 -7
- package/dist/lib/browser/resolve-navigation-targets-7Z37XH6T.mjs.map +0 -7
- package/dist/lib/browser/run-prompt-in-new-chat-BTTYZUFT.mjs.map +0 -7
- package/dist/lib/browser/set-current-chat-KWOC5WYV.mjs +0 -30
- package/dist/lib/browser/set-current-chat-KWOC5WYV.mjs.map +0 -7
- package/dist/lib/browser/settings-2KRFM5GU.mjs.map +0 -7
- package/dist/lib/browser/state-4UTSI3FD.mjs.map +0 -7
- package/dist/lib/browser/toolkit-XRSBBB3L.mjs +0 -16
- package/dist/lib/browser/toolkit-XRSBBB3L.mjs.map +0 -7
- package/dist/lib/browser/types/index.mjs +0 -21
- package/dist/lib/browser/update-chat-name-5FJSXO7O.mjs +0 -36
- package/dist/lib/browser/update-chat-name-5FJSXO7O.mjs.map +0 -7
- package/dist/lib/node-esm/AssistantSettings-APDXNTQQ.mjs +0 -94
- package/dist/lib/node-esm/AssistantSettings-APDXNTQQ.mjs.map +0 -7
- package/dist/lib/node-esm/BlueprintArticle-AV6BYHMQ.mjs +0 -38
- package/dist/lib/node-esm/BlueprintArticle-AV6BYHMQ.mjs.map +0 -7
- package/dist/lib/node-esm/ChatCompanion-NY7VUCQP.mjs +0 -207
- package/dist/lib/node-esm/ChatCompanion-NY7VUCQP.mjs.map +0 -7
- package/dist/lib/node-esm/ChatContainer-OERYLF4C.mjs +0 -15
- package/dist/lib/node-esm/ChatDialog-3HRJNIAC.mjs +0 -87
- package/dist/lib/node-esm/ChatDialog-3HRJNIAC.mjs.map +0 -7
- package/dist/lib/node-esm/ProjectArticle-5OD6RNVS.mjs +0 -98
- package/dist/lib/node-esm/ProjectArticle-5OD6RNVS.mjs.map +0 -7
- package/dist/lib/node-esm/ProjectSettings-JQLRY6AS.mjs +0 -118
- package/dist/lib/node-esm/ProjectSettings-JQLRY6AS.mjs.map +0 -7
- package/dist/lib/node-esm/PromptArticle-OIWAJL46.mjs +0 -74
- package/dist/lib/node-esm/PromptArticle-OIWAJL46.mjs.map +0 -7
- package/dist/lib/node-esm/PromptList-HDPYYB2R.mjs +0 -56
- package/dist/lib/node-esm/PromptList-HDPYYB2R.mjs.map +0 -7
- package/dist/lib/node-esm/TracePanel-CZ34U6TD.mjs +0 -408
- package/dist/lib/node-esm/TracePanel-CZ34U6TD.mjs.map +0 -7
- package/dist/lib/node-esm/TriggerStatus-4TPPGPPG.mjs +0 -106
- package/dist/lib/node-esm/TriggerStatus-4TPPGPPG.mjs.map +0 -7
- package/dist/lib/node-esm/ai-service-ZI3A6RVG.mjs +0 -23
- package/dist/lib/node-esm/ai-service-ZI3A6RVG.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-7NW24QOO.mjs +0 -256
- package/dist/lib/node-esm/app-graph-builder-7NW24QOO.mjs.map +0 -7
- package/dist/lib/node-esm/blueprint-definition-SXKMCYS3.mjs +0 -40
- package/dist/lib/node-esm/blueprint-definition-SXKMCYS3.mjs.map +0 -7
- package/dist/lib/node-esm/blueprints/index.mjs +0 -12
- package/dist/lib/node-esm/chunk-AH2IGRRQ.mjs +0 -34
- package/dist/lib/node-esm/chunk-AH2IGRRQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-JXAI2DNW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-KHQM4BYS.mjs +0 -10
- package/dist/lib/node-esm/chunk-KHQM4BYS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-KPVPDVSY.mjs +0 -2136
- package/dist/lib/node-esm/chunk-KPVPDVSY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PPNS6AW4.mjs +0 -156
- package/dist/lib/node-esm/chunk-PPNS6AW4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SG27NPDT.mjs +0 -316
- package/dist/lib/node-esm/chunk-SG27NPDT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TEYTGR67.mjs +0 -25
- package/dist/lib/node-esm/chunk-TEYTGR67.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YQJNIYQB.mjs +0 -150
- package/dist/lib/node-esm/chunk-YQJNIYQB.mjs.map +0 -7
- package/dist/lib/node-esm/create-chat-DBZLK27V.mjs +0 -82
- package/dist/lib/node-esm/create-chat-DBZLK27V.mjs.map +0 -7
- package/dist/lib/node-esm/edge-model-resolver-CMJ3KNLQ.mjs +0 -22
- package/dist/lib/node-esm/edge-model-resolver-CMJ3KNLQ.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -436
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/local-model-resolver-FFDAKOXN.mjs +0 -21
- package/dist/lib/node-esm/local-model-resolver-FFDAKOXN.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-RO7WIR76.mjs +0 -115
- package/dist/lib/node-esm/markdown-RO7WIR76.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/on-create-space-7RZULGPS.mjs +0 -24
- package/dist/lib/node-esm/on-create-space-7RZULGPS.mjs.map +0 -7
- package/dist/lib/node-esm/operation-handler-JKMSHWQF.mjs +0 -18
- package/dist/lib/node-esm/operation-handler-JKMSHWQF.mjs.map +0 -7
- package/dist/lib/node-esm/operations/index.mjs +0 -14
- package/dist/lib/node-esm/react-surface-NDT545FO.mjs +0 -173
- package/dist/lib/node-esm/react-surface-NDT545FO.mjs.map +0 -7
- package/dist/lib/node-esm/resolve-navigation-targets-XFZJ2A5H.mjs +0 -24
- package/dist/lib/node-esm/resolve-navigation-targets-XFZJ2A5H.mjs.map +0 -7
- package/dist/lib/node-esm/run-prompt-in-new-chat-MKDE3P3E.mjs +0 -113
- package/dist/lib/node-esm/run-prompt-in-new-chat-MKDE3P3E.mjs.map +0 -7
- package/dist/lib/node-esm/set-current-chat-G3UMPQAB.mjs +0 -31
- package/dist/lib/node-esm/set-current-chat-G3UMPQAB.mjs.map +0 -7
- package/dist/lib/node-esm/settings-I4NYOU5C.mjs +0 -34
- package/dist/lib/node-esm/settings-I4NYOU5C.mjs.map +0 -7
- package/dist/lib/node-esm/state-GOZALHOZ.mjs +0 -28
- package/dist/lib/node-esm/state-GOZALHOZ.mjs.map +0 -7
- package/dist/lib/node-esm/toolkit-5IWGLUF4.mjs +0 -17
- package/dist/lib/node-esm/toolkit-5IWGLUF4.mjs.map +0 -7
- package/dist/lib/node-esm/types/index.mjs +0 -22
- package/dist/lib/node-esm/types/index.mjs.map +0 -7
- package/dist/lib/node-esm/update-chat-name-TJ3AG762.mjs +0 -37
- package/dist/lib/node-esm/update-chat-name-TJ3AG762.mjs.map +0 -7
- package/dist/types/src/blueprints/assistant/blueprint.test.d.ts +0 -2
- package/dist/types/src/blueprints/assistant/blueprint.test.d.ts.map +0 -1
- package/dist/types/src/blueprints/blueprint-manager.test.d.ts +0 -2
- package/dist/types/src/blueprints/blueprint-manager.test.d.ts.map +0 -1
- package/dist/types/src/capabilities/ai-service/ai-service.d.ts.map +0 -1
- package/dist/types/src/capabilities/ai-service/index.d.ts +0 -3
- package/dist/types/src/capabilities/ai-service/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -5
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/edge-model-resolver/index.d.ts +0 -3
- package/dist/types/src/capabilities/edge-model-resolver/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/local-model-resolver/index.d.ts +0 -3
- package/dist/types/src/capabilities/local-model-resolver/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts +0 -13
- package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/markdown/index.d.ts +0 -3
- package/dist/types/src/capabilities/markdown/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/markdown/markdown.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-handler/index.d.ts +0 -4
- package/dist/types/src/capabilities/operation-handler/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/index.d.ts +0 -15
- package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/settings.d.ts +0 -18
- package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
- package/dist/types/src/capabilities/state/index.d.ts +0 -17
- package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
- package/dist/types/src/capabilities/toolkit/index.d.ts +0 -3
- package/dist/types/src/capabilities/toolkit/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +0 -1
- package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +0 -10
- package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +0 -1
- package/dist/types/src/components/ChatProgress/index.d.ts +0 -2
- package/dist/types/src/components/ChatProgress/index.d.ts.map +0 -1
- package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +0 -12
- package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +0 -1
- package/dist/types/src/components/Typewriter/Typewriter.d.ts +0 -11
- package/dist/types/src/components/Typewriter/Typewriter.d.ts.map +0 -1
- package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts +0 -7
- package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +0 -1
- package/dist/types/src/components/Typewriter/assistant-extension.d.ts +0 -5
- package/dist/types/src/components/Typewriter/assistant-extension.d.ts.map +0 -1
- package/dist/types/src/components/Typewriter/index.d.ts +0 -2
- package/dist/types/src/components/Typewriter/index.d.ts.map +0 -1
- package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts +0 -8
- package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts.map +0 -1
- package/dist/types/src/containers/AssistantSettings/index.d.ts +0 -3
- package/dist/types/src/containers/AssistantSettings/index.d.ts.map +0 -1
- package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +0 -20
- package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +0 -1
- package/dist/types/src/containers/ChatContainer/index.d.ts +0 -3
- package/dist/types/src/containers/ChatContainer/index.d.ts.map +0 -1
- package/dist/types/src/containers/Project/ProjectArticle.d.ts +0 -7
- package/dist/types/src/containers/Project/ProjectArticle.d.ts.map +0 -1
- package/dist/types/src/containers/Project/ProjectSettings.d.ts +0 -6
- package/dist/types/src/containers/Project/ProjectSettings.d.ts.map +0 -1
- package/dist/types/src/containers/Project/index.d.ts +0 -7
- package/dist/types/src/containers/Project/index.d.ts.map +0 -1
- package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts +0 -6
- package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts.map +0 -1
- package/dist/types/src/containers/PromptArticle/index.d.ts +0 -3
- package/dist/types/src/containers/PromptArticle/index.d.ts.map +0 -1
- package/dist/types/src/containers/PromptList/PromptList.d.ts +0 -6
- package/dist/types/src/containers/PromptList/PromptList.d.ts.map +0 -1
- package/dist/types/src/containers/PromptList/PromptList.stories.d.ts +0 -445
- package/dist/types/src/containers/PromptList/PromptList.stories.d.ts.map +0 -1
- package/dist/types/src/containers/PromptList/index.d.ts +0 -3
- package/dist/types/src/containers/PromptList/index.d.ts.map +0 -1
- package/dist/types/src/operations/definitions.d.ts.map +0 -1
- package/dist/types/src/processor/processor.test.d.ts +0 -2
- package/dist/types/src/processor/processor.test.d.ts.map +0 -1
- package/dist/types/src/processor/update-name.d.ts +0 -10
- package/dist/types/src/processor/update-name.d.ts.map +0 -1
- package/dist/types/src/queue-logger.d.ts +0 -11
- package/dist/types/src/queue-logger.d.ts.map +0 -1
- package/dist/types/src/types/capabilities.d.ts +0 -41
- package/dist/types/src/types/capabilities.d.ts.map +0 -1
- package/dist/types/src/types/defs.d.ts +0 -2
- package/dist/types/src/types/defs.d.ts.map +0 -1
- package/dist/types/src/types/events.d.ts +0 -5
- package/dist/types/src/types/events.d.ts.map +0 -1
- package/src/AssistantPlugin.tsx +0 -218
- package/src/blueprints/assistant/blueprint.conversations.json +0 -1
- package/src/blueprints/blueprint-manager.conversations.json +0 -1
- package/src/blueprints/blueprint-manager.test.ts +0 -123
- package/src/capabilities/ai-service/ai-service.ts +0 -30
- package/src/capabilities/ai-service/index.ts +0 -7
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -230
- package/src/capabilities/app-graph-builder/index.ts +0 -7
- package/src/capabilities/blueprint-definition/index.ts +0 -10
- package/src/capabilities/edge-model-resolver/index.ts +0 -7
- package/src/capabilities/local-model-resolver/index.ts +0 -7
- package/src/capabilities/markdown/index.ts +0 -7
- package/src/capabilities/operation-handler/index.ts +0 -11
- package/src/capabilities/react-surface/index.ts +0 -7
- package/src/capabilities/react-surface/react-surface.tsx +0 -158
- package/src/capabilities/settings/index.ts +0 -7
- package/src/capabilities/state/index.ts +0 -7
- package/src/capabilities/toolkit/index.ts +0 -7
- package/src/components/ChatProgress/ChatProgress.tsx +0 -56
- package/src/components/ChatProgress/index.ts +0 -5
- package/src/components/Typewriter/AssistantToolbar.tsx +0 -161
- package/src/components/Typewriter/Typewriter.stories.tsx +0 -86
- package/src/components/Typewriter/Typewriter.tsx +0 -50
- package/src/components/Typewriter/assistant-extension.tsx +0 -141
- package/src/containers/AssistantSettings/AssistantSettings.tsx +0 -120
- package/src/containers/AssistantSettings/index.ts +0 -7
- package/src/containers/ChatContainer/index.ts +0 -7
- package/src/containers/Project/ProjectArticle.tsx +0 -128
- package/src/containers/Project/ProjectSettings.tsx +0 -135
- package/src/containers/Project/index.ts +0 -16
- package/src/containers/PromptArticle/PromptArticle.tsx +0 -59
- package/src/containers/PromptArticle/index.ts +0 -7
- package/src/containers/PromptList/index.ts +0 -7
- package/src/processor/processor.test.ts +0 -76
- package/src/processor/update-name.ts +0 -58
- package/src/types/capabilities.ts +0 -29
- package/src/types/defs.ts +0 -5
- package/src/types/events.ts +0 -11
- /package/dist/lib/{browser/ChatContainer-6IA3SIYM.mjs.map → neutral/AssistantPlugin.mjs.map} +0 -0
- /package/dist/lib/{browser/blueprints/index.mjs.map → neutral/ChatArticle-WVAFZPVI.mjs.map} +0 -0
- /package/dist/lib/{browser/operations → neutral/blueprints}/index.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
- /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs.map +0 -0
- /package/dist/lib/{browser/types → neutral}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/ChatContainer-OERYLF4C.mjs.map → neutral/meta.mjs.map} +0 -0
- /package/dist/lib/{node-esm/blueprints → neutral/operations}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/testing.mjs.map} +0 -0
- /package/dist/lib/{node-esm/operations → neutral/types}/index.mjs.map +0 -0
- /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
- /package/dist/types/src/capabilities/{blueprint-definition/blueprint-definition.d.ts → blueprint-definition.d.ts} +0 -0
- /package/dist/types/src/capabilities/{edge-model-resolver/edge-model-resolver.d.ts → edge-model-resolver.d.ts} +0 -0
- /package/dist/types/src/capabilities/{markdown/markdown.d.ts → markdown.d.ts} +0 -0
- /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
- /package/dist/types/src/capabilities/{toolkit/toolkit.d.ts → toolkit.d.ts} +0 -0
- /package/src/capabilities/{edge-model-resolver/edge-model-resolver.ts → edge-model-resolver.ts} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/index.ts", "../../../../src/components/AgentProperties/AgentProperties.tsx", "../../../../src/components/Chat/Chat.tsx", "../../../../src/components/ChatPrompt/ChatActions.tsx", "../../../../src/components/ChatPrompt/ChatMcpErrors.tsx", "../../../../src/components/ChatPrompt/ChatOptions.tsx", "../../../../src/components/ChatPrompt/ChatPresets.tsx", "../../../../src/components/ChatPrompt/ChatPrompt.tsx", "../../../../src/components/ChatPrompt/ChatReferences.tsx", "../../../../src/components/ChatPrompt/ChatStatusIndicator.tsx", "../../../../src/components/ChatPrompt/ChatStatus.tsx", "../../../../src/components/Chat/context.ts", "../../../../src/components/ChatThread/ChatThread.tsx", "../../../../src/components/ChatThread/registry.tsx", "../../../../src/components/ChatThread/tool-widget-state.ts", "../../../../src/components/ChatThread/widgets/FallbackWidget.tsx", "../../../../src/components/ChatThread/widgets/ReasoningWidget.ts", "../../../../src/components/ChatThread/widgets/defaults.ts", "../../../../src/components/ChatThread/widgets/ReferenceWidget.ts", "../../../../src/components/ChatThread/widgets/SelectWidget.ts", "../../../../src/components/ChatThread/widgets/StatsWidget.ts", "../../../../src/components/ChatThread/widgets/StatusWidget.ts", "../../../../src/components/ChatThread/widgets/SummaryWidget.tsx", "../../../../src/components/ChatThread/widgets/SuggestionWidget.ts", "../../../../src/components/ChatThread/widgets/ToolWidget.tsx", "../../../../src/components/ChatThread/sync.ts", "../../../../src/components/TaskList/TaskList.tsx", "../../../../src/components/ProcessTree/ProcessTree.tsx", "../../../../src/components/TemplateEditor/TemplateEditor.tsx", "../../../../src/components/TemplateEditor/extensions/handlebars-extension.ts", "../../../../src/components/TemplateEditor/extensions/xml-extension.ts", "../../../../src/components/Toolbox/Toolbox.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport * from './AgentProperties';\nexport * from './Chat';\nexport * from './ProcessTree';\nexport * from './TaskList';\nexport * from './TemplateEditor';\nexport * from './Toolbox';\n\nexport const AssistantSettings: ComponentType<any> = lazy(() => import('./AssistantSettings'));\nexport const RoutineProperties: ComponentType<any> = lazy(() => import('./RoutineProperties'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { type Agent } from '@dxos/assistant-toolkit';\nimport { DXN, Filter, Obj, Ref } from '@dxos/echo';\nimport { AtomObj } from '@dxos/echo-atom';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\nimport { FeedAnnotation } from '@dxos/schema';\n\nimport { meta } from '#meta';\n\nexport type AgentPropertiesProps = {\n agent: Agent.Agent;\n};\n\nexport const AgentProperties = ({ agent }: AgentPropertiesProps) => {\n const { t } = useTranslation(meta.id);\n const db = Obj.getDatabase(agent);\n\n // Build a filter matching objects of any schema annotated as a feed.\n const feedFilter = useMemo(() => {\n if (!db) {\n return Filter.nothing();\n }\n\n const schemas = db.schemaRegistry.query({ location: ['database', 'runtime'] }).runSync();\n const feedSchemas = schemas.filter((schema) => {\n const annotation = FeedAnnotation.get(schema);\n return Option.isSome(annotation) && annotation.value === true;\n });\n\n return feedSchemas.length === 0 ? Filter.nothing() : Filter.or(...feedSchemas.map((schema) => Filter.type(schema)));\n }, [db]);\n\n const subscribedObjects = useQuery(db, feedFilter);\n\n // Query all existing subscriptions (e.g., mail, calendar, etc.)\n const existingSubscriptions = useAtomValue(\n useMemo(\n () =>\n AtomObj.make(agent).pipe((_) =>\n Atom.make((get) => {\n const agentObj = get(_);\n const selectedSubscriptions: Obj.Unknown[] = subscribedObjects.filter((object) =>\n agentObj.subscriptions.some((subscription) => DXN.equals(subscription.dxn, Obj.getDXN(object))),\n );\n\n return selectedSubscriptions;\n }),\n ),\n [agent, subscribedObjects],\n ),\n );\n\n // Create/remove agent subscription.\n const handleSubscriptionChange = useCallback(\n (object: Obj.Unknown, checked: boolean) => {\n Obj.update(agent, (agent) => {\n if (checked) {\n agent.subscriptions.push(Ref.fromDXN(Obj.getDXN(object)));\n } else {\n agent.subscriptions = agent.subscriptions.filter(\n (subscription) => !DXN.equals(subscription.dxn, Obj.getDXN(object)),\n );\n }\n });\n },\n [agent],\n );\n\n if (subscribedObjects.length === 0) {\n return null;\n }\n\n return (\n <Form.Section>\n <Input.Root>\n <Input.Label classNames='mt-form-gap'>{t('subscriptions.label')}</Input.Label>\n </Input.Root>\n\n {subscribedObjects.map((object) => (\n <Input.Root key={object.id}>\n <div className='flex items-center gap-2'>\n <Input.Checkbox\n checked={existingSubscriptions.includes(object)}\n onCheckedChange={(checked) => {\n handleSubscriptionChange(object, checked === true);\n }}\n />\n <Input.Label>{Obj.getLabel(object) ?? object.id}</Input.Label>\n </div>\n </Input.Root>\n ))}\n </Form.Section>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Array from 'effect/Array';\nimport * as Option from 'effect/Option';\nimport React, { type PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Agent, Plan } from '@dxos/assistant-toolkit';\nimport { Event } from '@dxos/async';\nimport { type Feed, Filter, Obj, Query } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { type MarkdownStreamController } from '@dxos/react-ui-markdown';\nimport { Menu, MenuRootProps } from '@dxos/react-ui-menu';\nimport { Message } from '@dxos/types';\nimport { composable, composableProps } from '@dxos/ui-theme';\n\nimport { useChatKeymapExtensions, useChatToolbarActions, useDebug } from '#hooks';\n\nimport {\n ChatStatus,\n ChatPrompt as NaturalChatPrompt,\n type ChatPromptProps as NaturalChatPromptProps,\n} from '../ChatPrompt';\nimport { ChatThread as NaturalChatThread, type ChatThreadProps as NaturalChatThreadProps } from '../ChatThread';\nimport { TaskList } from '../TaskList';\nimport { ChatContextProvider, type ChatContextValue, type ChatRequestTiming, useChatContext } from './context';\nimport { type ChatEvent } from './events';\n\nexport { useChatContext };\n\n//\n// Root\n//\n\ntype ChatRootProps = PropsWithChildren<\n Pick<ChatContextValue, 'db' | 'chat' | 'processor'> & {\n feed?: Feed.Feed;\n onEvent?: (event: ChatEvent) => void;\n }\n>;\n\nconst ChatRoot = ({ children, chat, feed, processor, onEvent, ...props }: ChatRootProps) => {\n const [debug, setDebug] = useState(false);\n const streaming = useAtomValue(processor.streaming);\n const active = useAtomValue(processor.active);\n const requestTiming = useRequestTiming({ active });\n const lastPrompt = useRef<string | undefined>(undefined);\n const db = props.db ?? (chat && Obj.getDatabase(chat));\n\n const feedMessages = useQuery(\n db,\n feed ? Query.select(Filter.type(Message.Message)).from(feed) : Query.select(Filter.nothing()),\n );\n const pendingMessages = useAtomValue(processor.messages);\n const messages = useMemo(\n () => Array.dedupeWith([...feedMessages, ...pendingMessages], ({ id: a }, { id: b }) => a === b),\n [feedMessages, pendingMessages],\n );\n\n const dump = useDebug({ processor });\n\n const event = useMemo(() => new Event<ChatEvent>(), []);\n useEffect(() => {\n return event.on((ev) => {\n switch (ev.type) {\n case 'toggle-debug': {\n setDebug((debug) => {\n if (debug) {\n return false;\n } else {\n void dump();\n return true;\n }\n });\n break;\n }\n\n case 'submit': {\n const text = ev.text.trim();\n if (!streaming && text.length) {\n lastPrompt.current = ev.text;\n void processor.request({ message: text });\n }\n break;\n }\n\n case 'retry': {\n if (!streaming) {\n void processor.retry();\n }\n break;\n }\n\n case 'cancel': {\n if (streaming) {\n void processor.cancel();\n if (lastPrompt.current) {\n event.emit({ type: 'update-prompt', text: lastPrompt.current });\n }\n }\n break;\n }\n }\n\n onEvent?.(ev);\n });\n }, [event, dump, processor, streaming, onEvent]);\n\n return (\n <ChatContextProvider\n debug={debug}\n event={event}\n db={db}\n chat={chat}\n messages={messages}\n processor={processor}\n requestTiming={requestTiming}\n {...props}\n >\n {children}\n </ChatContextProvider>\n );\n};\n\nChatRoot.displayName = 'Chat.Root';\n\nconst useRequestTiming = ({ active }: { active: boolean }) => {\n const [requestTiming, setRequestTiming] = useState<ChatRequestTiming | null>(null);\n useEffect(() => {\n if (active) {\n setRequestTiming({ startedAt: Date.now(), endedAt: null });\n } else {\n setRequestTiming((prev) => (prev && prev.endedAt == null ? { ...prev, endedAt: Date.now() } : prev));\n }\n }, [active]);\n\n return requestTiming;\n};\n\n//\n// Toolbar\n//\n\nconst CHAT_TOOLBAR_NAME = 'Chat.Toolbar';\n\ntype ChatToolbarProps = Pick<MenuRootProps, 'attendableId'> & {\n companionTo?: Obj.Unknown;\n};\n\nconst ChatToolbar = composable<HTMLDivElement, ChatToolbarProps>(\n ({ attendableId, companionTo, ...props }, forwardedRef) => {\n const { chat } = useChatContext(CHAT_TOOLBAR_NAME);\n const menuActions = useChatToolbarActions({ chat, companionTo });\n\n return (\n <Menu.Root {...menuActions} attendableId={attendableId}>\n <Menu.Toolbar {...composableProps(props)} ref={forwardedRef} />\n </Menu.Root>\n );\n },\n);\n\nChatToolbar.displayName = CHAT_TOOLBAR_NAME;\n\n//\n// Content\n//\n\nconst CHAT_CONTENT_NAME = 'Chat.Content';\n\ntype ChatContentProps = {};\n\nconst ChatContent = composable<HTMLDivElement, ChatContentProps>(({ children, ...props }, forwardedRef) => {\n return (\n <div {...composableProps(props, { classNames: 'dx-expander flex flex-col' })} ref={forwardedRef}>\n {children}\n </div>\n );\n});\n\nChatContent.displayName = CHAT_CONTENT_NAME;\n\n//\n// Thread\n//\n\nconst CHAT_THREAD_NAME = 'Chat.Thread';\n\ntype ChatThreadProps = Omit<NaturalChatThreadProps, 'identity' | 'messages' | 'tools'>;\n\nconst ChatThread = ({ viewType, debug: debugProp, ...props }: ChatThreadProps) => {\n const { debug, event, messages, processor } = useChatContext(CHAT_THREAD_NAME);\n const debugView = viewType === 'debug';\n const identity = useIdentity();\n const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);\n const extensions = useChatKeymapExtensions({ event });\n\n const controllerRef = useRef<MarkdownStreamController | null>(null);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'submit':\n case 'scroll-to-bottom':\n controllerRef.current?.scrollToBottom();\n break;\n case 'nav-previous':\n controllerRef.current?.navigatePrevious();\n break;\n case 'nav-next':\n controllerRef.current?.navigateNext();\n break;\n }\n });\n }, [event]);\n\n const handleEvent = useCallback<NonNullable<NaturalChatThreadProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n if (!identity) {\n return <div className='dx-expander' />;\n }\n\n return (\n <NaturalChatThread\n {...props}\n identity={identity}\n messages={messages}\n error={error}\n debug={debugProp ?? (debug || debugView)}\n viewType={viewType}\n extensions={extensions}\n onEvent={handleEvent}\n ref={controllerRef}\n />\n );\n};\n\nChatThread.displayName = CHAT_THREAD_NAME;\n\n//\n// Prompt\n//\n\nconst CHAT_PROMPT_NAME = 'Chat.Prompt';\n\ntype ChatPromptProps = Omit<NaturalChatPromptProps, 'chat' | 'db' | 'processor' | 'event'>;\n\nconst ChatPrompt = (props: ChatPromptProps) => {\n const { chat, db, processor, event } = useChatContext(CHAT_PROMPT_NAME);\n return <NaturalChatPrompt {...props} chat={chat} db={db} processor={processor} event={event} />;\n};\n\nChatPrompt.displayName = CHAT_PROMPT_NAME;\n\n//\n// TaskList\n//\n\nconst CHAT_TASK_LIST_NAME = 'Chat.TaskList';\n\ntype ChatTaskListProps = {\n plan?: Plan.Plan;\n};\n\nconst ChatTaskList = composable<HTMLDivElement, ChatTaskListProps>(({ plan: planProp, ...props }, forwardedRef) => {\n const { chat } = useChatContext(CHAT_TASK_LIST_NAME);\n const parent = chat ? Obj.getParent(chat) : undefined;\n const agent = parent && Obj.instanceOf(Agent.Agent, parent) ? parent : undefined;\n const plan = planProp ?? agent?.plan.target;\n if (!plan) {\n return null;\n }\n\n return <TaskList {...props} plan={plan} ref={forwardedRef} />;\n});\n\nChatTaskList.displayName = CHAT_TASK_LIST_NAME;\n\n//\n// Chat\n//\n\nexport const Chat = {\n Root: ChatRoot,\n Toolbar: ChatToolbar,\n Content: ChatContent,\n Prompt: ChatPrompt,\n Status: ChatStatus,\n Thread: ChatThread,\n TaskList: ChatTaskList,\n};\n\nexport type { ChatRootProps, ChatToolbarProps, ChatContentProps, ChatPromptProps, ChatThreadProps, ChatEvent };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\nimport { type ChatEvent } from '../Chat';\n\nexport type ChatActionsProps = ThemedClassName<\n PropsWithChildren<{\n microphone?: boolean;\n recording?: boolean;\n processing?: boolean;\n debug?: boolean;\n onEvent?: (event: ChatEvent) => void;\n }>\n>;\n\nexport const ChatActions = ({\n classNames,\n children,\n microphone,\n recording,\n processing,\n debug,\n onEvent,\n}: ChatActionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className={mx('flex items-center', classNames)}>\n {children}\n\n {microphone && (\n <IconButton\n disabled={!processing}\n classNames={mx(recording && 'bg-primary-500')}\n variant='ghost'\n icon='ph--microphone--regular'\n iconOnly\n noTooltip\n label={t('microphone.button')}\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\n {debug && (\n <IconButton\n variant='ghost'\n icon='ph--wrench--regular'\n iconOnly\n label={t('debug.button')}\n onClick={() => onEvent?.({ type: 'toggle-debug' })}\n />\n )}\n\n <IconButton\n disabled={!processing}\n variant='ghost'\n icon='ph--x--regular'\n iconOnly\n label={t('cancel-processing.button')}\n onClick={() => onEvent?.({ type: 'cancel' })}\n />\n </div>\n );\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport React, { useCallback } from 'react';\n\nimport { Message, type ThemedClassName, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nimport { type AiChatProcessor } from '../../processor';\n\nexport type ChatMcpErrorsProps = ThemedClassName<{\n processor: AiChatProcessor;\n}>;\n\n/**\n * Inline banner that lists MCP servers that failed to connect during the most recent request.\n * The chat itself keeps working without these servers — this just lets the user see what was dropped.\n */\nexport const ChatMcpErrors = ({ classNames, processor }: ChatMcpErrorsProps) => {\n const { t } = useTranslation(meta.id);\n const errors = useAtomValue(processor.mcpErrors);\n\n const handleDismiss = useCallback(() => {\n processor.dismissMcpErrors();\n }, [processor]);\n\n if (errors.length === 0) {\n return null;\n }\n\n return (\n <Message.Root classNames={['m-1', classNames]} valence='warning'>\n <Message.Title onClose={handleDismiss}>{t('mcp-server-error.label')}</Message.Title>\n <Message.Content asChild>\n <ul className='flex flex-col gap-0.5 text-sm'>\n {errors.map((error) => (\n <li key={`${error.url}::${error.protocol}`} className='truncate'>\n <span className='font-mono'>{error.url}</span>\n {' — '}\n <span>{error.message}</span>\n </li>\n ))}\n </ul>\n </Message.Content>\n </Message.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { type JSX, useCallback, useMemo, useState } from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { type Chat as ChatModule, McpServer } from '@dxos/assistant-toolkit';\nimport { type Blueprint } from '@dxos/compute';\nimport { Annotation, type Database, Filter, Obj, Type } from '@dxos/echo';\nimport { useObject, useQuery } from '@dxos/react-client/echo';\nimport { IconButton, Input, Popover, Select, useTranslation } from '@dxos/react-ui';\nimport { Listbox } from '@dxos/react-ui-list';\nimport { SearchList, useSearchListResults } from '@dxos/react-ui-search';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { getStyles, mx } from '@dxos/ui-theme';\n\nimport { useActiveBlueprints, useBlueprintHandlers, useBlueprints, useContextObjects, useFilteredTypes } from '#hooks';\nimport { meta } from '#meta';\nimport { Assistant } from '#types';\n\nconst styles = {\n panel: 'w-[calc(100dvw-.5rem)] sm:w-max max-w-document-width',\n toolbar: 'p-0! gap-0! border-t border-separator',\n};\n\nexport type ChatOptionsProps = {\n chat?: ChatModule.Chat;\n db: Database.Database;\n context: AiContext.Binder;\n blueprintRegistry?: Blueprint.Registry;\n presets?: { id: string; label: string }[];\n preset?: string;\n onPresetChange?: (id: string) => void;\n};\n\n/**\n * Manages the runtime context for the chat.\n */\nexport const ChatOptions = ({\n chat,\n db,\n context,\n blueprintRegistry,\n presets,\n preset,\n onPresetChange,\n}: ChatOptionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className='flex'>\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton variant='ghost' icon='ph--plus--regular' iconOnly label={t('context-objects.button')} />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={styles.panel}>\n <Popover.Viewport>\n <ObjectsPanel db={db} context={context} />\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton\n variant='ghost'\n icon='ph--sliders-horizontal--regular'\n iconOnly\n label={t('context-settings.button')}\n />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={styles.panel}>\n <Popover.Viewport>\n <Tabs.Root\n classNames='flex'\n orientation='horizontal'\n defaultValue='view'\n defaultActivePart='list'\n tabIndex={-1}\n >\n <Tabs.Viewport classNames={mx('grid grid-rows-[1fr_40px] w-full')}>\n <Tabs.Panel tabIndex={-1} classNames='dx-focus-ring-inset overflow-hidden' value='view'>\n <ViewPanel chat={chat} />\n </Tabs.Panel>\n <Tabs.Panel tabIndex={-1} classNames='dx-focus-ring-inset overflow-hidden' value='blueprints'>\n <BlueprintsPanel blueprintRegistry={blueprintRegistry} db={db} context={context} />\n </Tabs.Panel>\n <Tabs.Panel tabIndex={-1} classNames='dx-focus-ring-inset overflow-hidden' value='mcp-servers'>\n <McpServersPanel db={db} />\n </Tabs.Panel>\n <Tabs.Panel tabIndex={-1} classNames='dx-focus-ring-inset overflow-hidden' value='model'>\n <ModelsPanel presets={presets} preset={preset} onPresetChange={onPresetChange} />\n </Tabs.Panel>\n <Tabs.Tablist classNames={[styles.toolbar]}>\n <Tabs.IconTab value='view' icon='ph--eye--regular' label={t('chat-view.title')} />\n <Tabs.IconTab\n value='blueprints'\n icon='ph--blueprint--regular'\n label={t('options.blueprints.title')}\n />\n <Tabs.IconTab\n value='mcp-servers'\n icon='ph--plugs-connected--regular'\n label={t('options.mcp.title')}\n />\n <Tabs.IconTab value='model' icon='ph--cpu--regular' label={t('options.chat-model.title')} />\n </Tabs.Tablist>\n </Tabs.Viewport>\n </Tabs.Root>\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n );\n};\n\nconst BlueprintsPanel = ({\n blueprintRegistry,\n db,\n context,\n}: Pick<ChatOptionsProps, 'blueprintRegistry' | 'db' | 'context'>) => {\n const { t } = useTranslation(meta.id);\n\n const blueprints = useBlueprints({ blueprintRegistry, db });\n const activeBlueprints = useActiveBlueprints({ context });\n const { onUpdateBlueprint } = useBlueprintHandlers({ db, context, blueprintRegistry });\n const { results, handleSearch } = useSearchListResults({\n items: blueprints,\n extract: (blueprint) => blueprint.name,\n });\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <SearchList.Content classNames='flex flex-col'>\n <SearchList.Viewport>\n {results.map((blueprint) => {\n const blueprintKey = Obj.getMeta(blueprint).key ?? blueprint.id;\n const isActive = activeBlueprints.has(blueprintKey);\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={blueprintKey}\n value={blueprintKey}\n label={blueprint.name}\n checked={isActive}\n onSelect={() => onUpdateBlueprint?.(blueprintKey, !isActive)}\n />\n );\n })}\n </SearchList.Viewport>\n <SearchList.Input placeholder={t('search.placeholder')} classNames='border-t border-separator' autoFocus />\n </SearchList.Content>\n </SearchList.Root>\n );\n};\n\nconst ViewPanel = ({ chat }: Pick<ChatOptionsProps, 'chat'>) => {\n const { t } = useTranslation(meta.id);\n const [view, setView] = useObject(chat, 'view');\n const value = (view as Assistant.ChatView | undefined) ?? 'normal';\n\n return (\n <Listbox.Root value={value} onValueChange={setView} autoFocus>\n {Assistant.ChatViews.map((view) => (\n <Listbox.Option key={view} value={view}>\n <Listbox.OptionLabel>{t(`chat-view.${view}.label`, { defaultValue: view })}</Listbox.OptionLabel>\n <Listbox.OptionIndicator />\n </Listbox.Option>\n ))}\n </Listbox.Root>\n );\n};\n\nconst ModelsPanel = ({\n presets,\n preset,\n onPresetChange,\n}: Pick<ChatOptionsProps, 'presets' | 'preset' | 'onPresetChange'>) => {\n return (\n <Listbox.Root value={preset} onValueChange={onPresetChange} autoFocus>\n {presets?.map(({ id, label }) => {\n return (\n <Listbox.Option key={id} value={id}>\n <Listbox.OptionLabel>{label}</Listbox.OptionLabel>\n <Listbox.OptionIndicator />\n </Listbox.Option>\n );\n })}\n </Listbox.Root>\n );\n};\n\ntype McpServersPanelProps = {\n db: Database.Database;\n};\n\nconst McpServersPanel = ({ db }: McpServersPanelProps) => {\n const { t } = useTranslation(meta.id);\n const servers = useQuery(db, Filter.type(McpServer.McpServer));\n const [adding, setAdding] = useState(false);\n\n const handleAdd = useCallback(\n (name: string, url: string, protocol: 'sse' | 'http', apiKey?: string) => {\n db.add(Obj.make(McpServer.McpServer, { name, url, protocol, apiKey, enabled: true }));\n setAdding(false);\n },\n [db],\n );\n\n const handleRemove = useCallback(\n (server: McpServer.McpServer) => {\n db.remove(server);\n },\n [db],\n );\n\n return (\n <div className='p-form-chrome'>\n {servers.map((server) => (\n <McpServerRow key={server.id} server={server} onRemove={handleRemove} />\n ))}\n {adding ? (\n <McpServerForm onSubmit={handleAdd} onCancel={() => setAdding(false)} />\n ) : (\n <div>\n <IconButton\n variant='ghost'\n icon='ph--plus--regular'\n label={t('mcp-server-add.label')}\n onClick={() => setAdding(true)}\n />\n </div>\n )}\n </div>\n );\n};\n\ntype McpServerRowProps = {\n server: McpServer.McpServer;\n onRemove: (server: McpServer.McpServer) => void;\n};\n\n/**\n * `useQuery` returns live objects but only re-renders on result-identity changes,\n * so we must subscribe to the per-server `enabled` field via `useObject` to keep the\n * switch in sync with mutations made through the returned setter.\n */\nconst McpServerRow = ({ server, onRemove }: McpServerRowProps) => {\n const { t } = useTranslation(meta.id);\n const [enabled, setEnabled] = useObject(server, 'enabled');\n\n return (\n <div className='flex items-center gap-2 px-form-chrome'>\n <Input.Root>\n <Input.Label srOnly>{server.name}</Input.Label>\n <Input.Switch checked={enabled !== false} onCheckedChange={(checked) => setEnabled(!!checked)} />\n </Input.Root>\n <span className='flex-1 truncate text-sm'>{server.name}</span>\n <span className='truncate text-xs text-description'>{server.url}</span>\n <IconButton\n variant='ghost'\n icon='ph--x--regular'\n iconOnly\n label={t('mcp-server-remove.label')}\n onClick={() => onRemove(server)}\n />\n </div>\n );\n};\n\ntype McpServerFormProps = {\n onSubmit: (name: string, url: string, protocol: 'sse' | 'http', apiKey?: string) => void;\n onCancel: () => void;\n};\n\nconst McpServerForm = ({ onSubmit, onCancel }: McpServerFormProps) => {\n const { t } = useTranslation(meta.id);\n const [name, setName] = useState('');\n const [url, setUrl] = useState('');\n const [protocol, setProtocol] = useState<'sse' | 'http'>('sse');\n const [apiKey, setApiKey] = useState('');\n\n const canSubmit = name.trim().length > 0 && url.trim().length > 0;\n const handleSubmit = useCallback(() => {\n if (canSubmit) {\n onSubmit(name.trim(), url.trim(), protocol, apiKey.trim() || undefined);\n }\n }, [canSubmit, name, url, protocol, apiKey, onSubmit]);\n\n return (\n <div className='space-y-2 px-form-chrome'>\n <Input.Root>\n <Input.Label srOnly>{t('mcp-server-name.label')}</Input.Label>\n <Input.TextInput\n placeholder={t('mcp-server-name.placeholder')}\n value={name}\n onChange={(event) => setName(event.target.value)}\n autoFocus\n />\n </Input.Root>\n <Input.Root>\n <Input.Label srOnly>{t('mcp-server-url.label')}</Input.Label>\n <Input.TextInput\n placeholder={t('mcp-server-url.placeholder')}\n value={url}\n onChange={(event) => setUrl(event.target.value)}\n />\n </Input.Root>\n <Select.Root value={protocol} onValueChange={(value) => setProtocol(value as 'sse' | 'http')}>\n <Select.TriggerButton placeholder={t('mcp-server-protocol.label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value='sse'>SSE</Select.Option>\n <Select.Option value='http'>HTTP</Select.Option>\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n <Input.Root>\n <Input.Label srOnly>{t('mcp-server-api-key.label')}</Input.Label>\n <Input.TextInput\n type='password'\n placeholder={t('mcp-server-api-key.placeholder')}\n value={apiKey}\n onChange={(event) => setApiKey(event.target.value)}\n />\n </Input.Root>\n <div className='flex gap-2'>\n <IconButton\n variant='ghost'\n icon='ph--check--regular'\n iconOnly\n label={t('save.button')}\n onClick={handleSubmit}\n disabled={!canSubmit}\n />\n <IconButton variant='ghost' icon='ph--x--regular' iconOnly label={t('cancel.button')} onClick={onCancel} />\n </div>\n </div>\n );\n};\n\nconst ANY = '__any__';\n\n/** @private */\nexport const ObjectsPanel = ({ db, context }: Pick<ChatOptionsProps, 'db' | 'context'>): JSX.Element => {\n const { t } = useTranslation(meta.id);\n\n // Item types sorted by label.\n const types = useFilteredTypes(db);\n const typenames = useMemo(() => {\n const typenames = types.map((type) => {\n const typename = Type.getTypename(type);\n return {\n typename,\n label: t('typename.label', { ns: typename, defaultValue: typename }),\n };\n });\n\n typenames.sort((a, b) => a.label.localeCompare(b.label));\n return typenames;\n }, [types]);\n\n // Current type and filter.\n const [typename, setTypename] = useState<string>(ANY);\n const anyFilter = useMemo(\n () => Filter.or(...typenames.map(({ typename }) => Filter.typename(typename))),\n [typenames],\n );\n\n // Context objects.\n const objects = useQuery(db, typename === ANY ? anyFilter : Filter.typename(typename));\n const { objects: contextObjects, onUpdateObject } = useContextObjects({ db, context });\n const { results, handleSearch } = useSearchListResults({\n items: objects,\n extract: (object) => Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id,\n });\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <SearchList.Content classNames='p-form-chrome [&:has([cmdk-list-sizer]:empty)]:py-0'>\n <SearchList.Viewport>\n {results.length ? (\n results.map((object) => {\n const isActive = contextObjects.findIndex((obj) => obj.id === object.id) !== -1;\n const { icon, hue } = Option.fromNullable(Obj.getSchema(object)).pipe(\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.getOrElse(() => ({\n icon: 'ph--cube--regular',\n hue: undefined as string | undefined,\n })),\n );\n const styles = hue ? getStyles(hue) : undefined;\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={object.id}\n value={object.id}\n icon={icon}\n iconClassNames={styles?.foreground}\n label={Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id}\n checked={isActive}\n onSelect={() => onUpdateObject?.(Obj.getDXN(object), !isActive)}\n />\n );\n })\n ) : (\n <SearchList.Item value='__empty__' label={t('no-results.message')} />\n )}\n </SearchList.Viewport>\n </SearchList.Content>\n\n <div className={mx('flex flex-col', styles.toolbar)}>\n <Select.Root value={typename === ANY ? undefined : typename} onValueChange={setTypename}>\n <Select.TriggerButton placeholder={t('type-filter.placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.ScrollUpButton />\n <Select.Viewport>\n <Select.Option value={ANY}>{t('any-type-filter.label')}</Select.Option>\n {typenames.map(({ typename, label }) => (\n <Select.Option key={typename} value={typename}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.ScrollDownButton />\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n <SearchList.Input placeholder={t('search.placeholder')} autoFocus />\n </div>\n </SearchList.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Select } from '@dxos/react-ui';\n\nexport type ChatPresetsProps = {\n presets?: { id: string; label: string }[];\n preset?: string;\n onChange?: (id: string) => void;\n};\n\nexport const ChatPresets = ({ presets, preset, onChange }: ChatPresetsProps) => {\n return (\n <Select.Root value={preset} onValueChange={onChange}>\n <Select.TriggerButton classNames='text-sm' />\n <Select.Content>\n {presets?.map(({ id, label }) => (\n <Select.Option key={id} value={id} classNames='text-sm'>\n {label}\n </Select.Option>\n ))}\n <Select.Arrow />\n </Select.Content>\n </Select.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { type Event } from '@dxos/async';\nimport { type Database } from '@dxos/echo';\nimport { type Merge } from '@dxos/effect';\nimport { useVoiceInput } from '@dxos/plugin-transcription';\nimport { Input, type ThemedClassName, useDynamicRef, useTranslation } from '@dxos/react-ui';\nimport { ChatEditor, type ChatEditorController, type ChatEditorProps } from '@dxos/react-ui-chat';\nimport { mx } from '@dxos/ui-theme';\n\nimport { useChatKeymapExtensions } from '#hooks';\nimport { meta } from '#meta';\n\nimport { type AiChatProcessor } from '../../processor';\nimport { type ChatEvent } from '../Chat/events';\nimport { ChatActions, type ChatActionsProps } from './ChatActions';\nimport { ChatMcpErrors } from './ChatMcpErrors';\nimport { ChatOptions } from './ChatOptions';\nimport { type ChatPresetsProps } from './ChatPresets';\nimport { ChatReferences } from './ChatReferences';\nimport { ChatStatusIndicator } from './ChatStatusIndicator';\n\nexport type ChatPromptProps = ThemedClassName<\n Merge<\n {\n outline?: boolean;\n settings?: boolean;\n expandable?: boolean;\n chat?: Chat.Chat;\n db?: Database.Database;\n processor: AiChatProcessor;\n event: Event<ChatEvent>;\n online?: boolean;\n placeholder?: ChatEditorProps['placeholder'];\n onOnlineChange?: (online: boolean) => void;\n onPresetChange?: ChatPresetsProps['onChange'];\n },\n Omit<ChatPresetsProps, 'onChange'>\n >\n>;\n\nexport const ChatPrompt = ({\n classNames,\n outline,\n chat,\n db,\n processor,\n event,\n online,\n placeholder,\n onOnlineChange,\n onPresetChange,\n settings = true,\n presets,\n preset,\n}: ChatPromptProps) => {\n const { t } = useTranslation(meta.id);\n\n const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);\n const streaming = useAtomValue(processor.streaming);\n const active = useAtomValue(processor.active);\n const activeRef = useDynamicRef(active);\n\n const editorRef = useRef<ChatEditorController>(null);\n const [recordingState, setRecordingState] = useState(false);\n useEffect(() => {\n return event.on((ev) => {\n switch (ev.type) {\n case 'update-prompt':\n if (!editorRef.current?.getText()?.length) {\n editorRef.current?.setText(ev.text);\n editorRef.current?.focus();\n }\n break;\n case 'record-start':\n setRecordingState(true);\n break;\n case 'record-stop':\n setRecordingState(false);\n break;\n }\n });\n }, [event]);\n\n // TODO(burdon): Configure capability in TranscriptionPlugin.\n const { recording } = useVoiceInput({\n active: recordingState,\n onUpdate: (text) => {\n editorRef.current?.setText(text);\n editorRef.current?.focus();\n },\n });\n\n const extensions = useChatKeymapExtensions({ event });\n\n const handleSubmit = useCallback<NonNullable<ChatEditorProps['onSubmit']>>(\n (text) => {\n if (!activeRef.current) {\n event.emit({ type: 'submit', text });\n return true;\n }\n },\n [event],\n );\n\n const handleEvent = useCallback<NonNullable<ChatActionsProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n return (\n <div\n role='group'\n className={mx(\n 'flex flex-col w-full dx-density-fine',\n outline &&\n 'bg-group-surface rounded-sm! border border-subdued-separator transition transition-border [&:has(.cm-content:focus)]:border-separator',\n classNames,\n )}\n >\n <ChatMcpErrors processor={processor} />\n\n <div className='flex p-2 gap-2'>\n <ChatStatusIndicator classNames='p-1' preset={preset} error={error} processing={streaming} />\n <ChatEditor\n ref={editorRef}\n autoFocus\n lineWrapping\n classNames='col-span-2 pt-0.5'\n placeholder={placeholder ?? t('prompt.placeholder')}\n extensions={extensions}\n onSubmit={handleSubmit}\n />\n </div>\n\n {db && settings && (\n <div className='flex items-center overflow-hidden p-1.5'>\n <ChatOptions\n chat={chat}\n db={db}\n blueprintRegistry={processor.blueprintRegistry}\n context={processor.context}\n preset={preset}\n presets={presets}\n onPresetChange={onPresetChange}\n />\n\n <div className='flex h-8 grow overflow-x-auto scrollbar-none'>\n <ChatReferences db={db} context={processor.context} />\n </div>\n\n <ChatActions\n classNames='col-span-2'\n microphone={true}\n recording={recording}\n processing={streaming}\n onEvent={handleEvent}\n >\n {/* TODO(burdon): Move offline switch into dialog. */}\n {online !== undefined && (\n <Input.Root>\n <Input.Label srOnly>{t('online-switch.label')}</Input.Label>\n <Input.Switch classNames='mx-1' checked={online} onCheckedChange={onOnlineChange} />\n </Input.Root>\n )}\n </ChatActions>\n </div>\n )}\n </div>\n );\n};\n\nChatPrompt.displayName = 'Chat.Prompt';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { Annotation, type Database, Obj } from '@dxos/echo';\nimport { Icon, IconButton, type Label, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { getStyles, mx } from '@dxos/ui-theme';\n\nimport { useContextObjects } from '#hooks';\nimport { meta } from '#meta';\n\nexport type ChatReferencesProps = ThemedClassName<{\n context: AiContext.Binder;\n db: Database.Database;\n}>;\n\nexport const ChatReferences = ({ classNames, context, db }: ChatReferencesProps) => {\n const { t } = useTranslation(meta.id);\n const { objects, onUpdateObject } = useContextObjects({ db, context });\n\n return (\n <ul className={mx('flex', classNames)}>\n {objects.map((obj) => {\n const dxn = Obj.getDXN(obj);\n const typename = Obj.getTypename(obj);\n const label: Label = Obj.getLabel(obj) ?? (typename ? ['object-name.placeholder', { ns: typename }] : obj.id);\n const { icon, hue } = Option.fromNullable(Obj.getSchema(obj)).pipe(\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.getOrElse(() => ({ icon: DEFAULT_OBJECT_ICON, hue: undefined as string | undefined })),\n );\n const styles = hue ? getStyles(hue) : undefined;\n return (\n <li key={dxn.toString()} className='dx-tag py-0 ps-2 flex items-center gap-1' data-hue='neutral'>\n <Icon icon={icon} size={4} classNames={styles?.foreground} />\n {toLocalizedString(label, t)}\n <IconButton\n icon='ph--x--bold'\n iconOnly\n variant='ghost'\n label={t('remove-object.label')}\n classNames='p-0 hover:bg-transparent'\n size={3}\n onClick={() => onUpdateObject?.(dxn, false)}\n />\n </li>\n );\n })}\n </ul>\n );\n};\n\n// TODO(dmaretskyi): Extract those somewhere else.\nconst DEFAULT_OBJECT_ICON = 'ph--cube--regular';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { type ThemedClassName, Tooltip, useTimeout } from '@dxos/react-ui';\nimport { Spinner, type SpinnerProps } from '@dxos/react-ui-sfx';\nimport { mx } from '@dxos/ui-theme';\n\nconst period = 3_000;\n\nexport type ChatStatusIndicatorProps = ThemedClassName<\n {\n preset?: string;\n processing?: boolean;\n error?: Error;\n } & Pick<SpinnerProps, 'size' | 'onClick'>\n>;\n\nexport const ChatStatusIndicator = ({ classNames, preset, processing, error, ...props }: ChatStatusIndicatorProps) => {\n const [init, setInit] = useState(false);\n useEffect(() => setInit(false), [preset]);\n useTimeout(\n async () => {\n setInit(true);\n },\n period / 2,\n [preset],\n );\n\n return (\n <div className={mx('relative flex', classNames)}>\n <Spinner duration={period} state={!init ? 'flash' : error ? 'error' : processing ? 'spin' : 'pulse'} {...props} />\n {error && (\n <Tooltip.Trigger asChild content={error.message}>\n <div className='absolute inset-0' />\n </Tooltip.Trigger>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { ChatStatus as NaturalChatStatus, formatElapsed } from '@dxos/react-ui-chat';\nimport { Matrix } from '@dxos/react-ui-sfx';\nimport { type ContentBlock } from '@dxos/types';\nimport { Unit } from '@dxos/util';\n\nimport { type ChatRequestTiming, useChatContext } from '../Chat/context';\n\nconst CHAT_STREAM_STATUS_NAME = 'Chat.StreamStatus';\nconst TICK_MS = 1_000;\n\nexport type ChatStreamStatusProps = ThemedClassName<{\n icon?: boolean;\n}>;\n\n/**\n * Live status pill rendered at the bottom of the chat thread.\n *\n * The block-widget host re-mounts this component each time wire's drip queue toggles\n * (`wireDrainingEffect`) — so all visible state is derived from chat-context values that\n * survive the unmount: the latest `stats` block on the chat context's `messages` for token counts,\n * and `requestTiming` (start/end wall-clock timestamps) for the elapsed value.\n *\n * Shows:\n * - elapsed seconds since the most recent request started (frozen at end-of-request)\n * - last completed turn's output token count (from the most recent `stats` content block)\n * - cumulative session total tokens across all `stats` content blocks\n */\nexport const ChatStatus = ({ classNames, icon }: ChatStreamStatusProps) => {\n // Read `messages` from the chat context (combines `useQuery(queue)` + the processor's\n // pending atom) rather than `processor.messages` directly — the latter only contains\n // blocks streamed via the ephemeral `PartialBlock` channel, while finalized blocks\n // (including the per-turn `stats` block we read for token counts) are submitted to the\n // feed via `_submitMessage` and only show up through `useQuery`.\n const { messages, requestTiming } = useChatContext(CHAT_STREAM_STATUS_NAME);\n\n const { lastOutputTokens, sessionTotalTokens } = useMemo(() => {\n let last: number | undefined;\n let total = 0;\n for (const message of messages) {\n for (const block of message.blocks) {\n if (isStats(block) && block.usage) {\n last = block.usage.outputTokens;\n total += block.usage.totalTokens ?? 0;\n }\n }\n }\n return { lastOutputTokens: last, sessionTotalTokens: total };\n }, [messages]);\n\n const isRunning = requestTiming != null && requestTiming.endedAt == null;\n const show = requestTiming || lastOutputTokens || sessionTotalTokens > 0;\n if (!show) {\n return null;\n }\n\n return (\n <NaturalChatStatus.Root defaultRunning={false} classNames={['py-2 gap-2 text-sm', classNames]}>\n {icon && (\n <NaturalChatStatus.Icon>\n <Matrix\n classNames='w-5 h-5'\n dotClassNames='bg-primary-500'\n dim={4}\n dotSize={3}\n count={10}\n interval={500}\n active={isRunning}\n />\n </NaturalChatStatus.Icon>\n )}\n {show && (\n <div className='flex items-center'>\n {requestTiming && (\n <NaturalChatStatus.Text>\n <Elapsed timing={requestTiming} />\n </NaturalChatStatus.Text>\n )}\n {lastOutputTokens != null && (\n <>\n {requestTiming && <NaturalChatStatus.Separator />}\n <NaturalChatStatus.Text>↓ {Unit.Thousand(lastOutputTokens).toString()}</NaturalChatStatus.Text>\n </>\n )}\n {sessionTotalTokens > 0 && (\n <>\n {(requestTiming || lastOutputTokens != null) && <NaturalChatStatus.Separator />}\n <NaturalChatStatus.Text>Σ {Unit.Thousand(sessionTotalTokens).toString()}</NaturalChatStatus.Text>\n </>\n )}\n </div>\n )}\n </NaturalChatStatus.Root>\n );\n};\n\n/**\n * Wall-clock-derived elapsed display. Tick interval forces a re-render every second while\n * the request is active so the displayed value advances; once `endedAt` is set, the value\n * is frozen and the interval is no longer scheduled.\n */\nconst Elapsed = ({ timing }: { timing: ChatRequestTiming }) => {\n const isRunning = timing.endedAt == null;\n const [now, setNow] = useState(Date.now());\n useEffect(() => {\n if (!isRunning) {\n return;\n }\n\n const id = setInterval(() => setNow(Date.now()), TICK_MS);\n return () => clearInterval(id);\n }, [isRunning]);\n\n return <>{formatElapsed((timing.endedAt ?? now) - timing.startedAt)}</>;\n};\n\nconst isStats = (block: ContentBlock.Any): block is ContentBlock.Stats => block._tag === 'stats';\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { type Chat as ChatModule } from '@dxos/assistant-toolkit';\nimport { type Event } from '@dxos/async';\nimport { type Database } from '@dxos/echo';\nimport { type Message } from '@dxos/types';\n\nimport { type AiChatProcessor } from '../../processor';\nimport { type ChatEvent } from './events';\n\n/**\n * Wall-clock timestamps for the most-recent (or in-flight) request, lifted out of\n * `ChatStreamStatus` so the elapsed value survives across re-mounts triggered when wire's\n * drip queue toggles `wireDrainingEffect` (which removes/restores the footer block widget).\n * `endedAt` is `null` while the request is still active.\n */\nexport type ChatRequestTiming = {\n startedAt: number;\n endedAt: number | null;\n};\n\nexport type ChatContextValue = {\n debug?: boolean;\n event: Event<ChatEvent>;\n db?: Database.Database;\n chat?: ChatModule.Chat;\n messages: Message.Message[];\n processor: AiChatProcessor;\n requestTiming: ChatRequestTiming | null;\n};\n\n// Internal: not re-exported from `Chat/index.ts`. Accessed by sibling components in this\n// package (e.g. `ChatStreamStatus`) without dragging in `Chat.tsx`'s heavy transitive\n// imports (transcription, etc.).\nexport const [ChatContextProvider, useChatContext] = createContext<ChatContextValue>('Chat');\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { forwardRef, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { PublicKey } from '@dxos/keys';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type ThemedClassName, setRef } from '@dxos/react-ui';\nimport { MarkdownStream, type MarkdownStreamController, type MarkdownStreamProps } from '@dxos/react-ui-markdown';\nimport { type Message } from '@dxos/types';\nimport { keyToFallback } from '@dxos/util';\n\nimport { type Assistant } from '../../types';\nimport { type ChatEvent } from '../Chat';\nimport { componentRegistry, createBlockRenderer } from './registry';\nimport { MessageSyncer } from './sync';\n\nconst defaultOptions: MarkdownStreamProps['options'] = {\n autoScroll: true,\n cursor: false,\n fader: false,\n typewriter: true,\n};\n\nexport type ChatThreadProps = ThemedClassName<\n {\n identity?: Identity;\n messages?: Message.Message[];\n error?: Error;\n viewType?: Assistant.ChatView;\n onEvent?: (event: ChatEvent) => void;\n } & Pick<MarkdownStreamProps, 'options' | 'debug' | 'extensions' | 'footer'>\n>;\n\nexport const ChatThread = forwardRef<MarkdownStreamController | null, ChatThreadProps>(\n (\n {\n classNames,\n identity,\n messages = [],\n error,\n options = defaultOptions,\n footer,\n debug = false,\n extensions,\n viewType,\n onEvent,\n },\n forwardedRef,\n ) => {\n const [controller, setController] = useState<MarkdownStreamController | null>(null);\n const handleMarkdownStreamRef = useCallback(\n (instance: MarkdownStreamController | null) => {\n setController(instance);\n setRef(forwardedRef, instance);\n },\n [forwardedRef],\n );\n\n const userHue = useMemo(\n () => identity?.profile?.data?.hue || keyToFallback(identity?.identityKey ?? PublicKey.random()).hue,\n [identity],\n );\n\n // Show error.\n useEffect(() => {\n controller?.scrollToBottom();\n }, [controller, error]);\n\n // Update document.\n const renderer = useMemo(() => createBlockRenderer(viewType), [viewType]);\n const syncer = useMemo(() => controller && new MessageSyncer(controller, renderer), [controller, renderer]);\n useEffect(() => {\n if (!syncer) {\n return;\n }\n\n if (syncer.update(messages)) {\n controller?.scrollToBottom('instant');\n }\n }, [controller, syncer, messages]);\n\n // Event adapter.\n const handleEvent = useCallback<NonNullable<MarkdownStreamProps['onEvent']>>(\n ({ type, value }) => {\n switch (type) {\n case 'submit': {\n value && onEvent?.({ type, text: value });\n break;\n }\n }\n },\n [onEvent],\n );\n\n return (\n <div data-hue={userHue} className='contents'>\n <MarkdownStream\n key={viewType}\n classNames={classNames}\n registry={componentRegistry}\n options={options}\n debug={debug}\n extensions={extensions}\n footer={footer}\n onEvent={handleEvent}\n ref={handleMarkdownStreamRef}\n />\n </div>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { log } from '@dxos/log';\nimport { ContentBlock, type Message } from '@dxos/types';\nimport { type XmlWidgetRegistry, getXmlTextChild } from '@dxos/ui-editor';\n\nimport { type Assistant } from '../../types';\nimport { type BlockRenderer, type MessageThreadContext } from './sync';\nimport { applyToolBlockToWidgetState } from './tool-widget-state';\nimport {\n FallbackWidget,\n ReasoningWidget,\n ReferenceWidget,\n SelectWidget,\n SuggestionWidget,\n StatsWidget,\n SummaryWidget,\n ToolWidget,\n StatusWidget,\n} from './widgets';\n\n/**\n * Custom XML tags registry.\n *\n * NOTE: `<prompt>` has no widget — it is rendered via mark + line decorations\n * (`xmlBlockDecoration`) in MarkdownStream so the prompt text remains part of the document\n * and can be highlighted by `xmlFormatting`. It is still listed here so the markdown block\n * parser (`xmlBlockParsers`) knows to keep `<prompt>...</prompt>` as a single HTMLBlock\n * — otherwise an unregistered prompt opens a Paragraph that lazy-continues into the\n * following lines and breaks parsing of subsequent multi-line tags (e.g. a `<reasoning>`\n * block whose content contains an ordered list).\n */\nexport const componentRegistry: XmlWidgetRegistry = {\n //\n // Block-only (no widget — see note above).\n //\n\n prompt: {\n block: true,\n },\n\n //\n // DOM Widgets\n //\n\n synthetic: {\n block: true,\n factory: ({ children, range }) => {\n const text = getXmlTextChild(children);\n // TODO(dmaretskyi): Synthetic blocks are \"user\"-turn messages generated by the system, i.e. and event from a trigger, an email-encoded to JSON, etc.\n // They are meant to start agent, to process the event without looking like user-authored prompt.\n // Create a new widget type for them.\n return text ? new ReasoningWidget(text, range.from) : null;\n },\n },\n reasoning: {\n block: true,\n streaming: true,\n factory: ({ children, range }) => {\n const text = getXmlTextChild(children);\n return text ? new ReasoningWidget(text, range.from) : null;\n },\n },\n reference: {\n block: false,\n factory: ({ children, ref }) => {\n const text = getXmlTextChild(children);\n return text && ref ? new ReferenceWidget(text, ref) : null;\n },\n },\n select: {\n block: true,\n factory: ({ children }) => {\n const options = children\n ?.map((option: any) => option._tag === 'option' && getXmlTextChild(option.children))\n .filter(Boolean);\n return options?.length ? new SelectWidget(options) : null;\n },\n },\n suggestion: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new SuggestionWidget(text) : null;\n },\n },\n stats: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new StatsWidget(text) : null;\n },\n },\n status: {\n block: true,\n streaming: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new StatusWidget(text) : null;\n },\n },\n\n //\n // React Widgets (portaled outside of the editor)\n //\n\n summary: {\n block: true,\n Component: SummaryWidget,\n },\n toolCall: {\n block: true,\n Component: (props) => (\n <div className='py-2'>\n <ToolWidget {...props} />\n </div>\n ),\n },\n toolResult: {\n block: true,\n Component: FallbackWidget,\n },\n toolkit: {\n block: true,\n Component: FallbackWidget,\n },\n\n //\n // Fallback\n //\n\n json: {\n block: true,\n Component: FallbackWidget,\n },\n};\n\n/**\n * Convert block to markdown.\n */\nexport const blockToMarkdown: BlockRenderer = createBlockRenderer('normal');\n\n/**\n * Create a {@link BlockRenderer} that filters blocks based on the chat view type.\n *\n * - `summary`: only user prompts.\n * - `normal`: user prompts + assistant text + tool calls + summary/select/suggestion/reference + status. Hides reasoning.\n * - `thinking`: same as normal plus reasoning.\n * - `debug`: renders every block (raw fallbacks visible).\n */\nexport function createBlockRenderer(viewType: Assistant.ChatView | undefined): BlockRenderer {\n return (context, message, block) => {\n if (!isBlockVisible(viewType, message, block)) {\n return;\n }\n let str = blockToMarkdownImpl(context, message, block);\n if (str && !block.pending) {\n // Use a blank line as the block separator so each rendered block parses as its own\n // markdown block. A single newline lets CommonMark absorb a following `<prompt>` (an\n // HTML type-7 tag, which can't interrupt an open paragraph) into the previous\n // paragraph, rendering the prompt bubble inline next to the prior assistant text.\n return (str += '\\n');\n }\n return str;\n };\n}\n\nconst isBlockVisible = (\n viewType: Assistant.ChatView | undefined,\n message: Message.Message,\n block: ContentBlock.Any,\n): boolean => {\n switch (viewType) {\n case 'debug':\n return true;\n case 'normal':\n return block._tag !== 'reasoning';\n case 'summary':\n // Show only conversational text (user prompts + assistant replies); hide reasoning,\n // tool calls, status, stats, and synthetic system messages.\n return block._tag === 'text' && (block as ContentBlock.Text).disposition !== 'synthetic';\n case 'thinking':\n default:\n return true;\n }\n};\n\nconst blockToMarkdownImpl = (context: MessageThreadContext, message: Message.Message, block: ContentBlock.Any) => {\n log('blockToMarkdown', { block: JSON.stringify(block) });\n switch (block._tag) {\n case 'text': {\n if (message.sender.role === 'user') {\n if (block.disposition === 'synthetic') {\n return renderXMLBlock('synthetic', { content: block.text, pending: block.pending });\n } else {\n return `\\n<prompt>${block.text}</prompt>`;\n }\n } else {\n const text = block.text.trim();\n if (text.length > 0) {\n return text;\n }\n }\n break;\n }\n\n case 'reference': {\n if (block.pending) {\n return;\n }\n const dxn = block.reference.dxn;\n return `<reference ref=\"${dxn.toString()}\">${context.getObjectLabel(dxn)}</reference>`;\n }\n\n case 'suggestion': {\n if (block.pending) {\n return;\n }\n return `<suggestion>${block.text}</suggestion>`;\n }\n\n case 'select': {\n if (block.pending || block.options.length === 0) {\n return;\n }\n return `<select>${block.options.map((option) => `<option>${option}</option>`).join('')}</select>`;\n }\n\n case 'toolCall': {\n applyToolBlockToWidgetState(context, block);\n return `<toolCall id=\"${block.toolCallId}\" />`;\n }\n\n case 'toolResult': {\n // TODO(dmaretskyi): the parameter could be undefined, perhaps tool blocks are not arriving in order.\n applyToolBlockToWidgetState(context, block);\n break;\n }\n\n case 'stats': {\n return '';\n }\n\n case 'reasoning': {\n let text = block.reasoningText ?? block.redactedText;\n if (!text) {\n return;\n }\n return renderXMLBlock('reasoning', { content: text, pending: block.pending });\n }\n\n case 'summary': {\n return renderXMLBlock('summary', { content: block.content, pending: block.pending });\n }\n\n case 'status': {\n return renderXMLBlock('status', { content: block.statusText, pending: block.pending });\n }\n\n default: {\n // TODO(burdon): Needs stable ID.\n return `<json id=\"${message.id}\">\\n${JSON.stringify(block)}\\n</json>`;\n }\n }\n};\n\n/**\n * Escape text embedded in generated XML so the mixed XML parser does not treat `&`, `<`, `>` as markup.\n */\nconst escapeXmlTextContent = (raw: string): string =>\n raw.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n\nconst renderXMLBlock = (tag: string, opts: { content?: string; pending?: boolean; attributes?: string }) => {\n // Replace paragraph breaks so that the markdown parser does not split the content into multiple paragraphs.\n // NOTE: do not strip leading list-marker prefixes (`-`, `*`, `1. `, ...) per line — the streaming\n // tag's range is replaced atomically by the XML widget so the inner markdown is never user-visible,\n // and stripping can collapse a line to empty mid-stream (e.g. when only `1. ` has arrived), breaking\n // the prefix-extension contract that `MessageSyncer` relies on for incremental appends.\n const content = escapeXmlTextContent((opts.content ?? '').replace(/\\n\\n/g, ' ').trim());\n\n if (opts.pending) {\n return `<${tag}${opts.attributes ? ` ${opts.attributes}` : ''}>${content}`;\n } else {\n return `<${tag}${opts.attributes ? ` ${opts.attributes}` : ''}>${content}</${tag}>`;\n }\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { type ContentBlock, type Message } from '@dxos/types';\nimport { type StateDispatch } from '@dxos/ui-editor';\n\n/**\n * Minimal surface used to push tool call / result blocks into {@link MarkdownStreamController} widget state.\n */\nexport type ToolWidgetStateSink = {\n updateWidget<T>(id: string, value: StateDispatch<T>): void;\n};\n\n/**\n * Mirrors tool-related branches of {@link blockToMarkdown} so widget props stay in sync with message blocks.\n */\nexport const applyToolBlockToWidgetState = (context: ToolWidgetStateSink, block: ContentBlock.Any): void => {\n switch (block._tag) {\n case 'toolCall': {\n context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, {\n blocks: [block],\n });\n break;\n }\n case 'toolResult': {\n context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, ({ blocks = [] } = { blocks: [] }) => ({\n blocks: [...blocks, block],\n }));\n break;\n }\n default: {\n break;\n }\n }\n};\n\n/**\n * Re-applies tool widget state after a full document replace (e.g. {@link MarkdownStreamController.setContent}),\n * which clears accumulated widget props via `xmlTagResetEffect`.\n */\nexport const rehydrateToolWidgetsFromMessages = (context: ToolWidgetStateSink, messages: Message.Message[]): void => {\n for (const message of messages) {\n for (const block of message.blocks) {\n applyToolBlockToWidgetState(context, block);\n }\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { TogglePanel } from '@dxos/react-ui-components';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { type XmlWidgetProps } from '@dxos/ui-editor';\n\nimport { type MessageThreadContext } from '../sync';\n\nexport const FallbackWidget = ({ _tag, ...props }: XmlWidgetProps<MessageThreadContext>) => {\n return (\n <TogglePanel.Root>\n <TogglePanel.Header classNames='bg-group-surface'>{_tag}</TogglePanel.Header>\n <TogglePanel.Content classNames='bg-modal-surface'>\n <TogglePanel.Viewport>\n <JsonHighlighter classNames='p-2! text-sm' data={props} />\n </TogglePanel.Viewport>\n </TogglePanel.Content>\n </TogglePanel.Root>\n );\n};\n\nFallbackWidget.displayName = 'Fallback';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nimport { styles } from './defaults';\n\n/**\n * Props used to derive a stable key for a reasoning block across CodeMirror widget rebuilds.\n * CodeMirror does not assign persistent IDs to widgets; streaming re-runs the factory each tick.\n */\nexport type ReasoningWidgetBlockIdProps = {\n id?: string;\n range?: { from: number; to: number };\n};\n\n/**\n * AI reasoning widget.\n */\nexport class ReasoningWidget extends WidgetType {\n readonly #pos: string;\n /** The timer id last registered for this instance (may differ from the map if superseded). */\n #ownedTimerId: ReturnType<typeof setTimeout> | null = null;\n\n constructor(\n private readonly text: string,\n pos: string | number | undefined,\n ) {\n super();\n this.#pos = pos === undefined || pos === '' ? 'reasoning' : String(pos);\n }\n\n override eq(other: this) {\n return this.text === other.text && this.#pos === other.#pos;\n }\n\n override toDOM() {\n return Domino.of('div')\n .classNames(styles.padding)\n .append(\n Domino.of('div')\n .classNames('relative overflow-hidden p-px', styles.border)\n .attributes({ 'data-trail-container': '' })\n .append(\n Domino.of('div')\n .classNames('relative z-10 bg-base-surface rounded-sm text-sm text-subdued py-1')\n .append(\n Domino.of('div')\n .classNames('px-2 max-h-[5lh] overflow-y-auto dx-scrollbar-thin')\n .text(this.text)\n .attributes({ 'data-reasoning-text': '' }),\n ),\n Domino.of('div').attributes({ 'data-id': this.#pos }),\n ),\n ).root;\n }\n\n override updateDOM(dom: HTMLElement) {\n // Update only the text leaf; `dom` may be wrapped in an outer shell, and the trail host is a\n // sibling of the text node inside the bordered container — setting `textContent` on the wrong\n // ancestor would remove `[data-id]`.\n dom.querySelector<HTMLElement>('[data-reasoning-text]')?.replaceChildren(this.text);\n\n // Recreate trail host if it was removed by a prior timeout (streaming paused > TRAIL_REMOVAL_DELAY_MS).\n const container = dom.querySelector<HTMLElement>('[data-trail-container]');\n let trailHost = container?.querySelector<HTMLElement>('[data-id]');\n if (container && !trailHost) {\n trailHost = Domino.of('div').attributes({ 'data-id': this.#pos }).root;\n container.append(trailHost);\n }\n if (trailHost?.childElementCount === 0) {\n trailHost.append(...createTrailLayers());\n }\n\n this.#scheduleTrailRemoval(dom);\n return true;\n }\n\n override destroy(_dom: HTMLElement) {\n this.#clearOwnedTrailTimer();\n }\n\n #scheduleTrailRemoval(dom: HTMLElement) {\n const previous = trailRemovalTimers.get(this.#pos);\n if (previous !== undefined) {\n clearTimeout(previous);\n }\n\n const timerId = setTimeout(() => {\n if (trailRemovalTimers.get(this.#pos) !== timerId) {\n return;\n }\n trailRemovalTimers.delete(this.#pos);\n this.#ownedTimerId = null;\n dom.querySelector<HTMLElement>('[data-id]')?.remove();\n }, TRAIL_REMOVAL_DELAY_MS);\n\n trailRemovalTimers.set(this.#pos, timerId);\n this.#ownedTimerId = timerId;\n }\n\n #clearOwnedTrailTimer() {\n const active = trailRemovalTimers.get(this.#pos);\n if (active !== undefined && active === this.#ownedTimerId) {\n clearTimeout(active);\n trailRemovalTimers.delete(this.#pos);\n }\n this.#ownedTimerId = null;\n }\n}\n\nconst trail = [\n 'absolute z-0 aspect-[2/1] w-16',\n 'bg-[radial-gradient(at_100%_50%,_theme(colors.green.700),_transparent_80%)]',\n '[offset-anchor:100%_50%] [offset-path:border-box]',\n];\n\n/** Delay after the last content update before hiding the trail. */\nconst TRAIL_REMOVAL_DELAY_MS = 1_000;\n\n/**\n * One pending removal timer per logical block. Streaming creates a new widget instance each tick;\n * `destroy` may run after the next instance has already scheduled, so we must not clear a newer timer.\n */\nconst trailRemovalTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst createTrailLayers = (): [HTMLElement, HTMLElement] => [\n Domino.of('div').classNames(...trail, 'animate-trail').root,\n Domino.of('div').classNames(...trail, 'animate-trail-offset').root,\n];\n", "//\n// Copyright 2026 DXOS.org\n//\n\nexport const styles = {\n padding: 'my-4',\n border: 'border border-subdued-separator rounded-sm',\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nimport { styles } from './defaults';\n\nexport class ReferenceWidget extends WidgetType {\n constructor(\n private text: string,\n private dxn: string,\n ) {\n super();\n }\n\n override eq(other: this) {\n return this.dxn === other.dxn;\n }\n\n override toDOM() {\n return Domino.of('div')\n .classNames(styles.padding)\n .append(\n Domino.of('dx-anchor' as any)\n .classNames('dx-tag--anchor')\n .attributes({ dxn: this.dxn })\n .text(this.text),\n ).root;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nimport { styles } from './defaults';\n\n/**\n * Simple prompt widget.\n */\nexport class SelectWidget extends WidgetType {\n constructor(private options: string[]) {\n super();\n }\n\n override eq(other: this) {\n return JSON.stringify(this.options) === JSON.stringify(other.options);\n }\n\n /**\n * NOTE: Container must set var based on user's identity.\n */\n override toDOM() {\n return Domino.of('div')\n .attributes({ role: 'group' })\n .classNames(styles.padding, 'flex flex-wrap gap-1')\n .append(\n ...this.options.map((option) =>\n Domino.of('button')\n .classNames('dx-button inline-block max-w-[100cqi]')\n .attributes({ 'data-action': 'submit', 'data-value': option, 'data-density': 'fine' })\n .text(option),\n ),\n ).root;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nimport { styles } from './defaults';\n\n/**\n * Simple stats widget.\n */\nexport class StatsWidget extends WidgetType {\n constructor(private text: string) {\n super();\n }\n\n override eq(other: this) {\n return this.text === other.text;\n }\n\n override toDOM() {\n return Domino.of('div').classNames(styles.padding, 'text-sm text-placeholder').text(this.text).root;\n }\n\n override updateDOM(dom: HTMLElement) {\n dom.textContent = this.text;\n return true;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nimport { styles } from './defaults';\n\n/**\n * AI status widget.\n */\nexport class StatusWidget extends WidgetType {\n constructor(private readonly text: string) {\n super();\n }\n\n override eq(other: this) {\n return this.text === other.text;\n }\n\n override toDOM() {\n return Domino.of('div')\n .classNames(styles.padding)\n .append(\n Domino.of('div')\n .classNames('relative overflow-hidden rounded-sm')\n .append(\n Domino.of('div')\n .classNames('grid grid-cols-[24px_1fr] gap-x-0.5 gap-y-0 items-start px-0.5 py-0.5 text-placeholder')\n .append(\n Domino.of('div')\n .classNames('flex h-5 w-full shrink-0 items-center justify-center self-start')\n .append(Domino.of('span').classNames('block size-1.5 shrink-0 rounded-full bg-current opacity-45')),\n Domino.of('div')\n .classNames('relative min-w-0')\n .append(\n Domino.of('div')\n .classNames('relative z-10 rounded-sm text-sm leading-5')\n .attributes({ 'data-status-text': '' })\n .text(this.text),\n ),\n ),\n ),\n ).root;\n }\n\n override updateDOM(dom: HTMLElement) {\n dom.querySelector<HTMLElement>('[data-status-text]')?.replaceChildren(this.text);\n return true;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { TogglePanel } from '@dxos/react-ui-components';\nimport { type XmlWidgetProps } from '@dxos/ui-editor';\n\nimport { meta } from '#meta';\n\nimport { MessageThreadContext } from '../sync';\nimport { styles } from './defaults';\n\nexport const SummaryWidget = ({ children }: XmlWidgetProps<MessageThreadContext>) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <TogglePanel.Root classNames={styles.border}>\n <TogglePanel.Header classNames='text-sm bg-group-surface'>{t('summary.label')}</TogglePanel.Header>\n <TogglePanel.Content>\n <div className='p-1 text-sm text-subdued'>{children}</div>\n </TogglePanel.Content>\n </TogglePanel.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { WidgetType } from '@codemirror/view';\n\nimport { Domino, mx } from '@dxos/ui';\n\n/**\n * Simple prompt widget.\n */\nexport class SuggestionWidget extends WidgetType {\n constructor(private text: string) {\n super();\n }\n\n override eq(other: this) {\n return this.text === other.text;\n }\n\n override toDOM() {\n // NOTE: Container must have `dx-inline-size-container` (or `dx-size-container`) to support cqi.\n return Domino.of('span')\n .classNames(mx('inline-flex max-w-[calc(100cqi-8px)] my-1 pe-2 overflow-hidden'))\n .append(\n Domino.of('button')\n .attributes({\n 'data-action': 'submit',\n 'data-density': 'fine',\n 'data-value': this.text,\n })\n .classNames(mx('dx-button gap-2 w-full overflow-hidden'))\n .append(\n Domino.of('dx-icon' as any).attributes({\n icon: 'ph--lightning--regular',\n }),\n Domino.of('span').classNames('flex-1 truncate min-w-0').text(this.text),\n ),\n ).root;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Tool from '@effect/ai/Tool';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { NumericTabs, TextCrawl, TogglePanel, type TogglePanelRootProps } from '@dxos/react-ui-components';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { type ContentBlock, type Message } from '@dxos/types';\nimport { type XmlWidgetProps } from '@dxos/ui-editor';\nimport { isNonNullable, safeParseJson } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nexport const isToolMessage = (message: Message.Message) => {\n return message.blocks.some((block: ContentBlock.Any) => block._tag === 'toolCall' || block._tag === 'toolResult');\n};\n\nexport type ToolWidgetProps = XmlWidgetProps<{\n blocks: ContentBlock.Any[];\n}>;\n\nexport const ToolWidget = ({ view, blocks = [] }: ToolWidgetProps) => {\n const { t } = useTranslation(meta.id);\n\n const items = useMemo<ToolPanelProps['items']>(() => {\n let lastToolCall: { tool: Tool.Any | undefined; block: ContentBlock.ToolCall } | undefined;\n // TODO(burdon): Get from context?\n const tools: Tool.Any[] = []; //processor.conversation.toolkit?.tools ?? [];\n return blocks\n .filter((block) => block._tag === 'toolCall' || block._tag === 'toolResult' || block._tag === 'stats')\n .map((block) => {\n switch (block._tag) {\n case 'toolCall': {\n if (block.pending && lastToolCall?.block.toolCallId === block.toolCallId) {\n return null;\n }\n\n const tool = tools.find((tool) => tool.name === block.name);\n lastToolCall = { tool, block };\n return {\n title: tool?.description ?? [t('tool-call.label'), block.name].filter(Boolean).join(' '),\n content: {\n ...block,\n input: safeParseJson(block.input),\n },\n };\n }\n\n case 'toolResult': {\n // TODO(burdon): Parse error type.\n if (block.error) {\n return {\n title: t('tool-error.label'),\n content: block,\n };\n }\n\n const title =\n lastToolCall?.tool?.description ??\n [t('tool-result.label'), lastToolCall?.block.name].filter(Boolean).join(' ');\n lastToolCall = undefined;\n return {\n title,\n content: {\n ...block,\n result: safeParseJson(block.result),\n },\n };\n }\n\n case 'stats': {\n if (!lastToolCall) {\n return null;\n }\n\n return {\n title: t('stats.label'),\n content: block,\n };\n }\n }\n })\n .filter(isNonNullable);\n }, [blocks, t]);\n\n const handleChangeOpen = useCallback(() => {\n setTimeout(() => {\n // Measure after animation.\n view?.requestMeasure();\n }, 1_000);\n }, [view]);\n\n // Ignore if empty.\n if (!items.length) {\n return null;\n }\n\n return <ToolPanel items={items} onChangeOpen={handleChangeOpen} />;\n};\n\ntype ToolPanelProps = {\n items: { title: string; content: any }[];\n} & Pick<TogglePanelRootProps, 'onChangeOpen'>;\n\nconst ToolPanel = ({ items, onChangeOpen }: ToolPanelProps) => {\n const tabsRef = useRef<HTMLDivElement>(null);\n const [selected, setSelected] = useState(0);\n const [open, setOpen] = useState(false);\n\n // Clamp selected to avoid out-of-bounds after items shrink.\n useEffect(() => {\n setSelected((prev) => Math.min(prev, Math.max(0, items.length - 1)));\n }, [items.length]);\n\n useEffect(() => {\n onChangeOpen?.(open);\n if (open) {\n tabsRef.current?.focus();\n }\n }, [open, onChangeOpen]);\n\n const handleSelect = useCallback((index: number) => {\n setSelected(index);\n }, []);\n\n return (\n <TogglePanel.Root open={open} onChangeOpen={setOpen}>\n <TogglePanel.Header classNames='text-sm text-placeholder'>\n <TextCrawl key='status-roll' lines={items.map((item) => item.title)} autoAdvance greedy />\n </TogglePanel.Header>\n <TogglePanel.Content>\n <TogglePanel.Viewport classNames='grid grid-cols-[32px_1fr]'>\n <NumericTabs\n ref={tabsRef}\n classNames='p-1'\n length={items.length}\n selected={selected}\n onSelect={handleSelect}\n />\n <JsonHighlighter\n data={items[selected]?.content}\n classNames='p-1 text-xs bg-transparent'\n replacer={{\n maxDepth: 3,\n maxArrayLen: 10,\n maxStringLen: 128,\n }}\n />\n </TogglePanel.Viewport>\n </TogglePanel.Content>\n </TogglePanel.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type DXN } from '@dxos/echo';\nimport { type MarkdownStreamController } from '@dxos/react-ui-markdown';\nimport { type ContentBlock, type Message } from '@dxos/types';\nimport { type StateDispatch, type XmlWidgetStateManager } from '@dxos/ui-editor';\n\nimport { rehydrateToolWidgetsFromMessages } from './tool-widget-state';\n\n/**\n * Update document.\n */\nexport type TextModel = Pick<MarkdownStreamController, 'length' | 'setContent' | 'append' | 'updateWidget'>;\n\n/**\n * Renders a block to markdown.\n *\n * Contract: for any block whose lifetime spans multiple invocations (i.e. a streaming block\n * with `pending: true` whose content grows over time, transitioning to `pending: false`), the\n * sequence of returned strings must be monotonically extending — each subsequent value must be\n * a string-extension of the previous. The {@link MessageSyncer} relies on this invariant to\n * compute appendable deltas without diffing.\n */\nexport type BlockRenderer = (\n context: MessageThreadContext,\n message: Message.Message,\n block: ContentBlock.Any,\n) => string | undefined;\n\n/**\n * Thread context passed to renderer.\n */\nexport class MessageThreadContext implements Pick<MarkdownStreamController, 'updateWidget'> {\n constructor(private readonly _widgetState?: XmlWidgetStateManager) {}\n\n updateWidget<T>(id: string, value: StateDispatch<T>) {\n this._widgetState?.updateWidget(id, value);\n }\n\n // TODO(burdon): Resolve name from hypergraph.\n getObjectLabel(_id: DXN) {\n return 'Object';\n }\n}\n\n/**\n * Syncs messages with the editor.\n *\n * Reflects the AI streaming contract:\n * - Messages and their blocks are appended in order.\n * - Only the last block in `messages` may be `pending`; all earlier blocks are finalized.\n * - The renderer's output for a streaming block grows monotonically (see {@link BlockRenderer}).\n * - The document is read-only outside this syncer.\n *\n * Under those rules the syncer needs only:\n * - `_completed`: the flat-block index past which everything has been fully appended.\n * - `_trailing`: chars of the in-flight block (at index `_completed`) already appended.\n * - `_threadId`: identity sentinel; if `messages[0]?.id` changes, the document is replaced.\n */\nexport class MessageSyncer {\n private _threadId?: string;\n private _completed = 0;\n private _trailing = 0;\n\n private readonly _context: MessageThreadContext;\n\n constructor(\n private readonly _document: TextModel,\n private readonly _renderer: BlockRenderer,\n ) {\n this._context = new MessageThreadContext(this._document);\n }\n\n get context() {\n return this._context;\n }\n\n /**\n * Replace the document with the rendering of `messages`. Use on mount, on thread switch,\n * and from {@link update} when it detects an identity change in `messages[0]`.\n */\n reset(messages: Message.Message[] = []): void {\n this._threadId = messages[0]?.id;\n this._completed = 0;\n this._trailing = 0;\n const buffer = this._walk(messages);\n // Match the pre-rewrite behaviour: rendering from a steady state (initial mount with\n // non-empty messages, or thread switch) lands the entire content via `setContent` — which\n // uses `wireBypass`, so the editor jumps straight to the final text and `update()` returns\n // `true` so the caller can scroll to the bottom. Live streaming partials that arrive\n // *after* this initial render flow through `update()`'s incremental path → `_document.append`\n // → wire's drip filter, preserving the char-by-char typewriter for incoming text.\n void this._document.setContent(buffer).then(() => {\n rehydrateToolWidgetsFromMessages(this._context, messages);\n });\n }\n\n /**\n * Stream the suffix of the rendered messages into the document.\n * Returns `true` if the document was replaced (initial mount or thread switch), `false`\n * if the call was a streaming append (or a no-op).\n */\n update(messages: Message.Message[]): boolean {\n if (messages[0]?.id !== this._threadId) {\n this.reset(messages);\n return true;\n }\n const buffer = this._walk(messages);\n if (buffer.length > 0) {\n void this._document.append(buffer);\n }\n return false;\n }\n\n /**\n * Walk flat blocks starting at `_completed`, advancing the cursors and returning the chars\n * to append. Blocks before `_completed` are skipped — their renderer is never re-invoked,\n * which preserves single-shot side effects (e.g. tool widget state mutation).\n */\n _walk(messages: Message.Message[]): string {\n let buffer = '';\n let index = 0;\n outer: for (const message of messages) {\n for (const block of message.blocks) {\n if (index < this._completed) {\n index++;\n continue;\n }\n const rendered = this._renderer(this._context, message, block) ?? '';\n if (rendered.length > this._trailing) {\n buffer += rendered.slice(this._trailing);\n }\n if (block.pending) {\n // Stay on this block; record how far we've appended so the next call can resume.\n // `Math.max`-style guard against a non-monotonic renderer output without shrinking the doc.\n if (rendered.length > this._trailing) {\n this._trailing = rendered.length;\n }\n break outer;\n }\n this._completed = index + 1;\n this._trailing = 0;\n index++;\n }\n }\n return buffer;\n }\n}\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Plan } from '@dxos/assistant-toolkit';\nimport { useObject } from '@dxos/react-client/echo';\nimport { Icon, Tag, type ThemedClassName } from '@dxos/react-ui';\nimport { Row, RowList } from '@dxos/react-ui-list';\nimport { composable, composableProps } from '@dxos/ui-theme';\n\nexport type TaskListProps = ThemedClassName<{\n plan: Plan.Plan;\n}>;\n\nexport const TaskList = composable<HTMLDivElement, TaskListProps>(({ plan, ...props }, forwardedRef) => {\n const [snapshot] = useObject(plan);\n const tasks = snapshot?.tasks ?? [];\n\n return (\n <RowList.Root>\n <RowList.Viewport {...composableProps(props, { classNames: 'dx-container' })} ref={forwardedRef}>\n <RowList.Content aria-label='Tasks'>\n {tasks.map((task) => (\n <Row key={task.id} id={task.id} classNames='py-0'>\n <div className='flex items-center gap-2'>\n <Icon\n icon={task.status === 'done' ? 'ph--check--regular' : 'ph--circle--regular'}\n classNames={task.status === 'done' ? 'text-success-text' : undefined}\n size={4}\n />\n <span className='sr-only'>\n {task.status === 'done' ? 'done' : task.status === 'in-progress' ? 'in progress' : 'to do'}\n </span>\n <span className='truncate flex-1'>{task.title}</span>\n {task.status === 'in-progress' && <Tag palette='info'>pending</Tag>}\n </div>\n </Row>\n ))}\n </RowList.Content>\n </RowList.Viewport>\n </RowList.Root>\n );\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport React from 'react';\n\nimport { Process } from '@dxos/compute';\nimport { Icon, IconButton, ScrollArea, Tooltip, Treegrid } from '@dxos/react-ui';\nimport { composable, composableProps, mx } from '@dxos/ui-theme';\nimport { Unit } from '@dxos/util';\n\nexport type ProcessTreeProps = {\n // TODO(burdon): Atom.\n processes: readonly Process.Info[];\n onProcessSelect?: (process: Process.Info) => void;\n onProcessTerminate?: (process: Process.Info) => void;\n};\n\nexport const ProcessTree = composable<HTMLDivElement, ProcessTreeProps>(\n ({ processes, onProcessSelect, onProcessTerminate, ...props }, forwardedRef) => {\n const sortedProcesses = [\n ...processes.filter((process) => [Process.State.RUNNING, Process.State.HYBERNATING].includes(process.state)),\n ...processes.filter((process) => [Process.State.IDLE].includes(process.state)).slice(0, 3),\n ...processes.filter((process) =>\n [Process.State.SUCCEEDED, Process.State.FAILED, Process.State.TERMINATED].includes(process.state),\n ),\n ].sort((a, b) => {\n const aCompletedAt = Option.getOrElse(a.completedAt, () => Infinity);\n const bCompletedAt = Option.getOrElse(b.completedAt, () => Infinity);\n return bCompletedAt - aCompletedAt;\n });\n\n return (\n <ScrollArea.Root {...composableProps(props, { classNames: 'dx-expander' })} thin ref={forwardedRef}>\n <ScrollArea.Viewport>\n <Treegrid.Root gridTemplateColumns='1fr'>\n {sortedProcesses\n .filter((process) => process.parentPid === null)\n .map((process) => {\n // const activeChildren = filteredProcesses.filter(\n // (candidate) =>\n // candidate.parentPid?.toString() === process.pid.toString() &&\n // candidate.state === Process.State.RUNNING,\n // );\n return (\n <Treegrid.Row\n key={process.pid.toString()}\n id={process.pid.toString()}\n parentOf={process.parentPid?.toString()}\n >\n <Treegrid.Cell\n indent\n classNames={mx(\n 'grid grid-cols-[min-content_1fr_min-content_min-content] items-center gap-1 min-w-0',\n onProcessSelect && 'dx-hover',\n )}\n onClick={() => onProcessSelect?.(process)}\n >\n <Tooltip.Trigger className='p-1' content={process.state.toString()}>\n <Icon\n size={4}\n synchronized\n classNames={mx(\n process.state === Process.State.RUNNING && 'animate-spin',\n process.state === Process.State.FAILED && 'text-error-text',\n process.state === Process.State.SUCCEEDED && 'text-success-text',\n )}\n icon={Match.value(process.state).pipe(\n Match.when(Process.State.RUNNING, () => 'ph--spinner-gap--regular'),\n Match.when(Process.State.SUCCEEDED, () => 'ph--check-circle--regular'),\n Match.when(Process.State.FAILED, () => 'ph--warning--regular'),\n Match.when(Process.State.HYBERNATING, () => 'ph--spinner--regular'),\n Match.when(Process.State.IDLE, () => 'ph--hourglass--regular'),\n Match.when(Process.State.TERMINATING, () => 'ph--x-circle--regular'),\n Match.when(Process.State.TERMINATED, () => 'ph--x-circle--regular'),\n Match.orElse(() => 'ph--spinner-gap--regular'),\n )}\n />\n </Tooltip.Trigger>\n <div className='flex items-center gap-2 text-xs overflow-hidden'>\n {/* TODO(burdon): Name is too long (and not informative). */}\n <span className='truncate text-description select-none'>\n {process.params.name ?? process.pid.toString()}\n </span>\n {/* {activeChildren.length > 0 && (\n <span className='text-xs text-description ml-1'>{activeChildren[0].params.name}</span>\n )} */}\n </div>\n {([Process.State.FAILED, Process.State.SUCCEEDED].includes(process.state) && (\n <div className='text-xs text-description tabular-nums'>\n {Unit.Millisecond(process.metrics.wallTime).toString()}\n </div>\n )) || <div />}\n {onProcessTerminate && (\n <IconButton\n classNames='min-h-0 p-1'\n icon='ph--x--regular'\n iconOnly\n variant='ghost'\n size={4}\n label='Actions'\n onClick={(event) => {\n event.stopPropagation();\n onProcessTerminate?.(process);\n }}\n />\n )}\n </Treegrid.Cell>\n </Treegrid.Row>\n );\n })}\n </Treegrid.Root>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport React from 'react';\n\nimport { type Template } from '@dxos/compute';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { useTextEditor } from '@dxos/react-ui-editor';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n} from '@dxos/ui-editor';\nimport { composable, composableProps } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nimport { handlebars, xmlDecorator } from './extensions';\n\nexport type TemplateEditorProps = {\n id: string;\n template: Template.Template;\n lineNumbers?: boolean;\n};\n\nexport const TemplateEditor = composable<HTMLDivElement, TemplateEditorProps>(\n ({ classNames, id, template, lineNumbers = true, ...props }, forwardedRef) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const { parentRef } = useTextEditor(() => {\n const target = template.source?.target;\n if (!target) {\n return {};\n }\n\n return {\n initialValue: target.content ?? '',\n extensions: [\n createDataExtensions({\n id,\n text: createDocAccessor(target, ['content']),\n }),\n createBasicExtensions({\n bracketMatching: false,\n lineNumbers,\n lineWrapping: true,\n placeholder: t('template.placeholder'),\n }),\n createThemeExtensions({ themeMode }),\n createMarkdownExtensions(),\n decorateMarkdown(),\n handlebars(),\n // xml(),\n // NOTE: Since we're using markdown only HTML nodes are parsed.\n xmlDecorator(),\n syntaxHighlighting(defaultHighlightStyle),\n ].filter(isNonNullable),\n };\n }, [themeMode, template.source?.target, lineNumbers]);\n\n return (\n <div\n {...composableProps(props, {\n role: 'none',\n classNames: ['h-full overflow-hidden', classNames],\n })}\n ref={composeRefs(parentRef, forwardedRef)}\n />\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n type CompletionContext,\n type CompletionResult,\n autocompletion,\n completionKeymap,\n} from '@codemirror/autocomplete';\nimport { type Extension, RangeSetBuilder } from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n type EditorView,\n ViewPlugin,\n type ViewUpdate,\n WidgetType,\n keymap,\n} from '@codemirror/view';\n\nimport { Domino, mx } from '@dxos/ui';\n\nexport type HandlebarsOptions = {};\n\n/**\n * Simple Handlebars plugin for CodeMirror.\n * Supports:\n * - Comments: {{! comment }}\n * - Commands: {{#command}} {{/command}}\n * - Variables: {{var}}\n * - Commands with variables: {{#each items}} {{/each}}\n */\nexport const handlebars = (_: HandlebarsOptions = {}): Extension => {\n return [\n handlebarsHighlightPlugin,\n autocompletion({\n activateOnTyping: true,\n aboveCursor: true,\n closeOnBlur: true,\n override: [handlebarsCompletions],\n }),\n keymap.of(completionKeymap),\n ];\n};\n\nconst regex = {\n // {{! comment }}\n comment: /\\{\\{!\\s*[^}]*\\}\\}/g,\n\n // {{var}}\n brackets: /\\{\\{[^}]*\\}\\}/g,\n\n // {{#command}} {{/command}}\n command: /\\{\\{[#/]([^}]+)\\}\\}/g,\n\n // {{var}}\n var: /\\{\\{(?!\\s*!)(\\w[^}]*)\\}\\}/g,\n\n // @dxn:queue:data:xxx\n dxn: /@?dxn:[\\w@:]+/g,\n\n // example.com/path/xxx\n url: /[\\w.-]+\\.[\\w.-]+\\/[\\w/]+/g,\n};\n\nconst tagPadding = 'mx-0.5 px-1 rounded-xs';\n\n/**\n * ViewPlugin that decorates Handlebars syntax.\n */\nconst handlebarsHighlightPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged || update.selectionSet) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n // NOTE: Decorations may clash with other extensions (e.g., markdown).\n buildDecorations(view: EditorView) {\n const selection = view.state.selection.main;\n const decorations: Array<{\n from: number;\n to: number;\n decoration: Decoration;\n }> = [];\n\n for (const { from, to } of view.visibleRanges) {\n const text = view.state.doc.sliceString(from, to);\n\n // Match DXN.\n {\n let match;\n while ((match = regex.dxn.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n // Only show widget if selection doesn't overlap with the match range.\n const overlaps = selection.to > start && selection.from <= end;\n if (!overlaps) {\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.widget({\n widget: new DXNWidget(match[0]),\n }),\n });\n }\n }\n }\n\n // Match URLs.\n {\n let match;\n while ((match = regex.url.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({\n class: mx('dx-tag--blue', tagPadding),\n }),\n });\n }\n }\n\n // Match brackets: {{ and }}.\n {\n let match;\n while ((match = regex.brackets.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-subdued' }),\n });\n }\n }\n\n // Match commands: {{#command}} and {{/command}}.\n {\n let match;\n while ((match = regex.command.exec(text)) !== null) {\n const start = from + match.index + 2;\n let end = start + match[0].length - 4;\n const text = view.state.doc.sliceString(start, end);\n const parts = text.split(/\\s+/);\n if (parts.length > 1) {\n const idx = start + parts[0].length;\n decorations.push({\n from: idx,\n to: end,\n decoration: Decoration.mark({ class: 'text-green-text' }),\n });\n end = idx;\n }\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-blue-text' }),\n });\n }\n }\n\n // Match variables: {{var}}.\n {\n let match;\n while ((match = regex.var.exec(text)) !== null) {\n const start = from + match.index + 2;\n const end = start + match[0].length - 4;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-green-text' }),\n });\n }\n }\n }\n\n // Sort decorations by position to satisfy RangeSetBuilder requirements.\n decorations.sort((a, b) => a.from - b.from || a.to - b.to);\n\n // Add sorted decorations to builder.\n const builder = new RangeSetBuilder<Decoration>();\n for (const { from, to, decoration } of decorations) {\n builder.add(from, to, decoration);\n }\n\n return builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n\nclass DXNWidget extends WidgetType {\n constructor(private readonly _identifier: string) {\n super();\n }\n\n override ignoreEvent() {\n return false;\n }\n\n override eq(other: this) {\n return this._identifier === other._identifier;\n }\n\n override toDOM() {\n const text = this._identifier\n .split(':')\n .map((part) => {\n const len = 16;\n const plen = 4;\n if (part.length > len) {\n return `[${part.slice(0, plen)}…${part.slice(-plen)}]`;\n }\n return part;\n })\n .join(':');\n return Domino.of('span').classNames(mx('font-mono dx-tag--blue', tagPadding)).text(text).root;\n }\n}\n\n// TODO(burdon): Pass in variables.\nconst variables = ['this'];\nconst commands = ['this', 'each', 'if', 'unless', 'with'];\n\n/**\n * Provides completions for Handlebars variables.\n */\nfunction handlebarsCompletions(context: CompletionContext): CompletionResult | null {\n const match = context.matchBefore(/\\{\\{[^}]*/);\n if (!match || match.from === match.to) {\n return null;\n }\n\n let type = 'variable';\n let text = match.text.slice(2);\n let from = match.from + 2;\n let matches = [];\n if (text.startsWith('#') || text.startsWith('/')) {\n const idx = text.lastIndexOf(' ');\n if (idx !== -1) {\n type = 'variable';\n matches = variables;\n text = text.slice(idx + 1);\n from += idx + 1;\n } else {\n type = 'command';\n text = text.slice(1);\n matches = commands;\n from += 1;\n }\n } else {\n type = 'variable';\n matches = variables;\n }\n\n const options = matches.filter((name) => name.startsWith(text)).map((name) => ({ type, label: name }));\n return {\n from,\n options,\n };\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type Extension, RangeSetBuilder } from '@codemirror/state';\nimport { Decoration, type DecorationSet, type EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';\n\nexport type XmlOptions = {};\n\n/**\n * XML decorator plugin for CodeMirror.\n * Decorates XML tags with monospace font using the XML language grammar.\n */\nexport const xmlDecorator = (_: XmlOptions = {}): Extension => {\n return [xmlDecoratorPlugin];\n};\n\n/**\n * ViewPlugin that decorates XML tags using syntax tree.\n */\nconst xmlDecoratorPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView) {\n const builder = new RangeSetBuilder<Decoration>();\n\n for (const { from, to } of view.visibleRanges) {\n syntaxTree(view.state).iterate({\n from,\n to,\n enter: (node) => {\n // Decorate XML elements (opening tags, closing tags, self-closing tags).\n if (\n node.name === 'HTMLTag' ||\n node.name === 'OpenTag' ||\n node.name === 'CloseTag' ||\n node.name === 'SelfClosingTag' ||\n node.name === 'Element'\n ) {\n builder.add(node.from, node.to, Decoration.mark({ class: 'font-mono text-subdued' }));\n }\n },\n });\n }\n\n return builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment, useEffect, useState } from 'react';\n\nimport { type Blueprint } from '@dxos/compute';\nimport { Operation } from '@dxos/compute';\nimport { type Database, Filter, type Ref } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { ScrollArea, type ThemedClassName } from '@dxos/react-ui';\nimport { composable, composableProps, mx } from '@dxos/ui-theme';\n\nimport { ServiceType } from '#types';\n\nimport { type AiChatProcessor } from '../../processor';\n\nexport type ToolboxProps = {\n services?: { service: ServiceType }[];\n functions?: Operation.PersistentOperation[];\n // TODO(burdon): Combine into single array.\n blueprints?: readonly Blueprint.Blueprint[];\n activeBlueprints?: readonly Ref.Ref<Blueprint.Blueprint>[];\n};\n\nexport const Toolbox = composable<HTMLDivElement, ToolboxProps>(\n ({ functions, services, blueprints, activeBlueprints, ...props }, forwardedRef) => {\n return (\n <ScrollArea.Root {...composableProps(props)} thin orientation='vertical' ref={forwardedRef}>\n <ScrollArea.Viewport>\n {blueprints && blueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={blueprints.map(({ name, description, tools }) => ({\n name,\n description,\n subitems: tools.map((toolId) => ({ name: `∙ ${safeToolId(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: `∙ ${safeToolId(toolId)}` })),\n }))}\n />\n )}\n\n {services && services.length > 0 && (\n <Section\n title='Services'\n items={services.map(({ service: { serviceId, name, description } }) => ({\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 </ScrollArea.Viewport>\n </ScrollArea.Root>\n );\n },\n);\n\nToolbox.displayName = 'Toolbox';\n\ntype SectionProps = {\n title: string;\n items: { name: string; description?: string; subitems?: { name: string; description?: string }[] }[];\n striped?: boolean;\n};\n\nconst Section = ({ title, items, striped }: SectionProps) => {\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 ToolboxPanelProps = ThemedClassName<{\n db?: Database.Database;\n processor?: AiChatProcessor;\n}>;\n\nexport const ToolboxPanel = ({ classNames, db, processor }: ToolboxPanelProps) => {\n // Registered services.\n const services = useQuery(db, Filter.type(ServiceType));\n const [serviceTools, setServiceTools] = useState<{ service: ServiceType }[]>([]);\n useEffect(() => {\n log('creating service tools...', { services: services.length });\n queueMicrotask(async () => {\n // TODO(burdon): Fix.\n // const tools = await Promise.all(\n // services.map(async (service) => ({ service, tools: await createToolsFromService(service) })),\n // );\n // setServiceTools(tools);\n });\n }, [services]);\n\n // Deployed functions.\n const functions = useQuery(db, Filter.type(Operation.PersistentOperation));\n\n return (\n <Toolbox\n classNames={classNames}\n blueprints={processor?.context.getBlueprints()}\n services={serviceTools}\n functions={functions}\n />\n );\n};\n\nconst safeToolId = (name: string) => {\n return name.split('_').pop();\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["lazy", "Atom", "useAtomValue", "Option", "React", "useCallback", "useMemo", "DXN", "Filter", "Obj", "Ref", "AtomObj", "useQuery", "Input", "useTranslation", "Form", "FeedAnnotation", "meta", "AgentProperties", "agent", "t", "id", "db", "getDatabase", "feedFilter", "nothing", "schemas", "schemaRegistry", "query", "location", "runSync", "feedSchemas", "filter", "schema", "annotation", "get", "isSome", "value", "length", "or", "map", "type", "subscribedObjects", "existingSubscriptions", "make", "pipe", "_", "agentObj", "selectedSubscriptions", "object", "subscriptions", "some", "subscription", "equals", "dxn", "getDXN", "handleSubscriptionChange", "checked", "update", "push", "fromDXN", "Section", "Root", "Label", "classNames", "key", "div", "className", "Checkbox", "includes", "onCheckedChange", "getLabel", "useAtomValue", "Array", "Option", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Agent", "Event", "Filter", "Obj", "Query", "useQuery", "useIdentity", "Menu", "Message", "composable", "composableProps", "useChatKeymapExtensions", "useChatToolbarActions", "useDebug", "React", "IconButton", "useTranslation", "mx", "meta", "ChatActions", "classNames", "children", "microphone", "recording", "processing", "debug", "onEvent", "t", "id", "div", "className", "disabled", "variant", "icon", "iconOnly", "noTooltip", "label", "onMouseDown", "type", "onMouseUp", "onTouchStart", "onTouchEnd", "onClick", "useAtomValue", "React", "useCallback", "Message", "useTranslation", "meta", "ChatMcpErrors", "classNames", "processor", "t", "id", "errors", "mcpErrors", "handleDismiss", "dismissMcpErrors", "length", "Root", "valence", "Title", "onClose", "Content", "asChild", "ul", "className", "map", "error", "li", "key", "url", "protocol", "span", "message", "Option", "React", "useCallback", "useMemo", "useState", "McpServer", "Annotation", "Filter", "Obj", "Type", "useObject", "useQuery", "IconButton", "Input", "Popover", "Select", "useTranslation", "Listbox", "SearchList", "useSearchListResults", "Tabs", "getStyles", "mx", "useActiveBlueprints", "useBlueprintHandlers", "useBlueprints", "useContextObjects", "useFilteredTypes", "meta", "Assistant", "styles", "panel", "toolbar", "ChatOptions", "chat", "db", "context", "blueprintRegistry", "presets", "preset", "onPresetChange", "t", "id", "div", "className", "Root", "Trigger", "asChild", "variant", "icon", "iconOnly", "label", "Portal", "Content", "side", "classNames", "Viewport", "ObjectsPanel", "Arrow", "orientation", "defaultValue", "defaultActivePart", "tabIndex", "Panel", "value", "ViewPanel", "BlueprintsPanel", "McpServersPanel", "ModelsPanel", "Tablist", "IconTab", "blueprints", "activeBlueprints", "onUpdateBlueprint", "results", "handleSearch", "items", "extract", "blueprint", "name", "onSearch", "map", "blueprintKey", "getMeta", "key", "isActive", "has", "Item", "checked", "onSelect", "placeholder", "autoFocus", "view", "setView", "onValueChange", "ChatViews", "OptionLabel", "OptionIndicator", "servers", "type", "adding", "setAdding", "handleAdd", "url", "protocol", "apiKey", "add", "make", "enabled", "handleRemove", "server", "remove", "McpServerRow", "onRemove", "McpServerForm", "onSubmit", "onCancel", "onClick", "setEnabled", "Label", "srOnly", "Switch", "onCheckedChange", "span", "setName", "setUrl", "setProtocol", "setApiKey", "canSubmit", "trim", "length", "handleSubmit", "undefined", "TextInput", "onChange", "event", "target", "TriggerButton", "disabled", "ANY", "types", "typenames", "typename", "getTypename", "ns", "sort", "a", "b", "localeCompare", "setTypename", "anyFilter", "or", "objects", "contextObjects", "onUpdateObject", "object", "getLabel", "findIndex", "obj", "hue", "fromNullable", "getSchema", "pipe", "flatMap", "IconAnnotation", "get", "getOrElse", "iconClassNames", "foreground", "getDXN", "ScrollUpButton", "ScrollDownButton", "React", "Select", "useAtomValue", "Option", "React", "useCallback", "useEffect", "useRef", "useState", "useVoiceInput", "Input", "useDynamicRef", "useTranslation", "ChatEditor", "mx", "useChatKeymapExtensions", "meta", "Option", "React", "Annotation", "Obj", "Icon", "IconButton", "toLocalizedString", "useTranslation", "getStyles", "mx", "useContextObjects", "meta", "ChatReferences", "classNames", "context", "db", "t", "id", "objects", "onUpdateObject", "ul", "className", "map", "obj", "dxn", "getDXN", "typename", "getTypename", "label", "getLabel", "ns", "icon", "hue", "fromNullable", "getSchema", "pipe", "flatMap", "IconAnnotation", "get", "getOrElse", "DEFAULT_OBJECT_ICON", "undefined", "styles", "li", "key", "toString", "data-hue", "size", "foreground", "iconOnly", "variant", "onClick", "React", "useEffect", "useState", "Tooltip", "useTimeout", "Spinner", "mx", "period", "ChatStatusIndicator", "classNames", "preset", "processing", "error", "props", "init", "setInit", "div", "className", "duration", "state", "Trigger", "asChild", "content", "message", "ChatPrompt", "classNames", "outline", "chat", "db", "processor", "event", "online", "placeholder", "onOnlineChange", "onPresetChange", "settings", "presets", "preset", "t", "useTranslation", "meta", "id", "error", "useAtomValue", "pipe", "getOrUndefined", "streaming", "active", "activeRef", "useDynamicRef", "editorRef", "useRef", "recordingState", "setRecordingState", "useState", "useEffect", "on", "ev", "type", "current", "getText", "length", "setText", "text", "focus", "recording", "useVoiceInput", "onUpdate", "extensions", "useChatKeymapExtensions", "handleSubmit", "useCallback", "emit", "handleEvent", "React", "div", "role", "className", "mx", "ChatMcpErrors", "ChatStatusIndicator", "processing", "ChatEditor", "ref", "autoFocus", "lineWrapping", "onSubmit", "ChatOptions", "blueprintRegistry", "context", "ChatReferences", "ChatActions", "microphone", "onEvent", "undefined", "Input", "Root", "Label", "srOnly", "Switch", "checked", "onCheckedChange", "displayName", "React", "useEffect", "useMemo", "useState", "ChatStatus", "NaturalChatStatus", "formatElapsed", "Matrix", "Unit", "createContext", "ChatContextProvider", "useChatContext", "CHAT_STREAM_STATUS_NAME", "TICK_MS", "ChatStatus", "classNames", "icon", "messages", "requestTiming", "useChatContext", "lastOutputTokens", "sessionTotalTokens", "useMemo", "last", "total", "message", "block", "blocks", "isStats", "usage", "outputTokens", "totalTokens", "isRunning", "endedAt", "show", "React", "NaturalChatStatus", "Root", "defaultRunning", "Icon", "Matrix", "dotClassNames", "dim", "dotSize", "count", "interval", "active", "div", "className", "Text", "Elapsed", "timing", "Separator", "Unit", "Thousand", "toString", "now", "setNow", "useState", "Date", "useEffect", "id", "setInterval", "clearInterval", "formatElapsed", "startedAt", "_tag", "React", "forwardRef", "useCallback", "useEffect", "useMemo", "useState", "PublicKey", "setRef", "MarkdownStream", "keyToFallback", "React", "log", "getXmlTextChild", "applyToolBlockToWidgetState", "context", "block", "_tag", "updateWidget", "toolCallId", "blocks", "rehydrateToolWidgetsFromMessages", "messages", "message", "React", "TogglePanel", "JsonHighlighter", "FallbackWidget", "_tag", "props", "Root", "Header", "classNames", "Content", "Viewport", "data", "displayName", "WidgetType", "Domino", "styles", "padding", "border", "ReasoningWidget", "WidgetType", "text", "pos", "undefined", "String", "eq", "other", "toDOM", "Domino", "of", "classNames", "styles", "padding", "append", "border", "attributes", "root", "updateDOM", "dom", "querySelector", "replaceChildren", "container", "trailHost", "childElementCount", "createTrailLayers", "destroy", "_dom", "previous", "trailRemovalTimers", "get", "clearTimeout", "timerId", "setTimeout", "delete", "remove", "TRAIL_REMOVAL_DELAY_MS", "set", "active", "trail", "Map", "WidgetType", "Domino", "ReferenceWidget", "WidgetType", "text", "dxn", "eq", "other", "toDOM", "Domino", "of", "classNames", "styles", "padding", "append", "attributes", "root", "WidgetType", "Domino", "SelectWidget", "WidgetType", "options", "eq", "other", "JSON", "stringify", "toDOM", "Domino", "of", "attributes", "role", "classNames", "styles", "padding", "append", "map", "option", "text", "root", "WidgetType", "Domino", "StatsWidget", "WidgetType", "text", "eq", "other", "toDOM", "Domino", "of", "classNames", "styles", "padding", "root", "updateDOM", "dom", "textContent", "WidgetType", "Domino", "StatusWidget", "WidgetType", "text", "eq", "other", "toDOM", "Domino", "of", "classNames", "styles", "padding", "append", "attributes", "root", "updateDOM", "dom", "querySelector", "replaceChildren", "React", "useTranslation", "TogglePanel", "meta", "SummaryWidget", "children", "t", "useTranslation", "meta", "id", "React", "TogglePanel", "Root", "classNames", "styles", "border", "Header", "Content", "div", "className", "WidgetType", "Domino", "mx", "SuggestionWidget", "text", "eq", "other", "toDOM", "of", "classNames", "append", "attributes", "icon", "root", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "useTranslation", "NumericTabs", "TextCrawl", "TogglePanel", "JsonHighlighter", "isNonNullable", "safeParseJson", "meta", "ToolWidget", "view", "blocks", "t", "useTranslation", "meta", "id", "items", "useMemo", "lastToolCall", "tools", "filter", "block", "_tag", "map", "pending", "toolCallId", "tool", "find", "name", "title", "description", "Boolean", "join", "content", "input", "safeParseJson", "error", "undefined", "result", "isNonNullable", "handleChangeOpen", "useCallback", "setTimeout", "requestMeasure", "length", "React", "ToolPanel", "onChangeOpen", "tabsRef", "useRef", "selected", "setSelected", "useState", "open", "setOpen", "useEffect", "prev", "Math", "min", "max", "current", "focus", "handleSelect", "index", "TogglePanel", "Root", "Header", "classNames", "TextCrawl", "key", "lines", "item", "autoAdvance", "greedy", "Content", "Viewport", "NumericTabs", "ref", "onSelect", "JsonHighlighter", "data", "replacer", "maxDepth", "maxArrayLen", "maxStringLen", "factory", "reasoning", "streaming", "text", "ReasoningWidget", "reference", "ref", "ReferenceWidget", "select", "options", "length", "suggestion", "SuggestionWidget", "stats", "StatsWidget", "status", "StatusWidget", "Component", "toolCall", "React", "props", "toolResult", "toolkit", "isBlockVisible", "message", "block", "str", "stringify", "_tag", "renderXMLBlock", "content", "pending", "tag", "opts", "attributes", "MessageThreadContext", "_widgetState", "updateWidget", "id", "value", "getObjectLabel", "_id", "MessageSyncer", "_threadId", "_completed", "_trailing", "_context", "_document", "_renderer", "context", "reset", "messages", "buffer", "_walk", "setContent", "then", "rehydrateToolWidgetsFromMessages", "update", "length", "append", "index", "outer", "message", "block", "blocks", "rendered", "slice", "pending", "defaultOptions", "autoScroll", "cursor", "fader", "typewriter", "ChatThread", "forwardRef", "classNames", "identity", "messages", "error", "options", "footer", "debug", "extensions", "viewType", "onEvent", "forwardedRef", "controller", "setController", "useState", "handleMarkdownStreamRef", "useCallback", "instance", "setRef", "userHue", "useMemo", "profile", "data", "hue", "keyToFallback", "identityKey", "PublicKey", "random", "useEffect", "scrollToBottom", "renderer", "createBlockRenderer", "syncer", "MessageSyncer", "update", "handleEvent", "type", "value", "text", "React", "div", "data-hue", "className", "MarkdownStream", "key", "registry", "componentRegistry", "ref", "React", "useObject", "Icon", "Tag", "Row", "RowList", "composable", "composableProps", "TaskList", "plan", "props", "forwardedRef", "snapshot", "tasks", "Root", "Viewport", "classNames", "ref", "Content", "aria-label", "map", "task", "key", "id", "div", "className", "icon", "status", "undefined", "size", "span", "title", "palette", "ChatRoot", "children", "chat", "feed", "processor", "onEvent", "props", "debug", "setDebug", "useState", "streaming", "useAtomValue", "active", "requestTiming", "useRequestTiming", "lastPrompt", "useRef", "undefined", "db", "Obj", "getDatabase", "feedMessages", "useQuery", "Query", "select", "Filter", "type", "Message", "from", "nothing", "pendingMessages", "messages", "useMemo", "dedupeWith", "id", "a", "b", "dump", "useDebug", "event", "Event", "useEffect", "on", "ev", "text", "trim", "length", "current", "request", "message", "retry", "cancel", "emit", "React", "ChatContextProvider", "displayName", "setRequestTiming", "startedAt", "Date", "now", "endedAt", "prev", "CHAT_TOOLBAR_NAME", "ChatToolbar", "composable", "attendableId", "companionTo", "forwardedRef", "useChatContext", "menuActions", "useChatToolbarActions", "Menu", "Root", "Toolbar", "composableProps", "ref", "CHAT_CONTENT_NAME", "ChatContent", "div", "classNames", "CHAT_THREAD_NAME", "ChatThread", "viewType", "debugProp", "debugView", "identity", "useIdentity", "error", "pipe", "getOrUndefined", "extensions", "useChatKeymapExtensions", "controllerRef", "scrollToBottom", "navigatePrevious", "navigateNext", "handleEvent", "useCallback", "className", "NaturalChatThread", "CHAT_PROMPT_NAME", "ChatPrompt", "NaturalChatPrompt", "CHAT_TASK_LIST_NAME", "ChatTaskList", "plan", "planProp", "parent", "getParent", "agent", "instanceOf", "Agent", "target", "TaskList", "Chat", "Content", "Prompt", "Status", "ChatStatus", "Thread", "Match", "Option", "React", "Process", "Icon", "IconButton", "ScrollArea", "Tooltip", "Treegrid", "composable", "composableProps", "mx", "Unit", "ProcessTree", "processes", "onProcessSelect", "onProcessTerminate", "props", "forwardedRef", "sortedProcesses", "filter", "process", "State", "RUNNING", "HYBERNATING", "includes", "state", "IDLE", "slice", "SUCCEEDED", "FAILED", "TERMINATED", "sort", "a", "b", "aCompletedAt", "getOrElse", "completedAt", "Infinity", "bCompletedAt", "Root", "classNames", "thin", "ref", "Viewport", "gridTemplateColumns", "parentPid", "map", "Row", "key", "pid", "toString", "id", "parentOf", "Cell", "indent", "onClick", "Trigger", "className", "content", "size", "synchronized", "icon", "value", "pipe", "when", "TERMINATING", "orElse", "div", "span", "params", "name", "Millisecond", "metrics", "wallTime", "iconOnly", "variant", "label", "event", "stopPropagation", "defaultHighlightStyle", "syntaxHighlighting", "composeRefs", "React", "createDocAccessor", "useThemeContext", "useTranslation", "useTextEditor", "createBasicExtensions", "createDataExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "composable", "composableProps", "isNonNullable", "meta", "autocompletion", "completionKeymap", "RangeSetBuilder", "Decoration", "ViewPlugin", "WidgetType", "keymap", "Domino", "mx", "handlebars", "_", "handlebarsHighlightPlugin", "activateOnTyping", "aboveCursor", "closeOnBlur", "override", "handlebarsCompletions", "of", "regex", "comment", "brackets", "command", "var", "dxn", "url", "tagPadding", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "selectionSet", "selection", "state", "main", "from", "to", "visibleRanges", "text", "doc", "sliceString", "match", "exec", "start", "index", "end", "length", "overlaps", "push", "decoration", "widget", "DXNWidget", "mark", "class", "parts", "split", "idx", "sort", "a", "b", "builder", "add", "finish", "v", "_identifier", "ignoreEvent", "eq", "other", "toDOM", "map", "part", "len", "plen", "slice", "join", "classNames", "root", "variables", "commands", "context", "matchBefore", "type", "matches", "startsWith", "lastIndexOf", "options", "filter", "name", "label", "syntaxTree", "RangeSetBuilder", "Decoration", "ViewPlugin", "xmlDecorator", "_", "xmlDecoratorPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "builder", "from", "to", "visibleRanges", "state", "iterate", "enter", "node", "name", "add", "mark", "class", "finish", "v", "TemplateEditor", "composable", "classNames", "id", "template", "lineNumbers", "props", "forwardedRef", "t", "useTranslation", "meta", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "target", "source", "initialValue", "content", "extensions", "createDataExtensions", "text", "createDocAccessor", "createBasicExtensions", "bracketMatching", "lineWrapping", "placeholder", "createThemeExtensions", "createMarkdownExtensions", "decorateMarkdown", "handlebars", "xmlDecorator", "syntaxHighlighting", "defaultHighlightStyle", "filter", "isNonNullable", "React", "div", "composableProps", "role", "ref", "composeRefs", "React", "Fragment", "useEffect", "useState", "Operation", "Filter", "log", "useQuery", "ScrollArea", "composable", "composableProps", "mx", "ServiceType", "__dxlog_file", "Toolbox", "thin", "orientation", "ref", "forwardedRef", "title", "blueprints", "map", "description", "tools", "subitems", "activeBlueprints", "items", "target", "name", "safeToolId", "toolId", "services", "service", "functions", "stripeClassNames", "gridClassNames", "subGridClassNames", "className", "div", "i", "striped", "ToolboxPanel", "classNames", "db", "type", "queueMicrotask", "processor", "context", "getBlueprints", "AssistantSettings", "lazy", "RoutineProperties"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import "../chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/index.ts
|
|
4
|
+
import { lazy } from "react";
|
|
5
|
+
var AgentArticle = lazy(() => import("../AgentArticle-ZHWYIH64.mjs"));
|
|
6
|
+
var AgentProperties = lazy(() => import("../AgentProperties-W6LD56IB.mjs"));
|
|
7
|
+
var BlueprintArticle = lazy(() => import("../BlueprintArticle-U7LUBFOS.mjs"));
|
|
8
|
+
var ChatCompanion = lazy(() => import("../ChatCompanion-DFRMRUK3.mjs"));
|
|
9
|
+
var ChatArticle = lazy(() => import("../ChatArticle-WVAFZPVI.mjs"));
|
|
10
|
+
var ChatDialog = lazy(() => import("../ChatDialog-QKZLG7SQ.mjs"));
|
|
11
|
+
var PlanArticle = lazy(() => import("../PlanArticle-TS5ULWYS.mjs"));
|
|
12
|
+
var RoutineArticle = lazy(() => import("../RoutineArticle-EZKJR3KV.mjs"));
|
|
13
|
+
var RoutineList = lazy(() => import("../RoutineList-CLDXGQUD.mjs"));
|
|
14
|
+
var TracePanel = lazy(() => import("../TracePanel-STGKU65N.mjs"));
|
|
15
|
+
var TriggerStatus = lazy(() => import("../TriggerStatus-WTFYUIG5.mjs"));
|
|
16
|
+
export {
|
|
17
|
+
AgentArticle,
|
|
18
|
+
AgentProperties,
|
|
19
|
+
BlueprintArticle,
|
|
20
|
+
ChatArticle,
|
|
21
|
+
ChatCompanion,
|
|
22
|
+
ChatDialog,
|
|
23
|
+
PlanArticle,
|
|
24
|
+
RoutineArticle,
|
|
25
|
+
RoutineList,
|
|
26
|
+
TracePanel,
|
|
27
|
+
TriggerStatus
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/containers/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const AgentArticle: ComponentType<any> = lazy(() => import('./AgentArticle'));\nexport const AgentProperties: ComponentType<any> = lazy(() => import('./AgentProperties'));\nexport const BlueprintArticle: ComponentType<any> = lazy(() => import('./BlueprintArticle'));\nexport const ChatCompanion: ComponentType<any> = lazy(() => import('./ChatCompanion'));\nexport const ChatArticle: ComponentType<any> = lazy(() => import('./ChatArticle'));\nexport const ChatDialog: ComponentType<any> = lazy(() => import('./ChatDialog'));\nexport const PlanArticle: ComponentType<any> = lazy(() => import('./PlanArticle'));\nexport const RoutineArticle: ComponentType<any> = lazy(() => import('./RoutineArticle'));\nexport const RoutineList: ComponentType<any> = lazy(() => import('./RoutineList'));\nexport const TracePanel: ComponentType<any> = lazy(() => import('./TracePanel'));\nexport const TriggerStatus: ComponentType<any> = lazy(() => import('./TriggerStatus'));\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SAA6BA,YAAY;AAElC,IAAMC,eAAmCD,KAAK,MAAM,OAAO,8BAAA,CAAA;AAC3D,IAAME,kBAAsCF,KAAK,MAAM,OAAO,iCAAA,CAAA;AAC9D,IAAMG,mBAAuCH,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC/D,IAAMI,gBAAoCJ,KAAK,MAAM,OAAO,+BAAA,CAAA;AAC5D,IAAMK,cAAkCL,KAAK,MAAM,OAAO,6BAAA,CAAA;AAC1D,IAAMM,aAAiCN,KAAK,MAAM,OAAO,4BAAA,CAAA;AACzD,IAAMO,cAAkCP,KAAK,MAAM,OAAO,6BAAA,CAAA;AAC1D,IAAMQ,iBAAqCR,KAAK,MAAM,OAAO,gCAAA,CAAA;AAC7D,IAAMS,cAAkCT,KAAK,MAAM,OAAO,6BAAA,CAAA;AAC1D,IAAMU,aAAiCV,KAAK,MAAM,OAAO,4BAAA,CAAA;AACzD,IAAMW,gBAAoCX,KAAK,MAAM,OAAO,+BAAA,CAAA;",
|
|
6
|
+
"names": ["lazy", "AgentArticle", "AgentProperties", "BlueprintArticle", "ChatCompanion", "ChatArticle", "ChatDialog", "PlanArticle", "RoutineArticle", "RoutineList", "TracePanel", "TriggerStatus"]
|
|
7
|
+
}
|