@dxos/plugin-assistant 0.9.0 → 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-K7XM46OQ.mjs → AgentArticle-GV6EEW3I.mjs} +9 -8
- 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-VNVZCDUR.mjs → ChatArticle-OO7GGEFW.mjs} +2 -2
- package/dist/lib/neutral/{ChatCompanion-LBUHYWQG.mjs → ChatCompanion-GIFJRY6I.mjs} +28 -28
- package/dist/lib/neutral/ChatCompanion-GIFJRY6I.mjs.map +7 -0
- package/dist/lib/neutral/{ChatDialog-DCA6FLOV.mjs → ChatDialog-5MXN4MXS.mjs} +9 -8
- 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/{PlanArticle-TS5ULWYS.mjs → PlanArticle-VPK2IYWU.mjs} +8 -2
- package/dist/lib/neutral/PlanArticle-VPK2IYWU.mjs.map +7 -0
- package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs +114 -0
- 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-JKNWADJ4.mjs +12 -0
- package/dist/lib/neutral/TracePanel-JKNWADJ4.mjs.map +7 -0
- package/dist/lib/neutral/{TriggerStatus-X7Y5JFZJ.mjs → TriggerStatus-FURRBHYA.mjs} +9 -7
- 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-WCAP5MLI.mjs → agent-service-XFJ4VQMT.mjs} +6 -6
- 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-WUFHQH3Y.mjs → app-graph-builder-OPVOEQY7.mjs} +45 -28
- 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 +21 -19
- 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-YXRGZYYH.mjs → chunk-6Q4OBGIK.mjs} +87 -59
- package/dist/lib/neutral/chunk-6Q4OBGIK.mjs.map +7 -0
- package/dist/lib/neutral/chunk-BXI2R4OO.mjs +410 -0
- 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-SMFJD7BP.mjs.map → chunk-GPHT3HYS.mjs.map} +2 -2
- package/dist/lib/neutral/chunk-HKLSFB5I.mjs +90 -0
- package/dist/lib/neutral/chunk-HKLSFB5I.mjs.map +7 -0
- package/dist/lib/neutral/chunk-L7AR4VTA.mjs +53 -0
- package/dist/lib/neutral/chunk-L7AR4VTA.mjs.map +7 -0
- package/dist/lib/neutral/chunk-LS72HWMM.mjs +42 -0
- package/dist/lib/neutral/chunk-LS72HWMM.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-HLANPOBA.mjs → chunk-OZWZGIV2.mjs} +5 -3
- package/dist/lib/neutral/chunk-OZWZGIV2.mjs.map +7 -0
- 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/{TracePanel-KTZJ6JNR.mjs → chunk-SCTHQVIJ.mjs} +11 -23
- package/dist/lib/neutral/chunk-SCTHQVIJ.mjs.map +7 -0
- package/dist/lib/neutral/chunk-U4LTLBAX.mjs +56 -0
- package/dist/lib/neutral/chunk-U4LTLBAX.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-RKVVK3R3.mjs → chunk-UPKFUZ6V.mjs} +22 -17
- 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-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 +749 -632
- 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 +15 -13
- package/dist/lib/neutral/containers/index.mjs.map +3 -3
- package/dist/lib/neutral/{create-chat-SGGQ6HVN.mjs → create-chat-YGVZZYGP.mjs} +18 -16
- package/dist/lib/neutral/create-chat-YGVZZYGP.mjs.map +7 -0
- package/dist/lib/neutral/{create-object-U2SOFZLR.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 +336 -62
- package/dist/lib/neutral/execution-graph/index.mjs.map +4 -4
- package/dist/lib/neutral/extensions/index.mjs +8 -0
- package/dist/lib/neutral/{fork-chat-34KEF4ZJ.mjs → fork-chat-RMAAYYQF.mjs} +16 -19
- 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 +393 -508
- 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-XRTBW5OJ.mjs → react-surface-HEJEK44F.mjs} +42 -45
- 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-D5IIE2C7.mjs → run-prompt-in-new-chat-RNUJE2FM.mjs} +31 -31
- package/dist/lib/neutral/run-prompt-in-new-chat-RNUJE2FM.mjs.map +7 -0
- package/dist/lib/neutral/{settings-W4BLWQ53.mjs → settings-7Q3RITIT.mjs} +3 -3
- package/dist/lib/neutral/{settings-W4BLWQ53.mjs.map → settings-7Q3RITIT.mjs.map} +3 -3
- 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-H3G7QCU6.mjs → state-4LGAKSSD.mjs} +9 -3
- package/dist/lib/neutral/state-4LGAKSSD.mjs.map +7 -0
- 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 +69 -31
- 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/dx.config.d.ts +28 -0
- package/dist/types/dx.config.d.ts.map +1 -0
- 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 +18 -57
- 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 +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +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 +10 -8
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
- package/dist/types/src/components/Chat/Chat.stories.d.ts +32 -0
- package/dist/types/src/components/Chat/Chat.stories.d.ts.map +1 -0
- 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 +6 -0
- package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
- package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts +1 -0
- package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -1
- package/dist/types/src/components/TaskList/TaskList.d.ts +8 -0
- package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -1
- package/dist/types/src/components/TaskList/TaskList.stories.d.ts +5 -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 +1 -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 +3 -10
- package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -1
- package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +4 -11
- 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/PlanArticle/PlanArticle.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts +15 -0
- package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomePrompt/index.d.ts +2 -0
- package/dist/types/src/containers/SpaceHomePrompt/index.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts +13 -0
- package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomeSuggestions/index.d.ts +2 -0
- package/dist/types/src/containers/SpaceHomeSuggestions/index.d.ts.map +1 -0
- package/dist/types/src/containers/TracePanel/TracePanel.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 +4 -3
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/execution-graph/execution-graph.d.ts +20 -1
- package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -1
- package/dist/types/src/execution-graph/index.d.ts +3 -2
- package/dist/types/src/execution-graph/index.d.ts.map +1 -1
- package/dist/types/src/execution-graph/pending-block-status.d.ts +26 -0
- package/dist/types/src/execution-graph/pending-block-status.d.ts.map +1 -0
- package/dist/types/src/execution-graph/pending-block-status.test.d.ts +2 -0
- package/dist/types/src/execution-graph/pending-block-status.test.d.ts.map +1 -0
- 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 +1 -1
- package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
- package/dist/types/src/feed-logger.d.ts +3 -2
- package/dist/types/src/feed-logger.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +4 -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/useProcessEphemeralStatus.d.ts +10 -0
- package/dist/types/src/hooks/useProcessEphemeralStatus.d.ts.map +1 -0
- 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/hooks/useTraceMessages.d.ts +12 -0
- package/dist/types/src/hooks/useTraceMessages.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 +32 -2
- 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 +33 -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/AssistantEvents.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/error-cause.d.ts +3 -0
- package/dist/types/src/util/error-cause.d.ts.map +1 -0
- package/dist/types/src/util/suggestions.d.ts +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +38 -0
- package/package.json +103 -90
- package/src/AssistantPlugin.conversations.json +1 -1
- package/src/AssistantPlugin.node.ts +5 -5
- package/src/AssistantPlugin.test.ts +27 -41
- package/src/AssistantPlugin.ts +14 -12
- package/src/AssistantPlugin.workerd.ts +15 -6
- package/src/capabilities/agent-hydrator.ts +1 -2
- package/src/capabilities/agent-service.ts +7 -5
- package/src/capabilities/ai-context.ts +7 -32
- package/src/capabilities/ai-service.ts +3 -2
- package/src/capabilities/app-graph-builder.ts +43 -28
- 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 +4 -12
- package/src/capabilities/markdown-extension.ts +7 -4
- package/src/capabilities/navigation-resolver.ts +20 -0
- package/src/capabilities/react-surface.tsx +55 -52
- package/src/capabilities/settings.ts +2 -2
- package/src/capabilities/skill-definition.ts +72 -0
- package/src/capabilities/state.ts +8 -1
- package/src/components/AgentProperties/AgentProperties.stories.tsx +1 -2
- package/src/components/AgentProperties/AgentProperties.tsx +1 -1
- package/src/components/Chat/Chat.stories.tsx +94 -0
- package/src/components/Chat/Chat.tsx +67 -16
- package/src/components/Chat/events.ts +0 -6
- package/src/components/ChatPrompt/ChatActions.tsx +185 -20
- package/src/components/ChatPrompt/ChatMcpErrors.tsx +1 -1
- package/src/components/ChatPrompt/ChatOptions.stories.tsx +3 -3
- package/src/components/ChatPrompt/ChatOptions.tsx +43 -50
- package/src/components/ChatPrompt/ChatPrompt.tsx +31 -47
- package/src/components/ChatPrompt/ChatReferences.tsx +1 -1
- package/src/components/ChatPrompt/useChatVoiceInput.ts +103 -0
- package/src/components/ChatThread/Anchor.stories.tsx +1 -1
- package/src/components/ChatThread/ChatThread.stories.tsx +7 -16
- package/src/components/ChatThread/DEBUG.md +23 -0
- 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/SummaryWidget.tsx +1 -1
- package/src/components/ChatThread/widgets/SurfaceWidget.tsx +41 -0
- package/src/components/ChatThread/widgets/ToolWidget.tsx +1 -1
- package/src/components/ChatThread/widgets/index.ts +1 -0
- package/src/components/ProcessTree/ProcessTree.stories.tsx +7 -0
- package/src/components/ProcessTree/ProcessTree.tsx +183 -88
- package/src/components/TaskList/TaskList.stories.tsx +24 -3
- package/src/components/TaskList/TaskList.tsx +122 -28
- package/src/components/ToolBlock/ToolBlock.tsx +1 -1
- package/src/components/Toolbox/Toolbox.tsx +11 -11
- package/src/components/index.ts +1 -6
- package/src/constants.ts +1 -1
- package/src/containers/AgentArticle/AgentArticle.stories.tsx +12 -13
- package/src/containers/AgentArticle/AgentArticle.tsx +10 -10
- 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 +25 -28
- package/src/containers/ChatCompanion/ChatCompanion.tsx +27 -27
- package/src/containers/ChatDialog/ChatDialog.tsx +10 -7
- package/src/containers/IntegrationPrompt/IntegrationPrompt.tsx +79 -0
- package/src/containers/IntegrationPrompt/index.ts +5 -0
- package/src/containers/PlanArticle/PlanArticle.tsx +5 -1
- package/src/containers/SpaceHomePrompt/SpaceHomePrompt.tsx +107 -0
- package/src/containers/SpaceHomePrompt/index.ts +5 -0
- package/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.tsx +83 -0
- package/src/containers/SpaceHomeSuggestions/index.ts +5 -0
- package/src/containers/TracePanel/TracePanel.stories.tsx +89 -47
- package/src/containers/TracePanel/TracePanel.tsx +15 -37
- package/src/containers/TracePanel/dxn-extractor.test.ts +2 -2
- package/src/containers/TriggerStatus/TriggerStatus.tsx +10 -6
- package/src/containers/index.ts +4 -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 +337 -70
- package/src/execution-graph/index.ts +15 -5
- package/src/execution-graph/pending-block-status.test.ts +114 -0
- package/src/execution-graph/pending-block-status.ts +88 -0
- 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 +34 -19
- package/src/extensions/index.ts +1 -1
- package/src/extensions/prompt-extension.ts +102 -73
- package/src/feed-logger.ts +24 -22
- package/src/functions/services.test.ts +4 -4
- package/src/hooks/index.ts +4 -2
- package/src/hooks/useChatProcessor.ts +12 -16
- package/src/hooks/useChatServices.ts +2 -2
- package/src/hooks/useChatToolbarActions.ts +5 -5
- 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 +192 -0
- package/src/hooks/useReferencesProvider.ts +1 -1
- package/src/hooks/useSkillRegistry.ts +125 -0
- package/src/hooks/useTraceMessages.ts +41 -0
- package/src/index.ts +1 -1
- package/src/meta.ts +3 -31
- package/src/operations/create-chat.ts +11 -12
- package/src/operations/fork-chat.ts +15 -20
- 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 +34 -35
- package/src/operations/update-chat-name.ts +2 -2
- package/src/paths.ts +5 -3
- package/src/plugin.workerd.ts +5 -0
- package/src/processor/presets.ts +38 -61
- package/src/processor/processor.node.test.ts +72 -2
- package/src/processor/processor.ts +91 -21
- 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 -1093
- 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 +74 -31
- package/src/types/Assistant.ts +3 -1
- package/src/types/AssistantCapabilities.ts +24 -3
- package/src/types/AssistantEvents.ts +1 -1
- package/src/types/AssistantOperation.ts +22 -33
- 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/error-cause.ts +21 -0
- package/src/util/suggestions.ts +1 -1
- package/dist/lib/neutral/AgentArticle-K7XM46OQ.mjs.map +0 -7
- package/dist/lib/neutral/AssistantSettings-GG52BLKS.mjs +0 -40
- package/dist/lib/neutral/AssistantSettings-GG52BLKS.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-LBUHYWQG.mjs.map +0 -7
- package/dist/lib/neutral/ChatDialog-DCA6FLOV.mjs.map +0 -7
- package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs.map +0 -7
- package/dist/lib/neutral/RoutineArticle-5NYXHRG6.mjs +0 -119
- package/dist/lib/neutral/RoutineArticle-5NYXHRG6.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/TracePanel-KTZJ6JNR.mjs.map +0 -7
- package/dist/lib/neutral/TriggerStatus-X7Y5JFZJ.mjs.map +0 -7
- package/dist/lib/neutral/agent-hydrator-PJBYVMBW.mjs.map +0 -7
- package/dist/lib/neutral/agent-service-WCAP5MLI.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-WUFHQH3Y.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-MH2QLYQH.mjs +0 -39
- package/dist/lib/neutral/blueprint-definition-MH2QLYQH.mjs.map +0 -7
- package/dist/lib/neutral/blueprints/index.mjs +0 -8
- package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-HLANPOBA.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KLYLW4WH.mjs.map +0 -7
- package/dist/lib/neutral/chunk-QAZMOFPI.mjs +0 -130
- package/dist/lib/neutral/chunk-QAZMOFPI.mjs.map +0 -7
- package/dist/lib/neutral/chunk-RKVVK3R3.mjs.map +0 -7
- package/dist/lib/neutral/chunk-SMFJD7BP.mjs +0 -8
- package/dist/lib/neutral/chunk-XYHPOGTK.mjs +0 -43
- package/dist/lib/neutral/chunk-XYHPOGTK.mjs.map +0 -7
- package/dist/lib/neutral/chunk-YXRGZYYH.mjs.map +0 -7
- package/dist/lib/neutral/companion-chat-provisioner-YZZ73P6E.mjs.map +0 -7
- package/dist/lib/neutral/create-chat-SGGQ6HVN.mjs.map +0 -7
- package/dist/lib/neutral/create-object-U2SOFZLR.mjs.map +0 -7
- package/dist/lib/neutral/fork-chat-34KEF4ZJ.mjs.map +0 -7
- package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs.map +0 -7
- package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs +0 -110
- package/dist/lib/neutral/markdown-extension-YMIFDMYF.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-XRTBW5OJ.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-D5IIE2C7.mjs.map +0 -7
- package/dist/lib/neutral/state-H3G7QCU6.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 -65
- 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/src/testing/trace-timeline.node.conversations.json +0 -1
- /package/dist/lib/neutral/{ChatArticle-VNVZCDUR.mjs.map → ChatArticle-OO7GGEFW.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
|
@@ -0,0 +1,133 @@
|
|
|
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 { Instructions, Skill } 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, AppGraphBuilder, AssistantState, AutomationTemplates, CompanionChatProvisioner, Connector, CreateObject, EdgeModelResolver, LocalModelResolver, MarkdownExtension, Migrations, NavigationResolver, OperationHandler, ReactSurface, Settings, SkillDefinition, 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, skill-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 SkillForm\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 skills, then runs a prompt.\n note: |\n Operation DEFINED in plugin-routine (RoutineOperation.RunPromptInNewChat)\n so Routine UI and downstream plugins can dispatch it without depending on\n plugin-assistant. The HANDLER (chat creation + AiContext binding) is contributed\n here; see operations/run-prompt-in-new-chat.ts.\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: Skill System\n\n req F-3.1: Skills define named AI configurations (instructions, tools, model).\n req F-3.2: Built-in skills include: Assistant, Browser, Database, WebSearch, Discord, Linear, Agent, Planning, Memory, Automation, SkillManager, AgentWizard.\n req F-3.3:\n when: user selects a skill for a chat\n then: chat uses that skill\'s instructions and tool set\n req F-3.4: op:RunPromptInNewChat accepts skill 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 skill 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, Skill, 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: Skill binding\n given: a chat exists\n when: user binds the "WebSearch" skill key\n then:\n - skill 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.addNavigationResolverModule({
|
|
27
|
+
activatesOn: ClientEvents.ClientReady,
|
|
28
|
+
activate: NavigationResolver
|
|
29
|
+
}), AppPlugin.addSkillDefinitionModule({
|
|
30
|
+
activate: SkillDefinition
|
|
31
|
+
}), AppPlugin.addCreateObjectModule({
|
|
32
|
+
activate: CreateObject
|
|
33
|
+
}), AppPlugin.addOperationHandlerModule({
|
|
34
|
+
activate: OperationHandler
|
|
35
|
+
}), AppPlugin.addSchemaModule({
|
|
36
|
+
schema: [
|
|
37
|
+
Chat.Chat,
|
|
38
|
+
Chat.CompanionTo,
|
|
39
|
+
Skill.Skill,
|
|
40
|
+
AiContext.Binding,
|
|
41
|
+
Feed.Feed,
|
|
42
|
+
HasSubject.HasSubject,
|
|
43
|
+
Message.Message,
|
|
44
|
+
Instructions.Instructions,
|
|
45
|
+
Agent.Agent,
|
|
46
|
+
McpServer.McpServer,
|
|
47
|
+
Plan.Plan,
|
|
48
|
+
Sequence.Sequence,
|
|
49
|
+
Memory.Memory,
|
|
50
|
+
Text.Text
|
|
51
|
+
]
|
|
52
|
+
}), AppPlugin.addSettingsModule({
|
|
53
|
+
activate: Settings
|
|
54
|
+
}), AppPlugin.addSurfaceModule({
|
|
55
|
+
activate: ReactSurface,
|
|
56
|
+
firesBeforeActivation: [
|
|
57
|
+
AppActivationEvents.SetupArtifactDefinition
|
|
58
|
+
]
|
|
59
|
+
}), AppPlugin.addTranslationsModule({
|
|
60
|
+
translations
|
|
61
|
+
}), Plugin.addModule({
|
|
62
|
+
id: "automation-templates",
|
|
63
|
+
activatesOn: AppActivationEvents.SetupSchema,
|
|
64
|
+
activate: AutomationTemplates
|
|
65
|
+
}), Plugin.addModule({
|
|
66
|
+
id: "markdown",
|
|
67
|
+
activatesOn: MarkdownEvents.SetupExtensions,
|
|
68
|
+
activate: MarkdownExtension
|
|
69
|
+
}), Plugin.addModule({
|
|
70
|
+
// TODO(wittjosiah): Does not integrate with settings store.
|
|
71
|
+
// Should this be a different event?
|
|
72
|
+
// Should settings store be renamed to be more generic?
|
|
73
|
+
activatesOn: AppActivationEvents.SetupSettings,
|
|
74
|
+
firesAfterActivation: [
|
|
75
|
+
StateReady
|
|
76
|
+
],
|
|
77
|
+
activate: AssistantState
|
|
78
|
+
}), Plugin.addModule({
|
|
79
|
+
activatesOn: AssistantEvents.SetupAiServiceProviders,
|
|
80
|
+
activate: EdgeModelResolver
|
|
81
|
+
}), Plugin.addModule({
|
|
82
|
+
activatesOn: AssistantEvents.SetupAiServiceProviders,
|
|
83
|
+
activate: LocalModelResolver
|
|
84
|
+
}), Plugin.addModule((options) => ({
|
|
85
|
+
id: Capability.getModuleTag(AiService),
|
|
86
|
+
firesBeforeActivation: [
|
|
87
|
+
AssistantEvents.SetupAiServiceProviders
|
|
88
|
+
],
|
|
89
|
+
// TODO(dmaretskyi): This should activate lazily when the AI chat is used.
|
|
90
|
+
activatesOn: ActivationEvents.SetupProcessManager,
|
|
91
|
+
activate: () => AiService(options)
|
|
92
|
+
})), Plugin.addModule({
|
|
93
|
+
// Process-affinity `Harness.HarnessService` LayerSpec — needed so operations
|
|
94
|
+
// dispatched as their own processes (e.g. via `Operation.invoke` from
|
|
95
|
+
// `AiSession.createRequest` or `TriggerDispatcher`) can resolve
|
|
96
|
+
// conversation-scoped services without an inline `Effect.provideService`
|
|
97
|
+
// upstream. See `capabilities/ai-context.ts` for the rationale.
|
|
98
|
+
activatesOn: ActivationEvents.SetupProcessManager,
|
|
99
|
+
activate: AiContextCapability
|
|
100
|
+
}), Plugin.addModule({
|
|
101
|
+
activatesOn: ActivationEvents.SetupProcessManager,
|
|
102
|
+
activate: AgentRuntime
|
|
103
|
+
})).pipe(Plugin.addModule({
|
|
104
|
+
// TODO(wittjosiah): Use a different event.
|
|
105
|
+
activatesOn: ActivationEvents.Startup,
|
|
106
|
+
activate: Toolkit
|
|
107
|
+
}), Plugin.addModule({
|
|
108
|
+
activatesOn: ActivationEvents.ProcessManagerReady,
|
|
109
|
+
activate: AgentHydrator
|
|
110
|
+
}), Plugin.addModule({
|
|
111
|
+
activatesOn: ActivationEvent.allOf(ActivationEvents.ProcessManagerReady, AppActivationEvents.AppGraphReady, DeckEvents.StateReady, StateReady),
|
|
112
|
+
activate: CompanionChatProvisioner
|
|
113
|
+
}), Plugin.addModule({
|
|
114
|
+
activatesOn: ClientEvents.SetupMigration,
|
|
115
|
+
activate: Migrations
|
|
116
|
+
}), Plugin.addModule({
|
|
117
|
+
activatesOn: AppActivationEvents.SetupConnectors,
|
|
118
|
+
activate: Connector
|
|
119
|
+
}), AppPlugin.addPluginAssetModule({
|
|
120
|
+
asset: {
|
|
121
|
+
pluginId: meta.profile.key,
|
|
122
|
+
path: "PLUGIN.mdl",
|
|
123
|
+
content: PLUGIN_default,
|
|
124
|
+
mimeType: "application/x-mdl"
|
|
125
|
+
}
|
|
126
|
+
}), Plugin.make);
|
|
127
|
+
var AssistantPlugin_default = AssistantPlugin;
|
|
128
|
+
|
|
129
|
+
export {
|
|
130
|
+
AssistantPlugin,
|
|
131
|
+
AssistantPlugin_default
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=chunk-XVGEJWJX.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
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 { Instructions, Skill } 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 AppGraphBuilder,\n AssistantState,\n AutomationTemplates,\n CompanionChatProvisioner,\n Connector,\n CreateObject,\n EdgeModelResolver,\n LocalModelResolver,\n MarkdownExtension,\n Migrations,\n NavigationResolver,\n OperationHandler,\n ReactSurface,\n Settings,\n SkillDefinition,\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.addNavigationResolverModule({ activatesOn: ClientEvents.ClientReady, activate: NavigationResolver }),\n AppPlugin.addSkillDefinitionModule({ activate: SkillDefinition }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({\n schema: [\n Chat.Chat,\n Chat.CompanionTo,\n Skill.Skill,\n AiContext.Binding,\n Feed.Feed,\n HasSubject.HasSubject,\n Message.Message,\n Instructions.Instructions,\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 `Harness.HarnessService` 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.SetupConnectors,\n activate: Connector,\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, skill-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 SkillForm\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 skills, then runs a prompt.\n note: |\n Operation DEFINED in plugin-routine (RoutineOperation.RunPromptInNewChat)\n so Routine UI and downstream plugins can dispatch it without depending on\n plugin-assistant. The HANDLER (chat creation + AiContext binding) is contributed\n here; see operations/run-prompt-in-new-chat.ts.\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: Skill System\n\n req F-3.1: Skills define named AI configurations (instructions, tools, model).\n req F-3.2: Built-in skills include: Assistant, Browser, Database, WebSearch, Discord, Linear, Agent, Planning, Memory, Automation, SkillManager, AgentWizard.\n req F-3.3:\n when: user selects a skill for a chat\n then: chat uses that skill's instructions and tool set\n req F-3.4: op:RunPromptInNewChat accepts skill 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 skill 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, Skill, 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: Skill binding\n given: a chat exists\n when: user binds the \"WebSearch\" skill key\n then:\n - skill 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", "Instructions", "Skill", "Sequence", "Feed", "ClientEvents", "DeckEvents", "MarkdownEvents", "Text", "HasSubject", "Message", "AgentHydrator", "AgentRuntime", "AiContextCapability", "AiService", "AppGraphBuilder", "AssistantState", "AutomationTemplates", "CompanionChatProvisioner", "Connector", "CreateObject", "EdgeModelResolver", "LocalModelResolver", "MarkdownExtension", "Migrations", "NavigationResolver", "OperationHandler", "ReactSurface", "Settings", "SkillDefinition", "Toolkit", "meta", "translations", "AssistantEvents", "StateReady", "AppActivationEvents", "createStateEvent", "meta", "profile", "key", "AssistantPlugin", "Plugin", "define", "pipe", "AppPlugin", "addAppGraphModule", "activate", "AppGraphBuilder", "addNavigationResolverModule", "activatesOn", "ClientEvents", "ClientReady", "NavigationResolver", "addSkillDefinitionModule", "SkillDefinition", "addCreateObjectModule", "CreateObject", "addOperationHandlerModule", "OperationHandler", "addSchemaModule", "schema", "Chat", "CompanionTo", "Skill", "AiContext", "Binding", "Feed", "HasSubject", "Message", "Instructions", "Agent", "McpServer", "Plan", "Sequence", "Memory", "Text", "addSettingsModule", "Settings", "addSurfaceModule", "ReactSurface", "firesBeforeActivation", "SetupArtifactDefinition", "addTranslationsModule", "translations", "addModule", "id", "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", "SetupMigration", "Migrations", "SetupConnectors", "Connector", "addPluginAssetModule", "asset", "pluginId", "path", "content", "pluginSpec", "mimeType", "make"]
|
|
7
|
+
}
|
|
@@ -9,9 +9,10 @@ import { AppCapabilities } from "@dxos/app-toolkit";
|
|
|
9
9
|
import { Chat } from "@dxos/assistant-toolkit";
|
|
10
10
|
import { Obj } from "@dxos/echo";
|
|
11
11
|
import { log } from "@dxos/log";
|
|
12
|
-
import {
|
|
12
|
+
import { AttentionCapabilities } from "@dxos/plugin-attention";
|
|
13
|
+
import { COMPANION_VIEW_STATE_CONTEXT, DeckCapabilities, PLANK_COMPANION_TYPE, companionVariantAspect } from "@dxos/plugin-deck";
|
|
13
14
|
import { getLinkedVariant } from "@dxos/react-ui-attention";
|
|
14
|
-
import {
|
|
15
|
+
import { Position } from "@dxos/util";
|
|
15
16
|
import { ASSISTANT_COMPANION_VARIANT } from "#meta";
|
|
16
17
|
import { AssistantCapabilities, AssistantOperation } from "#types";
|
|
17
18
|
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/capabilities/companion-chat-provisioner.ts";
|
|
@@ -22,6 +23,8 @@ var companion_chat_provisioner_default = Capability.makeModule(Effect.fnUntraced
|
|
|
22
23
|
const deckStateAtom = yield* Capability.get(DeckCapabilities.State);
|
|
23
24
|
const cacheAtom = yield* Capability.get(AssistantCapabilities.CompanionChatCache);
|
|
24
25
|
const stateAtom = yield* Capability.get(AssistantCapabilities.State);
|
|
26
|
+
const viewState = yield* Capability.get(AttentionCapabilities.ViewState);
|
|
27
|
+
const variantAtom = viewState.atom(companionVariantAspect, COMPANION_VIEW_STATE_CONTEXT);
|
|
25
28
|
const plankSubs = /* @__PURE__ */ new Map();
|
|
26
29
|
const unsubPlank = (plankId) => {
|
|
27
30
|
plankSubs.get(plankId)?.();
|
|
@@ -52,7 +55,7 @@ var companion_chat_provisioner_default = Capability.makeModule(Effect.fnUntraced
|
|
|
52
55
|
log.warn("No db for object", {
|
|
53
56
|
plankId,
|
|
54
57
|
companionUri
|
|
55
|
-
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L:
|
|
58
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 63, S: this });
|
|
56
59
|
return false;
|
|
57
60
|
}
|
|
58
61
|
void operationInvoker.invokePromise(AssistantOperation.EnsureCompanionChat, {
|
|
@@ -61,7 +64,7 @@ var companion_chat_provisioner_default = Capability.makeModule(Effect.fnUntraced
|
|
|
61
64
|
}).catch((error) => log.warn("Failed to provision companion chat", {
|
|
62
65
|
plankId,
|
|
63
66
|
error
|
|
64
|
-
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L:
|
|
67
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 72, S: this }));
|
|
65
68
|
return false;
|
|
66
69
|
};
|
|
67
70
|
const provision = () => {
|
|
@@ -71,6 +74,7 @@ var companion_chat_provisioner_default = Capability.makeModule(Effect.fnUntraced
|
|
|
71
74
|
unsubAllPlanks();
|
|
72
75
|
return;
|
|
73
76
|
}
|
|
77
|
+
const companionVariant = registry.get(variantAtom).variant;
|
|
74
78
|
const plankIds = new Set(deck.solo ? [
|
|
75
79
|
deck.solo
|
|
76
80
|
] : deck.active);
|
|
@@ -80,12 +84,12 @@ var companion_chat_provisioner_default = Capability.makeModule(Effect.fnUntraced
|
|
|
80
84
|
}
|
|
81
85
|
}
|
|
82
86
|
for (const plankId of plankIds) {
|
|
83
|
-
const resolved = provisionForPlank(plankId,
|
|
87
|
+
const resolved = provisionForPlank(plankId, companionVariant);
|
|
84
88
|
if (resolved) {
|
|
85
89
|
unsubPlank(plankId);
|
|
86
90
|
} else if (!plankSubs.has(plankId)) {
|
|
87
91
|
plankSubs.set(plankId, registry.subscribe(graph.connections(plankId, "child"), () => {
|
|
88
|
-
if (provisionForPlank(plankId,
|
|
92
|
+
if (provisionForPlank(plankId, registry.get(variantAtom).variant)) {
|
|
89
93
|
unsubPlank(plankId);
|
|
90
94
|
}
|
|
91
95
|
}));
|
|
@@ -95,14 +99,16 @@ var companion_chat_provisioner_default = Capability.makeModule(Effect.fnUntraced
|
|
|
95
99
|
provision();
|
|
96
100
|
const unsub1 = registry.subscribe(deckStateAtom, provision);
|
|
97
101
|
const unsub2 = registry.subscribe(stateAtom, provision);
|
|
102
|
+
const unsub3 = registry.subscribe(variantAtom, provision);
|
|
98
103
|
return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => {
|
|
99
104
|
unsub1();
|
|
100
105
|
unsub2();
|
|
106
|
+
unsub3();
|
|
101
107
|
unsubAllPlanks();
|
|
102
108
|
}));
|
|
103
109
|
}));
|
|
104
110
|
var resolveEffectiveVariant = (graph, plankId, preferredVariant) => {
|
|
105
|
-
const companions = Graph.getConnections(graph, plankId, "child").filter((node) => node.type === PLANK_COMPANION_TYPE).toSorted((a, b) =>
|
|
111
|
+
const companions = Graph.getConnections(graph, plankId, "child").filter((node) => node.type === PLANK_COMPANION_TYPE).toSorted((a, b) => Position.compare(a.properties, b.properties));
|
|
106
112
|
if (companions.length === 0) {
|
|
107
113
|
return void 0;
|
|
108
114
|
}
|
|
@@ -117,4 +123,4 @@ var resolveEffectiveVariant = (graph, plankId, preferredVariant) => {
|
|
|
117
123
|
export {
|
|
118
124
|
companion_chat_provisioner_default as default
|
|
119
125
|
};
|
|
120
|
-
//# sourceMappingURL=companion-chat-provisioner-
|
|
126
|
+
//# sourceMappingURL=companion-chat-provisioner-IQV5VIVE.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
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 { AttentionCapabilities } from '@dxos/plugin-attention';\nimport {\n COMPANION_VIEW_STATE_CONTEXT,\n DeckCapabilities,\n PLANK_COMPANION_TYPE,\n type StoredDeckState,\n companionVariantAspect,\n} from '@dxos/plugin-deck';\nimport { getLinkedVariant } from '@dxos/react-ui-attention';\nimport { Position } 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 // The selected companion variant moved off deck state into a global view-state aspect; read and\n // observe it directly so a tab switch (which no longer touches deck state) still re-provisions.\n const viewState = yield* Capability.get(AttentionCapabilities.ViewState);\n const variantAtom = viewState.atom(companionVariantAspect, COMPANION_VIEW_STATE_CONTEXT);\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 companionVariant = registry.get(variantAtom).variant;\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, 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). This subscription\n // outlives the current `provision()` run, so re-read the latest variant at callback time\n // rather than closing over the one captured here.\n plankSubs.set(\n plankId,\n registry.subscribe(graph.connections(plankId, 'child'), () => {\n if (provisionForPlank(plankId, registry.get(variantAtom).variant)) {\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 const unsub3 = registry.subscribe(variantAtom, provision);\n\n return Capability.contributes(Capabilities.Null, null, () =>\n Effect.sync(() => {\n unsub1();\n unsub2();\n unsub3();\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) => Position.compare(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", "AttentionCapabilities", "COMPANION_VIEW_STATE_CONTEXT", "DeckCapabilities", "PLANK_COMPANION_TYPE", "companionVariantAspect", "getLinkedVariant", "Position", "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", "unsub3", "subscribe", "variantAtom", "contributes", "Null", "unsub1", "companions", "undefined", "preferredVariant", "preferred"]
|
|
7
|
+
}
|