@dxos/plugin-assistant 0.9.1-main.c7dcc2e112 → 0.9.1-staging.ee54ba693a
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/PLUGIN.mdl +18 -24
- package/dist/lib/neutral/{AgentArticle-2BEPWUMN.mjs → AgentArticle-GV6EEW3I.mjs} +1 -2
- package/dist/lib/neutral/AgentArticle-GV6EEW3I.mjs.map +7 -0
- package/dist/lib/neutral/AssistantPlugin.mjs +1 -1
- package/dist/lib/neutral/AssistantPlugin.node.mjs +6 -6
- package/dist/lib/neutral/AssistantPlugin.node.mjs.map +3 -3
- package/dist/lib/neutral/AssistantPlugin.workerd.mjs +7 -34
- package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +4 -4
- package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs +302 -0
- package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs.map +7 -0
- package/dist/lib/neutral/{ChatArticle-KT46SUFU.mjs → ChatArticle-OO7GGEFW.mjs} +2 -2
- package/dist/lib/neutral/{ChatCompanion-YHC43RYQ.mjs → ChatCompanion-GIFJRY6I.mjs} +27 -27
- package/dist/lib/neutral/ChatCompanion-GIFJRY6I.mjs.map +7 -0
- package/dist/lib/neutral/{ChatDialog-YZDZLIQA.mjs → ChatDialog-5MXN4MXS.mjs} +5 -5
- package/dist/lib/neutral/ChatDialog-5MXN4MXS.mjs.map +7 -0
- package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs +72 -0
- package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs.map +7 -0
- package/dist/lib/neutral/{SpaceHomePrompt-HTWQKLGI.mjs → SpaceHomePrompt-ISAB76LD.mjs} +8 -7
- package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs.map +7 -0
- package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs +63 -0
- package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs.map +7 -0
- package/dist/lib/neutral/{TracePanel-T552TAOH.mjs → TracePanel-JKNWADJ4.mjs} +2 -2
- package/dist/lib/neutral/{TriggerStatus-RBOHHDOK.mjs → TriggerStatus-FURRBHYA.mjs} +7 -5
- package/dist/lib/neutral/TriggerStatus-FURRBHYA.mjs.map +7 -0
- package/dist/lib/neutral/{agent-hydrator-PJBYVMBW.mjs → agent-hydrator-OBO3RHLO.mjs} +3 -4
- package/dist/lib/neutral/agent-hydrator-OBO3RHLO.mjs.map +7 -0
- package/dist/lib/neutral/{agent-service-WV5CSHAG.mjs → agent-service-XFJ4VQMT.mjs} +7 -9
- package/dist/lib/neutral/agent-service-XFJ4VQMT.mjs.map +7 -0
- package/dist/lib/neutral/ai-context-LIKJYMIN.mjs +14 -0
- package/dist/lib/neutral/ai-context-LIKJYMIN.mjs.map +7 -0
- package/dist/lib/neutral/{ai-service-AADUIKBY.mjs → ai-service-DM6YXWUC.mjs} +9 -5
- package/dist/lib/neutral/ai-service-DM6YXWUC.mjs.map +7 -0
- package/dist/lib/neutral/{app-graph-builder-PTSRZXRN.mjs → app-graph-builder-OPVOEQY7.mjs} +36 -19
- package/dist/lib/neutral/app-graph-builder-OPVOEQY7.mjs.map +7 -0
- package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs +97 -0
- package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +20 -18
- package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
- package/dist/lib/neutral/{chunk-KLYLW4WH.mjs → chunk-5IHQ52KJ.mjs} +1 -1
- package/dist/lib/neutral/chunk-5IHQ52KJ.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-5KB2WRI2.mjs → chunk-6Q4OBGIK.mjs} +83 -55
- package/dist/lib/neutral/chunk-6Q4OBGIK.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-54W7N6M6.mjs → chunk-BXI2R4OO.mjs} +49 -84
- package/dist/lib/neutral/chunk-BXI2R4OO.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-5H6UJHLF.mjs → chunk-CMPLPDYE.mjs} +12 -12
- package/dist/lib/neutral/chunk-CMPLPDYE.mjs.map +7 -0
- package/dist/lib/neutral/chunk-GPHT3HYS.mjs +8 -0
- package/dist/lib/neutral/{chunk-7FQT4XMI.mjs.map → chunk-GPHT3HYS.mjs.map} +2 -2
- package/dist/lib/neutral/{markdown-extension-IJ5RQMQ4.mjs → chunk-HKLSFB5I.mjs} +2 -38
- package/dist/lib/neutral/chunk-HKLSFB5I.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ZNDQVYUN.mjs → chunk-L7AR4VTA.mjs} +3 -3
- package/dist/lib/neutral/{chunk-ZNDQVYUN.mjs.map → chunk-L7AR4VTA.mjs.map} +1 -1
- package/dist/lib/neutral/chunk-LS72HWMM.mjs +42 -0
- package/dist/lib/neutral/chunk-LS72HWMM.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-35EL65O4.mjs → chunk-OZWZGIV2.mjs} +4 -2
- package/dist/lib/neutral/{chunk-35EL65O4.mjs.map → chunk-OZWZGIV2.mjs.map} +3 -3
- package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs → chunk-QOKLFHUS.mjs} +3 -4
- package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs.map → chunk-QOKLFHUS.mjs.map} +1 -1
- package/dist/lib/neutral/{chunk-5LKNH7FD.mjs → chunk-SCTHQVIJ.mjs} +8 -5
- package/dist/lib/neutral/{chunk-5LKNH7FD.mjs.map → chunk-SCTHQVIJ.mjs.map} +3 -3
- package/dist/lib/neutral/chunk-U4LTLBAX.mjs +56 -0
- package/dist/lib/neutral/chunk-U4LTLBAX.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-H77JTXAN.mjs → chunk-UPKFUZ6V.mjs} +7 -10
- package/dist/lib/neutral/chunk-UPKFUZ6V.mjs.map +7 -0
- package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs → chunk-V2Y4XE3O.mjs} +3 -4
- package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs.map → chunk-V2Y4XE3O.mjs.map} +1 -1
- package/dist/lib/neutral/chunk-VTK5R4H3.mjs +9 -0
- package/dist/lib/neutral/chunk-VTK5R4H3.mjs.map +7 -0
- package/dist/lib/neutral/chunk-XVGEJWJX.mjs +133 -0
- package/dist/lib/neutral/chunk-XVGEJWJX.mjs.map +7 -0
- package/dist/lib/neutral/{companion-chat-provisioner-YZZ73P6E.mjs → companion-chat-provisioner-IQV5VIVE.mjs} +14 -8
- package/dist/lib/neutral/companion-chat-provisioner-IQV5VIVE.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +509 -579
- package/dist/lib/neutral/components/index.mjs.map +4 -4
- package/dist/lib/neutral/{integration-provider-RBD3AFJU.mjs → connector-ITLLTBPZ.mjs} +13 -14
- package/dist/lib/neutral/connector-ITLLTBPZ.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +12 -14
- package/dist/lib/neutral/containers/index.mjs.map +3 -3
- package/dist/lib/neutral/{create-chat-Z3FNA6OJ.mjs → create-chat-YGVZZYGP.mjs} +18 -16
- package/dist/lib/neutral/create-chat-YGVZZYGP.mjs.map +7 -0
- package/dist/lib/neutral/{create-object-BJUDDKQQ.mjs → create-object-5PAEJ6KM.mjs} +11 -27
- package/dist/lib/neutral/create-object-5PAEJ6KM.mjs.map +7 -0
- package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs → edge-model-resolver-WDJWDZTT.mjs} +2 -2
- package/dist/lib/neutral/execution-graph/index.mjs +182 -64
- package/dist/lib/neutral/execution-graph/index.mjs.map +3 -3
- package/dist/lib/neutral/extensions/index.mjs +8 -0
- package/dist/lib/neutral/{fork-chat-UYXYT6BT.mjs → fork-chat-RMAAYYQF.mjs} +15 -18
- package/dist/lib/neutral/fork-chat-RMAAYYQF.mjs.map +7 -0
- package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs +93 -0
- package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +195 -105
- package/dist/lib/neutral/hooks/index.mjs.map +4 -4
- package/dist/lib/neutral/index.mjs +14 -10
- package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs +41 -0
- package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/meta.mjs +1 -1
- package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs +18 -0
- package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs.map +7 -0
- package/dist/lib/neutral/operation-handler-2LEN45GP.mjs +8 -0
- package/dist/lib/neutral/operation-handler-2LEN45GP.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +1 -1
- package/dist/lib/neutral/plugin.mjs +2 -2
- package/dist/lib/neutral/plugin.workerd.mjs +13 -0
- package/dist/lib/neutral/plugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/{react-surface-ES7UHZ65.mjs → react-surface-HEJEK44F.mjs} +20 -35
- package/dist/lib/neutral/react-surface-HEJEK44F.mjs.map +7 -0
- package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs +28 -0
- package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs.map +7 -0
- package/dist/lib/neutral/{run-prompt-in-new-chat-NIAGCKQV.mjs → run-prompt-in-new-chat-RNUJE2FM.mjs} +28 -31
- package/dist/lib/neutral/run-prompt-in-new-chat-RNUJE2FM.mjs.map +7 -0
- package/dist/lib/neutral/skill-definition-553MQRTR.mjs +8 -0
- package/dist/lib/neutral/skill-definition-553MQRTR.mjs.map +7 -0
- package/dist/lib/neutral/skills/index.mjs +8 -0
- package/dist/lib/neutral/skills/index.mjs.map +7 -0
- package/dist/lib/neutral/{state-XO2UYSSG.mjs → state-4LGAKSSD.mjs} +8 -2
- package/dist/lib/neutral/{state-XO2UYSSG.mjs.map → state-4LGAKSSD.mjs.map} +3 -3
- package/dist/lib/neutral/testing.mjs +1 -1
- package/dist/lib/neutral/toolkit-ETWLG5NT.mjs +8 -0
- package/dist/lib/neutral/toolkit-ETWLG5NT.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +64 -33
- package/dist/lib/neutral/translations.mjs.map +3 -3
- package/dist/lib/neutral/types/index.mjs +5 -1
- package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs → update-chat-name-IJJELRR6.mjs} +3 -3
- package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs.map → update-chat-name-IJJELRR6.mjs.map} +2 -2
- package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
- package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -1
- package/dist/types/src/capabilities/agent-hydrator.d.ts +1 -1
- package/dist/types/src/capabilities/agent-service.d.ts +1 -2
- package/dist/types/src/capabilities/agent-service.d.ts.map +1 -1
- package/dist/types/src/capabilities/ai-context.d.ts +1 -2
- package/dist/types/src/capabilities/ai-context.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -3
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/automation-templates.d.ts +1 -2
- package/dist/types/src/capabilities/automation-templates.d.ts.map +1 -1
- package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +1 -1
- package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
- package/dist/types/src/capabilities/{integration-provider.d.ts → connector.d.ts} +2 -2
- package/dist/types/src/capabilities/connector.d.ts.map +1 -0
- package/dist/types/src/capabilities/create-object.d.ts +1 -27
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +3 -2
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown-extension.d.ts +1 -1
- package/dist/types/src/capabilities/migrations.d.ts +1 -2
- package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
- package/dist/types/src/capabilities/navigation-resolver.d.ts +5 -0
- package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -2
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
- package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/state.d.ts +1 -17
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/toolkit.d.ts +1 -2
- package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
- package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -1
- package/dist/types/src/components/Chat/Chat.d.ts +4 -5
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
- package/dist/types/src/components/Chat/events.d.ts +0 -4
- package/dist/types/src/components/Chat/events.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -2
- package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +2 -2
- package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +5 -5
- package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts +9 -0
- package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +4 -4
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +2 -2
- package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +2 -2
- package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts +11 -0
- package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/index.d.ts +1 -0
- package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -1
- package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
- package/dist/types/src/components/TaskList/TaskList.stories.d.ts +2 -2
- package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -3
- package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +0 -4
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/constants.d.ts +1 -1
- package/dist/types/src/constants.d.ts.map +1 -1
- package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +2 -2
- package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts +1 -1
- package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -1
- package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts +12 -0
- package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts.map +1 -0
- package/dist/types/src/{components/TemplateEditor/TemplateEditor.stories.d.ts → containers/AssistantSettings/OllamaModels.stories.d.ts} +9 -7
- package/dist/types/src/containers/AssistantSettings/OllamaModels.stories.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts.map +1 -1
- package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +2 -9
- package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -1
- package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +3 -10
- package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
- package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
- package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts +13 -0
- package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts.map +1 -0
- package/dist/types/src/containers/IntegrationPrompt/index.d.ts +2 -0
- package/dist/types/src/{components/RoutineProperties → containers/IntegrationPrompt}/index.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts +1 -1
- package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts.map +1 -1
- package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -1
- package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +1 -1
- package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -1
- package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +2 -3
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/execution-graph/execution-graph.d.ts +2 -1
- package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -1
- package/dist/types/src/execution-graph/index.d.ts +3 -3
- package/dist/types/src/execution-graph/index.d.ts.map +1 -1
- package/dist/types/src/execution-graph/span-tree.d.ts +13 -0
- package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -1
- package/dist/types/src/extensions/index.d.ts +1 -1
- package/dist/types/src/extensions/index.d.ts.map +1 -1
- package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +2 -2
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
- package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
- package/dist/types/src/hooks/useHomeSuggestions.d.ts +8 -0
- package/dist/types/src/hooks/useHomeSuggestions.d.ts.map +1 -0
- package/dist/types/src/hooks/usePresets.d.ts +6 -2
- package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
- package/dist/types/src/hooks/useSkillRegistry.d.ts +21 -0
- package/dist/types/src/hooks/useSkillRegistry.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +4 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/create-chat.d.ts.map +1 -1
- package/dist/types/src/operations/fork-chat.d.ts.map +1 -1
- package/dist/types/src/operations/generate-home-suggestions.d.ts +5 -0
- package/dist/types/src/operations/generate-home-suggestions.d.ts.map +1 -0
- package/dist/types/src/operations/generate-home-suggestions.test.d.ts +2 -0
- package/dist/types/src/operations/generate-home-suggestions.test.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/resolve-navigation-targets.d.ts +3 -15
- 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 +2 -2
- package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
- package/dist/types/src/paths.d.ts +1 -1
- package/dist/types/src/paths.d.ts.map +1 -1
- package/dist/types/src/plugin.workerd.d.ts +2 -0
- package/dist/types/src/plugin.workerd.d.ts.map +1 -0
- package/dist/types/src/processor/presets.d.ts +20 -9
- package/dist/types/src/processor/presets.d.ts.map +1 -1
- package/dist/types/src/processor/processor.d.ts +10 -209
- package/dist/types/src/processor/processor.d.ts.map +1 -1
- package/dist/types/src/skills/assistant/index.d.ts +2 -0
- package/dist/types/src/skills/assistant/index.d.ts.map +1 -0
- package/dist/types/src/skills/assistant/skill.d.ts +4 -0
- package/dist/types/src/skills/assistant/skill.d.ts.map +1 -0
- package/dist/types/src/skills/assistant/skill.node.test.d.ts +2 -0
- package/dist/types/src/skills/assistant/skill.node.test.d.ts.map +1 -0
- package/dist/types/src/skills/index.d.ts.map +1 -0
- package/dist/types/src/templates/daily-digest.d.ts +2 -2
- package/dist/types/src/templates/daily-digest.d.ts.map +1 -1
- package/dist/types/src/templates/index.d.ts +3 -3
- package/dist/types/src/templates/index.d.ts.map +1 -1
- package/dist/types/src/templates/research-brief.d.ts +2 -2
- package/dist/types/src/templates/research-brief.d.ts.map +1 -1
- package/dist/types/src/templates/routine-templates.test.d.ts +2 -0
- package/dist/types/src/templates/routine-templates.test.d.ts.map +1 -0
- package/dist/types/src/templates/scaffold.d.ts +9 -9
- package/dist/types/src/templates/scaffold.d.ts.map +1 -1
- package/dist/types/src/testing/test-generator.d.ts +1 -1
- package/dist/types/src/testing/test-generator.d.ts.map +1 -1
- package/dist/types/src/testing/test-sequence.d.ts +1 -8
- package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
- package/dist/types/src/testing/test-trace.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Assistant.d.ts +5 -12
- package/dist/types/src/types/Assistant.d.ts.map +1 -1
- package/dist/types/src/types/AssistantCapabilities.d.ts +21 -0
- package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -1
- package/dist/types/src/types/AssistantOperation.d.ts +17 -110
- package/dist/types/src/types/AssistantOperation.d.ts.map +1 -1
- package/dist/types/src/types/ChatSurface.d.ts +12 -0
- package/dist/types/src/types/ChatSurface.d.ts.map +1 -0
- package/dist/types/src/types/Ollama.d.ts +44 -0
- package/dist/types/src/types/Ollama.d.ts.map +1 -0
- package/dist/types/src/types/Settings.d.ts +5 -4
- package/dist/types/src/types/Settings.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +2 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/service.d.ts +4 -3
- package/dist/types/src/types/service.d.ts.map +1 -1
- package/dist/types/src/util/suggestions.d.ts +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +2 -2
- package/package.json +102 -90
- package/src/AssistantPlugin.conversations.json +1 -1
- package/src/AssistantPlugin.node.ts +5 -5
- package/src/AssistantPlugin.test.ts +26 -40
- package/src/AssistantPlugin.ts +12 -10
- package/src/AssistantPlugin.workerd.ts +15 -6
- package/src/capabilities/agent-hydrator.ts +1 -2
- package/src/capabilities/agent-service.ts +5 -7
- package/src/capabilities/ai-context.ts +7 -32
- package/src/capabilities/ai-service.ts +3 -2
- package/src/capabilities/app-graph-builder.ts +38 -18
- package/src/capabilities/automation-templates.ts +3 -3
- package/src/capabilities/companion-chat-provisioner.ts +22 -6
- package/src/capabilities/{integration-provider.ts → connector.ts} +7 -12
- package/src/capabilities/create-object.ts +9 -26
- package/src/capabilities/index.ts +3 -5
- package/src/capabilities/markdown-extension.ts +2 -3
- package/src/capabilities/navigation-resolver.ts +20 -0
- package/src/capabilities/react-surface.tsx +21 -33
- package/src/capabilities/skill-definition.ts +72 -0
- package/src/capabilities/state.ts +7 -0
- package/src/components/AgentProperties/AgentProperties.stories.tsx +1 -2
- package/src/components/Chat/Chat.tsx +28 -10
- package/src/components/Chat/events.ts +0 -6
- package/src/components/ChatPrompt/ChatActions.tsx +181 -18
- package/src/components/ChatPrompt/ChatOptions.stories.tsx +3 -3
- package/src/components/ChatPrompt/ChatOptions.tsx +17 -21
- package/src/components/ChatPrompt/ChatPrompt.tsx +30 -46
- package/src/components/ChatPrompt/useChatVoiceInput.ts +103 -0
- package/src/components/ChatThread/ChatThread.stories.tsx +7 -16
- package/src/components/ChatThread/MarkdownStream.stories.tsx +3 -3
- package/src/components/ChatThread/registry.tsx +43 -17
- package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +2 -2
- package/src/components/ChatThread/widgets/SurfaceWidget.tsx +41 -0
- package/src/components/ChatThread/widgets/index.ts +1 -0
- package/src/components/ProcessTree/ProcessTree.tsx +2 -10
- package/src/components/TaskList/TaskList.stories.tsx +2 -2
- package/src/components/TaskList/TaskList.tsx +2 -2
- package/src/components/Toolbox/Toolbox.tsx +11 -11
- package/src/components/index.ts +0 -6
- package/src/constants.ts +1 -1
- package/src/containers/AgentArticle/AgentArticle.stories.tsx +8 -9
- package/src/containers/AgentArticle/AgentArticle.tsx +1 -1
- package/src/{components → containers}/AssistantSettings/AssistantSettings.stories.tsx +3 -2
- package/src/containers/AssistantSettings/AssistantSettings.tsx +90 -0
- package/src/containers/AssistantSettings/OllamaModels.stories.tsx +108 -0
- package/src/containers/AssistantSettings/OllamaModels.tsx +255 -0
- package/src/containers/ChatArticle/ChatArticle.stories.tsx +3 -3
- package/src/containers/ChatArticle/ChatArticle.tsx +8 -19
- package/src/containers/ChatCompanion/ChatCompanion.tsx +26 -26
- package/src/containers/ChatDialog/ChatDialog.tsx +5 -4
- package/src/containers/IntegrationPrompt/IntegrationPrompt.tsx +79 -0
- package/src/containers/IntegrationPrompt/index.ts +5 -0
- package/src/containers/SpaceHomePrompt/SpaceHomePrompt.tsx +8 -6
- package/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.tsx +46 -32
- package/src/containers/TracePanel/TracePanel.stories.tsx +89 -47
- package/src/containers/TracePanel/TracePanel.tsx +13 -8
- package/src/containers/TracePanel/dxn-extractor.test.ts +2 -2
- package/src/containers/TriggerStatus/TriggerStatus.tsx +8 -4
- package/src/containers/index.ts +2 -3
- package/src/execution-graph/SPEC.md +1 -1
- package/src/execution-graph/execution-graph.test.ts +213 -25
- package/src/execution-graph/execution-graph.ts +209 -72
- package/src/execution-graph/index.ts +8 -8
- package/src/execution-graph/span-tree.test.ts +33 -1
- package/src/execution-graph/span-tree.ts +43 -2
- package/src/execution-graph/sub-agent-delegation.test.ts +19 -19
- package/src/extensions/index.ts +1 -1
- package/src/extensions/prompt-extension.ts +1 -1
- package/src/feed-logger.ts +4 -4
- package/src/functions/services.test.ts +4 -4
- package/src/hooks/index.ts +2 -2
- package/src/hooks/useChatProcessor.ts +12 -16
- package/src/hooks/useContextBinder.ts +2 -4
- package/src/hooks/useDebug.ts +2 -2
- package/src/hooks/useHomeSuggestions.ts +55 -0
- package/src/hooks/usePresets.ts +80 -11
- package/src/hooks/useProcessEphemeralStatus.ts +1 -1
- package/src/hooks/useReferencesProvider.ts +1 -1
- package/src/hooks/useSkillRegistry.ts +125 -0
- package/src/index.ts +1 -1
- package/src/operations/create-chat.ts +11 -12
- package/src/operations/fork-chat.ts +14 -19
- package/src/operations/generate-home-suggestions.test.ts +103 -0
- package/src/operations/generate-home-suggestions.ts +116 -0
- package/src/operations/index.ts +1 -0
- package/src/operations/prompt.node.test.ts +14 -17
- package/src/operations/resolve-navigation-targets.ts +32 -19
- package/src/operations/run-prompt-in-new-chat.ts +30 -33
- package/src/operations/update-chat-name.ts +2 -2
- package/src/paths.ts +4 -2
- package/src/plugin.workerd.ts +5 -0
- package/src/processor/presets.ts +38 -61
- package/src/processor/processor.node.test.ts +1 -1
- package/src/processor/processor.ts +34 -20
- package/src/skills/assistant/index.ts +5 -0
- package/src/{blueprints/assistant/blueprint.node.test.ts → skills/assistant/skill.node.test.ts} +8 -8
- package/src/{blueprints/assistant/blueprint.ts → skills/assistant/skill.ts} +9 -9
- package/src/templates/daily-digest.ts +10 -12
- package/src/templates/index.ts +3 -3
- package/src/templates/research-brief.ts +15 -13
- package/src/templates/routine-templates.test.ts +55 -0
- package/src/templates/scaffold.ts +22 -57
- package/src/testing/data/trace-timeline-multiple.dx.json +1 -1
- package/src/testing/data/trace-timeline-remote.dx.json +1 -1
- package/src/testing/data/trace-timeline.dx.json +3430 -1092
- package/src/testing/test-generator.test.ts +26 -22
- package/src/testing/test-generator.ts +4 -8
- package/src/testing/test-trace.ts +2 -1
- package/src/testing/trace-timeline.node.test.ts +14 -14
- package/src/translations.ts +68 -33
- package/src/types/Assistant.ts +3 -1
- package/src/types/AssistantCapabilities.ts +21 -0
- package/src/types/AssistantOperation.ts +21 -32
- package/src/types/ChatSurface.ts +16 -0
- package/src/types/Ollama.ts +59 -0
- package/src/types/Settings.ts +12 -10
- package/src/types/index.ts +3 -0
- package/src/types/service.ts +14 -14
- package/src/util/suggestions.ts +1 -1
- package/dist/lib/neutral/AgentArticle-2BEPWUMN.mjs.map +0 -7
- package/dist/lib/neutral/AssistantSettings-7ALY4BMS.mjs +0 -40
- package/dist/lib/neutral/AssistantSettings-7ALY4BMS.mjs.map +0 -7
- package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs +0 -27
- package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs.map +0 -7
- package/dist/lib/neutral/ChatCompanion-YHC43RYQ.mjs.map +0 -7
- package/dist/lib/neutral/ChatDialog-YZDZLIQA.mjs.map +0 -7
- package/dist/lib/neutral/RoutineArticle-FK5BXQN5.mjs +0 -119
- package/dist/lib/neutral/RoutineArticle-FK5BXQN5.mjs.map +0 -7
- package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs +0 -48
- package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs.map +0 -7
- package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs +0 -17
- package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs.map +0 -7
- package/dist/lib/neutral/SpaceHomePrompt-HTWQKLGI.mjs.map +0 -7
- package/dist/lib/neutral/SpaceHomeSuggestions-6G4E7GNJ.mjs +0 -50
- package/dist/lib/neutral/SpaceHomeSuggestions-6G4E7GNJ.mjs.map +0 -7
- package/dist/lib/neutral/TriggerStatus-RBOHHDOK.mjs.map +0 -7
- package/dist/lib/neutral/agent-hydrator-PJBYVMBW.mjs.map +0 -7
- package/dist/lib/neutral/agent-service-WV5CSHAG.mjs.map +0 -7
- package/dist/lib/neutral/ai-context-7WRHWYXY.mjs +0 -42
- package/dist/lib/neutral/ai-context-7WRHWYXY.mjs.map +0 -7
- package/dist/lib/neutral/ai-service-AADUIKBY.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-builder-PTSRZXRN.mjs.map +0 -7
- package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs +0 -115
- package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs.map +0 -7
- package/dist/lib/neutral/blueprint-definition-2XPYI35X.mjs +0 -40
- package/dist/lib/neutral/blueprint-definition-2XPYI35X.mjs.map +0 -7
- package/dist/lib/neutral/blueprints/index.mjs +0 -8
- package/dist/lib/neutral/chunk-54W7N6M6.mjs.map +0 -7
- package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-5KB2WRI2.mjs.map +0 -7
- package/dist/lib/neutral/chunk-7FQT4XMI.mjs +0 -8
- package/dist/lib/neutral/chunk-H77JTXAN.mjs.map +0 -7
- package/dist/lib/neutral/chunk-IQZJ5TTM.mjs +0 -130
- package/dist/lib/neutral/chunk-IQZJ5TTM.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KLYLW4WH.mjs.map +0 -7
- package/dist/lib/neutral/companion-chat-provisioner-YZZ73P6E.mjs.map +0 -7
- package/dist/lib/neutral/create-chat-Z3FNA6OJ.mjs.map +0 -7
- package/dist/lib/neutral/create-object-BJUDDKQQ.mjs.map +0 -7
- package/dist/lib/neutral/fork-chat-UYXYT6BT.mjs.map +0 -7
- package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs.map +0 -7
- package/dist/lib/neutral/markdown-extension-IJ5RQMQ4.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-ES7UHZ65.mjs.map +0 -7
- package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs +0 -22
- package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs.map +0 -7
- package/dist/lib/neutral/run-prompt-in-new-chat-NIAGCKQV.mjs.map +0 -7
- package/dist/types/src/blueprints/assistant/blueprint.d.ts +0 -4
- package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +0 -1
- package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts +0 -2
- package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts.map +0 -1
- package/dist/types/src/blueprints/assistant/index.d.ts +0 -2
- package/dist/types/src/blueprints/assistant/index.d.ts.map +0 -1
- package/dist/types/src/blueprints/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/integration-provider.d.ts.map +0 -1
- package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +0 -1
- package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts +0 -7
- package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts.map +0 -1
- package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts +0 -15
- package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts.map +0 -1
- package/dist/types/src/components/RoutineProperties/index.d.ts +0 -2
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +0 -13
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +0 -21
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +0 -16
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +0 -12
- package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +0 -3
- package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +0 -8
- package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/index.d.ts +0 -2
- package/dist/types/src/components/TemplateEditor/index.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/types.d.ts +0 -18
- package/dist/types/src/components/TemplateEditor/types.d.ts.map +0 -1
- package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +0 -6
- package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +0 -1
- package/dist/types/src/containers/BlueprintArticle/index.d.ts +0 -2
- package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +0 -6
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +0 -15
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineArticle/index.d.ts +0 -2
- package/dist/types/src/containers/RoutineArticle/index.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineList/RoutineList.d.ts +0 -6
- package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +0 -21
- package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineList/index.d.ts +0 -2
- package/dist/types/src/containers/RoutineList/index.d.ts.map +0 -1
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts +0 -66
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +0 -1
- package/dist/types/src/hooks/useOnline.d.ts +0 -3
- package/dist/types/src/hooks/useOnline.d.ts.map +0 -1
- package/dist/types/src/templates/automation-templates.test.d.ts +0 -2
- package/dist/types/src/templates/automation-templates.test.d.ts.map +0 -1
- package/src/blueprints/assistant/index.ts +0 -5
- package/src/capabilities/blueprint-definition.ts +0 -67
- package/src/components/AssistantSettings/AssistantSettings.tsx +0 -43
- package/src/components/RoutineProperties/RoutineProperties.stories.tsx +0 -59
- package/src/components/RoutineProperties/RoutineProperties.tsx +0 -23
- package/src/components/RoutineProperties/index.ts +0 -5
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +0 -95
- package/src/components/TemplateEditor/TemplateEditor.tsx +0 -80
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +0 -76
- package/src/components/TemplateEditor/TemplateForm.tsx +0 -204
- package/src/components/TemplateEditor/extensions/handlebars-extension.ts +0 -274
- package/src/components/TemplateEditor/extensions/index.ts +0 -6
- package/src/components/TemplateEditor/extensions/xml-extension.ts +0 -64
- package/src/components/TemplateEditor/index.ts +0 -5
- package/src/components/TemplateEditor/types.tsx +0 -28
- package/src/containers/BlueprintArticle/BlueprintArticle.tsx +0 -29
- package/src/containers/BlueprintArticle/index.ts +0 -5
- package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +0 -75
- package/src/containers/RoutineArticle/RoutineArticle.tsx +0 -109
- package/src/containers/RoutineArticle/index.ts +0 -5
- package/src/containers/RoutineList/RoutineList.stories.tsx +0 -130
- package/src/containers/RoutineList/RoutineList.tsx +0 -50
- package/src/containers/RoutineList/index.ts +0 -5
- package/src/hooks/useBlueprintRegistry.ts +0 -125
- package/src/hooks/useOnline.ts +0 -10
- package/src/templates/automation-templates.test.ts +0 -66
- /package/dist/lib/neutral/{ChatArticle-KT46SUFU.mjs.map → ChatArticle-OO7GGEFW.mjs.map} +0 -0
- /package/dist/lib/neutral/{TracePanel-T552TAOH.mjs.map → TracePanel-JKNWADJ4.mjs.map} +0 -0
- /package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs.map → edge-model-resolver-WDJWDZTT.mjs.map} +0 -0
- /package/dist/lib/neutral/{blueprints → extensions}/index.mjs.map +0 -0
- /package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts +0 -0
- /package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts +0 -0
- /package/dist/types/src/{blueprints → skills}/index.d.ts +0 -0
- /package/src/{components → containers}/AssistantSettings/index.ts +0 -0
- /package/src/{blueprints → skills}/index.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/hooks/
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { Blueprint } from '@dxos/compute';\nimport { type Database, Filter, Obj, Ref, type Registry } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { distinctBy } from '@dxos/util';\n\nexport const useBlueprints = ({ registry, db }: { registry?: Registry.Registry; db?: Database.Database }) => {\n const [registryBlueprints, setRegistryBlueprints] = useState<Blueprint.Blueprint[]>(\n () => registry?.query(Filter.type(Blueprint.Blueprint)).runSync() ?? [],\n );\n\n useEffect(() => {\n if (!registry) {\n setRegistryBlueprints([]);\n return;\n }\n setRegistryBlueprints(registry.query(Filter.type(Blueprint.Blueprint)).runSync());\n return registry.changed.on(() => {\n setRegistryBlueprints(registry.query(Filter.type(Blueprint.Blueprint)).runSync());\n });\n }, [registry]);\n\n const spaceBlueprints = useQuery(db, Filter.type(Blueprint.Blueprint));\n return useMemo(() => {\n const blueprints = distinctBy([...registryBlueprints, ...spaceBlueprints], (b) => Obj.getMeta(b).key);\n blueprints.sort(({ name: a }, { name: b }) => a.localeCompare(b));\n return blueprints;\n }, [registryBlueprints, spaceBlueprints]);\n};\n\n/**\n * Create reactive map of active blueprints (by key).\n */\nexport const useActiveBlueprints = ({ context }: { context?: AiContext.Binder }) => {\n const [active, setActive] = useState<Map<string, Blueprint.Blueprint>>(new Map());\n\n useEffect(() => {\n if (!context) {\n setActive(new Map());\n return;\n }\n\n const updateActive = () => {\n const blueprints = context.getBlueprints();\n setActive(\n new Map(\n blueprints\n .map((blueprint) => [Obj.getMeta(blueprint).key, blueprint] as const)\n .filter((entry): entry is readonly [string, Blueprint.Blueprint] => entry[0] !== undefined),\n ),\n );\n };\n\n // Set initial value.\n updateActive();\n\n // Subscribe to changes.\n return context.subscribeBlueprints(updateActive);\n }, [context]);\n\n return active;\n};\n\n// TODO(burdon): Move logic into binder.\nexport const useBlueprintHandlers = ({\n db,\n context,\n registry,\n}: {\n db: Database.Database;\n context?: AiContext.Binder;\n registry?: Registry.Registry;\n}) => {\n const onUpdateBlueprint = useCallback(\n async (key: string, checked: boolean) => {\n if (!context) {\n return;\n }\n\n if (checked) {\n // Check if the blueprint is in the registry — if so, bind via its key URI directly\n // (no DB clone needed). Fall back to an existing DB copy for user-forked blueprints.\n const registryBlueprint = registry\n ?.query(Filter.type(Blueprint.Blueprint))\n .runSync()\n .find((b) => Obj.getMeta(b).key === key);\n\n if (registryBlueprint) {\n await context.bind({ blueprints: [Ref.fromURI(Blueprint.registryURI(key))] });\n } else {\n // User-forked blueprint (in DB but not in registry): bind via DB ref.\n const objects = await db.query(Filter.type(Blueprint.Blueprint)).run();\n const storedBlueprint = objects.find((blueprint) => Obj.getMeta(blueprint).key === key);\n if (storedBlueprint) {\n await context.bind({ blueprints: [Ref.make(storedBlueprint)] });\n }\n }\n } else {\n // Unbind: try registry ref first, then DB ref.\n const registryBlueprint = registry\n ?.query(Filter.type(Blueprint.Blueprint))\n .runSync()\n .find((b) => Obj.getMeta(b).key === key);\n if (registryBlueprint) {\n await context.unbind({ blueprints: [Ref.fromURI(Blueprint.registryURI(key))] });\n } else {\n const objects = await db.query(Filter.type(Blueprint.Blueprint)).run();\n const storedBlueprint = objects.find((blueprint) => Obj.getMeta(blueprint).key === key);\n if (storedBlueprint) {\n await context.unbind({ blueprints: [Ref.make(storedBlueprint)] });\n }\n }\n }\n },\n [db, context, registry],\n );\n\n return { onUpdateBlueprint };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { useMemo } from 'react';\n\nimport { type Event } from '@dxos/async';\nimport { isTruthy } from '@dxos/util';\n\nimport { type ChatEvent } from '../components/Chat/events';\n\n/**\n * CodeMirror keymap shared by the chat document (Thread) and the prompt editor — pressing\n * Mod-Arrow keys when either editor is focused emits the corresponding `ChatEvent` on the\n * shared event bus.\n */\nexport const useChatKeymapExtensions = ({ event }: { event: Event<ChatEvent> }): Extension[] => {\n return useMemo<Extension[]>(() => {\n return [\n Prec.highest(\n keymap.of([\n {\n key: 'Mod-ArrowUp',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-previous' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-open' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowDown',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-next' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-close' });\n return true;\n },\n },\n ]),\n ),\n ].filter(isTruthy);\n }, [event]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport { useContext, useMemo, useState } from 'react';\n\nimport { AiService, OpaqueToolkit } from '@dxos/ai';\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { AiSession } from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { Credential, ServiceResolver } from '@dxos/compute';\nimport { Database, Feed, Ref, Registry } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-client';\nimport { EffectEx } from '@dxos/effect';\nimport { AgentService } from '@dxos/functions-runtime';\nimport { log } from '@dxos/log';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { type Assistant } from '#types';\n\nimport { AiChatProcessor, type AiServicePreset } from '../processor';\n\nexport type UseChatProcessorProps = {\n space?: Space;\n chat?: Chat.Chat;\n preset?: AiServicePreset;\n runtime?: Capabilities.ProcessManagerRuntime;\n registry?: Registry.Registry;\n settings?: Assistant.Settings;\n};\n\n/**\n * Configure and create AiChatProcessor.\n */\nexport const useChatProcessor = ({\n space,\n chat,\n preset,\n runtime,\n registry,\n settings,\n}: UseChatProcessorProps): AiChatProcessor | undefined => {\n const observableRegistry = useContext(RegistryContext);\n\n const [session, setSession] = useState<AiSession.Session>();\n useAsyncEffect(async () => {\n if (!space || !chat) {\n return;\n }\n\n const feedTarget = chat.feed.target;\n if (!feedTarget) {\n return;\n }\n const feedServiceLayer = createFeedServiceLayer(space.db);\n const runtime = await EffectEx.runAndForwardErrors(\n Effect.runtime<Feed.FeedService>().pipe(Effect.provide(feedServiceLayer)),\n );\n const session = new AiSession.Session({\n feed: feedTarget,\n runtime,\n registry: observableRegistry,\n });\n await session.open();\n setSession(session);\n return () => {\n void session.close();\n setSession(undefined);\n };\n }, [space, chat?.feed.target]);\n\n const feed = chat?.feed.target;\n const serviceResolver = useCapability(Capabilities.ServiceResolver);\n\n const processor = useMemo(() => {\n if (!runtime || !session || !chat || !feed || !space) {\n return undefined;\n }\n\n const spaceLayer = ServiceResolver.provide(\n { space: space.id },\n Database.Service,\n Feed.FeedService,\n Credential.CredentialsService,\n AiService.AiService,\n AgentService.AgentService,\n Registry.Service,\n OpaqueToolkit.OpaqueToolkitProvider,\n ).pipe(Layer.provide(Layer.succeed(ServiceResolver.ServiceResolver, serviceResolver)));\n\n log('creating processor', { preset, model: preset?.model, settings });\n return new AiChatProcessor(session, runtime, feed, spaceLayer, {\n chat: chat ? Ref.make(chat) : undefined,\n observableRegistry,\n registry,\n model: preset?.model,\n });\n }, [runtime, session, registry, preset, chat, feed, space?.id]);\n\n return processor;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { AppSpace } from '@dxos/app-toolkit';\nimport { type Key } from '@dxos/echo';\nimport { useClient } from '@dxos/react-client';\n\nexport type UseChatServicesProps = {\n id?: Key.SpaceId;\n};\n\n/**\n * Resolves the shared {@link Capabilities.ProcessManagerRuntime} for the given space.\n *\n * The runtime itself is space-agnostic; the returned value can be used to run\n * effects that pipe through {@link ServiceResolver.provide} (or the\n * `useSpaceCallback`/`useSpaceService` hooks) with the resolved {@link Key.SpaceId}.\n */\nexport const useChatServices = ({ id }: UseChatServicesProps) => {\n const client = useClient();\n id ??= AppSpace.getPersonalSpace(client)?.id;\n\n const runtime = useCapability(Capabilities.ProcessManagerRuntime);\n return id ? runtime : undefined;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Filter, Obj, Query, Type } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { MenuBuilder, useMenuBuilder } from '@dxos/react-ui-menu';\n\nimport { meta } from '#meta';\nimport { AssistantOperation } from '#types';\n\nimport { useChatContext } from '../components/Chat/context';\n\nexport type ChatToolbarActionsProps = {\n chat?: Chat.Chat;\n companionTo?: Obj.Unknown;\n};\n\nexport const useChatToolbarActions = ({ chat, companionTo }: ChatToolbarActionsProps) => {\n const { invoke } = useOperationInvoker();\n const { db } = useChatContext('useChatToolbarActions');\n\n // Stable references in deps avoid circular reference issues.\n return useMenuBuilder(\n (get) => {\n const chats =\n companionTo && db\n ? get(db.query(Query.select(Filter.id(companionTo.id)).targetOf(Chat.CompanionTo).source()).atom)\n : [];\n\n const builder = MenuBuilder.make()\n .root({\n label: ['chat-toolbar.title', { ns: meta.profile.key }],\n })\n .action(\n 'new',\n {\n label: ['new-thread.button', { ns: meta.profile.key }],\n icon: 'ph--plus--regular',\n type: 'new',\n disabled: !companionTo,\n },\n () => {\n invariant(companionTo);\n return invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat: undefined,\n }).pipe(EffectEx.runAndForwardErrors);\n },\n )\n .action(\n 'rename',\n {\n label: ['rename-thread.button', { ns: meta.profile.key }],\n icon: 'ph--magic-wand--regular',\n type: 'rename',\n disabled: !chat,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.UpdateChatName, { chat }, { spaceId: db?.spaceId });\n }).pipe(EffectEx.runAndForwardErrors),\n )\n .action(\n 'branch',\n {\n label: ['branch-thread.menu', { ns: meta.profile.key }],\n icon: 'ph--git-branch--regular',\n type: 'branch',\n disabled: !chat || !db,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.ForkChat, { chat, companionTo }, { spaceId: db?.spaceId });\n }).pipe(EffectEx.runAndForwardErrors),\n );\n\n if (chats.length > 0) {\n builder.group(\n 'chats',\n {\n label: ['chat-history.label', { ns: meta.profile.key }],\n icon: 'ph--clock-counter-clockwise--regular',\n selectCardinality: 'single',\n variant: 'dropdownMenu',\n },\n (builder) => {\n chats\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\n .forEach((chat) => {\n get(Obj.atomProperty(chat, 'name'));\n\n builder.action(\n chat.id,\n {\n label: Obj.getLabel(chat) ?? ['object-name.placeholder', { ns: Type.getTypename(Chat.Chat) }],\n },\n () =>\n Effect.gen(function* () {\n invariant(companionTo);\n yield* invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat,\n });\n }).pipe(EffectEx.runAndForwardErrors),\n );\n });\n },\n );\n }\n\n return builder.build();\n },\n [db?.spaceId, companionTo?.id, chat?.id, invoke],\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useContext, useState } from 'react';\n\nimport { AiContext } from '@dxos/assistant';\nimport { Feed } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-client';\nimport { EffectEx } from '@dxos/effect';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nexport const useContextBinder = (\n space: Space | undefined,\n feed: Feed.Feed | undefined,\n): AiContext.Binder | undefined => {\n const registry = useContext(RegistryContext) as Registry.Registry;\n const [binder, setBinder] = useState<AiContext.Binder>();\n\n useAsyncEffect(async () => {\n setBinder(undefined);\n if (!space || !feed) {\n return;\n }\n\n const feedServiceLayer = createFeedServiceLayer(space.db);\n const runtime = await EffectEx.runAndForwardErrors(\n Effect.runtime<Feed.FeedService>().pipe(Effect.provide(feedServiceLayer)),\n );\n const binder = new AiContext.Binder({ feed, runtime, registry });\n await binder.open();\n setBinder(binder);\n\n return () => {\n void binder.close();\n };\n }, [space, feed]);\n\n return binder;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback } from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { type Database, type Obj } from '@dxos/echo';\nimport { type URI } from '@dxos/keys';\n\nexport type UseContextObjectsProps = {\n db?: Database.Database;\n context?: AiContext.Binder;\n};\n\nexport type UseContextObjects = {\n objects: Obj.Unknown[];\n onUpdateObject: (dxn: URI.URI, checked: boolean) => Promise<void>;\n};\n\nconst emptyObjectsAtom = Atom.make<Obj.Unknown[]>([]);\n\n/**\n * Create reactive map of active object references (by DXN string).\n */\nexport const useContextObjects = ({ db, context }: UseContextObjectsProps): UseContextObjects => {\n const objects = useAtomValue(context?.objects ?? emptyObjectsAtom);\n\n const handleUpdateObject = useCallback<UseContextObjects['onUpdateObject']>(\n async (dxn: URI.URI, checked: boolean) => {\n if (!db || !context) {\n return;\n }\n\n const ref = db.makeRef<Obj.Unknown>(dxn);\n await ref.load();\n if (checked) {\n await context.bind({ objects: [ref] });\n } else {\n await context.unbind({ objects: [ref] });\n }\n },\n [db, context],\n );\n\n return {\n objects,\n onUpdateObject: handleUpdateObject,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { trim } from '@dxos/util';\n\nimport { type AiChatProcessor } from '../processor';\n\n/**\n * Returns an async callback that logs the chat's current context, system prompt,\n * and resolved tools to the browser console under a collapsible group.\n * Used by the chat's debug-toggle event handler.\n */\nexport const useDebug = ({ processor }: { processor: AiChatProcessor }) => {\n return useCallback(async () => {\n const objects = processor.context.getObjects();\n const blueprints = processor.context.getBlueprints();\n const system = await processor.getSystemPrompt();\n const tools = (await processor.getTools()) ?? {};\n console.group('Chat', { objects, blueprints });\n try {\n console.log(trim`\n System Prompt:\n ${system}\n `);\n console.log(trim`\n Tools:\n ${Object.values(tools)\n .map((tool) => JSON.stringify(tool, null, 2))\n .join('\\n')}\n `);\n } finally {\n console.groupEnd();\n }\n }, [processor]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useEffect, useState } from 'react';\n\nimport { type Database, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\n\nconst getFilteredTypes = (db: Database.Database): Type.AnyEntity[] =>\n Array.from(\n new Set(\n db.graph.registry\n .list()\n .filter(Type.isType)\n .filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== EntityKind.Relation)\n .filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false))),\n ),\n );\n\n// TODO(burdon): Pass in filter.\n// TODO(wittjosiah): Factor out.\nexport const useFilteredTypes = (db?: Database.Database): Type.AnyEntity[] => {\n const [types, setTypes] = useState<Type.AnyEntity[]>([]);\n useEffect(() => {\n if (!db) {\n return;\n }\n\n setTypes(getFilteredTypes(db));\n return db.graph.registry.changed.on(() => {\n setTypes(getFilteredTypes(db));\n });\n }, [db]);\n\n return types;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useRef, useState } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\n\nexport const useFlush = (space?: Space) => {\n const [state, setState] = useState<'idle' | 'flushing' | 'flushed'>('idle');\n const resetTimer = useRef<NodeJS.Timeout | null>(null);\n\n const handleFlush = useCallback(() => {\n if (!space) {\n return;\n }\n\n queueMicrotask(async () => {\n if (resetTimer.current) {\n clearTimeout(resetTimer.current);\n }\n\n setState('flushing');\n await space.db.flush();\n setState('flushed');\n\n resetTimer.current = setTimeout(() => {\n setState('idle');\n resetTimer.current = null;\n }, 1_000);\n });\n }, [space]);\n\n return { state, handleFlush };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Dispatch, type SetStateAction, useState } from 'react';\n\nexport const useOnline = (): [boolean, Dispatch<SetStateAction<boolean>>] => {\n const [online, setOnline] = useState(true);\n return [online, setOnline];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type ChatPresetProps } from '#types';\n\nimport { type AiServicePreset, AiServicePresets } from '../processor';\n\nexport type UsePresets = {\n preset: AiServicePreset | undefined;\n} & Pick<ChatPresetProps, 'presets' | 'onPresetChange'>;\n\nexport const usePresets = (online: boolean): UsePresets => {\n // TODO(burdon): Memo preset for provider.\n const [preset, setPreset] = useState<AiServicePreset>();\n const presets = useMemo(\n () => AiServicePresets.filter((preset) => online === (preset.provider === 'dxos-remote')),\n [online],\n );\n\n const presetOptions = useMemo(\n () => presets.map(({ id, model, label }) => ({ id, label: label ?? model })),\n [presets],\n );\n\n useEffect(() => {\n setPreset(presets[0]);\n }, [presets]);\n\n const handlePresetChange = useCallback<NonNullable<ChatPresetProps['onPresetChange']>>(\n (id) => {\n const preset = presets.find((preset) => preset.id === id);\n if (preset) {\n setPreset(preset);\n }\n },\n [presets],\n );\n\n return {\n preset: preset,\n presets: presetOptions,\n onPresetChange: handlePresetChange,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type ReferencesProvider } from '@dxos/react-ui-chat';\n\n/**\n * Resolve references to objects in the space.\n */\nexport const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {\n return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n getReferences: async ({ query }) => {\n // TODO(burdon): Previously we filtered by types declared by the artifact definitions.\n // const schemas = blueprints.map((blueprint) => blueprint.schema).flat();\n // const objects = await space.db\n // .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))\n // .run();\n\n const objects = await space.db.query(Filter.everything()).run();\n\n return objects\n .filter(Obj.isObject)\n .filter((object) => stringMatch(query, Obj.getLabel(object) ?? ''))\n .map((object) => ({\n uri: Obj.getURI(object),\n label: Obj.getLabel(object) ?? '',\n }));\n },\n resolveReference: async ({ uri }) => {\n const object = await space.db.query(Filter.id(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n } satisfies ReferencesProvider;\n }, [space]);\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { pipe } from 'effect/Function';\nimport { useMemo } from 'react';\n\nimport { Trace } from '@dxos/compute';\nimport { Filter, Query } from '@dxos/echo';\nimport { FeedTraceSink } from '@dxos/functions-runtime';\nimport { type Space } from '@dxos/react-client/echo';\n\nconst atomEmpty = Atom.make(() => [] as const);\n\n/**\n * Atom of raw trace messages for a space — the input to `buildExecutionGraph`.\n */\nexport const getTraceMessagesAtom = (space: Space): Atom.Atom<readonly Trace.Message[]> =>\n pipe(\n space.db.query(FeedTraceSink.query).atom,\n Atom.map(\n (feeds) =>\n // TODO(dmaretskyi): Single query with limit(1) and feed traversal when query supports it.\n space.db.query(\n feeds.length > 0\n ? Query.type(Trace.Message).from(feeds[0])\n : (Query.select(Filter.nothing()) as Query.Query<never>),\n ).atom,\n ),\n (atom) => Atom.make((get) => get(get(atom))),\n );\n\n/**\n * Subscribes to the space invocation trace feed.\n */\nexport const useTraceMessages = (space?: Space): readonly Trace.Message[] => {\n const atom = useMemo(() => (space ? getTraceMessagesAtom(space) : atomEmpty), [space]);\n return useAtomValue(atom);\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Fiber from 'effect/Fiber';\nimport * as Stream from 'effect/Stream';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useOptionalCapability } from '@dxos/app-framework/ui';\nimport { Process, ServiceResolver, type Trace } from '@dxos/compute';\nimport { ProcessManager } from '@dxos/compute-runtime';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { resolveEphemeralStatusUpdate } from '#execution-graph';\n\nconst atomEmpty = Atom.make(() => [] as const);\n\nconst ACTIVE_PROCESS_STATES = new Set<Process.State>([Process.State.RUNNING, Process.State.HYBERNATING]);\n\n/** Durable trace lines that represent finished work, not in-flight status. */\nexport const isTerminalActivityLine = (line: string): boolean =>\n line.endsWith(' - Success') || line.endsWith(' - Error') || line === 'Agent completed request';\n\nconst collectDescendantPids = (processes: readonly Process.Info[], rootPid: string): Set<string> => {\n const pids = new Set([rootPid]);\n let expanded = true;\n while (expanded) {\n expanded = false;\n for (const process of processes) {\n const pid = String(process.pid);\n const parentPid = process.parentPid ? String(process.parentPid) : undefined;\n if (parentPid && pids.has(parentPid) && !pids.has(pid)) {\n pids.add(pid);\n expanded = true;\n }\n }\n }\n return pids;\n};\n\nconst resolveSubscribePids = (agentPid: Process.ID, processes: readonly Process.Info[]): Process.ID[] => {\n const rootPid = String(agentPid);\n const descendants = collectDescendantPids(processes, rootPid);\n const activePids = processes\n .filter((process) => descendants.has(String(process.pid)) && ACTIVE_PROCESS_STATES.has(process.state))\n .map((process) => process.pid);\n\n if (activePids.length > 0) {\n return activePids;\n }\n\n return [agentPid];\n};\n\nconst attachActiveHandle = (\n processManager: ProcessManager.Manager,\n pid: Process.ID,\n): Effect.Effect<ProcessManager.Handle<any, any> | undefined> =>\n Effect.gen(function* () {\n const maxAttempts = 15;\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const handle = yield* processManager.attach(pid).pipe(Effect.catchAll(() => Effect.succeed(undefined)));\n if (handle && ACTIVE_PROCESS_STATES.has(handle.status.state)) {\n return handle;\n }\n if (handle) {\n return undefined;\n }\n yield* Effect.sleep(100);\n }\n return undefined;\n });\n\n/**\n * Subscribes to ephemeral trace events for a delegated sub-agent process subtree\n * and surfaces the latest pending text or tool-call block as a status line.\n */\nexport const useProcessEphemeralStatus = (\n agentPid: Process.ID | undefined,\n space: Space | undefined,\n): string | undefined => {\n // Optional capabilities: the live status is a progressive enhancement, so the component still\n // renders (e.g. in standalone stories) when there is no plugin manager / process runtime.\n const runtime = useOptionalCapability(Capabilities.ProcessManagerRuntime);\n const monitor = useOptionalCapability(Capabilities.ProcessMonitor);\n const processes = useAtomValue(monitor?.processTreeAtom ?? atomEmpty);\n const [status, setStatus] = useState<string | undefined>();\n const fibersRef = useRef<Fiber.RuntimeFiber<void, unknown>[]>([]);\n\n const subscribePidsKey = useMemo(() => {\n if (!agentPid) {\n return '';\n }\n return resolveSubscribePids(agentPid, processes)\n .map((pid) => String(pid))\n .sort()\n .join('|');\n }, [agentPid, processes]);\n\n useEffect(() => {\n if (!agentPid || !space?.id || !runtime || !subscribePidsKey) {\n setStatus(undefined);\n return;\n }\n\n const pids = subscribePidsKey.split('|').map((pid) => Process.ID.make(pid));\n let disposed = false;\n let replaying = true;\n let replayStatus: string | undefined;\n const endReplay = () => {\n replaying = false;\n if (!disposed) {\n setStatus(replayStatus);\n }\n };\n queueMicrotask(endReplay);\n fibersRef.current = [];\n\n const handleEphemeralMessage = (message: Trace.Message) => {\n const update = resolveEphemeralStatusUpdate(message);\n if (update === 'unchanged') {\n return;\n }\n\n if (replaying) {\n replayStatus = update.line;\n return;\n }\n setStatus(update.line);\n };\n\n const layer = ServiceResolver.provide({ space: space.id }, ProcessManager.ProcessManagerService);\n\n const subscribe = (pid: Process.ID) =>\n Effect.gen(function* () {\n // `attachActiveHandle` polls, so a teardown can land mid-resolve; bail before forking a\n // daemon that the cleanup pass below would never see (and thus never interrupt).\n if (disposed) {\n return;\n }\n const processManager = yield* ProcessManager.ProcessManagerService;\n const handle = yield* attachActiveHandle(processManager, pid);\n if (!handle || disposed) {\n return;\n }\n\n // `forkDaemon` keeps the stream fiber alive after `runPromise(forEach)` returns;\n // scoped `fork` is interrupted when the subscribe effect's parent scope closes.\n const fiber = yield* handle.subscribeEphemeral().pipe(\n Stream.runForEach((message) =>\n Effect.sync(() => {\n if (disposed) {\n return;\n }\n handleEphemeralMessage(message);\n }),\n ),\n Effect.forkDaemon,\n );\n if (disposed) {\n yield* Fiber.interrupt(fiber);\n return;\n }\n fibersRef.current.push(fiber);\n });\n\n void runtime\n .runPromise(\n Effect.forEach(pids, subscribe, { concurrency: 'unbounded', discard: true }).pipe(Effect.provide(layer)),\n )\n .catch(() => {\n if (!disposed) {\n setStatus(undefined);\n }\n });\n\n return () => {\n disposed = true;\n const fibers = fibersRef.current;\n fibersRef.current = [];\n for (const fiber of fibers) {\n void runtime.runPromise(Fiber.interrupt(fiber).pipe(Effect.provide(layer)));\n }\n };\n }, [agentPid, runtime, space?.id, subscribePidsKey]);\n\n return status;\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["useCallback", "useEffect", "useMemo", "useState", "
|
|
3
|
+
"sources": ["../../../../src/hooks/useSkillRegistry.ts", "../../../../src/hooks/useChatKeymap.ts", "../../../../src/hooks/useChatProcessor.ts", "../../../../src/hooks/useChatServices.ts", "../../../../src/hooks/useChatToolbarActions.ts", "../../../../src/hooks/useContextBinder.ts", "../../../../src/hooks/useContextObjects.ts", "../../../../src/hooks/useDebug.ts", "../../../../src/hooks/useFilteredTypes.ts", "../../../../src/hooks/useFlush.ts", "../../../../src/hooks/usePresets.ts", "../../../../src/hooks/useReferencesProvider.ts", "../../../../src/hooks/useTraceMessages.ts", "../../../../src/hooks/useHomeSuggestions.ts", "../../../../src/hooks/useProcessEphemeralStatus.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { Skill } from '@dxos/compute';\nimport { type Database, Filter, Obj, Ref, type Registry } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { distinctBy } from '@dxos/util';\n\nexport const useSkills = ({ registry, db }: { registry?: Registry.Registry; db?: Database.Database }) => {\n const [registrySkills, setRegistrySkills] = useState<Skill.Skill[]>(\n () => registry?.query(Filter.type(Skill.Skill)).runSync() ?? [],\n );\n\n useEffect(() => {\n if (!registry) {\n setRegistrySkills([]);\n return;\n }\n setRegistrySkills(registry.query(Filter.type(Skill.Skill)).runSync());\n return registry.changed.on(() => {\n setRegistrySkills(registry.query(Filter.type(Skill.Skill)).runSync());\n });\n }, [registry]);\n\n const spaceSkills = useQuery(db, Filter.type(Skill.Skill));\n return useMemo(() => {\n const skills = distinctBy([...registrySkills, ...spaceSkills], (b) => Obj.getMeta(b).key);\n skills.sort(({ name: a }, { name: b }) => a.localeCompare(b));\n return skills;\n }, [registrySkills, spaceSkills]);\n};\n\n/**\n * Create reactive map of active skills (by key).\n */\nexport const useActiveSkills = ({ context }: { context?: AiContext.Binder }) => {\n const [active, setActive] = useState<Map<string, Skill.Skill>>(new Map());\n\n useEffect(() => {\n if (!context) {\n setActive(new Map());\n return;\n }\n\n const updateActive = () => {\n const skills = context.getSkills();\n setActive(\n new Map(\n skills\n .map((skill) => [Obj.getMeta(skill).key, skill] as const)\n .filter((entry): entry is readonly [string, Skill.Skill] => entry[0] !== undefined),\n ),\n );\n };\n\n // Set initial value.\n updateActive();\n\n // Subscribe to changes.\n return context.subscribeSkills(updateActive);\n }, [context]);\n\n return active;\n};\n\n// TODO(burdon): Move logic into binder.\nexport const useSkillHandlers = ({\n db,\n context,\n registry,\n}: {\n db: Database.Database;\n context?: AiContext.Binder;\n registry?: Registry.Registry;\n}) => {\n const onUpdateSkill = useCallback(\n async (key: string, checked: boolean) => {\n if (!context) {\n return;\n }\n\n if (checked) {\n // Check if the skill is in the registry — if so, bind via its key URI directly\n // (no DB clone needed). Fall back to an existing DB copy for user-forked skills.\n const registrySkill = registry\n ?.query(Filter.type(Skill.Skill))\n .runSync()\n .find((b) => Obj.getMeta(b).key === key);\n\n if (registrySkill) {\n await context.bind({ skills: [Ref.fromURI(Skill.registryURI(key))] });\n } else {\n // User-forked skill (in DB but not in registry): bind via DB ref.\n const objects = await db.query(Filter.type(Skill.Skill)).run();\n const storedSkill = objects.find((skill) => Obj.getMeta(skill).key === key);\n if (storedSkill) {\n await context.bind({ skills: [Ref.make(storedSkill)] });\n }\n }\n } else {\n // Unbind: try registry ref first, then DB ref.\n const registrySkill = registry\n ?.query(Filter.type(Skill.Skill))\n .runSync()\n .find((b) => Obj.getMeta(b).key === key);\n if (registrySkill) {\n await context.unbind({ skills: [Ref.fromURI(Skill.registryURI(key))] });\n } else {\n const objects = await db.query(Filter.type(Skill.Skill)).run();\n const storedSkill = objects.find((skill) => Obj.getMeta(skill).key === key);\n if (storedSkill) {\n await context.unbind({ skills: [Ref.make(storedSkill)] });\n }\n }\n }\n },\n [db, context, registry],\n );\n\n return { onUpdateSkill };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { useMemo } from 'react';\n\nimport { type Event } from '@dxos/async';\nimport { isTruthy } from '@dxos/util';\n\nimport { type ChatEvent } from '../components/Chat/events';\n\n/**\n * CodeMirror keymap shared by the chat document (Thread) and the prompt editor — pressing\n * Mod-Arrow keys when either editor is focused emits the corresponding `ChatEvent` on the\n * shared event bus.\n */\nexport const useChatKeymapExtensions = ({ event }: { event: Event<ChatEvent> }): Extension[] => {\n return useMemo<Extension[]>(() => {\n return [\n Prec.highest(\n keymap.of([\n {\n key: 'Mod-ArrowUp',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-previous' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-open' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowDown',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-next' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-close' });\n return true;\n },\n },\n ]),\n ),\n ].filter(isTruthy);\n }, [event]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport { useContext, useMemo, useState } from 'react';\n\nimport { AiService, OpaqueToolkit } from '@dxos/ai';\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { AiSession } from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { AgentService, Credential, ServiceResolver } from '@dxos/compute';\nimport { Database, Obj, Ref, Registry } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { log } from '@dxos/log';\nimport { type Space, useObject } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { type Assistant } from '#types';\n\nimport { AiChatProcessor, type AiServicePreset } from '../processor';\n\nexport type UseChatProcessorProps = {\n space?: Space;\n chat?: Chat.Chat;\n preset?: AiServicePreset;\n runtime?: Capabilities.ProcessManagerRuntime;\n registry?: Registry.Registry;\n settings?: Assistant.Settings;\n};\n\n/**\n * Configure and create AiChatProcessor.\n */\nexport const useChatProcessor = ({\n space,\n chat,\n preset,\n runtime,\n registry,\n settings,\n}: UseChatProcessorProps): AiChatProcessor | undefined => {\n const observableRegistry = useContext(RegistryContext);\n\n // Reactive subscription — re-renders when the feed ref resolves. Direct `.target` reads are not reactive.\n const [feedSnapshot] = useObject(chat?.feed);\n const feed = Obj.getReactiveOrUndefined(feedSnapshot);\n\n const [session, setSession] = useState<AiSession.Session>();\n useAsyncEffect(async () => {\n if (!space || !chat || !feed) {\n return;\n }\n\n const runtime = await EffectEx.runAndForwardErrors(\n Effect.runtime<Database.Service>().pipe(Effect.provide(Database.layer(space.db))),\n );\n const session = new AiSession.Session({\n feed,\n runtime,\n registry: observableRegistry,\n });\n await session.open();\n setSession(session);\n return () => {\n void session.close();\n setSession(undefined);\n };\n }, [space, chat, feed]);\n\n const serviceResolver = useCapability(Capabilities.ServiceResolver);\n\n const processor = useMemo(() => {\n if (!runtime || !session || !chat || !feed || !space) {\n return undefined;\n }\n\n const spaceLayer = ServiceResolver.provide(\n { space: space.id },\n Database.Service,\n Credential.CredentialsService,\n AiService.AiService,\n AgentService.AgentService,\n Registry.Service,\n OpaqueToolkit.OpaqueToolkitProvider,\n ).pipe(Layer.provide(Layer.succeed(ServiceResolver.ServiceResolver, serviceResolver)));\n\n log('creating processor', { preset, model: preset?.model, settings });\n return new AiChatProcessor(session, runtime, feed, spaceLayer, {\n chat: chat ? Ref.make(chat) : undefined,\n observableRegistry,\n registry,\n model: preset?.model,\n provider: preset?.provider,\n });\n }, [runtime, session, registry, preset, chat, feed, space?.id]);\n\n return processor;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { AppSpace } from '@dxos/app-toolkit';\nimport { type Key } from '@dxos/echo';\nimport { useClient } from '@dxos/react-client';\n\nexport type UseChatServicesProps = {\n id?: Key.SpaceId;\n};\n\n/**\n * Resolves the shared {@link Capabilities.ProcessManagerRuntime} for the given space.\n *\n * The runtime itself is space-agnostic; the returned value can be used to run\n * effects that pipe through {@link ServiceResolver.provide} (or the\n * `useSpaceCallback`/`useSpaceService` hooks) with the resolved {@link Key.SpaceId}.\n */\nexport const useChatServices = ({ id }: UseChatServicesProps) => {\n const client = useClient();\n id ??= AppSpace.getPersonalSpace(client)?.id;\n\n const runtime = useCapability(Capabilities.ProcessManagerRuntime);\n return id ? runtime : undefined;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Filter, Obj, Query, Type } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { MenuBuilder, useMenuBuilder } from '@dxos/react-ui-menu';\n\nimport { meta } from '#meta';\nimport { AssistantOperation } from '#types';\n\nimport { useChatContext } from '../components/Chat/context';\n\nexport type ChatToolbarActionsProps = {\n chat?: Chat.Chat;\n companionTo?: Obj.Unknown;\n};\n\nexport const useChatToolbarActions = ({ chat, companionTo }: ChatToolbarActionsProps) => {\n const { invoke } = useOperationInvoker();\n const { db } = useChatContext('useChatToolbarActions');\n\n // Stable references in deps avoid circular reference issues.\n return useMenuBuilder(\n (get) => {\n const chats =\n companionTo && db\n ? get(db.query(Query.select(Filter.id(companionTo.id)).targetOf(Chat.CompanionTo).source()).atom)\n : [];\n\n const builder = MenuBuilder.make()\n .root({\n label: ['chat-toolbar.title', { ns: meta.profile.key }],\n })\n .action(\n 'new',\n {\n label: ['new-thread.button', { ns: meta.profile.key }],\n icon: 'ph--plus--regular',\n type: 'new',\n disabled: !companionTo,\n },\n () => {\n invariant(companionTo);\n return invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat: undefined,\n }).pipe(EffectEx.runAndForwardErrors);\n },\n )\n .action(\n 'rename',\n {\n label: ['rename-thread.button', { ns: meta.profile.key }],\n icon: 'ph--magic-wand--regular',\n type: 'rename',\n disabled: !chat,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.UpdateChatName, { chat }, { spaceId: db?.spaceId });\n }).pipe(EffectEx.runAndForwardErrors),\n )\n .action(\n 'branch',\n {\n label: ['branch-thread.menu', { ns: meta.profile.key }],\n icon: 'ph--git-branch--regular',\n type: 'branch',\n disabled: !chat || !db,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.ForkChat, { chat, companionTo }, { spaceId: db?.spaceId });\n }).pipe(EffectEx.runAndForwardErrors),\n );\n\n if (chats.length > 0) {\n builder.group(\n 'chats',\n {\n label: ['chat-history.label', { ns: meta.profile.key }],\n icon: 'ph--clock-counter-clockwise--regular',\n selectCardinality: 'single',\n variant: 'dropdownMenu',\n },\n (builder) => {\n chats\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\n .forEach((chat) => {\n get(Obj.atomProperty(chat, 'name'));\n\n builder.action(\n chat.id,\n {\n label: Obj.getLabel(chat) ?? ['object-name.placeholder', { ns: Type.getTypename(Chat.Chat) }],\n },\n () =>\n Effect.gen(function* () {\n invariant(companionTo);\n yield* invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat,\n });\n }).pipe(EffectEx.runAndForwardErrors),\n );\n });\n },\n );\n }\n\n return builder.build();\n },\n [db?.spaceId, companionTo?.id, chat?.id, invoke],\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useContext, useState } from 'react';\n\nimport { AiContext } from '@dxos/assistant';\nimport { Database, Feed } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nexport const useContextBinder = (\n space: Space | undefined,\n feed: Feed.Feed | undefined,\n): AiContext.Binder | undefined => {\n const registry = useContext(RegistryContext) as Registry.Registry;\n const [binder, setBinder] = useState<AiContext.Binder>();\n\n useAsyncEffect(async () => {\n setBinder(undefined);\n if (!space || !feed) {\n return;\n }\n\n const runtime = await EffectEx.runAndForwardErrors(\n Effect.runtime<Database.Service>().pipe(Effect.provide(Database.layer(space.db))),\n );\n const binder = new AiContext.Binder({ feed, runtime, registry });\n await binder.open();\n setBinder(binder);\n\n return () => {\n void binder.close();\n };\n }, [space, feed]);\n\n return binder;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom, useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback } from 'react';\n\nimport { type AiContext } from '@dxos/assistant';\nimport { type Database, type Obj } from '@dxos/echo';\nimport { type URI } from '@dxos/keys';\n\nexport type UseContextObjectsProps = {\n db?: Database.Database;\n context?: AiContext.Binder;\n};\n\nexport type UseContextObjects = {\n objects: Obj.Unknown[];\n onUpdateObject: (dxn: URI.URI, checked: boolean) => Promise<void>;\n};\n\nconst emptyObjectsAtom = Atom.make<Obj.Unknown[]>([]);\n\n/**\n * Create reactive map of active object references (by DXN string).\n */\nexport const useContextObjects = ({ db, context }: UseContextObjectsProps): UseContextObjects => {\n const objects = useAtomValue(context?.objects ?? emptyObjectsAtom);\n\n const handleUpdateObject = useCallback<UseContextObjects['onUpdateObject']>(\n async (dxn: URI.URI, checked: boolean) => {\n if (!db || !context) {\n return;\n }\n\n const ref = db.makeRef<Obj.Unknown>(dxn);\n await ref.load();\n if (checked) {\n await context.bind({ objects: [ref] });\n } else {\n await context.unbind({ objects: [ref] });\n }\n },\n [db, context],\n );\n\n return {\n objects,\n onUpdateObject: handleUpdateObject,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { trim } from '@dxos/util';\n\nimport { type AiChatProcessor } from '../processor';\n\n/**\n * Returns an async callback that logs the chat's current context, system prompt,\n * and resolved tools to the browser console under a collapsible group.\n * Used by the chat's debug-toggle event handler.\n */\nexport const useDebug = ({ processor }: { processor: AiChatProcessor }) => {\n return useCallback(async () => {\n const objects = processor.context.getObjects();\n const skills = processor.context.getSkills();\n const system = await processor.getSystemPrompt();\n const tools = (await processor.getTools()) ?? {};\n console.group('Chat', { objects, skills });\n try {\n console.log(trim`\n System Prompt:\n ${system}\n `);\n console.log(trim`\n Tools:\n ${Object.values(tools)\n .map((tool) => JSON.stringify(tool, null, 2))\n .join('\\n')}\n `);\n } finally {\n console.groupEnd();\n }\n }, [processor]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useEffect, useState } from 'react';\n\nimport { type Database, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\n\nconst getFilteredTypes = (db: Database.Database): Type.AnyEntity[] =>\n Array.from(\n new Set(\n db.graph.registry\n .list()\n .filter(Type.isType)\n .filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== EntityKind.Relation)\n .filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false))),\n ),\n );\n\n// TODO(burdon): Pass in filter.\n// TODO(wittjosiah): Factor out.\nexport const useFilteredTypes = (db?: Database.Database): Type.AnyEntity[] => {\n const [types, setTypes] = useState<Type.AnyEntity[]>([]);\n useEffect(() => {\n if (!db) {\n return;\n }\n\n setTypes(getFilteredTypes(db));\n return db.graph.registry.changed.on(() => {\n setTypes(getFilteredTypes(db));\n });\n }, [db]);\n\n return types;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useRef, useState } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\n\nexport const useFlush = (space?: Space) => {\n const [state, setState] = useState<'idle' | 'flushing' | 'flushed'>('idle');\n const resetTimer = useRef<NodeJS.Timeout | null>(null);\n\n const handleFlush = useCallback(() => {\n if (!space) {\n return;\n }\n\n queueMicrotask(async () => {\n if (resetTimer.current) {\n clearTimeout(resetTimer.current);\n }\n\n setState('flushing');\n await space.db.flush();\n setState('flushed');\n\n resetTimer.current = setTimeout(() => {\n setState('idle');\n resetTimer.current = null;\n }, 1_000);\n });\n }, [space]);\n\n return { state, handleFlush };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { Provider } from '@dxos/ai';\nimport { useOptionalCapability } from '@dxos/app-framework/ui';\nimport { EffectEx } from '@dxos/effect';\n\nimport { type Assistant, AssistantCapabilities, type ChatPresetProps, Ollama } from '#types';\n\nimport { type AiServicePreset, defaultsKeyForProvider, presetsForProvider, resolveProvider } from '../processor';\n\nexport type UsePresets = {\n preset: AiServicePreset | undefined;\n} & Pick<ChatPresetProps, 'presets' | 'onPresetChange'>;\n\n/**\n * Resolves the chat model presets for the provider selected in settings ({@link Assistant.Settings.modelProvider}),\n * defaulting the selection to the configured per-provider model.\n */\nexport const usePresets = (settings: Assistant.Settings): UsePresets => {\n const [preset, setPreset] = useState<AiServicePreset>();\n\n // The Ollama manager is the bundled sidecar (desktop only); its presence signals that the\n // `built-in` provider (rather than an external Ollama server) is available.\n const ollamaManager = useOptionalCapability(AssistantCapabilities.OllamaManager);\n\n const provider = resolveProvider(settings.modelProvider, !!ollamaManager);\n const defaultModel = settings.modelDefaults?.[defaultsKeyForProvider(provider)];\n\n // Installed models reported by the bundled sidecar; used to offer only models actually present.\n const localModels = useAtomValue(ollamaManager?.state ?? Ollama.emptyState);\n\n // When the bundled sidecar is the active provider, list installed models in the background so the\n // chat selector is populated without first opening settings. Idempotent: kicks off only from the\n // idle state, so it spawns the sidecar once when local models are in use (not on every launch);\n // settings remains the explicit path for retrying after a failure.\n useEffect(() => {\n if (provider === Provider.builtIn.id && ollamaManager && localModels.kind === 'idle') {\n void EffectEx.runPromise(ollamaManager.refresh);\n }\n }, [provider, ollamaManager, localModels.kind]);\n\n // Probe the external LM Studio server only when that provider is selected on desktop.\n const lmStudioProbeUrl =\n provider === Provider.lmStudio.id && ollamaManager ? `${Provider.lmStudio.endpoint}/v1/models` : undefined;\n const lmStudioReachable = useEndpointReachable(lmStudioProbeUrl);\n\n const presets = useMemo(() => {\n const base = presetsForProvider(provider);\n // Desktop LM Studio: only offer presets when the external server responds.\n if (provider === Provider.lmStudio.id && ollamaManager) {\n return lmStudioReachable ? base : [];\n }\n // Bundled sidecar: only offer models that are actually installed (matched by back-end pull tag).\n if (provider === Provider.builtIn.id && ollamaManager) {\n const installed = new Set(localModels.models.map((model) => model.name));\n return base.filter((preset) => installed.has(preset.backend));\n }\n return base;\n }, [provider, ollamaManager, lmStudioReachable, localModels]);\n\n const presetOptions = useMemo(\n () => presets.map(({ id, model, label }) => ({ id, label: label ?? model })),\n [presets],\n );\n\n // Default to the provider's configured model, else the first available preset.\n useEffect(() => {\n const configured = defaultModel ? presets.find((preset) => preset.model === defaultModel) : undefined;\n setPreset(configured ?? presets[0]);\n }, [presets, defaultModel]);\n\n const handlePresetChange = useCallback<NonNullable<ChatPresetProps['onPresetChange']>>(\n (id) => {\n const preset = presets.find((preset) => preset.id === id);\n if (preset) {\n setPreset(preset);\n }\n },\n [presets],\n );\n\n return {\n preset,\n presets: presetOptions,\n onPresetChange: handlePresetChange,\n };\n};\n\n/** Reactively reports whether an HTTP endpoint responds; `undefined` url disables the probe. */\nconst useEndpointReachable = (url: string | undefined): boolean => {\n const [reachable, setReachable] = useState(false);\n useEffect(() => {\n if (!url) {\n setReachable(false);\n return;\n }\n let active = true;\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 1500);\n fetch(url, { signal: controller.signal })\n .then((response) => active && setReachable(response.ok))\n .catch(() => active && setReachable(false))\n .finally(() => clearTimeout(timer));\n return () => {\n active = false;\n controller.abort();\n clearTimeout(timer);\n };\n }, [url]);\n return reachable;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type ReferencesProvider } from '@dxos/react-ui-chat';\n\n/**\n * Resolve references to objects in the space.\n */\nexport const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {\n return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n getReferences: async ({ query }) => {\n // TODO(burdon): Previously we filtered by types declared by the artifact definitions.\n // const schemas = skills.map((skill) => skill.schema).flat();\n // const objects = await space.db\n // .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))\n // .run();\n\n const objects = await space.db.query(Filter.everything()).run();\n\n return objects\n .filter(Obj.isObject)\n .filter((object) => stringMatch(query, Obj.getLabel(object) ?? ''))\n .map((object) => ({\n uri: Obj.getURI(object),\n label: Obj.getLabel(object) ?? '',\n }));\n },\n resolveReference: async ({ uri }) => {\n const object = await space.db.query(Filter.id(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n } satisfies ReferencesProvider;\n }, [space]);\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { pipe } from 'effect/Function';\nimport { useMemo } from 'react';\n\nimport { Trace } from '@dxos/compute';\nimport { Filter, Query } from '@dxos/echo';\nimport { FeedTraceSink } from '@dxos/functions-runtime';\nimport { type Space } from '@dxos/react-client/echo';\n\nconst atomEmpty = Atom.make(() => [] as const);\n\n/**\n * Atom of raw trace messages for a space — the input to `buildExecutionGraph`.\n */\nexport const getTraceMessagesAtom = (space: Space): Atom.Atom<readonly Trace.Message[]> =>\n pipe(\n space.db.query(FeedTraceSink.query).atom,\n Atom.map(\n (feeds) =>\n // TODO(dmaretskyi): Single query with limit(1) and feed traversal when query supports it.\n space.db.query(\n feeds.length > 0\n ? Query.type(Trace.Message).from(feeds[0])\n : (Query.select(Filter.nothing()) as Query.Query<never>),\n ).atom,\n ),\n (atom) => Atom.make((get) => get(get(atom))),\n );\n\n/**\n * Subscribes to the space invocation trace feed.\n */\nexport const useTraceMessages = (space?: Space): readonly Trace.Message[] => {\n const atom = useMemo(() => (space ? getTraceMessagesAtom(space) : atomEmpty), [space]);\n return useAtomValue(atom);\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { useMemo, useState } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport { AssistantOperation } from '#types';\n\nconst FALLBACK_SUGGESTION_KEYS = [\n 'space-home.suggestion-magazine.label',\n 'space-home.suggestion-spreadsheet.label',\n 'space-home.suggestion-kanban.label',\n] as const;\n\n/**\n * Returns starter prompts for the space Home page. Returns undefined while the request is in flight\n * so the section stays hidden until settled. On success yields generated prompts; on empty result or\n * error falls back to the hardcoded defaults.\n */\nexport const useHomeSuggestions = (space?: Space): readonly string[] | undefined => {\n const { t } = useTranslation(meta.profile.key);\n const { invokePromise } = useOperationInvoker();\n const fallbacks = useMemo(\n () => FALLBACK_SUGGESTION_KEYS.map((key) => t(key, { year: new Date().getFullYear() })),\n [t],\n );\n const [suggestions, setSuggestions] = useState<readonly string[] | undefined>(undefined);\n\n useAsyncEffect(\n async (controller) => {\n setSuggestions(undefined);\n if (!space) {\n return;\n }\n const result = await invokePromise(\n AssistantOperation.GenerateHomeSuggestions,\n { db: space.db },\n { spaceId: space.db.spaceId },\n );\n if (controller.signal.aborted) {\n return;\n }\n const prompts = result.data?.prompts;\n setSuggestions(prompts && prompts.length > 0 ? prompts : fallbacks);\n },\n [space, invokePromise],\n );\n\n return suggestions;\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Fiber from 'effect/Fiber';\nimport * as Stream from 'effect/Stream';\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useOptionalCapability } from '@dxos/app-framework/ui';\nimport { Process, ServiceResolver, type Trace } from '@dxos/compute';\nimport { ProcessManager } from '@dxos/compute-runtime';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { resolveEphemeralStatusUpdate } from '#execution-graph';\n\nconst atomEmpty = Atom.make(() => [] as const);\n\nconst ACTIVE_PROCESS_STATES = new Set<Process.State>([Process.State.RUNNING, Process.State.HYBERNATING]);\n\n/** Durable trace lines that represent finished work, not in-flight status. */\nexport const isTerminalActivityLine = (line: string): boolean =>\n line.endsWith(' - Success') || line.endsWith(' - Error') || line === 'Agent completed request';\n\nconst collectDescendantPids = (processes: readonly Process.Info[], rootPid: string): Set<string> => {\n const pids = new Set([rootPid]);\n let expanded = true;\n while (expanded) {\n expanded = false;\n for (const process of processes) {\n const pid = String(process.pid);\n const parentPid = process.parentPid ? String(process.parentPid) : undefined;\n if (parentPid && pids.has(parentPid) && !pids.has(pid)) {\n pids.add(pid);\n expanded = true;\n }\n }\n }\n return pids;\n};\n\nconst resolveSubscribePids = (agentPid: Process.ID, processes: readonly Process.Info[]): Process.ID[] => {\n const rootPid = String(agentPid);\n const descendants = collectDescendantPids(processes, rootPid);\n const activePids = processes\n .filter((process) => descendants.has(String(process.pid)) && ACTIVE_PROCESS_STATES.has(process.state))\n .map((process) => process.pid);\n\n if (activePids.length > 0) {\n return activePids;\n }\n\n return [agentPid];\n};\n\nconst attachActiveHandle = (\n processManager: ProcessManager.Manager,\n pid: Process.ID,\n): Effect.Effect<ProcessManager.Handle<any, any, never> | undefined> =>\n Effect.gen(function* () {\n const maxAttempts = 15;\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const handle = yield* processManager.attach(pid).pipe(Effect.catchAll(() => Effect.succeed(undefined)));\n if (handle && ACTIVE_PROCESS_STATES.has(handle.status.state)) {\n return handle;\n }\n if (handle) {\n return undefined;\n }\n yield* Effect.sleep(100);\n }\n return undefined;\n });\n\n/**\n * Subscribes to ephemeral trace events for a delegated sub-agent process subtree\n * and surfaces the latest pending text or tool-call block as a status line.\n */\nexport const useProcessEphemeralStatus = (\n agentPid: Process.ID | undefined,\n space: Space | undefined,\n): string | undefined => {\n // Optional capabilities: the live status is a progressive enhancement, so the component still\n // renders (e.g. in standalone stories) when there is no plugin manager / process runtime.\n const runtime = useOptionalCapability(Capabilities.ProcessManagerRuntime);\n const monitor = useOptionalCapability(Capabilities.ProcessMonitor);\n const processes = useAtomValue(monitor?.processTreeAtom ?? atomEmpty);\n const [status, setStatus] = useState<string | undefined>();\n const fibersRef = useRef<Fiber.RuntimeFiber<void, unknown>[]>([]);\n\n const subscribePidsKey = useMemo(() => {\n if (!agentPid) {\n return '';\n }\n return resolveSubscribePids(agentPid, processes)\n .map((pid) => String(pid))\n .sort()\n .join('|');\n }, [agentPid, processes]);\n\n useEffect(() => {\n if (!agentPid || !space?.id || !runtime || !subscribePidsKey) {\n setStatus(undefined);\n return;\n }\n\n const pids = subscribePidsKey.split('|').map((pid) => Process.ID.make(pid));\n let disposed = false;\n let replaying = true;\n let replayStatus: string | undefined;\n const endReplay = () => {\n replaying = false;\n if (!disposed) {\n setStatus(replayStatus);\n }\n };\n queueMicrotask(endReplay);\n fibersRef.current = [];\n\n const handleEphemeralMessage = (message: Trace.Message) => {\n const update = resolveEphemeralStatusUpdate(message);\n if (update === 'unchanged') {\n return;\n }\n\n if (replaying) {\n replayStatus = update.line;\n return;\n }\n setStatus(update.line);\n };\n\n const layer = ServiceResolver.provide({ space: space.id }, ProcessManager.ProcessManagerService);\n\n const subscribe = (pid: Process.ID) =>\n Effect.gen(function* () {\n // `attachActiveHandle` polls, so a teardown can land mid-resolve; bail before forking a\n // daemon that the cleanup pass below would never see (and thus never interrupt).\n if (disposed) {\n return;\n }\n const processManager = yield* ProcessManager.ProcessManagerService;\n const handle = yield* attachActiveHandle(processManager, pid);\n if (!handle || disposed) {\n return;\n }\n\n // `forkDaemon` keeps the stream fiber alive after `runPromise(forEach)` returns;\n // scoped `fork` is interrupted when the subscribe effect's parent scope closes.\n const fiber = yield* handle.subscribeEphemeral().pipe(\n Stream.runForEach((message) =>\n Effect.sync(() => {\n if (disposed) {\n return;\n }\n handleEphemeralMessage(message);\n }),\n ),\n Effect.forkDaemon,\n );\n if (disposed) {\n yield* Fiber.interrupt(fiber);\n return;\n }\n fibersRef.current.push(fiber);\n });\n\n void runtime\n .runPromise(\n Effect.forEach(pids, subscribe, { concurrency: 'unbounded', discard: true }).pipe(Effect.provide(layer)),\n )\n .catch(() => {\n if (!disposed) {\n setStatus(undefined);\n }\n });\n\n return () => {\n disposed = true;\n const fibers = fibersRef.current;\n fibersRef.current = [];\n for (const fiber of fibers) {\n void runtime.runPromise(Fiber.interrupt(fiber).pipe(Effect.provide(layer)));\n }\n };\n }, [agentPid, runtime, space?.id, subscribePidsKey]);\n\n return status;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useCallback", "useEffect", "useMemo", "useState", "Skill", "Filter", "Obj", "Ref", "useQuery", "distinctBy", "useSkills", "registry", "db", "registrySkills", "setRegistrySkills", "query", "type", "runSync", "changed", "on", "spaceSkills", "skills", "b", "getMeta", "key", "sort", "name", "a", "localeCompare", "useActiveSkills", "context", "active", "setActive", "Map", "updateActive", "getSkills", "map", "skill", "filter", "entry", "undefined", "subscribeSkills", "useSkillHandlers", "onUpdateSkill", "checked", "registrySkill", "find", "bind", "fromURI", "registryURI", "objects", "run", "storedSkill", "make", "unbind", "Prec", "keymap", "useMemo", "isTruthy", "useChatKeymapExtensions", "event", "highest", "of", "key", "preventDefault", "run", "emit", "type", "shift", "filter", "RegistryContext", "Effect", "Layer", "useContext", "useMemo", "useState", "AiService", "OpaqueToolkit", "Capabilities", "useCapability", "AiSession", "AgentService", "Credential", "ServiceResolver", "Database", "Obj", "Ref", "Registry", "EffectEx", "log", "useObject", "useAsyncEffect", "runtime", "useObject", "chat", "feed", "session", "setSession", "useState", "useAsyncEffect", "space", "registry", "open", "close", "undefined", "spaceLayer", "Database", "CredentialsService", "preset", "model", "settings", "observableRegistry", "provider", "processor", "Capabilities", "useCapability", "AppSpace", "useClient", "useChatServices", "id", "client", "getPersonalSpace", "runtime", "ProcessManagerRuntime", "undefined", "Effect", "useOperationInvoker", "Chat", "Filter", "Obj", "Query", "Type", "EffectEx", "invariant", "MenuBuilder", "useMenuBuilder", "meta", "AssistantOperation", "__dxlog_file", "useChatToolbarActions", "db", "useMenuBuilder", "get", "MenuBuilder", "label", "Filter", "action", "icon", "type", "disabled", "invariant", "companionTo", "chat", "undefined", "pipe", "EffectEx", "Effect", "invoke", "AssistantOperation", "spaceId", "runAndForwardErrors", "chats", "builder", "group", "selectCardinality", "variant", "getLabel", "Obj", "RegistryContext", "Effect", "useContext", "useState", "AiContext", "Database", "EffectEx", "useAsyncEffect", "useContextBinder", "space", "feed", "registry", "binder", "setBinder", "undefined", "runtime", "runAndForwardErrors", "pipe", "provide", "layer", "db", "Binder", "open", "close", "Atom", "useAtomValue", "useCallback", "emptyObjectsAtom", "make", "useContextObjects", "db", "context", "objects", "handleUpdateObject", "dxn", "checked", "ref", "makeRef", "load", "bind", "unbind", "onUpdateObject", "useCallback", "trim", "useDebug", "processor", "objects", "context", "getObjects", "skills", "getSkills", "system", "getSystemPrompt", "tools", "getTools", "console", "group", "log", "Object", "values", "map", "tool", "JSON", "stringify", "join", "groupEnd", "Option", "useEffect", "useState", "Type", "HiddenAnnotation", "getTypeAnnotation", "Kind", "EntityKind", "getFilteredTypes", "db", "Array", "from", "Set", "graph", "registry", "list", "filter", "isType", "schema", "getSchema", "kind", "Relation", "get", "pipe", "getOrElse", "useFilteredTypes", "types", "setTypes", "changed", "on", "useCallback", "useRef", "useState", "useFlush", "space", "state", "setState", "resetTimer", "handleFlush", "queueMicrotask", "current", "clearTimeout", "db", "flush", "setTimeout", "useAtomValue", "useCallback", "useEffect", "useMemo", "useState", "Provider", "useOptionalCapability", "EffectEx", "AssistantCapabilities", "Ollama", "usePresets", "settings", "preset", "setPreset", "useState", "ollamaManager", "useOptionalCapability", "AssistantCapabilities", "OllamaManager", "provider", "resolveProvider", "modelProvider", "defaultModel", "modelDefaults", "defaultsKeyForProvider", "localModels", "useAtomValue", "state", "Ollama", "emptyState", "useEffect", "Provider", "builtIn", "id", "kind", "EffectEx", "runPromise", "refresh", "lmStudioProbeUrl", "lmStudio", "endpoint", "undefined", "lmStudioReachable", "useEndpointReachable", "presets", "useMemo", "base", "presetsForProvider", "installed", "Set", "models", "map", "model", "name", "filter", "has", "backend", "presetOptions", "label", "configured", "find", "handlePresetChange", "useCallback", "onPresetChange", "url", "reachable", "setReachable", "active", "controller", "AbortController", "timer", "setTimeout", "abort", "fetch", "signal", "then", "response", "ok", "catch", "finally", "clearTimeout", "useMemo", "Filter", "Obj", "useReferencesProvider", "space", "undefined", "getReferences", "query", "objects", "db", "everything", "run", "filter", "isObject", "object", "stringMatch", "getLabel", "map", "uri", "getURI", "label", "resolveReference", "id", "first", "toLowerCase", "startsWith", "Atom", "useAtomValue", "pipe", "useMemo", "Trace", "Filter", "Query", "FeedTraceSink", "atomEmpty", "make", "getTraceMessagesAtom", "space", "db", "query", "atom", "map", "feeds", "length", "type", "Message", "from", "select", "nothing", "get", "useTraceMessages", "useMemo", "useState", "useOperationInvoker", "useAsyncEffect", "useTranslation", "meta", "AssistantOperation", "FALLBACK_SUGGESTION_KEYS", "useHomeSuggestions", "space", "t", "profile", "key", "invokePromise", "fallbacks", "map", "year", "Date", "getFullYear", "suggestions", "setSuggestions", "undefined", "controller", "result", "GenerateHomeSuggestions", "db", "spaceId", "signal", "aborted", "prompts", "data", "length", "Atom", "useAtomValue", "Effect", "Fiber", "Stream", "useEffect", "useMemo", "useRef", "useState", "Capabilities", "useOptionalCapability", "Process", "ServiceResolver", "ProcessManager", "resolveEphemeralStatusUpdate", "atomEmpty", "make", "ACTIVE_PROCESS_STATES", "Set", "State", "RUNNING", "HYBERNATING", "isTerminalActivityLine", "line", "endsWith", "collectDescendantPids", "processes", "rootPid", "pids", "expanded", "process", "pid", "String", "parentPid", "undefined", "has", "add", "resolveSubscribePids", "agentPid", "descendants", "activePids", "filter", "state", "map", "length", "attachActiveHandle", "processManager", "gen", "maxAttempts", "attempt", "handle", "attach", "pipe", "catchAll", "succeed", "status", "sleep", "useProcessEphemeralStatus", "space", "runtime", "ProcessManagerRuntime", "monitor", "ProcessMonitor", "processTreeAtom", "setStatus", "fibersRef", "subscribePidsKey", "sort", "join", "id", "split", "ID", "disposed", "replaying", "replayStatus", "endReplay", "queueMicrotask", "current", "handleEphemeralMessage", "message", "update", "layer", "provide", "ProcessManagerService", "subscribe", "fiber", "subscribeEphemeral", "runForEach", "sync", "forkDaemon", "interrupt", "push", "runPromise", "forEach", "concurrency", "discard", "catch", "fibers"]
|
|
7
7
|
}
|
|
@@ -1,34 +1,38 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getChatPath,
|
|
3
3
|
getChatsPath
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import {
|
|
6
|
-
ASSISTANT_COMPANION_VARIANT,
|
|
7
|
-
ASSISTANT_DIALOG,
|
|
8
|
-
meta
|
|
9
|
-
} from "./chunk-ZNDQVYUN.mjs";
|
|
4
|
+
} from "./chunk-OZWZGIV2.mjs";
|
|
10
5
|
import {
|
|
11
6
|
ApiAuthorization,
|
|
12
7
|
AssistantCapabilities_exports,
|
|
13
8
|
AssistantEvents_exports,
|
|
14
9
|
AssistantOperation_exports,
|
|
15
10
|
Assistant_exports,
|
|
11
|
+
ChatSurface,
|
|
12
|
+
Ollama_exports,
|
|
16
13
|
ServiceType,
|
|
17
14
|
categoryIcons
|
|
18
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-6Q4OBGIK.mjs";
|
|
16
|
+
import {
|
|
17
|
+
ASSISTANT_COMPANION_VARIANT,
|
|
18
|
+
ASSISTANT_DIALOG,
|
|
19
|
+
meta
|
|
20
|
+
} from "./chunk-L7AR4VTA.mjs";
|
|
19
21
|
import {
|
|
20
|
-
|
|
21
|
-
} from "./chunk-
|
|
22
|
+
skill_default
|
|
23
|
+
} from "./chunk-CMPLPDYE.mjs";
|
|
22
24
|
import "./chunk-J5LGTIGS.mjs";
|
|
23
25
|
export {
|
|
24
26
|
ASSISTANT_COMPANION_VARIANT,
|
|
25
27
|
ASSISTANT_DIALOG,
|
|
26
28
|
ApiAuthorization,
|
|
27
29
|
Assistant_exports as Assistant,
|
|
28
|
-
blueprint_default as AssistantBlueprint,
|
|
29
30
|
AssistantCapabilities_exports as AssistantCapabilities,
|
|
30
31
|
AssistantEvents_exports as AssistantEvents,
|
|
31
32
|
AssistantOperation_exports as AssistantOperation,
|
|
33
|
+
skill_default as AssistantSkill,
|
|
34
|
+
ChatSurface,
|
|
35
|
+
Ollama_exports as Ollama,
|
|
32
36
|
ServiceType,
|
|
33
37
|
categoryIcons,
|
|
34
38
|
getChatPath,
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {
|
|
2
|
+
promptRunExtension
|
|
3
|
+
} from "./chunk-HKLSFB5I.mjs";
|
|
4
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
+
|
|
6
|
+
// src/capabilities/markdown-extension.ts
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import { Capabilities, Capability } from "@dxos/app-framework";
|
|
9
|
+
import { Obj } from "@dxos/echo";
|
|
10
|
+
import { MarkdownCapabilities } from "@dxos/plugin-markdown/types";
|
|
11
|
+
import { RoutineOperation } from "@dxos/plugin-routine/types";
|
|
12
|
+
var markdown_extension_default = Capability.makeModule(Effect.fnUntraced(function* () {
|
|
13
|
+
const capabilities = yield* Capability.Service;
|
|
14
|
+
return Capability.contributes(MarkdownCapabilities.ExtensionProvider, [
|
|
15
|
+
({ document: doc, viewMode }) => {
|
|
16
|
+
if (viewMode === "source") {
|
|
17
|
+
return void 0;
|
|
18
|
+
}
|
|
19
|
+
if (!doc) {
|
|
20
|
+
return void 0;
|
|
21
|
+
}
|
|
22
|
+
const db = Obj.getDatabase(doc);
|
|
23
|
+
if (!db) {
|
|
24
|
+
return void 0;
|
|
25
|
+
}
|
|
26
|
+
const { invokePromise } = capabilities.get(Capabilities.OperationInvoker);
|
|
27
|
+
return promptRunExtension({
|
|
28
|
+
onRun: (promptText) => {
|
|
29
|
+
void invokePromise(RoutineOperation.RunPromptInNewChat, {
|
|
30
|
+
db,
|
|
31
|
+
instructions: promptText
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
]);
|
|
37
|
+
}));
|
|
38
|
+
export {
|
|
39
|
+
markdown_extension_default as default
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=markdown-extension-R4TKDTIF.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/markdown-extension.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { MarkdownCapabilities } from '@dxos/plugin-markdown/types';\nimport { RoutineOperation } from '@dxos/plugin-routine/types';\n\nimport { promptRunExtension } from '../extensions';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n\n return Capability.contributes(MarkdownCapabilities.ExtensionProvider, [\n ({ document: doc, viewMode }) => {\n if (viewMode === 'source') {\n return undefined;\n }\n\n if (!doc) {\n return undefined;\n }\n\n const db = Obj.getDatabase(doc);\n if (!db) {\n return undefined;\n }\n\n const { invokePromise } = capabilities.get(Capabilities.OperationInvoker);\n\n return promptRunExtension({\n onRun: (promptText) => {\n void invokePromise(RoutineOperation.RunPromptInNewChat, { db, instructions: promptText });\n },\n });\n },\n ]);\n }),\n);\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,WAAW;AACpB,SAASC,4BAA4B;AACrC,SAASC,wBAAwB;AAIjC,IAAA,6BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,eAAe,OAAOH,WAAWI;AAEvC,SAAOJ,WAAWK,YAAYC,qBAAqBC,mBAAmB;IACpE,CAAC,EAAEC,UAAUC,KAAKC,SAAQ,MAAE;AAC1B,UAAIA,aAAa,UAAU;AACzB,eAAOC;MACT;AAEA,UAAI,CAACF,KAAK;AACR,eAAOE;MACT;AAEA,YAAMC,KAAKC,IAAIC,YAAYL,GAAAA;AAC3B,UAAI,CAACG,IAAI;AACP,eAAOD;MACT;AAEA,YAAM,EAAEI,cAAa,IAAKZ,aAAaa,IAAIC,aAAaC,gBAAgB;AAExE,aAAOC,mBAAmB;QACxBC,OAAO,CAACC,eAAAA;AACN,eAAKN,cAAcO,iBAAiBC,oBAAoB;YAAEX;YAAIY,cAAcH;UAAW,CAAA;QACzF;MACF,CAAA;IACF;GACD;AACH,CAAA,CAAA;",
|
|
6
|
+
"names": ["Effect", "Capabilities", "Capability", "Obj", "MarkdownCapabilities", "RoutineOperation", "Capability", "makeModule", "fnUntraced", "capabilities", "Service", "contributes", "MarkdownCapabilities", "ExtensionProvider", "document", "doc", "viewMode", "undefined", "db", "Obj", "getDatabase", "invokePromise", "get", "Capabilities", "OperationInvoker", "promptRunExtension", "onRun", "promptText", "RoutineOperation", "RunPromptInNewChat", "instructions"]
|
|
7
|
+
}
|