@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,130 +0,0 @@
|
|
|
1
|
-
// src/AssistantPlugin.ts
|
|
2
|
-
import { ActivationEvent, ActivationEvents, Capability, Plugin } from "@dxos/app-framework";
|
|
3
|
-
import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
|
|
4
|
-
import { AiContext } from "@dxos/assistant";
|
|
5
|
-
import { Agent, Chat, McpServer, Memory, Plan } from "@dxos/assistant-toolkit";
|
|
6
|
-
import { Blueprint, Routine } from "@dxos/compute";
|
|
7
|
-
import { Sequence } from "@dxos/conductor";
|
|
8
|
-
import { Feed } from "@dxos/echo";
|
|
9
|
-
import { ClientEvents } from "@dxos/plugin-client";
|
|
10
|
-
import { DeckEvents } from "@dxos/plugin-deck";
|
|
11
|
-
import { MarkdownEvents } from "@dxos/plugin-markdown";
|
|
12
|
-
import { Text } from "@dxos/schema";
|
|
13
|
-
import { HasSubject, Message } from "@dxos/types";
|
|
14
|
-
import { AgentHydrator, AgentRuntime, AiContext as AiContextCapability, AiService, IntegrationProvider, AppGraphBuilder, AutomationTemplates, AssistantState, BlueprintDefinition, CompanionChatProvisioner, CreateObject, EdgeModelResolver, LocalModelResolver, MarkdownExtension, Migrations, OperationHandler, ReactSurface, Settings, Toolkit } from "#capabilities";
|
|
15
|
-
import { meta } from "#meta";
|
|
16
|
-
import { translations } from "#translations";
|
|
17
|
-
import { AssistantEvents } from "#types";
|
|
18
|
-
|
|
19
|
-
// raw-loader:/__w/dxos/dxos/packages/plugins/plugin-assistant/PLUGIN.mdl
|
|
20
|
-
var PLUGIN_default = '---\nid: org.dxos.plugin.assistant\nname: AssistantPlugin\nversion: 0.1.0\n---\n\nAn AI assistant plugin for DXOS Composer that provides conversational AI, blueprint-driven automation,\nmulti-provider LLM support, and deep ECHO integration.\n\n## Extensions\n\nThe following extension dialects are used in this document.\nEach extension is defined in the Appendix or resolved via its URI.\n\n| Term | URI |\n|-------------|-------------------------------|\n| `type` | `org.dxos.mdl.type@1.0` |\n| `feat` | `org.dxos.mdl.feat@1.0` |\n| `test` | `org.dxos.mdl.test@1.0` |\n| `component` | `org.dxos.mdl.component@1.0` |\n| `op` | `org.dxos.mdl.op@1.0` |\n\n## Types\n\n```mdl\ntype ModelProvider\n literals: edge | ollama | lmstudio\n```\n\n```mdl\ntype ChatView\n literals: normal | summary | thinking | debug\n```\n\n```mdl\ntype ModelDefaults\n fields:\n edge?: string\n ollama?: string\n lmstudio?: string\n```\n\n```mdl\ntype Settings\n fields:\n customPrompts?: boolean\n chatView?: ChatView\n modelProvider?: ModelProvider\n modelDefaults?: ModelDefaults\n tracePanelDebug?: boolean\n```\n\n```mdl\ntype Chat\n fields:\n id: string\n name?: string\n messages: Message[]\n```\n\n```mdl\ntype Message\n fields:\n id: string\n role: user | assistant | system\n content: string\n timestamp: string\n```\n\n```mdl\ntype NavigationTarget\n fields:\n path: string\n label: string\n type: string\n```\n\n```mdl\ntype BlueprintForm\n fields:\n key: string\n name: string\n description?: string\n```\n\n## Components\n\n```mdl\ncomponent ChatPanel\n desc: Main conversational interface for interacting with the AI assistant.\n props:\n chat: Chat\n companionTo?: Obj\n state:\n messages: Message[]\n pending: boolean\n view: ChatView\n slots:\n toolbar?: ReactNode\n empty?: ReactNode\n actions:\n sendMessage(content: string)\n clearHistory()\n switchView(view: ChatView)\n emits:\n onMessage(message: Message)\n layout: |\n \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 [toolbar slot] \u2502\n \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 \u2502\n \u2502 message list \u2502\n \u2502 [empty slot] \u2502\n \u2502 \u2502\n \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 input + send \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n```mdl\ncomponent TracePanel\n desc: Displays the execution trace of an AI operation as a commit graph or raw JSON.\n props:\n chat: Chat\n state:\n debug: boolean\n actions:\n toggleDebug()\n layout: |\n \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 trace / span tree \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n```mdl\ncomponent AssistantSettings\n desc: Settings panel for configuring the AI model provider, model defaults, and chat view.\n props:\n settings: Settings\n emits:\n onChange(settings: Settings)\n```\n\n## Operations\n\n```mdl\nop CreateChat\n desc: Creates a new Chat object and optionally adds it to the active space.\n input:\n db: Database\n name?: string\n addToSpace?: boolean\n output: Chat\n effects: [echo:write]\n```\n\n```mdl\nop UpdateChatName\n desc: Automatically derives and updates the name of a chat using the AI service.\n input:\n chat: Chat\n output: void\n effects: [echo:write, ai:infer]\n```\n\n```mdl\nop SetCurrentChat\n desc: Associates a primary object with a specific companion chat in session state.\n input:\n companionTo: Obj\n chat?: Chat\n output: void\n```\n\n```mdl\nop RunPromptInNewChat\n desc: Creates a new chat, binds context objects and blueprints, then runs a prompt.\n input:\n db: Database\n objects?: Obj[]\n blueprints?: string[]\n prompt: string | RoutineRef\n background?: boolean\n output: Chat\n effects: [echo:write, ai:infer]\n note: |\n When background is true, the prompt runs via the compute runtime without\n opening the chat UI. The returned Chat can be used to track progress.\n```\n\n```mdl\nop EnsureCompanionChat\n desc: Returns the companion chat for an object, creating one if none exists.\n input:\n db: Database\n companionTo: Obj\n output:\n chat: Chat\n persisted: boolean\n effects: [echo:write]\n```\n\n```mdl\nop ResolveNavigationTargets\n desc: Returns navigation paths for objects in the active space, optionally filtered by DXN.\n input:\n query?:\n dxn?: DXN\n output:\n targets: NavigationTarget[]\n```\n\n```mdl\nop OnCreateSpace\n desc: Provisions initial assistant objects when a new space is created.\n input:\n space: Space\n rootCollection: Collection\n output: void\n effects: [echo:write]\n```\n\n```mdl\nop ToggleTracePanelDebug\n desc: Toggles the trace panel between commit-graph and raw JSON debug view.\n input:\n state?: boolean\n output: boolean\n```\n\n## Features\n\n```mdl\nfeat F-1: AI Chat\n\n req F-1.1: User can create a new Chat object in any space.\n req F-1.2: User can type a message and receive a streamed AI response.\n req F-1.3: Chat history is persisted to ECHO and replicated to all peers.\n req F-1.4:\n when: chat has enough messages\n then: chat name is automatically derived from the conversation\n```\n\n```mdl\nfeat F-2: Companion Chat\n\n req F-2.1:\n when: user opens an object that supports companions\n then: a companion chat panel is shown alongside the object\n req F-2.2:\n when: companion chat does not yet exist\n then: op:EnsureCompanionChat creates one and optionally persists it\n req F-2.3:\n when: user sends a message in the companion chat\n then: the primary object is automatically bound as AI context\n```\n\n```mdl\nfeat F-3: Blueprint System\n\n req F-3.1: Blueprints define named AI configurations (instructions, tools, model).\n req F-3.2: Built-in blueprints include: Assistant, Browser, Database, WebSearch, Discord, Linear, Agent, Planning, Memory, Automation, BlueprintManager, AgentWizard.\n req F-3.3:\n when: user selects a blueprint for a chat\n then: chat uses that blueprint\'s instructions and tool set\n req F-3.4: op:RunPromptInNewChat accepts blueprint keys to bind before sending the prompt.\n```\n\n```mdl\nfeat F-4: Multi-Provider LLM\n\n req F-4.1: Supported providers: DXOS Edge (remote), Ollama (local), LM Studio (local).\n req F-4.2: User can configure the active provider and per-provider default model in Settings.\n req F-4.3:\n when: the active provider is unavailable\n then: AiService falls back to the next registered resolver\n```\n\n```mdl\nfeat F-5: Tool Execution\n\n req F-5.1: The assistant blueprint exposes LayoutOperation.Open and ResolveNavigationTargets as tools.\n req F-5.2: Web search tool is registered via WebSearchToolkit.\n req F-5.3:\n when: AI invokes a tool during a conversation\n then: operation is dispatched via the compute runtime and result returned to the model\n```\n\n```mdl\nfeat F-6: ECHO Integration\n\n req F-6.1: Chat, CompanionTo, Blueprint, Feed, Message, Memory, Plan, Routine, Agent, McpServer, and Sequence schemas are registered with ECHO.\n req F-6.2:\n when: a new space is created\n then: op:OnCreateSpace provisions default assistant objects\n req F-6.3: AiContext.Binding schema supports binding ECHO objects as named context variables in a conversation.\n```\n\n```mdl\nfeat F-7: Execution Trace\n\n req F-7.1: Every AI operation produces a structured span tree captured in the TracePanel.\n req F-7.2: User can toggle between commit-graph and raw JSON views via op:ToggleTracePanelDebug.\n```\n\n## Acceptance\n\n```mdl\ntest T-1: Create chat and send message\n given: a space is open and the assistant plugin is active\n when: user creates a new Chat and sends "Hello"\n then:\n - Chat object appears in the space\n - AI response is appended to Chat.messages\n - Chat is persisted to ECHO\n```\n\n```mdl\ntest T-2: Companion chat provisioning\n given: user opens a document with no companion chat\n when: companion panel initializes\n then:\n - op:EnsureCompanionChat creates a new Chat\n - persisted === false until user sends a message\n```\n\n```mdl\ntest T-3: Blueprint binding\n given: a chat exists\n when: user binds the "WebSearch" blueprint key\n then:\n - blueprint instructions are applied to the next AI request\n - web search tool is available in the tool list\n```\n\n```mdl\ntest T-4: Model provider switch\n given: assistant settings are open\n when: user switches provider from edge to ollama\n then:\n - Settings.modelProvider === ollama\n - next AI request is routed to the Ollama resolver\n```\n\n```mdl\ntest T-5: Run prompt in background\n given: a database and a prompt string are available\n when: op:RunPromptInNewChat is called with background: true\n then:\n - a new Chat is created and returned\n - the prompt runs via compute runtime without opening the UI\n```\n\n```mdl\ntest T-6: Navigation target resolution\n given: active space contains documents and collections\n when: op:ResolveNavigationTargets is called with no query\n then:\n - returned targets include paths for all top-level navigable objects\n - each target has a non-empty label and type\n```\n\n```mdl\ntest T-7: Trace panel debug toggle\n given: trace panel is showing commit-graph view\n when: op:ToggleTracePanelDebug is invoked with no argument\n then:\n - tracePanelDebug setting flips to true\n - trace panel switches to raw JSON view\n```\n\n---\n\n## Appendix: Extension Definitions\n\nExtension block types used in this document are defined below using\nthe core `ext` primitive \u2014 the only construct the base language provides.\n\n```mdl\next type\n uri: org.dxos.mdl.type@1.0\n desc: A named data structure with typed fields and optional literals.\n fields:\n desc?: Prose\n fields?: FieldMap\n literals?: UnionList\n extends?: TypeRef[]\n```\n\n```mdl\next feat\n uri: org.dxos.mdl.feat@1.0\n desc: A named feature grouping one or more requirements.\n fields:\n desc?: Prose\n req: RequirementList\n nesting: self\n```\n\n```mdl\next test\n uri: org.dxos.mdl.test@1.0\n desc: An acceptance scenario expressed as given / when / then steps.\n fields:\n given?: Step | Step[]\n when?: Step | Step[]\n then: Step | Step[]\n tags?: TagList\n```\n\n```mdl\next component\n uri: org.dxos.mdl.component@1.0\n desc: A UI component with props, internal state, slots, actions, and events.\n fields:\n desc?: Prose\n props?: FieldMap\n state?: FieldMap\n slots?: FieldMap\n actions?: ActionMap\n emits?: EventMap\n layout?: CodeBlock\n```\n\n```mdl\next op\n uri: org.dxos.mdl.op@1.0\n desc: |\n A named operation with typed inputs, outputs, and declared errors.\n Pure ops have no effects or requires. Effectful ops declare both.\n fields:\n desc?: Prose\n input?: FieldMap\n output?: TypeExpr\n errors?: ErrorMap\n effects?: EffectList\n requires?: ServiceList\n note?: Prose\n```\n';
|
|
21
|
-
|
|
22
|
-
// src/AssistantPlugin.ts
|
|
23
|
-
var StateReady = AppActivationEvents.createStateEvent(meta.profile.key);
|
|
24
|
-
var AssistantPlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
|
|
25
|
-
activate: AppGraphBuilder
|
|
26
|
-
}), AppPlugin.addBlueprintDefinitionModule({
|
|
27
|
-
activate: BlueprintDefinition
|
|
28
|
-
}), AppPlugin.addCreateObjectModule({
|
|
29
|
-
activate: CreateObject
|
|
30
|
-
}), AppPlugin.addOperationHandlerModule({
|
|
31
|
-
activate: OperationHandler
|
|
32
|
-
}), AppPlugin.addSchemaModule({
|
|
33
|
-
schema: [
|
|
34
|
-
Chat.Chat,
|
|
35
|
-
Chat.CompanionTo,
|
|
36
|
-
Blueprint.Blueprint,
|
|
37
|
-
AiContext.Binding,
|
|
38
|
-
Feed.Feed,
|
|
39
|
-
HasSubject.HasSubject,
|
|
40
|
-
Message.Message,
|
|
41
|
-
Routine.Routine,
|
|
42
|
-
Agent.Agent,
|
|
43
|
-
McpServer.McpServer,
|
|
44
|
-
Plan.Plan,
|
|
45
|
-
Sequence.Sequence,
|
|
46
|
-
Memory.Memory,
|
|
47
|
-
Text.Text
|
|
48
|
-
]
|
|
49
|
-
}), AppPlugin.addSettingsModule({
|
|
50
|
-
activate: Settings
|
|
51
|
-
}), AppPlugin.addSurfaceModule({
|
|
52
|
-
activate: ReactSurface,
|
|
53
|
-
firesBeforeActivation: [
|
|
54
|
-
AppActivationEvents.SetupArtifactDefinition
|
|
55
|
-
]
|
|
56
|
-
}), AppPlugin.addTranslationsModule({
|
|
57
|
-
translations
|
|
58
|
-
}), Plugin.addModule({
|
|
59
|
-
id: "automation-templates",
|
|
60
|
-
activatesOn: AppActivationEvents.SetupSchema,
|
|
61
|
-
activate: AutomationTemplates
|
|
62
|
-
}), Plugin.addModule({
|
|
63
|
-
id: "markdown",
|
|
64
|
-
activatesOn: MarkdownEvents.SetupExtensions,
|
|
65
|
-
activate: MarkdownExtension
|
|
66
|
-
}), Plugin.addModule({
|
|
67
|
-
// TODO(wittjosiah): Does not integrate with settings store.
|
|
68
|
-
// Should this be a different event?
|
|
69
|
-
// Should settings store be renamed to be more generic?
|
|
70
|
-
activatesOn: AppActivationEvents.SetupSettings,
|
|
71
|
-
firesAfterActivation: [
|
|
72
|
-
StateReady
|
|
73
|
-
],
|
|
74
|
-
activate: AssistantState
|
|
75
|
-
}), Plugin.addModule({
|
|
76
|
-
activatesOn: AssistantEvents.SetupAiServiceProviders,
|
|
77
|
-
activate: EdgeModelResolver
|
|
78
|
-
}), Plugin.addModule({
|
|
79
|
-
activatesOn: AssistantEvents.SetupAiServiceProviders,
|
|
80
|
-
activate: LocalModelResolver
|
|
81
|
-
}), Plugin.addModule((options) => ({
|
|
82
|
-
id: Capability.getModuleTag(AiService),
|
|
83
|
-
firesBeforeActivation: [
|
|
84
|
-
AssistantEvents.SetupAiServiceProviders
|
|
85
|
-
],
|
|
86
|
-
// TODO(dmaretskyi): This should activate lazily when the AI chat is used.
|
|
87
|
-
activatesOn: ActivationEvents.SetupProcessManager,
|
|
88
|
-
activate: () => AiService(options)
|
|
89
|
-
})), Plugin.addModule({
|
|
90
|
-
// Process-affinity `AiContext.Service` LayerSpec — needed so operations
|
|
91
|
-
// dispatched as their own processes (e.g. via `Operation.invoke` from
|
|
92
|
-
// `AiSession.createRequest` or `TriggerDispatcher`) can resolve
|
|
93
|
-
// conversation-scoped services without an inline `Effect.provideService`
|
|
94
|
-
// upstream. See `capabilities/ai-context.ts` for the rationale.
|
|
95
|
-
activatesOn: ActivationEvents.SetupProcessManager,
|
|
96
|
-
activate: AiContextCapability
|
|
97
|
-
}), Plugin.addModule({
|
|
98
|
-
activatesOn: ActivationEvents.SetupProcessManager,
|
|
99
|
-
activate: AgentRuntime
|
|
100
|
-
})).pipe(Plugin.addModule({
|
|
101
|
-
// TODO(wittjosiah): Use a different event.
|
|
102
|
-
activatesOn: ActivationEvents.Startup,
|
|
103
|
-
activate: Toolkit
|
|
104
|
-
}), Plugin.addModule({
|
|
105
|
-
activatesOn: ActivationEvents.ProcessManagerReady,
|
|
106
|
-
activate: AgentHydrator
|
|
107
|
-
}), Plugin.addModule({
|
|
108
|
-
activatesOn: ActivationEvent.allOf(ActivationEvents.ProcessManagerReady, AppActivationEvents.AppGraphReady, DeckEvents.StateReady, StateReady),
|
|
109
|
-
activate: CompanionChatProvisioner
|
|
110
|
-
}), Plugin.addModule({
|
|
111
|
-
activatesOn: ClientEvents.SetupMigration,
|
|
112
|
-
activate: Migrations
|
|
113
|
-
}), Plugin.addModule({
|
|
114
|
-
activatesOn: AppActivationEvents.SetupIntegrationProviders,
|
|
115
|
-
activate: IntegrationProvider
|
|
116
|
-
}), AppPlugin.addPluginAssetModule({
|
|
117
|
-
asset: {
|
|
118
|
-
pluginId: meta.profile.key,
|
|
119
|
-
path: "PLUGIN.mdl",
|
|
120
|
-
content: PLUGIN_default,
|
|
121
|
-
mimeType: "application/x-mdl"
|
|
122
|
-
}
|
|
123
|
-
}), Plugin.make);
|
|
124
|
-
var AssistantPlugin_default = AssistantPlugin;
|
|
125
|
-
|
|
126
|
-
export {
|
|
127
|
-
AssistantPlugin,
|
|
128
|
-
AssistantPlugin_default
|
|
129
|
-
};
|
|
130
|
-
//# sourceMappingURL=chunk-IQZJ5TTM.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/AssistantPlugin.ts", "raw-loader:/__w/dxos/dxos/packages/plugins/plugin-assistant/PLUGIN.mdl"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { ActivationEvent, ActivationEvents, Capability, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { AiContext } from '@dxos/assistant';\nimport { Agent, Chat, McpServer, Memory, Plan } from '@dxos/assistant-toolkit';\nimport { Blueprint, Routine } from '@dxos/compute';\nimport { Sequence } from '@dxos/conductor';\nimport { Feed } from '@dxos/echo';\nimport { ClientEvents } from '@dxos/plugin-client';\nimport { DeckEvents } from '@dxos/plugin-deck';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { Text } from '@dxos/schema';\nimport { HasSubject, Message } from '@dxos/types';\n\nimport {\n AgentHydrator,\n AgentRuntime,\n AiContext as AiContextCapability,\n AiService,\n IntegrationProvider,\n AppGraphBuilder,\n AutomationTemplates,\n AssistantState,\n BlueprintDefinition,\n CompanionChatProvisioner,\n CreateObject,\n EdgeModelResolver,\n LocalModelResolver,\n MarkdownExtension,\n Migrations,\n OperationHandler,\n ReactSurface,\n Settings,\n Toolkit,\n} from '#capabilities';\nimport { meta } from '#meta';\nimport { translations } from '#translations';\nimport { AssistantEvents, type AssistantPluginOptions } from '#types';\n\n// eslint-disable-next-line import/no-relative-packages\nimport pluginSpec from '../PLUGIN.mdl?raw';\n\nconst StateReady = AppActivationEvents.createStateEvent(meta.profile.key);\n\nexport const AssistantPlugin = Plugin.define<AssistantPluginOptions | void>(meta)\n .pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({\n schema: [\n Chat.Chat,\n Chat.CompanionTo,\n Blueprint.Blueprint,\n AiContext.Binding,\n Feed.Feed,\n HasSubject.HasSubject,\n Message.Message,\n Routine.Routine,\n Agent.Agent,\n McpServer.McpServer,\n Plan.Plan,\n Sequence.Sequence,\n Memory.Memory,\n Text.Text,\n ],\n }),\n AppPlugin.addSettingsModule({ activate: Settings }),\n AppPlugin.addSurfaceModule({\n activate: ReactSurface,\n firesBeforeActivation: [AppActivationEvents.SetupArtifactDefinition],\n }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.addModule({\n id: 'automation-templates',\n activatesOn: AppActivationEvents.SetupSchema,\n activate: AutomationTemplates,\n }),\n Plugin.addModule({\n id: 'markdown',\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: MarkdownExtension,\n }),\n Plugin.addModule({\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: AppActivationEvents.SetupSettings,\n firesAfterActivation: [StateReady],\n activate: AssistantState,\n }),\n Plugin.addModule({\n activatesOn: AssistantEvents.SetupAiServiceProviders,\n activate: EdgeModelResolver,\n }),\n Plugin.addModule({\n activatesOn: AssistantEvents.SetupAiServiceProviders,\n activate: LocalModelResolver,\n }),\n Plugin.addModule((options) => ({\n id: Capability.getModuleTag(AiService),\n firesBeforeActivation: [AssistantEvents.SetupAiServiceProviders],\n // TODO(dmaretskyi): This should activate lazily when the AI chat is used.\n activatesOn: ActivationEvents.SetupProcessManager,\n activate: () => AiService(options),\n })),\n Plugin.addModule({\n // Process-affinity `AiContext.Service` LayerSpec — needed so operations\n // dispatched as their own processes (e.g. via `Operation.invoke` from\n // `AiSession.createRequest` or `TriggerDispatcher`) can resolve\n // conversation-scoped services without an inline `Effect.provideService`\n // upstream. See `capabilities/ai-context.ts` for the rationale.\n activatesOn: ActivationEvents.SetupProcessManager,\n activate: AiContextCapability,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvents.SetupProcessManager,\n activate: AgentRuntime,\n }),\n )\n .pipe(\n Plugin.addModule({\n // TODO(wittjosiah): Use a different event.\n activatesOn: ActivationEvents.Startup,\n activate: Toolkit,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvents.ProcessManagerReady,\n activate: AgentHydrator,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvent.allOf(\n ActivationEvents.ProcessManagerReady,\n AppActivationEvents.AppGraphReady,\n DeckEvents.StateReady,\n StateReady,\n ),\n activate: CompanionChatProvisioner,\n }),\n Plugin.addModule({\n activatesOn: ClientEvents.SetupMigration,\n activate: Migrations,\n }),\n Plugin.addModule({\n activatesOn: AppActivationEvents.SetupIntegrationProviders,\n activate: IntegrationProvider,\n }),\n AppPlugin.addPluginAssetModule({\n asset: { pluginId: meta.profile.key, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },\n }),\n Plugin.make,\n );\n\nexport default AssistantPlugin;\n", "---\nid: org.dxos.plugin.assistant\nname: AssistantPlugin\nversion: 0.1.0\n---\n\nAn AI assistant plugin for DXOS Composer that provides conversational AI, blueprint-driven automation,\nmulti-provider LLM support, and deep ECHO integration.\n\n## Extensions\n\nThe following extension dialects are used in this document.\nEach extension is defined in the Appendix or resolved via its URI.\n\n| Term | URI |\n|-------------|-------------------------------|\n| `type` | `org.dxos.mdl.type@1.0` |\n| `feat` | `org.dxos.mdl.feat@1.0` |\n| `test` | `org.dxos.mdl.test@1.0` |\n| `component` | `org.dxos.mdl.component@1.0` |\n| `op` | `org.dxos.mdl.op@1.0` |\n\n## Types\n\n```mdl\ntype ModelProvider\n literals: edge | ollama | lmstudio\n```\n\n```mdl\ntype ChatView\n literals: normal | summary | thinking | debug\n```\n\n```mdl\ntype ModelDefaults\n fields:\n edge?: string\n ollama?: string\n lmstudio?: string\n```\n\n```mdl\ntype Settings\n fields:\n customPrompts?: boolean\n chatView?: ChatView\n modelProvider?: ModelProvider\n modelDefaults?: ModelDefaults\n tracePanelDebug?: boolean\n```\n\n```mdl\ntype Chat\n fields:\n id: string\n name?: string\n messages: Message[]\n```\n\n```mdl\ntype Message\n fields:\n id: string\n role: user | assistant | system\n content: string\n timestamp: string\n```\n\n```mdl\ntype NavigationTarget\n fields:\n path: string\n label: string\n type: string\n```\n\n```mdl\ntype BlueprintForm\n fields:\n key: string\n name: string\n description?: string\n```\n\n## Components\n\n```mdl\ncomponent ChatPanel\n desc: Main conversational interface for interacting with the AI assistant.\n props:\n chat: Chat\n companionTo?: Obj\n state:\n messages: Message[]\n pending: boolean\n view: ChatView\n slots:\n toolbar?: ReactNode\n empty?: ReactNode\n actions:\n sendMessage(content: string)\n clearHistory()\n switchView(view: ChatView)\n emits:\n onMessage(message: Message)\n layout: |\n \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 [toolbar slot] \u2502\n \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 \u2502\n \u2502 message list \u2502\n \u2502 [empty slot] \u2502\n \u2502 \u2502\n \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 input + send \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n```mdl\ncomponent TracePanel\n desc: Displays the execution trace of an AI operation as a commit graph or raw JSON.\n props:\n chat: Chat\n state:\n debug: boolean\n actions:\n toggleDebug()\n layout: |\n \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 trace / span tree \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n```mdl\ncomponent AssistantSettings\n desc: Settings panel for configuring the AI model provider, model defaults, and chat view.\n props:\n settings: Settings\n emits:\n onChange(settings: Settings)\n```\n\n## Operations\n\n```mdl\nop CreateChat\n desc: Creates a new Chat object and optionally adds it to the active space.\n input:\n db: Database\n name?: string\n addToSpace?: boolean\n output: Chat\n effects: [echo:write]\n```\n\n```mdl\nop UpdateChatName\n desc: Automatically derives and updates the name of a chat using the AI service.\n input:\n chat: Chat\n output: void\n effects: [echo:write, ai:infer]\n```\n\n```mdl\nop SetCurrentChat\n desc: Associates a primary object with a specific companion chat in session state.\n input:\n companionTo: Obj\n chat?: Chat\n output: void\n```\n\n```mdl\nop RunPromptInNewChat\n desc: Creates a new chat, binds context objects and blueprints, then runs a prompt.\n input:\n db: Database\n objects?: Obj[]\n blueprints?: string[]\n prompt: string | RoutineRef\n background?: boolean\n output: Chat\n effects: [echo:write, ai:infer]\n note: |\n When background is true, the prompt runs via the compute runtime without\n opening the chat UI. The returned Chat can be used to track progress.\n```\n\n```mdl\nop EnsureCompanionChat\n desc: Returns the companion chat for an object, creating one if none exists.\n input:\n db: Database\n companionTo: Obj\n output:\n chat: Chat\n persisted: boolean\n effects: [echo:write]\n```\n\n```mdl\nop ResolveNavigationTargets\n desc: Returns navigation paths for objects in the active space, optionally filtered by DXN.\n input:\n query?:\n dxn?: DXN\n output:\n targets: NavigationTarget[]\n```\n\n```mdl\nop OnCreateSpace\n desc: Provisions initial assistant objects when a new space is created.\n input:\n space: Space\n rootCollection: Collection\n output: void\n effects: [echo:write]\n```\n\n```mdl\nop ToggleTracePanelDebug\n desc: Toggles the trace panel between commit-graph and raw JSON debug view.\n input:\n state?: boolean\n output: boolean\n```\n\n## Features\n\n```mdl\nfeat F-1: AI Chat\n\n req F-1.1: User can create a new Chat object in any space.\n req F-1.2: User can type a message and receive a streamed AI response.\n req F-1.3: Chat history is persisted to ECHO and replicated to all peers.\n req F-1.4:\n when: chat has enough messages\n then: chat name is automatically derived from the conversation\n```\n\n```mdl\nfeat F-2: Companion Chat\n\n req F-2.1:\n when: user opens an object that supports companions\n then: a companion chat panel is shown alongside the object\n req F-2.2:\n when: companion chat does not yet exist\n then: op:EnsureCompanionChat creates one and optionally persists it\n req F-2.3:\n when: user sends a message in the companion chat\n then: the primary object is automatically bound as AI context\n```\n\n```mdl\nfeat F-3: Blueprint System\n\n req F-3.1: Blueprints define named AI configurations (instructions, tools, model).\n req F-3.2: Built-in blueprints include: Assistant, Browser, Database, WebSearch, Discord, Linear, Agent, Planning, Memory, Automation, BlueprintManager, AgentWizard.\n req F-3.3:\n when: user selects a blueprint for a chat\n then: chat uses that blueprint's instructions and tool set\n req F-3.4: op:RunPromptInNewChat accepts blueprint keys to bind before sending the prompt.\n```\n\n```mdl\nfeat F-4: Multi-Provider LLM\n\n req F-4.1: Supported providers: DXOS Edge (remote), Ollama (local), LM Studio (local).\n req F-4.2: User can configure the active provider and per-provider default model in Settings.\n req F-4.3:\n when: the active provider is unavailable\n then: AiService falls back to the next registered resolver\n```\n\n```mdl\nfeat F-5: Tool Execution\n\n req F-5.1: The assistant blueprint exposes LayoutOperation.Open and ResolveNavigationTargets as tools.\n req F-5.2: Web search tool is registered via WebSearchToolkit.\n req F-5.3:\n when: AI invokes a tool during a conversation\n then: operation is dispatched via the compute runtime and result returned to the model\n```\n\n```mdl\nfeat F-6: ECHO Integration\n\n req F-6.1: Chat, CompanionTo, Blueprint, Feed, Message, Memory, Plan, Routine, Agent, McpServer, and Sequence schemas are registered with ECHO.\n req F-6.2:\n when: a new space is created\n then: op:OnCreateSpace provisions default assistant objects\n req F-6.3: AiContext.Binding schema supports binding ECHO objects as named context variables in a conversation.\n```\n\n```mdl\nfeat F-7: Execution Trace\n\n req F-7.1: Every AI operation produces a structured span tree captured in the TracePanel.\n req F-7.2: User can toggle between commit-graph and raw JSON views via op:ToggleTracePanelDebug.\n```\n\n## Acceptance\n\n```mdl\ntest T-1: Create chat and send message\n given: a space is open and the assistant plugin is active\n when: user creates a new Chat and sends \"Hello\"\n then:\n - Chat object appears in the space\n - AI response is appended to Chat.messages\n - Chat is persisted to ECHO\n```\n\n```mdl\ntest T-2: Companion chat provisioning\n given: user opens a document with no companion chat\n when: companion panel initializes\n then:\n - op:EnsureCompanionChat creates a new Chat\n - persisted === false until user sends a message\n```\n\n```mdl\ntest T-3: Blueprint binding\n given: a chat exists\n when: user binds the \"WebSearch\" blueprint key\n then:\n - blueprint instructions are applied to the next AI request\n - web search tool is available in the tool list\n```\n\n```mdl\ntest T-4: Model provider switch\n given: assistant settings are open\n when: user switches provider from edge to ollama\n then:\n - Settings.modelProvider === ollama\n - next AI request is routed to the Ollama resolver\n```\n\n```mdl\ntest T-5: Run prompt in background\n given: a database and a prompt string are available\n when: op:RunPromptInNewChat is called with background: true\n then:\n - a new Chat is created and returned\n - the prompt runs via compute runtime without opening the UI\n```\n\n```mdl\ntest T-6: Navigation target resolution\n given: active space contains documents and collections\n when: op:ResolveNavigationTargets is called with no query\n then:\n - returned targets include paths for all top-level navigable objects\n - each target has a non-empty label and type\n```\n\n```mdl\ntest T-7: Trace panel debug toggle\n given: trace panel is showing commit-graph view\n when: op:ToggleTracePanelDebug is invoked with no argument\n then:\n - tracePanelDebug setting flips to true\n - trace panel switches to raw JSON view\n```\n\n---\n\n## Appendix: Extension Definitions\n\nExtension block types used in this document are defined below using\nthe core `ext` primitive \u2014 the only construct the base language provides.\n\n```mdl\next type\n uri: org.dxos.mdl.type@1.0\n desc: A named data structure with typed fields and optional literals.\n fields:\n desc?: Prose\n fields?: FieldMap\n literals?: UnionList\n extends?: TypeRef[]\n```\n\n```mdl\next feat\n uri: org.dxos.mdl.feat@1.0\n desc: A named feature grouping one or more requirements.\n fields:\n desc?: Prose\n req: RequirementList\n nesting: self\n```\n\n```mdl\next test\n uri: org.dxos.mdl.test@1.0\n desc: An acceptance scenario expressed as given / when / then steps.\n fields:\n given?: Step | Step[]\n when?: Step | Step[]\n then: Step | Step[]\n tags?: TagList\n```\n\n```mdl\next component\n uri: org.dxos.mdl.component@1.0\n desc: A UI component with props, internal state, slots, actions, and events.\n fields:\n desc?: Prose\n props?: FieldMap\n state?: FieldMap\n slots?: FieldMap\n actions?: ActionMap\n emits?: EventMap\n layout?: CodeBlock\n```\n\n```mdl\next op\n uri: org.dxos.mdl.op@1.0\n desc: |\n A named operation with typed inputs, outputs, and declared errors.\n Pure ops have no effects or requires. Effectful ops declare both.\n fields:\n desc?: Prose\n input?: FieldMap\n output?: TypeExpr\n errors?: ErrorMap\n effects?: EffectList\n requires?: ServiceList\n note?: Prose\n```\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["ActivationEvent", "ActivationEvents", "Capability", "Plugin", "AppActivationEvents", "AppPlugin", "AiContext", "Agent", "Chat", "McpServer", "Memory", "Plan", "Blueprint", "Routine", "Sequence", "Feed", "ClientEvents", "DeckEvents", "MarkdownEvents", "Text", "HasSubject", "Message", "AgentHydrator", "AgentRuntime", "AiContextCapability", "AiService", "IntegrationProvider", "AppGraphBuilder", "AutomationTemplates", "AssistantState", "BlueprintDefinition", "CompanionChatProvisioner", "CreateObject", "EdgeModelResolver", "LocalModelResolver", "MarkdownExtension", "Migrations", "OperationHandler", "ReactSurface", "Settings", "Toolkit", "meta", "translations", "AssistantEvents", "StateReady", "AppActivationEvents", "createStateEvent", "meta", "profile", "key", "AssistantPlugin", "Plugin", "define", "pipe", "AppPlugin", "addAppGraphModule", "activate", "AppGraphBuilder", "addBlueprintDefinitionModule", "BlueprintDefinition", "addCreateObjectModule", "CreateObject", "addOperationHandlerModule", "OperationHandler", "addSchemaModule", "schema", "Chat", "CompanionTo", "Blueprint", "AiContext", "Binding", "Feed", "HasSubject", "Message", "Routine", "Agent", "McpServer", "Plan", "Sequence", "Memory", "Text", "addSettingsModule", "Settings", "addSurfaceModule", "ReactSurface", "firesBeforeActivation", "SetupArtifactDefinition", "addTranslationsModule", "translations", "addModule", "id", "activatesOn", "SetupSchema", "AutomationTemplates", "MarkdownEvents", "SetupExtensions", "MarkdownExtension", "SetupSettings", "firesAfterActivation", "AssistantState", "AssistantEvents", "SetupAiServiceProviders", "EdgeModelResolver", "LocalModelResolver", "options", "Capability", "getModuleTag", "AiService", "ActivationEvents", "SetupProcessManager", "AiContextCapability", "AgentRuntime", "Startup", "Toolkit", "ProcessManagerReady", "AgentHydrator", "ActivationEvent", "allOf", "AppGraphReady", "DeckEvents", "CompanionChatProvisioner", "ClientEvents", "SetupMigration", "Migrations", "SetupIntegrationProviders", "IntegrationProvider", "addPluginAssetModule", "asset", "pluginId", "path", "content", "pluginSpec", "mimeType", "make"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/constants.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\n/** Stable id used by `plugin-integration` to look up the Anthropic provider entry. */\nexport const ANTHROPIC_PROVIDER_ID = 'anthropic';\n\n/** Source string used in `AccessToken.source` and matched by `Header.byokLayer('anthropic.com')`. */\nexport const ANTHROPIC_SOURCE = 'anthropic.com';\n"],
|
|
5
|
-
"mappings": ";AAKO,IAAMA,wBAAwB;AAG9B,IAAMC,mBAAmB;",
|
|
6
|
-
"names": ["ANTHROPIC_PROVIDER_ID", "ANTHROPIC_SOURCE"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/companion-chat-provisioner.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Graph, type Node } from '@dxos/app-graph';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { DeckCapabilities, PLANK_COMPANION_TYPE, type StoredDeckState } from '@dxos/plugin-deck';\nimport { getLinkedVariant } from '@dxos/react-ui-attention';\nimport { byPosition } from '@dxos/util';\n\nimport { ASSISTANT_COMPANION_VARIANT } from '#meta';\nimport { AssistantCapabilities, AssistantOperation } from '#types';\n\n/**\n * Non-React capability that watches deck companion state and provisions transient chats\n * for active planks when the assistant companion is selected.\n */\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const operationInvoker = yield* Capability.get(Capabilities.OperationInvoker);\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n const registry: Registry.Registry = yield* Capability.get(Capabilities.AtomRegistry);\n const deckStateAtom = yield* Capability.get(DeckCapabilities.State);\n const cacheAtom = yield* Capability.get(AssistantCapabilities.CompanionChatCache);\n const stateAtom = yield* Capability.get(AssistantCapabilities.State);\n\n const plankSubs = new Map<string, () => void>();\n\n /** Unsubscribe a single plank and remove it from the map. */\n const unsubPlank = (plankId: string) => {\n plankSubs.get(plankId)?.();\n plankSubs.delete(plankId);\n };\n\n /** Unsubscribe all per-plank subscriptions. */\n const unsubAllPlanks = () => {\n for (const unsub of plankSubs.values()) {\n unsub();\n }\n plankSubs.clear();\n };\n\n /**\n * Attempt to provision for a single plank.\n * Returns true when the plank is resolved (provisioned or already cached)\n * so the caller can tear down the connection subscription.\n */\n const provisionForPlank = (plankId: string, companionVariant: string | undefined): boolean => {\n const node: Node.Node | null = Graph.getNode(graph, plankId).pipe(Option.getOrNull);\n if (!node || !Obj.isObject(node.data) || Obj.instanceOf(Chat.Chat, node.data)) {\n return false;\n }\n\n if (resolveEffectiveVariant(graph, plankId, companionVariant) !== ASSISTANT_COMPANION_VARIANT) {\n return false;\n }\n\n const object = node.data;\n const companionUri = Obj.getURI(object);\n const cache = registry.get(cacheAtom);\n if (cache[companionUri]) {\n return true;\n }\n\n const db = Obj.getDatabase(object);\n if (!db) {\n log.warn('No db for object', { plankId, companionUri });\n return false;\n }\n\n void operationInvoker\n .invokePromise(AssistantOperation.EnsureCompanionChat, { db, companionTo: object })\n .catch((error) => log.warn('Failed to provision companion chat', { plankId, error }));\n\n return false;\n };\n\n const provision = () => {\n const deckState: StoredDeckState = registry.get(deckStateAtom);\n const deck = deckState.decks[deckState.activeDeck];\n if (!deck?.companionOpen) {\n unsubAllPlanks();\n return;\n }\n\n const plankIds = new Set(deck.solo ? [deck.solo] : deck.active);\n\n // Remove subscriptions for planks that are no longer active.\n for (const trackedId of plankSubs.keys()) {\n if (!plankIds.has(trackedId)) {\n unsubPlank(trackedId);\n }\n }\n\n for (const plankId of plankIds) {\n const resolved = provisionForPlank(plankId, deck.companionVariant);\n\n if (resolved) {\n // Already provisioned — no need to watch connections.\n unsubPlank(plankId);\n } else if (!plankSubs.has(plankId)) {\n // Not yet resolved — subscribe to child connections so we re-try\n // when graph builder extensions add companion nodes (after expand).\n plankSubs.set(\n plankId,\n registry.subscribe(graph.connections(plankId, 'child'), () => {\n if (provisionForPlank(plankId, deck.companionVariant)) {\n unsubPlank(plankId);\n }\n }),\n );\n }\n }\n };\n\n provision();\n\n const unsub1 = registry.subscribe(deckStateAtom, provision);\n const unsub2 = registry.subscribe(stateAtom, provision);\n\n return Capability.contributes(Capabilities.Null, null, () =>\n Effect.sync(() => {\n unsub1();\n unsub2();\n unsubAllPlanks();\n }),\n );\n }),\n);\n\n/**\n * Mirrors useSelectedCompanion fallback logic outside of React.\n * Returns the variant that would actually be rendered for a given plank.\n */\nconst resolveEffectiveVariant = (\n graph: Graph.BaseGraph,\n plankId: string,\n preferredVariant: string | undefined,\n): string | undefined => {\n const companions = Graph.getConnections(graph, plankId, 'child')\n .filter((node) => node.type === PLANK_COMPANION_TYPE)\n .toSorted((a, b) => byPosition(a.properties, b.properties));\n\n if (companions.length === 0) {\n return undefined;\n }\n\n if (preferredVariant) {\n const preferred = companions.find((companion) => getLinkedVariant(companion.id) === preferredVariant);\n if (preferred) {\n return getLinkedVariant(preferred.id);\n }\n }\n\n return getLinkedVariant(companions[0].id);\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Effect", "Option", "Capabilities", "Capability", "Graph", "AppCapabilities", "Chat", "Obj", "log", "DeckCapabilities", "PLANK_COMPANION_TYPE", "getLinkedVariant", "byPosition", "ASSISTANT_COMPANION_VARIANT", "AssistantCapabilities", "AssistantOperation", "registry", "AtomRegistry", "deckStateAtom", "get", "State", "cacheAtom", "CompanionChatCache", "stateAtom", "plankSubs", "Map", "plankId", "unsub", "clear", "node", "resolveEffectiveVariant", "object", "cache", "companionUri", "warn", "operationInvoker", "companionTo", "catch", "error", "provision", "deckState", "deck", "companionOpen", "unsubAllPlanks", "trackedId", "unsubPlank", "resolved", "unsub2", "contributes", "unsub1", "companions", "undefined", "preferredVariant", "preferred"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/create-chat.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 { AiContext } from '@dxos/assistant';\nimport { Chat, DatabaseBlueprint, AgentWizardBlueprint } from '@dxos/assistant-toolkit';\nimport { Blueprint, Operation } from '@dxos/compute';\nimport { Feed, Obj, Ref } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-client';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { AssistantBlueprint } from '#blueprints';\nimport { AssistantOperation } from '#types';\n\nconst handler: Operation.WithHandler<typeof AssistantOperation.CreateChat> = AssistantOperation.CreateChat.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ db, name, addToSpace = true }) {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = client.spaces.get(db.spaceId);\n invariant(space, 'Space not found');\n const feed = space.db.add(Feed.make());\n const chat = Chat.make({ name, feed: Ref.make(feed) });\n Obj.setParent(feed, chat);\n if (addToSpace) {\n space.db.add(chat);\n }\n\n // Dynamic import to avoid circular dependency with the barrel that also exports BlueprintManagerHandlers.\n const { BlueprintManagerBlueprint } = yield* Effect.promise(() => import('@dxos/assistant-toolkit'));\n\n const feedServiceLayer = createFeedServiceLayer(space.db);\n const runtime = yield* Effect.runtime<Feed.FeedService>().pipe(Effect.provide(feedServiceLayer));\n const binder = new AiContext.Binder({ feed, runtime, registry });\n\n // Bind default blueprints via registry refs — no DB clone needed since the ECHO ref\n // resolver already spans the hypergraph registry.\n yield* Effect.promise(() =>\n binder.use((b: AiContext.Binder) =>\n b.bind({\n blueprints: [AssistantBlueprint, DatabaseBlueprint, AgentWizardBlueprint, BlueprintManagerBlueprint].map(\n ({ key }) => Ref.fromURI(Blueprint.registryURI(key)),\n ),\n }),\n ),\n );\n\n return { object: chat };\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,iBAAiB;AAC1B,SAASC,MAAMC,mBAAmBC,4BAA4B;AAC9D,SAASC,WAAWC,iBAAiB;AACrC,SAASC,MAAMC,KAAKC,WAAW;AAC/B,SAASC,8BAA8B;AACvC,SAASC,iBAAiB;AAC1B,SAASC,0BAA0B;AAEnC,SAASC,0BAA0B;AACnC,SAASC,0BAA0B;AAEnC,IAAA,eAA6EA;IAIvE,UAAMC,mBAAgBf,WAAeY,KAAAA,UAAmBI,YAAM,kBAAA,WAAA,EAAA,IAAA,MAAA,aAAA,KAAA,GAAA;AAC9D,QAAMC,WAAQF,OAAOG,WAAcC,IAAAA,aAAO,YAAA;AAC1CR,QAAAA,SAAUM,OAAO,WAAA,IAAA,mBAAA,MAAA;AACjB,QAAMG,QAAOH,OAAQ,OAAKV,IAAKc,GAAI,OAAA;AACnC,YAAMC,OAAOpB,mBAAU,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,SAAA,mBAAA,EAAA,CAAA;QAAEqB,OAAAA,MAAAA,GAAAA,IAAAA,KAAAA,KAAAA,CAAAA;QAAMH,OAAMX,KAAQ,KAACW;IAAM;IAChDI,MAAAA,IAAUJ,KAAAA,IAAME;EACpB,CAAA;MACEL,UAASQ,MAAIH,IAAAA;AACf,MAAA,YAAA;AAEA,UAAA,GAAA,IAAA,IAAA;EACA;AAGA,QAAMI,EAAAA,0BAAwBA,IAAO,OAAiCC,eAAQC,MAAAA,OAAAA,yBAAAA,CAAAA;AAC9E,QAAMC,mBAAa5B,uBAAiB,MAAA,EAAA;QAAEmB,WAAAA,OAAAA,eAAAA,EAAAA,KAAAA,eAAAA,gBAAAA,CAAAA;QAAMM,SAAAA,IAAAA,UAAAA,OAAAA;IAASI;IAAS,SAAAJ;IAE9D;EACA,CAAA;wBAImBb,MAAAA,OAAAA,IAAAA,CAAAA,MAAAA,EAAAA,KAAAA;gBAAoBV;MAAmBC;MAAsB2B;MAA2BC;MAGvG;IAIG,EAAA,IAAA,CAAA,EAAA,IAAA,MAAA,IAAA,QAAA,UAAA,YAAA,GAAA,CAAA,CAAA;EAAEC,CAAAA,CAAAA,CAAAA;AAAa,SAAA;IACxB,QAAA;EAIJ;;;",
|
|
6
|
-
"names": ["Effect", "Capabilities", "Capability", "AiContext", "Chat", "DatabaseBlueprint", "AgentWizardBlueprint", "Blueprint", "Operation", "Feed", "Obj", "Ref", "createFeedServiceLayer", "invariant", "ClientCapabilities", "AssistantBlueprint", "AssistantOperation", "client", "Client", "space", "spaces", "spaceId", "feed", "make", "chat", "name", "setParent", "add", "runtime", "provide", "feedServiceLayer", "binder", "registry", "BlueprintManagerBlueprint", "map", "object"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/create-object.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\n\nimport { Capability, Capabilities } from '@dxos/app-framework';\nimport { Agent, AgentBlueprint, Chat } from '@dxos/assistant-toolkit';\nimport { Blueprint, Operation, Routine, ServiceResolver } from '@dxos/compute';\nimport { Sequence } from '@dxos/conductor';\nimport { Database, Feed, Obj, Type } from '@dxos/echo';\nimport { SpaceCapabilities, SpaceOperation } from '@dxos/plugin-space';\n\nimport { AssistantOperation } from '#types';\n\nimport { getChatsPath } from '../paths';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return [\n Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Type.getTypename(Chat.Chat),\n createObject: (props, options) =>\n Effect.gen(function* () {\n const { object } = yield* Operation.invoke(AssistantOperation.CreateChat, {\n db: options.db,\n name: props?.name,\n });\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId ?? getChatsPath(options.db.spaceId),\n });\n }),\n }),\n Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Type.getTypename(Blueprint.Blueprint),\n inputSchema: AssistantOperation.BlueprintForm,\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Blueprint.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n }),\n }),\n Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Type.getTypename(Routine.Routine),\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Routine.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n }),\n }),\n Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Type.getTypename(Sequence.Sequence),\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Obj.make(Sequence.Sequence, props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n }),\n }),\n Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Type.getTypename(Agent.Agent),\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = yield* Agent.makeInitialized({ name: '', instructions: '' }, AgentBlueprint.make());\n\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n }).pipe(\n Effect.provide(\n ServiceResolver.provide({ space: options.db.spaceId }, Database.Service, Feed.FeedService).pipe(\n Layer.provide(Capability.asLayer(Capabilities.ServiceResolver, ServiceResolver.ServiceResolver)),\n ),\n ),\n ),\n }),\n ];\n }),\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Effect", "Layer", "Capability", "Capabilities", "Agent", "AgentBlueprint", "Chat", "Blueprint", "Operation", "Routine", "ServiceResolver", "Sequence", "Database", "Feed", "Obj", "Type", "SpaceCapabilities", "SpaceOperation", "AssistantOperation", "Capability", "makeModule", "fnUntraced", "contributes", "SpaceCapabilities", "CreateObjectEntry", "id", "Type", "getTypename", "Chat", "createObject", "props", "options", "gen", "object", "Operation", "invoke", "AssistantOperation", "CreateChat", "db", "name", "SpaceOperation", "AddObject", "target", "hidden", "targetNodeId", "getChatsPath", "spaceId", "Blueprint", "inputSchema", "BlueprintForm", "make", "Routine", "Sequence", "Obj", "Agent", "makeInitialized", "instructions", "AgentBlueprint", "pipe", "provide", "ServiceResolver", "space", "Database", "Service", "Feed", "FeedService", "asLayer", "Capabilities"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/fork-chat.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 { Paths, LayoutOperation } from '@dxos/app-toolkit';\nimport { AiContext, SessionLink } from '@dxos/assistant';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { Database, Feed, Filter, Obj, Ref } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-client';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { SpaceOperation } from '@dxos/plugin-space';\nimport { Message } from '@dxos/types';\n\nimport { AssistantOperation } from '#types';\n\nconst handler: Operation.WithHandler<typeof AssistantOperation.ForkChat> = AssistantOperation.ForkChat.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ chat, companionTo }) {\n const { db } = yield* Database.Service;\n const sourceFeed = chat.feed.target;\n invariant(sourceFeed, 'Chat feed not found.');\n\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = client.spaces.get(db.spaceId);\n invariant(space, 'Space not found.');\n\n const feedServiceLayer = createFeedServiceLayer(space.db);\n\n const messages = yield* Feed.runQuery(sourceFeed, Filter.type(Message.Message)).pipe(\n Effect.provide(feedServiceLayer),\n );\n\n // Sort chronologically to find the last message.\n const sorted = messages\n .filter(Obj.instanceOf(Message.Message))\n .sort((a, b) => a.created.localeCompare(b.created));\n\n // Create a new chat, then apply source bindings and session link.\n const sourceName = Obj.getLabel(chat);\n const { object: newChat } = yield* Operation.invoke(AssistantOperation.CreateChat, {\n db,\n name: sourceName ? `${sourceName} (fork)` : undefined,\n });\n const newFeed = newChat.feed.target;\n invariant(newFeed, 'New chat feed not found.');\n\n if (sorted.length > 0) {\n const lastMessage = sorted[sorted.length - 1];\n\n // Append a SessionLink record pointing to the last message of the source feed.\n yield* Feed.append(newFeed, [\n Obj.make(SessionLink.SessionLink, {\n feedRef: Ref.make(sourceFeed),\n messageId: lastMessage.id,\n }),\n ]).pipe(Effect.provide(feedServiceLayer));\n }\n\n // Copy source chat's blueprint and object bindings to the new feed.\n // Sort chronologically so add/remove events are applied in the correct order.\n const sourceBindings = (yield* Feed.runQuery(sourceFeed, Filter.type(AiContext.Binding)).pipe(\n Effect.provide(feedServiceLayer),\n )).filter(Obj.instanceOf(AiContext.Binding));\n\n if (sourceBindings.length > 0) {\n // Reduce binding events to the final active set.\n const blueprintRefMap = new Map<string, Ref.Ref<any>>();\n const objectRefMap = new Map<string, Ref.Ref<any>>();\n for (const binding of sourceBindings) {\n binding.blueprints.added.forEach((ref: Ref.Ref<any>) => blueprintRefMap.set(ref.uri, ref));\n binding.blueprints.removed.forEach((ref: Ref.Ref<any>) => blueprintRefMap.delete(ref.uri));\n binding.objects.added.forEach((ref: Ref.Ref<any>) => objectRefMap.set(ref.uri, ref));\n binding.objects.removed.forEach((ref: Ref.Ref<any>) => objectRefMap.delete(ref.uri));\n }\n\n yield* Feed.append(newFeed, [\n Obj.make(AiContext.Binding, {\n blueprints: { added: Array.from(blueprintRefMap.values()), removed: [] },\n objects: { added: Array.from(objectRefMap.values()), removed: [] },\n }),\n ]).pipe(Effect.provide(feedServiceLayer));\n }\n\n if (companionTo) {\n // Wire the forked chat as a companion and switch to it without navigating away.\n yield* Operation.invoke(SpaceOperation.AddRelation, {\n db,\n schema: Chat.CompanionTo,\n source: newChat,\n target: companionTo,\n });\n const operationInvoker = yield* Capability.get(Capabilities.OperationInvoker);\n yield* Effect.promise(() =>\n operationInvoker.invokePromise(AssistantOperation.SetCurrentChat, { companionTo, chat: newChat }),\n );\n } else {\n // Navigate to the forked chat as a standalone plank.\n const chatPath = Paths.getObjectPathFromObject(newChat);\n yield* Operation.invoke(LayoutOperation.Open, { subject: [chatPath] });\n }\n\n return { object: newChat };\n }),\n ),\n);\n\nexport default handler;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Effect", "Capabilities", "Capability", "Paths", "LayoutOperation", "AiContext", "SessionLink", "Chat", "Operation", "Database", "Feed", "Filter", "Obj", "Ref", "createFeedServiceLayer", "invariant", "ClientCapabilities", "SpaceOperation", "Message", "AssistantOperation", "sourceFeed", "target", "client", "space", "spaces", "feedServiceLayer", "messages", "runQuery", "type", "pipe", "provide", "sorted", "filter", "instanceOf", "a", "created", "localeCompare", "sourceName", "getLabel", "chat", "db", "name", "undefined", "newFeed", "newChat", "feed", "length", "lastMessage", "feedRef", "messageId", "blueprintRefMap", "sourceBindings", "binding", "blueprints", "added", "forEach", "objects", "ref", "objectRefMap", "uri", "removed", "append", "Array", "companionTo", "schema", "CompanionTo", "source", "operationInvoker", "subject", "chatPath"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/integration-provider.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Obj, Ref } from '@dxos/echo';\nimport {\n type CredentialForm,\n Integration,\n IntegrationProvider as IntegrationProviderCapability,\n} from '@dxos/plugin-integration';\nimport { AccessToken } from '@dxos/types';\n\nimport { ANTHROPIC_PROVIDER_ID, ANTHROPIC_SOURCE } from '../constants';\n\n/** API-key form for the Anthropic BYOK provider; key is best-effort validated against `/v1/models`. */\nconst AnthropicTokenForm = Schema.Struct({\n token: Schema.String.annotations({\n title: 'API key',\n description: 'Your Anthropic API key — find it at https://console.anthropic.com/settings/keys.',\n }),\n});\n\n/**\n * Best-effort validation: 401/403 from Anthropic blocks the save; CORS/network failures\n * are tolerated so the form still works in environments where the direct browser call is blocked.\n */\nconst validateAnthropicKey = (apiKey: string): Effect.Effect<void, Error> =>\n Effect.tryPromise({\n try: () =>\n fetch('https://api.anthropic.com/v1/models', {\n headers: {\n 'x-api-key': apiKey,\n 'anthropic-version': '2023-06-01',\n 'anthropic-dangerous-direct-browser-access': 'true',\n },\n }),\n catch: (cause) => cause,\n }).pipe(\n Effect.matchEffect({\n onSuccess: (response) =>\n response.status === 401 || response.status === 403\n ? Effect.fail(\n new Error('Invalid Anthropic API key. Check it at https://console.anthropic.com/settings/keys.'),\n )\n : Effect.void,\n onFailure: () => Effect.void,\n }),\n );\n\nconst credentialForm: CredentialForm<Schema.Schema.Type<typeof AnthropicTokenForm>> = {\n schema: AnthropicTokenForm,\n defaultValues: { token: '' },\n // Validates before the dialog closes so 401/403 errors are shown inline.\n onValidate: ({ values }) => validateAnthropicKey(values.token.trim()),\n onSubmit: ({ values, provider }) =>\n Effect.sync(() => {\n const accessToken = Obj.make(AccessToken.AccessToken, {\n source: ANTHROPIC_SOURCE,\n token: values.token.trim(),\n });\n const integration = Obj.make(Integration.Integration, {\n name: provider.label ?? 'Anthropic',\n providerId: provider.id,\n accessToken: Ref.make(accessToken),\n targets: [],\n });\n return { kind: 'complete' as const, accessToken, integration };\n }),\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return Capability.contributes(IntegrationProviderCapability, [\n {\n id: ANTHROPIC_PROVIDER_ID,\n source: ANTHROPIC_SOURCE,\n label: 'Anthropic',\n credentialForm,\n },\n ]);\n }),\n);\n"],
|
|
5
|
-
"mappings": ";;;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,KAAKC,WAAW;AACzB,SAEEC,aACAC,uBAAuBC,qCAClB;AACP,SAASC,mBAAmB;AAK5B,IAAMC,qBAA4BC,cAAO;EACvCC,OAAcC,cAAOC,YAAY;IAC/BC,OAAO;IACPC,aAAa;EACf,CAAA;AACF,CAAA;AAMA,IAAMC,uBAAuB,CAACC,WACrBC,kBAAW;EAChBC,KAAK,MACHC,MAAM,uCAAuC;IAC3CC,SAAS;MACP,aAAaJ;MACb,qBAAqB;MACrB,6CAA6C;IAC/C;EACF,CAAA;EACFK,OAAO,CAACC,UAAUA;AACpB,CAAA,EAAGC,KACMC,mBAAY;EACjBC,WAAW,CAACC,aACVA,SAASC,WAAW,OAAOD,SAASC,WAAW,MACpCC,YACL,IAAIC,MAAM,qFAAA,CAAA,IAELC;EACbC,WAAW,MAAaD;AAC1B,CAAA,CAAA;AAGJ,IAAME,iBAAgF;EACpFC,QAAQzB;EACR0B,eAAe;IAAExB,OAAO;EAAG;;EAE3ByB,YAAY,CAAC,EAAEC,OAAM,MAAOrB,qBAAqBqB,OAAO1B,MAAM2B,KAAI,CAAA;EAClEC,UAAU,CAAC,EAAEF,QAAQG,SAAQ,MACpBC,YAAK,MAAA;AACV,UAAMC,cAAcC,IAAIC,KAAKC,YAAYA,aAAa;MACpDC,QAAQC;MACRpC,OAAO0B,OAAO1B,MAAM2B,KAAI;IAC1B,CAAA;AACA,UAAMU,cAAcL,IAAIC,KAAKK,YAAYA,aAAa;MACpDC,MAAMV,SAASW,SAAS;MACxBC,YAAYZ,SAASa;MACrBX,aAAaY,IAAIV,KAAKF,WAAAA;MACtBa,SAAS,CAAA;IACX,CAAA;AACA,WAAO;MAAEC,MAAM;MAAqBd;MAAaM;IAAY;EAC/D,CAAA;AACJ;AAEA,IAAA,+BAAeS,WAAWC,WACjBC,kBAAW,aAAA;AAChB,SAAOF,WAAWG,YAAYC,+BAA+B;IAC3D;MACER,IAAIS;MACJhB,QAAQC;MACRI,OAAO;MACPlB;IACF;GACD;AACH,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Schema", "Capability", "Obj", "Ref", "Integration", "IntegrationProvider", "IntegrationProviderCapability", "AccessToken", "AnthropicTokenForm", "Struct", "token", "String", "annotations", "title", "description", "validateAnthropicKey", "apiKey", "tryPromise", "try", "fetch", "headers", "catch", "cause", "pipe", "matchEffect", "onSuccess", "response", "status", "fail", "Error", "void", "onFailure", "credentialForm", "schema", "defaultValues", "onValidate", "values", "trim", "onSubmit", "provider", "sync", "accessToken", "Obj", "make", "AccessToken", "source", "ANTHROPIC_SOURCE", "integration", "Integration", "name", "label", "providerId", "id", "Ref", "targets", "kind", "Capability", "makeModule", "fnUntraced", "contributes", "IntegrationProviderCapability", "ANTHROPIC_PROVIDER_ID"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/markdown-extension.ts", "../../../src/extensions/prompt-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';\n\nimport { AssistantOperation } from '#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(AssistantOperation.RunPromptInNewChat, { db, prompt: promptText });\n },\n });\n },\n ]);\n }),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { Facet, type Extension, type Range } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';\n\nimport { Domino } from '@dxos/ui';\n\nexport type PromptExtensionOptions = {\n /** Called when the user clicks the run button on a prompt code block. */\n onRun: (promptText: string) => void;\n};\n\ntype OnRun = (text: string) => void;\n\n// Module-level facet so the plugin singleton can read the latest handler.\nconst promptHandlerFacet = Facet.define<OnRun, OnRun | null>({\n combine: (handlers) => handlers[0] ?? null,\n});\n\n// Module-level singleton — CM6 deduplicates by reference equality, preventing duplicate buttons\n// when the extension is contributed more than once.\nconst promptPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (\n update.docChanged ||\n update.viewportChanged ||\n update.selectionSet ||\n update.focusChanged ||\n update.startState.facet(promptHandlerFacet) !== update.state.facet(promptHandlerFacet)\n ) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView): DecorationSet {\n const onRun = view.state.facet(promptHandlerFacet);\n if (!onRun) {\n return Decoration.none;\n }\n\n const ranges: Range<Decoration>[] = [];\n\n syntaxTree(view.state).iterate({\n enter: (node) => {\n if (node.name === 'FencedCode') {\n const info = node.node.getChild('CodeInfo');\n if (info) {\n const type = view.state.sliceDoc(info.from, info.to);\n const text = node.node.getChild('CodeText');\n if (type === 'prompt' && text) {\n const content = view.state.sliceDoc(text.from, text.to).trim();\n if (content.length > 0) {\n // Mark the header line as a positioned container for the button overlay.\n ranges.push(Decoration.line({ class: 'cm-prompt-header' }).range(node.from, node.from));\n ranges.push(\n Decoration.widget({ widget: new PromptRunWidget(content, onRun), side: -1 }).range(\n node.from,\n node.from,\n ),\n );\n }\n }\n }\n }\n },\n });\n\n // sort=true lets CM6 order by startSide (line decorations before widgets at the same position).\n return Decoration.set(ranges, true);\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n\n// Base theme wires up the positioned container on the header line.\nconst promptTheme = EditorView.baseTheme({\n '.cm-prompt-header': {\n position: 'relative',\n overflow: 'visible',\n },\n});\n\n/**\n * CodeMirror extension that adds a \"run\" button to ```prompt fenced code blocks.\n */\nexport const promptRunExtension = ({ onRun }: PromptExtensionOptions): Extension => [\n promptHandlerFacet.of(onRun),\n promptPlugin,\n promptTheme,\n];\n\nclass PromptRunWidget extends WidgetType {\n constructor(\n private readonly prompt: string,\n private readonly onClick: OnRun,\n ) {\n super();\n }\n\n override eq(other: this) {\n return this.prompt === other.prompt && this.onClick === other.onClick;\n }\n\n override ignoreEvent() {\n return false;\n }\n\n override toDOM() {\n return Domino.of('button')\n .classNames(\n 'dx-button h-6 w-6 min-h-0 p-1 absolute top-0 right-0 bg-green-bg hover:bg-green-surface text-green-fg',\n )\n .on('mousedown', (event) => {\n event.preventDefault();\n event.stopPropagation();\n this.onClick(this.prompt);\n })\n .append(\n Domino.of('svg', Domino.SVG)\n .classNames('w-4 h-4 cursor-pointer')\n .append(\n Domino.of('use', Domino.SVG).attributes({\n href: Domino.icon('ph--sparkle--regular'),\n }),\n ),\n ).root;\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,WAAW;AACpB,SAASC,4BAA4B;AAErC,SAASC,0BAA0B;;;ACNnC,SAASC,kBAAkB;AAC3B,SAASC,aAAyC;AAClD,SAASC,YAAgCC,YAAYC,YAA6BC,kBAAkB;AAEpG,SAASC,cAAc;AAUvB,IAAMC,qBAAqBN,MAAMO,OAA4B;EAC3DC,SAAS,CAACC,aAAaA,SAAS,CAAA,KAAM;AACxC,CAAA;AAIA,IAAMC,eAAeP,WAAWQ,UAC9B,MAAA;EACEC;EAEA,YAAYC,MAAkB;AAC5B,SAAKD,cAAc,KAAKE,iBAAiBD,IAAAA;EAC3C;EAEAE,OAAOA,QAAoB;AACzB,QACEA,OAAOC,cACPD,OAAOE,mBACPF,OAAOG,gBACPH,OAAOI,gBACPJ,OAAOK,WAAWC,MAAMf,kBAAAA,MAAwBS,OAAOO,MAAMD,MAAMf,kBAAAA,GACnE;AACA,WAAKM,cAAc,KAAKE,iBAAiBC,OAAOF,IAAI;IACtD;EACF;EAEAC,iBAAiBD,MAAiC;AAChD,UAAMU,QAAQV,KAAKS,MAAMD,MAAMf,kBAAAA;AAC/B,QAAI,CAACiB,OAAO;AACV,aAAOtB,WAAWuB;IACpB;AAEA,UAAMC,SAA8B,CAAA;AAEpC1B,eAAWc,KAAKS,KAAK,EAAEI,QAAQ;MAC7BC,OAAO,CAACC,SAAAA;AACN,YAAIA,KAAKC,SAAS,cAAc;AAC9B,gBAAMC,OAAOF,KAAKA,KAAKG,SAAS,UAAA;AAChC,cAAID,MAAM;AACR,kBAAME,OAAOnB,KAAKS,MAAMW,SAASH,KAAKI,MAAMJ,KAAKK,EAAE;AACnD,kBAAMC,OAAOR,KAAKA,KAAKG,SAAS,UAAA;AAChC,gBAAIC,SAAS,YAAYI,MAAM;AAC7B,oBAAMC,UAAUxB,KAAKS,MAAMW,SAASG,KAAKF,MAAME,KAAKD,EAAE,EAAEG,KAAI;AAC5D,kBAAID,QAAQE,SAAS,GAAG;AAEtBd,uBAAOe,KAAKvC,WAAWwC,KAAK;kBAAEC,OAAO;gBAAmB,CAAA,EAAGC,MAAMf,KAAKM,MAAMN,KAAKM,IAAI,CAAA;AACrFT,uBAAOe,KACLvC,WAAW2C,OAAO;kBAAEA,QAAQ,IAAIC,gBAAgBR,SAASd,KAAAA;kBAAQuB,MAAM;gBAAG,CAAA,EAAGH,MAC3Ef,KAAKM,MACLN,KAAKM,IAAI,CAAA;cAGf;YACF;UACF;QACF;MACF;IACF,CAAA;AAGA,WAAOjC,WAAW8C,IAAItB,QAAQ,IAAA;EAChC;AACF,GACA;EACEb,aAAa,CAACoC,MAAMA,EAAEpC;AACxB,CAAA;AAIF,IAAMqC,cAAc/C,WAAWgD,UAAU;EACvC,qBAAqB;IACnBC,UAAU;IACVC,UAAU;EACZ;AACF,CAAA;AAKO,IAAMC,qBAAqB,CAAC,EAAE9B,MAAK,MAA0C;EAClFjB,mBAAmBgD,GAAG/B,KAAAA;EACtBb;EACAuC;;AAGF,IAAMJ,kBAAN,cAA8BzC,WAAAA;;;EAC5B,YACmBmD,QACAC,SACjB;AACA,UAAK,GAAA,KAHYD,SAAAA,QAAAA,KACAC,UAAAA;EAGnB;EAESC,GAAGC,OAAa;AACvB,WAAO,KAAKH,WAAWG,MAAMH,UAAU,KAAKC,YAAYE,MAAMF;EAChE;EAESG,cAAc;AACrB,WAAO;EACT;EAESC,QAAQ;AACf,WAAOvD,OAAOiD,GAAG,QAAA,EACdO,WACC,uGAAA,EAEDC,GAAG,aAAa,CAACC,UAAAA;AAChBA,YAAMC,eAAc;AACpBD,YAAME,gBAAe;AACrB,WAAKT,QAAQ,KAAKD,MAAM;IAC1B,CAAA,EACCW,OACC7D,OAAOiD,GAAG,OAAOjD,OAAO8D,GAAG,EACxBN,WAAW,wBAAA,EACXK,OACC7D,OAAOiD,GAAG,OAAOjD,OAAO8D,GAAG,EAAEC,WAAW;MACtCC,MAAMhE,OAAOiE,KAAK,sBAAA;IACpB,CAAA,CAAA,CAAA,EAEJC;EACN;AACF;;;AD7HA,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,mBAAmBC,oBAAoB;YAAEX;YAAIY,QAAQH;UAAW,CAAA;QACrF;MACF,CAAA;IACF;GACD;AACH,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Capabilities", "Capability", "Obj", "MarkdownCapabilities", "AssistantOperation", "syntaxTree", "Facet", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "Domino", "promptHandlerFacet", "define", "combine", "handlers", "promptPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "selectionSet", "focusChanged", "startState", "facet", "state", "onRun", "none", "ranges", "iterate", "enter", "node", "name", "info", "getChild", "type", "sliceDoc", "from", "to", "text", "content", "trim", "length", "push", "line", "class", "range", "widget", "PromptRunWidget", "side", "set", "v", "promptTheme", "baseTheme", "position", "overflow", "promptRunExtension", "of", "prompt", "onClick", "eq", "other", "ignoreEvent", "toDOM", "classNames", "on", "event", "preventDefault", "stopPropagation", "append", "SVG", "attributes", "href", "icon", "root", "Capability", "makeModule", "fnUntraced", "capabilities", "Service", "contributes", "MarkdownCapabilities", "ExtensionProvider", "document", "doc", "viewMode", "undefined", "db", "Obj", "getDatabase", "invokePromise", "get", "Capabilities", "OperationInvoker", "promptRunExtension", "onRun", "promptText", "AssistantOperation", "RunPromptInNewChat", "prompt"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/react-surface.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React, { type ComponentProps, useEffect } from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface, useSettingsState } from '@dxos/app-framework/ui';\nimport { AppSurface, useActiveSpace } from '@dxos/app-toolkit/ui';\nimport { Chat, Agent, Plan } from '@dxos/assistant-toolkit';\nimport { getSpace } from '@dxos/client/echo';\nimport { Blueprint, Routine } from '@dxos/compute';\nimport { Sequence } from '@dxos/conductor';\nimport { InvocationTraceContainer } from '@dxos/devtools';\nimport { Feed, Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { SpaceHomeContent, SpaceHomePinBottom } from '@dxos/plugin-space';\nimport { Prompts } from '@dxos/plugin-space';\nimport { Panel } from '@dxos/react-ui';\n\nimport { AssistantSettings } from '#components';\nimport {\n BlueprintArticle,\n ChatCompanion,\n ChatArticle,\n ChatDialog,\n AgentArticle,\n AgentProperties,\n PlanArticle,\n RoutineArticle,\n RoutineList,\n SpaceHomePrompt,\n SpaceHomeSuggestions,\n TracePanel,\n TriggerStatus,\n} from '#containers';\nimport { ASSISTANT_COMPANION_VARIANT, ASSISTANT_DIALOG, meta } from '#meta';\nimport { type Assistant } from '#types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: 'pluginSettings',\n filter: AppSurface.settings(AppSurface.Article, meta.profile.key),\n component: ({ data: { subject } }) => {\n const { settings, updateSettings } = useSettingsState<Assistant.Settings>(subject.atom);\n return <AssistantSettings settings={settings} onSettingsChange={updateSettings} />;\n },\n }),\n Surface.create({\n id: 'spaceHomePrompt',\n filter: Surface.makeFilter(SpaceHomePinBottom),\n component: ({ data }) => <SpaceHomePrompt space={data.space} />,\n }),\n Surface.create({\n id: 'spaceHomeSuggestions',\n filter: Surface.makeFilter(SpaceHomeContent),\n position: 'last',\n component: ({ data }) => <SpaceHomeSuggestions space={data.space} />,\n }),\n Surface.create({\n id: 'chat',\n filter: AppSurface.object(\n AppSurface.Article,\n Chat.Chat,\n (data) => data.variant !== ASSISTANT_COMPANION_VARIANT,\n ),\n component: ({ data, role, ref }) => {\n return <ChatArticle role={role} subject={data.subject} attendableId={data.attendableId} ref={ref} />;\n },\n }),\n Surface.create({\n id: 'agent',\n filter: AppSurface.object(AppSurface.Article, Agent.Agent),\n component: ({ data, role }) => (\n <AgentArticle role={role} subject={data.subject} attendableId={data.attendableId} />\n ),\n }),\n Surface.create({\n id: 'objectProperties',\n filter: AppSurface.object(AppSurface.ObjectProperties, Agent.Agent),\n component: ({ data }) => <AgentProperties subject={data.subject} />,\n }),\n Surface.create({\n id: 'companionChat',\n filter: Surface.makeFilter(\n AppSurface.Article,\n (data) =>\n Obj.isObject(data.companionTo) && (Obj.instanceOf(Chat.Chat, data.subject) || data.subject === null),\n ),\n component: ({ data: { subject, attendableId, companionTo }, role, ref }) => (\n <ChatCompanion\n role={role}\n subject={subject}\n attendableId={attendableId}\n companionTo={companionTo}\n ref={ref}\n />\n ),\n }),\n Surface.create({\n id: 'companionInvocations',\n filter: AppSurface.allOf(\n AppSurface.literal(AppSurface.Article, 'invocations'),\n AppSurface.oneOf(\n AppSurface.companion(AppSurface.Article, Sequence.Sequence),\n AppSurface.companion(AppSurface.Article, Routine.Routine),\n ),\n ),\n component: ({ data, role }) => {\n const space = getSpace(data.companionTo);\n const feed = space?.properties.invocationTraceFeed?.target;\n const feedDXN = feed ? Feed.getQueueUri(feed) : undefined;\n // TODO(wittjosiah): Support invocation filtering for prompts.\n const target = Obj.instanceOf(Routine.Routine, data.companionTo) ? undefined : data.companionTo;\n\n return (\n <Panel.Root role={role} className='dx-document'>\n <Panel.Content>\n <InvocationTraceContainer db={space?.db} feedDXN={feedDXN} target={target} detailAxis='block' />\n </Panel.Content>\n </Panel.Root>\n );\n },\n }),\n Surface.create({\n id: 'blueprint',\n filter: AppSurface.object(AppSurface.Article, Blueprint.Blueprint),\n component: ({ data, role }) => (\n <BlueprintArticle role={role} subject={data.subject} attendableId={data.attendableId} />\n ),\n }),\n Surface.create({\n id: 'prompt',\n filter: AppSurface.object(AppSurface.Article, Routine.Routine),\n component: ({ data, role }) => (\n <RoutineArticle role={role} subject={data.subject} attendableId={data.attendableId} />\n ),\n }),\n Surface.create({\n id: 'plan',\n filter: AppSurface.object(AppSurface.Article, Plan.Plan),\n component: ({ data, role }) => (\n <PlanArticle role={role} subject={data.subject} attendableId={data.attendableId} />\n ),\n }),\n Surface.create({\n id: ASSISTANT_DIALOG,\n filter: AppSurface.component<ComponentProps<typeof ChatDialog>>(AppSurface.Dialog, ASSISTANT_DIALOG),\n component: ({ data }) => <ChatDialog {...data.props} />,\n }),\n Surface.create({\n id: 'trace',\n filter: Surface.makeFilter(AppSurface.deckCompanion('trace')),\n component: () => {\n const space = useActiveSpace();\n useEffect(() => {\n log('trace panel surface', { hasSpace: Boolean(space), spaceId: space?.id });\n }, [space?.id]);\n\n if (!space) {\n return null;\n }\n\n return <TracePanel space={space} />;\n },\n }),\n Surface.create({\n id: 'triggerStatus',\n filter: Surface.makeFilter(AppSurface.StatusIndicator),\n component: () => {\n const space = useActiveSpace();\n if (!space) {\n return null;\n }\n\n return <TriggerStatus role='status-indicator' space={space} />;\n },\n }),\n Surface.create({\n id: 'prompts',\n filter: AppSurface.subject(Prompts, Obj.isObject),\n component: ({ data }) => <RoutineList subject={data.subject} />,\n }),\n ]),\n ),\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Effect", "React", "useEffect", "Capabilities", "Capability", "Surface", "useSettingsState", "AppSurface", "useActiveSpace", "Chat", "Agent", "Plan", "getSpace", "Blueprint", "Routine", "Sequence", "InvocationTraceContainer", "Feed", "Obj", "log", "SpaceHomeContent", "SpaceHomePinBottom", "Prompts", "Panel", "AssistantSettings", "BlueprintArticle", "ChatCompanion", "ChatArticle", "ChatDialog", "AgentArticle", "AgentProperties", "PlanArticle", "RoutineArticle", "RoutineList", "SpaceHomePrompt", "SpaceHomeSuggestions", "TracePanel", "TriggerStatus", "ASSISTANT_COMPANION_VARIANT", "ASSISTANT_DIALOG", "meta", "id", "filter", "component", "settings", "updateSettings", "subject", "onSettingsChange", "space", "data", "create", "position", "role", "attendableId", "ref", "companionTo", "feed", "properties", "feedDXN", "getQueueUri", "target", "instanceOf", "db", "detailAxis", "hasSpace", "spaceId"]
|
|
7
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
-
|
|
3
|
-
// src/operations/resolve-navigation-targets.ts
|
|
4
|
-
import * as Effect from "effect/Effect";
|
|
5
|
-
import { Capability } from "@dxos/app-framework";
|
|
6
|
-
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
7
|
-
import { Operation } from "@dxos/compute";
|
|
8
|
-
import { DXN as _DXNReference } from "@dxos/keys";
|
|
9
|
-
import { AssistantOperation } from "#types";
|
|
10
|
-
var resolve_navigation_targets_default = AssistantOperation.ResolveNavigationTargets.pipe(Operation.withHandler(Effect.fn(function* ({ query }) {
|
|
11
|
-
const capabilities = yield* Capability.Service;
|
|
12
|
-
const resolvers = capabilities.getAll(AppCapabilities.NavigationTargetResolver);
|
|
13
|
-
const results = yield* Effect.forEach(resolvers, (resolver) => resolver(query).pipe(Effect.catchAll(() => Effect.succeed([]))));
|
|
14
|
-
return {
|
|
15
|
-
targets: results.flat()
|
|
16
|
-
};
|
|
17
|
-
})));
|
|
18
|
-
export {
|
|
19
|
-
_DXNReference,
|
|
20
|
-
resolve_navigation_targets_default as default
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=resolve-navigation-targets-ZHIMMH7L.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/resolve-navigation-targets.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\n// Value-side `DXN` re-export keeps the inferred `default` export's `.d.ts` portable —\n// `AssistantOperation.ResolveNavigationTargets` references `DXN.Schema` and the emitter\n// would otherwise emit an unresolvable type-only reference.\nimport { DXN as _DXNReference } from '@dxos/keys';\nexport { _DXNReference };\n\nimport { AssistantOperation } from '#types';\n\nexport default AssistantOperation.ResolveNavigationTargets.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ query }) {\n const capabilities = yield* Capability.Service;\n\n // Delegate to contributed resolvers.\n const resolvers = capabilities.getAll(AppCapabilities.NavigationTargetResolver);\n const results = yield* Effect.forEach(resolvers, (resolver) =>\n resolver(query as AppCapabilities.NavigationQuery).pipe(Effect.catchAll(() => Effect.succeed([]))),\n );\n return { targets: results.flat() };\n }),\n ),\n);\n"],
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAI1B,SAASC,OAAOC,qBAAqB;AAGrC,SAASC,0BAA0B;AAEnC,IAAA,qCAAeC,mBAAmBC,yBAAyBC,KACzDC,UAAUC,YACDC,UAAG,WAAW,EAAEC,MAAK,GAAE;AAC5B,QAAMC,eAAe,OAAOC,WAAWC;AAGvC,QAAMC,YAAYH,aAAaI,OAAOC,gBAAgBC,wBAAwB;AAC9E,QAAMC,UAAU,OAAcC,eAAQL,WAAW,CAACM,aAChDA,SAASV,KAAAA,EAA0CJ,KAAYe,gBAAS,MAAaC,eAAQ,CAAA,CAAE,CAAA,CAAA,CAAA;AAEjG,SAAO;IAAEC,SAASL,QAAQM,KAAI;EAAG;AACnC,CAAA,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Capability", "AppCapabilities", "Operation", "DXN", "_DXNReference", "AssistantOperation", "AssistantOperation", "ResolveNavigationTargets", "pipe", "Operation", "withHandler", "fn", "query", "capabilities", "Capability", "Service", "resolvers", "getAll", "AppCapabilities", "NavigationTargetResolver", "results", "forEach", "resolver", "catchAll", "succeed", "targets", "flat"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/operations/run-prompt-in-new-chat.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 { LayoutOperation } from '@dxos/app-toolkit';\nimport { AiContext } from '@dxos/assistant';\nimport { AgentPrompt } from '@dxos/assistant-toolkit';\nimport { Blueprint, Operation, Routine, Template } from '@dxos/compute';\nimport { Database, Feed, Filter, Obj, Ref } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-client';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { Text } from '@dxos/schema';\n\nimport { AssistantCapabilities, AssistantOperation } from '#types';\n\nimport { getChatPath } from '../paths';\n\nconst handler: Operation.WithHandler<typeof AssistantOperation.RunPromptInNewChat> =\n AssistantOperation.RunPromptInNewChat.pipe(\n Operation.withHandler(\n Effect.fnUntraced(\n function* ({ db, prompt, objects, blueprints, background }) {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const { object: chat } = yield* Operation.invoke(AssistantOperation.CreateChat, { db });\n\n if ((objects && objects.length > 0) || (blueprints && blueprints.length > 0)) {\n const feedTarget = chat.feed.target;\n invariant(feedTarget, 'Chat feed not found.');\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = client.spaces.get(db.spaceId);\n invariant(space, 'Space not found.');\n const feedServiceLayer = createFeedServiceLayer(space.db);\n const runtime = yield* Effect.runtime<Feed.FeedService>().pipe(Effect.provide(feedServiceLayer));\n const binder = new AiContext.Binder({ feed: feedTarget, runtime, registry });\n yield* Effect.promise(() =>\n binder.use(async (b: AiContext.Binder) => {\n const bindingProps: Parameters<AiContext.Binder['bind']>[0] = {};\n\n if (objects && objects.length > 0) {\n bindingProps.objects = objects.map((obj) => Ref.make(obj));\n }\n\n if (blueprints && blueprints.length > 0) {\n const allBlueprints = await db.query(Filter.type(Blueprint.Blueprint)).run();\n const matchedBlueprints = allBlueprints.filter((blueprint) => {\n const blueprintKey = Obj.getMeta(blueprint).key;\n return blueprintKey !== undefined && blueprints.includes(blueprintKey);\n });\n if (matchedBlueprints.length > 0) {\n bindingProps.blueprints = matchedBlueprints.map((blueprint) => Ref.make(blueprint));\n }\n }\n\n await b.bind(bindingProps);\n }),\n );\n }\n\n if (background) {\n const promptRef =\n typeof prompt === 'string'\n ? Ref.make(\n Routine.make({\n instructions: prompt,\n blueprints: [],\n context: [],\n }),\n )\n : prompt;\n yield* Database.flush();\n yield* Operation.invoke(\n AgentPrompt,\n {\n prompt: promptRef,\n input: {},\n chat: Ref.make(chat),\n },\n { spaceId: db.spaceId },\n ).pipe(\n Effect.catchAll((error) => {\n log.catch(error);\n return Effect.void;\n }),\n );\n return { object: chat };\n }\n\n const chatPath = getChatPath(db.spaceId, chat.id);\n const pendingPromptText =\n typeof prompt === 'string'\n ? prompt\n : yield* Effect.gen(function* () {\n const promptObj = yield* Effect.promise(() => prompt.load());\n const source = yield* Effect.promise(() => promptObj.instructions.load());\n invariant(Obj.instanceOf(Text.Text, source), 'Prompt instructions must be Text.');\n return Template.process(source.content ?? '');\n });\n yield* Capabilities.updateAtomValue(AssistantCapabilities.State, (current) => ({\n ...current,\n pendingPrompts: { ...current.pendingPrompts, [chatPath]: pendingPromptText },\n }));\n yield* Operation.invoke(LayoutOperation.Open, { subject: [chatPath] });\n return { object: chat };\n },\n (effect, { db }) => effect.pipe(Effect.provide(Database.layer(db))),\n ),\n ),\n );\n\nexport default handler;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Effect", "Capabilities", "Capability", "LayoutOperation", "AiContext", "AgentPrompt", "Blueprint", "Operation", "Routine", "Template", "Database", "Filter", "Obj", "Ref", "createFeedServiceLayer", "invariant", "log", "ClientCapabilities", "Text", "AssistantCapabilities", "AssistantOperation", "AssistantOperation", "object", "db", "objects", "invariant", "feedTarget", "client", "Capability", "space", "spaces", "feedServiceLayer", "createFeedServiceLayer", "runtime", "Effect", "binder", "AiContext", "feed", "registry", "length", "bindingProps", "blueprints", "matchedBlueprints", "allBlueprints", "blueprintKey", "Obj", "getMeta", "blueprint", "key", "undefined", "background", "instructions", "context", "prompt", "Database", "promptRef", "input", "chat", "Ref", "spaceId", "pipe", "log", "error", "promptObj", "promise", "instanceOf", "Text", "source", "Template", "content", "Capabilities", "updateAtomValue", "AssistantCapabilities", "pendingPrompts", "pendingPromptText", "Operation", "subject", "chatPath", "effect"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blueprint.d.ts","sourceRoot":"","sources":["../../../../../src/blueprints/assistant/blueprint.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAmB1C,QAAA,MAAM,SAAS,EAAE,SAAS,CAAC,UAG1B,CAAC;eAEa,SAAS"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blueprint.node.test.d.ts","sourceRoot":"","sources":["../../../../../src/blueprints/assistant/blueprint.node.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/blueprints/assistant/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blueprints/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import * as Effect from 'effect/Effect';
|
|
2
|
-
import { Capability } from '@dxos/app-framework';
|
|
3
|
-
declare const blueprintDefinition: () => Effect.Effect<Capability.Capability<unknown>[]>;
|
|
4
|
-
export default blueprintDefinition;
|
|
5
|
-
//# sourceMappingURL=blueprint-definition.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blueprint-definition.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/blueprint-definition.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA8B/D,QAAA,MAAM,mBAAmB,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CA4B3E,CAAC;eAEU,mBAAmB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integration-provider.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/integration-provider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantSettings.d.ts","sourceRoot":"","sources":["../../../../../src/components/AssistantSettings/AssistantSettings.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEzF,eAAO,MAAM,iBAAiB,mCAAoC,sBAAsB,sBA0BvF,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { type Routine } from '@dxos/compute';
|
|
3
|
-
export type RoutinePropertiesProps = {
|
|
4
|
-
routine: Routine.Routine;
|
|
5
|
-
};
|
|
6
|
-
export declare const RoutineProperties: ({ routine }: RoutinePropertiesProps) => React.JSX.Element;
|
|
7
|
-
//# sourceMappingURL=RoutineProperties.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RoutineProperties.d.ts","sourceRoot":"","sources":["../../../../../src/components/RoutineProperties/RoutineProperties.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBAAiB,sBAAsB,sBAQpE,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { type StoryObj } from '@storybook/react-vite';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
declare const meta: {
|
|
4
|
-
title: string;
|
|
5
|
-
render: () => React.JSX.Element;
|
|
6
|
-
decorators: import("@storybook/react").Decorator[];
|
|
7
|
-
parameters: {
|
|
8
|
-
layout: string;
|
|
9
|
-
translations: import("i18next").Resource[];
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
export default meta;
|
|
13
|
-
type Story = StoryObj<typeof meta>;
|
|
14
|
-
export declare const Default: Story;
|
|
15
|
-
//# sourceMappingURL=RoutineProperties.stories.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RoutineProperties.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/RoutineProperties/RoutineProperties.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAsB1B,QAAA,MAAM,IAAI;;;;;;;;CAyB2B,CAAC;eAEvB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { type Ref } from '@dxos/echo';
|
|
3
|
-
import { type Text } from '@dxos/schema';
|
|
4
|
-
export type TemplateEditorProps = {
|
|
5
|
-
id: string;
|
|
6
|
-
/** Markdown + Handlebars source text. */
|
|
7
|
-
source?: Ref.Ref<Text.Text>;
|
|
8
|
-
lineNumbers?: boolean;
|
|
9
|
-
};
|
|
10
|
-
export declare const TemplateEditor: React.ForwardRefExoticComponent<Omit<TemplateEditorProps, "className"> & {
|
|
11
|
-
classNames?: import("@dxos/ui-types").ClassNameValue;
|
|
12
|
-
} & Pick<React.HTMLAttributes<Element>, "children" | "className" | "role" | "style"> & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
-
//# sourceMappingURL=TemplateEditor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/TemplateEditor/TemplateEditor.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAKtC,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AAczC,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,cAAc;;2HA6C1B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateEditor.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/TemplateEditor/TemplateEditor.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAmB,MAAM,OAAO,CAAC;AAWxC,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA8C5E,QAAA,MAAM,IAAI;;eAEqB,GAAG;yBApBA,mBAAmB,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;;;;;CAkCrC,CAAC;eAEvB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAIpB,CAAC"}
|