@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
|
@@ -1,42 +1,48 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useChatContext
|
|
3
3
|
} from "../chunk-VTK5R4H3.mjs";
|
|
4
|
+
import {
|
|
5
|
+
AiChatProcessor,
|
|
6
|
+
defaultsKeyForProvider,
|
|
7
|
+
presetsForProvider,
|
|
8
|
+
resolveProvider
|
|
9
|
+
} from "../chunk-BXI2R4OO.mjs";
|
|
4
10
|
import "../chunk-J5LGTIGS.mjs";
|
|
5
11
|
|
|
6
|
-
// src/hooks/
|
|
12
|
+
// src/hooks/useSkillRegistry.ts
|
|
7
13
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
8
|
-
import {
|
|
14
|
+
import { Skill } from "@dxos/compute";
|
|
9
15
|
import { Filter, Obj, Ref } from "@dxos/echo";
|
|
10
16
|
import { useQuery } from "@dxos/react-client/echo";
|
|
11
17
|
import { distinctBy } from "@dxos/util";
|
|
12
|
-
var
|
|
13
|
-
const [
|
|
18
|
+
var useSkills = ({ registry, db }) => {
|
|
19
|
+
const [registrySkills, setRegistrySkills] = useState(() => registry?.query(Filter.type(Skill.Skill)).runSync() ?? []);
|
|
14
20
|
useEffect(() => {
|
|
15
21
|
if (!registry) {
|
|
16
|
-
|
|
22
|
+
setRegistrySkills([]);
|
|
17
23
|
return;
|
|
18
24
|
}
|
|
19
|
-
|
|
25
|
+
setRegistrySkills(registry.query(Filter.type(Skill.Skill)).runSync());
|
|
20
26
|
return registry.changed.on(() => {
|
|
21
|
-
|
|
27
|
+
setRegistrySkills(registry.query(Filter.type(Skill.Skill)).runSync());
|
|
22
28
|
});
|
|
23
29
|
}, [
|
|
24
30
|
registry
|
|
25
31
|
]);
|
|
26
|
-
const
|
|
32
|
+
const spaceSkills = useQuery(db, Filter.type(Skill.Skill));
|
|
27
33
|
return useMemo(() => {
|
|
28
|
-
const
|
|
29
|
-
...
|
|
30
|
-
...
|
|
34
|
+
const skills = distinctBy([
|
|
35
|
+
...registrySkills,
|
|
36
|
+
...spaceSkills
|
|
31
37
|
], (b) => Obj.getMeta(b).key);
|
|
32
|
-
|
|
33
|
-
return
|
|
38
|
+
skills.sort(({ name: a }, { name: b }) => a.localeCompare(b));
|
|
39
|
+
return skills;
|
|
34
40
|
}, [
|
|
35
|
-
|
|
36
|
-
|
|
41
|
+
registrySkills,
|
|
42
|
+
spaceSkills
|
|
37
43
|
]);
|
|
38
44
|
};
|
|
39
|
-
var
|
|
45
|
+
var useActiveSkills = ({ context }) => {
|
|
40
46
|
const [active, setActive] = useState(/* @__PURE__ */ new Map());
|
|
41
47
|
useEffect(() => {
|
|
42
48
|
if (!context) {
|
|
@@ -44,58 +50,58 @@ var useActiveBlueprints = ({ context }) => {
|
|
|
44
50
|
return;
|
|
45
51
|
}
|
|
46
52
|
const updateActive = () => {
|
|
47
|
-
const
|
|
48
|
-
setActive(new Map(
|
|
49
|
-
Obj.getMeta(
|
|
50
|
-
|
|
53
|
+
const skills = context.getSkills();
|
|
54
|
+
setActive(new Map(skills.map((skill) => [
|
|
55
|
+
Obj.getMeta(skill).key,
|
|
56
|
+
skill
|
|
51
57
|
]).filter((entry) => entry[0] !== void 0)));
|
|
52
58
|
};
|
|
53
59
|
updateActive();
|
|
54
|
-
return context.
|
|
60
|
+
return context.subscribeSkills(updateActive);
|
|
55
61
|
}, [
|
|
56
62
|
context
|
|
57
63
|
]);
|
|
58
64
|
return active;
|
|
59
65
|
};
|
|
60
|
-
var
|
|
61
|
-
const
|
|
66
|
+
var useSkillHandlers = ({ db, context, registry }) => {
|
|
67
|
+
const onUpdateSkill = useCallback(async (key, checked) => {
|
|
62
68
|
if (!context) {
|
|
63
69
|
return;
|
|
64
70
|
}
|
|
65
71
|
if (checked) {
|
|
66
|
-
const
|
|
67
|
-
if (
|
|
72
|
+
const registrySkill = registry?.query(Filter.type(Skill.Skill)).runSync().find((b) => Obj.getMeta(b).key === key);
|
|
73
|
+
if (registrySkill) {
|
|
68
74
|
await context.bind({
|
|
69
|
-
|
|
70
|
-
Ref.fromURI(
|
|
75
|
+
skills: [
|
|
76
|
+
Ref.fromURI(Skill.registryURI(key))
|
|
71
77
|
]
|
|
72
78
|
});
|
|
73
79
|
} else {
|
|
74
|
-
const objects = await db.query(Filter.type(
|
|
75
|
-
const
|
|
76
|
-
if (
|
|
80
|
+
const objects = await db.query(Filter.type(Skill.Skill)).run();
|
|
81
|
+
const storedSkill = objects.find((skill) => Obj.getMeta(skill).key === key);
|
|
82
|
+
if (storedSkill) {
|
|
77
83
|
await context.bind({
|
|
78
|
-
|
|
79
|
-
Ref.make(
|
|
84
|
+
skills: [
|
|
85
|
+
Ref.make(storedSkill)
|
|
80
86
|
]
|
|
81
87
|
});
|
|
82
88
|
}
|
|
83
89
|
}
|
|
84
90
|
} else {
|
|
85
|
-
const
|
|
86
|
-
if (
|
|
91
|
+
const registrySkill = registry?.query(Filter.type(Skill.Skill)).runSync().find((b) => Obj.getMeta(b).key === key);
|
|
92
|
+
if (registrySkill) {
|
|
87
93
|
await context.unbind({
|
|
88
|
-
|
|
89
|
-
Ref.fromURI(
|
|
94
|
+
skills: [
|
|
95
|
+
Ref.fromURI(Skill.registryURI(key))
|
|
90
96
|
]
|
|
91
97
|
});
|
|
92
98
|
} else {
|
|
93
|
-
const objects = await db.query(Filter.type(
|
|
94
|
-
const
|
|
95
|
-
if (
|
|
99
|
+
const objects = await db.query(Filter.type(Skill.Skill)).run();
|
|
100
|
+
const storedSkill = objects.find((skill) => Obj.getMeta(skill).key === key);
|
|
101
|
+
if (storedSkill) {
|
|
96
102
|
await context.unbind({
|
|
97
|
-
|
|
98
|
-
Ref.make(
|
|
103
|
+
skills: [
|
|
104
|
+
Ref.make(storedSkill)
|
|
99
105
|
]
|
|
100
106
|
});
|
|
101
107
|
}
|
|
@@ -107,7 +113,7 @@ var useBlueprintHandlers = ({ db, context, registry }) => {
|
|
|
107
113
|
registry
|
|
108
114
|
]);
|
|
109
115
|
return {
|
|
110
|
-
|
|
116
|
+
onUpdateSkill
|
|
111
117
|
};
|
|
112
118
|
};
|
|
113
119
|
|
|
@@ -161,420 +167,32 @@ var useChatKeymapExtensions = ({ event }) => {
|
|
|
161
167
|
|
|
162
168
|
// src/hooks/useChatProcessor.ts
|
|
163
169
|
import { RegistryContext } from "@effect-atom/atom-react";
|
|
164
|
-
import * as
|
|
170
|
+
import * as Effect from "effect/Effect";
|
|
165
171
|
import * as Layer from "effect/Layer";
|
|
166
172
|
import { useContext, useMemo as useMemo3, useState as useState2 } from "react";
|
|
167
173
|
import { AiService, OpaqueToolkit } from "@dxos/ai";
|
|
168
174
|
import { Capabilities } from "@dxos/app-framework";
|
|
169
175
|
import { useCapability } from "@dxos/app-framework/ui";
|
|
170
176
|
import { AiSession } from "@dxos/assistant";
|
|
171
|
-
import { Credential, ServiceResolver } from "@dxos/compute";
|
|
172
|
-
import { Database,
|
|
173
|
-
import { createFeedServiceLayer } from "@dxos/echo-client";
|
|
174
|
-
import { EffectEx as EffectEx2 } from "@dxos/effect";
|
|
175
|
-
import { AgentService as AgentService2 } from "@dxos/functions-runtime";
|
|
176
|
-
import { log as log2 } from "@dxos/log";
|
|
177
|
-
import { useAsyncEffect } from "@dxos/react-ui";
|
|
178
|
-
|
|
179
|
-
// src/processor/presets.ts
|
|
180
|
-
import * as Schema from "effect/Schema";
|
|
181
|
-
var ModelProviders = [
|
|
182
|
-
"dxos-local",
|
|
183
|
-
"dxos-remote",
|
|
184
|
-
"lm-studio",
|
|
185
|
-
"ollama"
|
|
186
|
-
];
|
|
187
|
-
var ModelProvider = Schema.Literal(...ModelProviders);
|
|
188
|
-
var createModelLabel = (model) => {
|
|
189
|
-
const parts = model.split(".");
|
|
190
|
-
return parts[parts.length - 1];
|
|
191
|
-
};
|
|
192
|
-
var AiServicePresets = [
|
|
193
|
-
// Sonnet is first so it is the default selection.
|
|
194
|
-
{
|
|
195
|
-
provider: "dxos-remote",
|
|
196
|
-
model: "ai.claude.model.claude-sonnet-4-6",
|
|
197
|
-
label: "Claude Sonnet"
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
provider: "dxos-remote",
|
|
201
|
-
model: "ai.claude.model.claude-opus-4-8",
|
|
202
|
-
label: "Claude Opus"
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
provider: "dxos-remote",
|
|
206
|
-
model: "ai.claude.model.claude-haiku-4-5",
|
|
207
|
-
label: "Claude Haiku"
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
provider: "ollama",
|
|
211
|
-
model: "ai.ollama.model.gpt-oss:20b"
|
|
212
|
-
},
|
|
213
|
-
{
|
|
214
|
-
provider: "ollama",
|
|
215
|
-
model: "ai.ollama.model.gemma4:latest"
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
provider: "lm-studio",
|
|
219
|
-
model: "ai.google.model.gemma-3-27b"
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
provider: "lm-studio",
|
|
223
|
-
model: "ai.meta.model.llama-3.2-3b-instruct"
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
model: "ai.ollama.model.deepseek-r1:latest",
|
|
227
|
-
provider: "dxos-local"
|
|
228
|
-
}
|
|
229
|
-
].map(({ model, provider, label }, i) => ({
|
|
230
|
-
id: `preset-${i}`,
|
|
231
|
-
provider,
|
|
232
|
-
model,
|
|
233
|
-
label: label ?? createModelLabel(model)
|
|
234
|
-
}));
|
|
235
|
-
|
|
236
|
-
// src/processor/processor.ts
|
|
237
|
-
import { Atom, Registry as AtomRegistry } from "@effect-atom/atom-react";
|
|
238
|
-
import * as AiError from "@effect/ai/AiError";
|
|
239
|
-
import * as Cause from "effect/Cause";
|
|
240
|
-
import * as Effect from "effect/Effect";
|
|
241
|
-
import * as Exit from "effect/Exit";
|
|
242
|
-
import * as Fiber from "effect/Fiber";
|
|
243
|
-
import * as Option from "effect/Option";
|
|
244
|
-
import * as Stream from "effect/Stream";
|
|
245
|
-
import { DEFAULT_EDGE_MODEL } from "@dxos/ai";
|
|
246
|
-
import { AiContext, createSystemPrompt, formatSystemPrompt, McpServerError, PartialBlock, ToolExecutionServices } from "@dxos/assistant";
|
|
247
|
-
import { Operation, Trace } from "@dxos/compute";
|
|
248
|
-
import { Obj as Obj2 } from "@dxos/echo";
|
|
177
|
+
import { AgentService, Credential, ServiceResolver } from "@dxos/compute";
|
|
178
|
+
import { Database, Obj as Obj2, Ref as Ref2, Registry } from "@dxos/echo";
|
|
249
179
|
import { EffectEx } from "@dxos/effect";
|
|
250
|
-
import { AgentService } from "@dxos/functions-runtime";
|
|
251
180
|
import { log } from "@dxos/log";
|
|
252
|
-
import {
|
|
253
|
-
import {
|
|
254
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/
|
|
255
|
-
var defaultOptions = {
|
|
256
|
-
model: DEFAULT_EDGE_MODEL
|
|
257
|
-
};
|
|
258
|
-
var parseError = (err) => {
|
|
259
|
-
let message;
|
|
260
|
-
if (AiError.isAiError(err)) {
|
|
261
|
-
message = err.description?.trim() || err.message;
|
|
262
|
-
} else if (typeof err === "string") {
|
|
263
|
-
const [, model] = err.match(/model\s+'([^']+)'\s+not\s+found/i) || [];
|
|
264
|
-
if (model) {
|
|
265
|
-
message = `The model is not available: ${model}`;
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
if (!message) {
|
|
269
|
-
message = "An unexpected error occurred.";
|
|
270
|
-
}
|
|
271
|
-
return new Error(message, {
|
|
272
|
-
cause: err
|
|
273
|
-
});
|
|
274
|
-
};
|
|
275
|
-
var AiChatProcessor = class {
|
|
276
|
-
_conversation;
|
|
277
|
-
_runtime;
|
|
278
|
-
_feed;
|
|
279
|
-
_spaceLayer;
|
|
280
|
-
_options;
|
|
281
|
-
#registry;
|
|
282
|
-
/** Pending messages (finalized, non-streaming). */
|
|
283
|
-
#pending = Atom.make([]);
|
|
284
|
-
/** Currently streaming messages (from ephemeral trace events). */
|
|
285
|
-
#streaming = Atom.make([]);
|
|
286
|
-
/** Set of message IDs that have been finalized (non-pending delivered via ephemeral). */
|
|
287
|
-
#finalizedIds = /* @__PURE__ */ new Set();
|
|
288
|
-
/** Currently active request fiber. */
|
|
289
|
-
#requestFiber;
|
|
290
|
-
/** Last request (for retries). */
|
|
291
|
-
#lastRequest;
|
|
292
|
-
/** Streaming state. */
|
|
293
|
-
streaming = Atom.make((get) => get(this.#streaming).length > 0);
|
|
294
|
-
/** Active state. */
|
|
295
|
-
active = Atom.make(false);
|
|
296
|
-
/** Array of Messages (incl. the current message being streamed). */
|
|
297
|
-
messages = Atom.make((get) => [
|
|
298
|
-
...get(this.#pending),
|
|
299
|
-
...get(this.#streaming)
|
|
300
|
-
]);
|
|
301
|
-
/** Last error. */
|
|
302
|
-
error = Atom.make(Option.none());
|
|
303
|
-
/**
|
|
304
|
-
* MCP server connection errors observed during the most recent request.
|
|
305
|
-
* Misconfigured/unreachable servers are dropped from the toolkit so the chat
|
|
306
|
-
* keeps working; the entries here let the UI display which servers failed.
|
|
307
|
-
*/
|
|
308
|
-
mcpErrors = Atom.make([]);
|
|
309
|
-
constructor(_conversation, _runtime, _feed, _spaceLayer, _options = defaultOptions) {
|
|
310
|
-
this._conversation = _conversation;
|
|
311
|
-
this._runtime = _runtime;
|
|
312
|
-
this._feed = _feed;
|
|
313
|
-
this._spaceLayer = _spaceLayer;
|
|
314
|
-
this._options = _options;
|
|
315
|
-
this.#registry = this._options.observableRegistry ?? AtomRegistry.make();
|
|
316
|
-
if (this._options.model && !this._options.system) {
|
|
317
|
-
const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};
|
|
318
|
-
this._options.system = createSystemPrompt(capabilities);
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
get context() {
|
|
322
|
-
return this._conversation.context;
|
|
323
|
-
}
|
|
324
|
-
get conversation() {
|
|
325
|
-
return this._conversation;
|
|
326
|
-
}
|
|
327
|
-
get registry() {
|
|
328
|
-
return this._options.registry;
|
|
329
|
-
}
|
|
330
|
-
get system() {
|
|
331
|
-
return this._options.system ?? "";
|
|
332
|
-
}
|
|
333
|
-
async getTools() {
|
|
334
|
-
return this._runtime.runPromise(Effect.provide(this._conversation.getTools(), ToolExecutionServices).pipe(Effect.provide(this._spaceLayer)));
|
|
335
|
-
}
|
|
336
|
-
async getSystemPrompt() {
|
|
337
|
-
return this._runtime.runPromise(Effect.gen(this, function* () {
|
|
338
|
-
const blueprints = this.context.getBlueprints();
|
|
339
|
-
const objects = this.context.getObjects();
|
|
340
|
-
return yield* formatSystemPrompt({
|
|
341
|
-
system: this._options.system,
|
|
342
|
-
blueprints,
|
|
343
|
-
objects
|
|
344
|
-
});
|
|
345
|
-
}).pipe(Effect.provideService(AiContext.Service, {
|
|
346
|
-
binder: this.context
|
|
347
|
-
}), Effect.provide(this._spaceLayer), Effect.orDie));
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Initiates a new request via AgentService.
|
|
351
|
-
*/
|
|
352
|
-
async request(requestProp) {
|
|
353
|
-
if (this.#requestFiber) {
|
|
354
|
-
await this.cancel();
|
|
355
|
-
}
|
|
356
|
-
try {
|
|
357
|
-
this.#lastRequest = requestProp;
|
|
358
|
-
this.#registry.set(this.error, Option.none());
|
|
359
|
-
this.#registry.set(this.mcpErrors, []);
|
|
360
|
-
this.#registry.set(this.active, true);
|
|
361
|
-
const effect = Effect.gen(this, function* () {
|
|
362
|
-
log.info("init agent session", {
|
|
363
|
-
feed: Obj2.getURI(this._feed),
|
|
364
|
-
model: this._options.model
|
|
365
|
-
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 136, S: this });
|
|
366
|
-
const session = yield* AgentService.getSession(this._feed, {
|
|
367
|
-
model: this._options.model
|
|
368
|
-
});
|
|
369
|
-
const ephemeralStream = session.subscribeEphemeral();
|
|
370
|
-
yield* ephemeralStream.pipe(Stream.runForEach((message) => Effect.sync(() => {
|
|
371
|
-
for (const event of message.events) {
|
|
372
|
-
if (Trace.isOfType(PartialBlock, event)) {
|
|
373
|
-
this.#handleEphemeralMessage(event.data);
|
|
374
|
-
} else if (Trace.isOfType(McpServerError, event)) {
|
|
375
|
-
this.#handleMcpError(event.data);
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
})), Effect.fork);
|
|
379
|
-
log("chat processor submitting prompt", {
|
|
380
|
-
length: requestProp.message.length
|
|
381
|
-
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 153, S: this });
|
|
382
|
-
yield* session.submitPrompt(requestProp.message);
|
|
383
|
-
log("chat processor submitPrompt returned, waiting for agent", {}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 157, S: this });
|
|
384
|
-
if (!this._options.chat?.target?.name) {
|
|
385
|
-
yield* this.#updateChatName(requestProp.message);
|
|
386
|
-
}
|
|
387
|
-
yield* session.waitForCompletion();
|
|
388
|
-
log.info("session complete", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 164, S: this });
|
|
389
|
-
this.#flushStreaming();
|
|
390
|
-
});
|
|
391
|
-
this.#requestFiber = this._runtime.runFork(effect.pipe(Effect.provide(this._spaceLayer)));
|
|
392
|
-
const exit = await this._runtime.runPromise(Fiber.await(this.#requestFiber));
|
|
393
|
-
if (Exit.isFailure(exit)) {
|
|
394
|
-
if (Cause.isInterruptedOnly(exit.cause)) {
|
|
395
|
-
return;
|
|
396
|
-
}
|
|
397
|
-
throw EffectEx.causeToError(exit.cause);
|
|
398
|
-
}
|
|
399
|
-
this.#registry.set(this.error, Option.none());
|
|
400
|
-
this.#lastRequest = void 0;
|
|
401
|
-
this.#requestFiber = void 0;
|
|
402
|
-
} catch (err) {
|
|
403
|
-
log.error("request failed", {
|
|
404
|
-
error: err
|
|
405
|
-
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 183, S: this });
|
|
406
|
-
this.#registry.set(this.error, Option.some(parseError(err)));
|
|
407
|
-
} finally {
|
|
408
|
-
log.info("setting active to false", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 188, S: this });
|
|
409
|
-
this.#registry.set(this.active, false);
|
|
410
|
-
this.#requestFiber = void 0;
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
/**
|
|
414
|
-
* Cancels the current request.
|
|
415
|
-
*/
|
|
416
|
-
async cancel() {
|
|
417
|
-
await EffectEx.runAndForwardErrors(Effect.gen(this, function* () {
|
|
418
|
-
log.info("cancelling request", {
|
|
419
|
-
fiber: this.#requestFiber
|
|
420
|
-
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 197, S: this });
|
|
421
|
-
if (this.#requestFiber) {
|
|
422
|
-
yield* Fiber.interrupt(this.#requestFiber);
|
|
423
|
-
}
|
|
424
|
-
const session = yield* AgentService.getSession(this._feed);
|
|
425
|
-
yield* session.terminate();
|
|
426
|
-
}).pipe(Effect.provide(this._spaceLayer)));
|
|
427
|
-
this.#requestFiber = void 0;
|
|
428
|
-
this.#registry.set(this.active, false);
|
|
429
|
-
}
|
|
430
|
-
/**
|
|
431
|
-
* Retry last failed request.
|
|
432
|
-
*/
|
|
433
|
-
async retry() {
|
|
434
|
-
if (this.#lastRequest) {
|
|
435
|
-
return this.request(this.#lastRequest);
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
/**
|
|
439
|
-
* Clears the recorded MCP server errors (e.g. after the user dismisses the warning banner).
|
|
440
|
-
*/
|
|
441
|
-
dismissMcpErrors() {
|
|
442
|
-
this.#registry.set(this.mcpErrors, []);
|
|
443
|
-
}
|
|
444
|
-
/**
|
|
445
|
-
* Update the current chat's name.
|
|
446
|
-
*/
|
|
447
|
-
async updateName(chat) {
|
|
448
|
-
const spaceId = Obj2.getDatabase(chat)?.spaceId;
|
|
449
|
-
if (!spaceId) {
|
|
450
|
-
return;
|
|
451
|
-
}
|
|
452
|
-
EffectEx.unwrapExit(await this._runtime.runPromiseExit(Operation.invoke(AssistantOperation.UpdateChatName, {
|
|
453
|
-
chat
|
|
454
|
-
}, {
|
|
455
|
-
spaceId
|
|
456
|
-
}).pipe(Effect.provide(this._spaceLayer))));
|
|
457
|
-
}
|
|
458
|
-
/**
|
|
459
|
-
* Handles an ephemeral message from the agent process.
|
|
460
|
-
* Both pending and completed blocks arrive here. Completed blocks are deduped
|
|
461
|
-
* against messages already written to the feed queue to handle the race between
|
|
462
|
-
* ephemeral delivery and feed replication.
|
|
463
|
-
*/
|
|
464
|
-
#handleEphemeralMessage(event) {
|
|
465
|
-
const isPending = event.block.pending;
|
|
466
|
-
const message = Obj2.make(Message.Message, {
|
|
467
|
-
id: event.messageId,
|
|
468
|
-
created: (/* @__PURE__ */ new Date()).toISOString(),
|
|
469
|
-
sender: {
|
|
470
|
-
role: event.role
|
|
471
|
-
},
|
|
472
|
-
blocks: [
|
|
473
|
-
event.block
|
|
474
|
-
]
|
|
475
|
-
});
|
|
476
|
-
if (isPending) {
|
|
477
|
-
if (this.#finalizedIds.has(event.messageId)) {
|
|
478
|
-
return;
|
|
479
|
-
}
|
|
480
|
-
this.#registry.update(this.#streaming, (streaming) => {
|
|
481
|
-
const idx = streaming.findIndex((existing) => existing.id === event.messageId);
|
|
482
|
-
if (idx >= 0) {
|
|
483
|
-
const updated = [
|
|
484
|
-
...streaming
|
|
485
|
-
];
|
|
486
|
-
updated[idx] = message;
|
|
487
|
-
return updated;
|
|
488
|
-
}
|
|
489
|
-
return [
|
|
490
|
-
...streaming,
|
|
491
|
-
message
|
|
492
|
-
];
|
|
493
|
-
});
|
|
494
|
-
} else {
|
|
495
|
-
this.#finalizedIds.add(event.messageId);
|
|
496
|
-
this.#registry.update(this.#streaming, (streaming) => streaming.filter((existing) => existing.id !== message.id));
|
|
497
|
-
this.#registry.update(this.#pending, (pending) => {
|
|
498
|
-
if (pending.some((existing) => existing.id === message.id)) {
|
|
499
|
-
return pending;
|
|
500
|
-
}
|
|
501
|
-
return [
|
|
502
|
-
...pending,
|
|
503
|
-
message
|
|
504
|
-
];
|
|
505
|
-
});
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
/**
|
|
509
|
-
* Records a per-server MCP failure, deduped by url+protocol so repeat misconfigurations
|
|
510
|
-
* across turns do not spam the UI.
|
|
511
|
-
*/
|
|
512
|
-
#handleMcpError(event) {
|
|
513
|
-
log.warn("MCP server error", event, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 287, S: this });
|
|
514
|
-
this.#registry.update(this.mcpErrors, (errors) => {
|
|
515
|
-
if (errors.some((existing) => existing.url === event.url && existing.protocol === event.protocol)) {
|
|
516
|
-
return errors;
|
|
517
|
-
}
|
|
518
|
-
return [
|
|
519
|
-
...errors,
|
|
520
|
-
event
|
|
521
|
-
];
|
|
522
|
-
});
|
|
523
|
-
}
|
|
524
|
-
/**
|
|
525
|
-
* Move remaining streaming messages to pending (called when agent completes).
|
|
526
|
-
*/
|
|
527
|
-
#flushStreaming() {
|
|
528
|
-
const remaining = this.#registry.get(this.#streaming);
|
|
529
|
-
if (remaining.length > 0) {
|
|
530
|
-
this.#registry.update(this.#pending, (pending) => [
|
|
531
|
-
...pending,
|
|
532
|
-
...remaining
|
|
533
|
-
]);
|
|
534
|
-
this.#registry.set(this.#streaming, []);
|
|
535
|
-
}
|
|
536
|
-
this.#finalizedIds.clear();
|
|
537
|
-
}
|
|
538
|
-
/**
|
|
539
|
-
* Schedule a chat name update as a detached (fire-and-forget) operation.
|
|
540
|
-
* Called automatically on the first message; can also be invoked manually via the toolbar.
|
|
541
|
-
*/
|
|
542
|
-
#updateChatName(prompt) {
|
|
543
|
-
const chat = this._options.chat?.target;
|
|
544
|
-
if (!chat) {
|
|
545
|
-
return Effect.void;
|
|
546
|
-
}
|
|
547
|
-
const spaceId = Obj2.getDatabase(chat)?.spaceId;
|
|
548
|
-
if (!spaceId) {
|
|
549
|
-
return Effect.void;
|
|
550
|
-
}
|
|
551
|
-
log.info("scheduling chat name update", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 323, S: this });
|
|
552
|
-
return Operation.schedule(AssistantOperation.UpdateChatName, {
|
|
553
|
-
chat,
|
|
554
|
-
prompt
|
|
555
|
-
}, {
|
|
556
|
-
spaceId
|
|
557
|
-
});
|
|
558
|
-
}
|
|
559
|
-
};
|
|
560
|
-
|
|
561
|
-
// src/hooks/useChatProcessor.ts
|
|
562
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatProcessor.ts";
|
|
181
|
+
import { useObject } from "@dxos/react-client/echo";
|
|
182
|
+
import { useAsyncEffect } from "@dxos/react-ui";
|
|
183
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatProcessor.ts";
|
|
563
184
|
var useChatProcessor = ({ space, chat, preset, runtime: runtime3, registry, settings }) => {
|
|
564
185
|
const observableRegistry = useContext(RegistryContext);
|
|
186
|
+
const [feedSnapshot] = useObject(chat?.feed);
|
|
187
|
+
const feed = Obj2.getReactiveOrUndefined(feedSnapshot);
|
|
565
188
|
const [session, setSession] = useState2();
|
|
566
189
|
useAsyncEffect(async () => {
|
|
567
|
-
if (!space || !chat) {
|
|
568
|
-
return;
|
|
569
|
-
}
|
|
570
|
-
const feedTarget = chat.feed.target;
|
|
571
|
-
if (!feedTarget) {
|
|
190
|
+
if (!space || !chat || !feed) {
|
|
572
191
|
return;
|
|
573
192
|
}
|
|
574
|
-
const
|
|
575
|
-
const runtime4 = await EffectEx2.runAndForwardErrors(Effect2.runtime().pipe(Effect2.provide(feedServiceLayer)));
|
|
193
|
+
const runtime4 = await EffectEx.runAndForwardErrors(Effect.runtime().pipe(Effect.provide(Database.layer(space.db))));
|
|
576
194
|
const session2 = new AiSession.Session({
|
|
577
|
-
feed
|
|
195
|
+
feed,
|
|
578
196
|
runtime: runtime4,
|
|
579
197
|
registry: observableRegistry
|
|
580
198
|
});
|
|
@@ -586,9 +204,9 @@ var useChatProcessor = ({ space, chat, preset, runtime: runtime3, registry, sett
|
|
|
586
204
|
};
|
|
587
205
|
}, [
|
|
588
206
|
space,
|
|
589
|
-
chat
|
|
207
|
+
chat,
|
|
208
|
+
feed
|
|
590
209
|
]);
|
|
591
|
-
const feed = chat?.feed.target;
|
|
592
210
|
const serviceResolver = useCapability(Capabilities.ServiceResolver);
|
|
593
211
|
const processor = useMemo3(() => {
|
|
594
212
|
if (!runtime3 || !session || !chat || !feed || !space) {
|
|
@@ -596,17 +214,18 @@ var useChatProcessor = ({ space, chat, preset, runtime: runtime3, registry, sett
|
|
|
596
214
|
}
|
|
597
215
|
const spaceLayer = ServiceResolver.provide({
|
|
598
216
|
space: space.id
|
|
599
|
-
}, Database.Service,
|
|
600
|
-
|
|
217
|
+
}, Database.Service, Credential.CredentialsService, AiService.AiService, AgentService.AgentService, Registry.Service, OpaqueToolkit.OpaqueToolkitProvider).pipe(Layer.provide(Layer.succeed(ServiceResolver.ServiceResolver, serviceResolver)));
|
|
218
|
+
log("creating processor", {
|
|
601
219
|
preset,
|
|
602
220
|
model: preset?.model,
|
|
603
221
|
settings
|
|
604
|
-
}, { "~LogMeta": "~LogMeta", F:
|
|
222
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 56, S: void 0 });
|
|
605
223
|
return new AiChatProcessor(session, runtime3, feed, spaceLayer, {
|
|
606
224
|
chat: chat ? Ref2.make(chat) : void 0,
|
|
607
225
|
observableRegistry,
|
|
608
226
|
registry,
|
|
609
|
-
model: preset?.model
|
|
227
|
+
model: preset?.model,
|
|
228
|
+
provider: preset?.provider
|
|
610
229
|
});
|
|
611
230
|
}, [
|
|
612
231
|
runtime3,
|
|
@@ -623,26 +242,26 @@ var useChatProcessor = ({ space, chat, preset, runtime: runtime3, registry, sett
|
|
|
623
242
|
// src/hooks/useChatServices.ts
|
|
624
243
|
import { Capabilities as Capabilities2 } from "@dxos/app-framework";
|
|
625
244
|
import { useCapability as useCapability2 } from "@dxos/app-framework/ui";
|
|
626
|
-
import {
|
|
245
|
+
import { AppSpace } from "@dxos/app-toolkit";
|
|
627
246
|
import { useClient } from "@dxos/react-client";
|
|
628
247
|
var useChatServices = ({ id }) => {
|
|
629
248
|
const client = useClient();
|
|
630
|
-
id ??= getPersonalSpace(client)?.id;
|
|
249
|
+
id ??= AppSpace.getPersonalSpace(client)?.id;
|
|
631
250
|
const runtime3 = useCapability2(Capabilities2.ProcessManagerRuntime);
|
|
632
251
|
return id ? runtime3 : void 0;
|
|
633
252
|
};
|
|
634
253
|
|
|
635
254
|
// src/hooks/useChatToolbarActions.ts
|
|
636
|
-
import * as
|
|
255
|
+
import * as Effect2 from "effect/Effect";
|
|
637
256
|
import { useOperationInvoker } from "@dxos/app-framework/ui";
|
|
638
257
|
import { Chat } from "@dxos/assistant-toolkit";
|
|
639
258
|
import { Filter as Filter2, Obj as Obj3, Query, Type } from "@dxos/echo";
|
|
640
|
-
import { EffectEx as
|
|
259
|
+
import { EffectEx as EffectEx2 } from "@dxos/effect";
|
|
641
260
|
import { invariant } from "@dxos/invariant";
|
|
642
261
|
import { MenuBuilder, useMenuBuilder } from "@dxos/react-ui-menu";
|
|
643
262
|
import { meta } from "#meta";
|
|
644
|
-
import { AssistantOperation
|
|
645
|
-
var
|
|
263
|
+
import { AssistantOperation } from "#types";
|
|
264
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatToolbarActions.ts";
|
|
646
265
|
var useChatToolbarActions = ({ chat, companionTo }) => {
|
|
647
266
|
const { invoke } = useOperationInvoker();
|
|
648
267
|
const { db } = useChatContext("useChatToolbarActions");
|
|
@@ -652,67 +271,67 @@ var useChatToolbarActions = ({ chat, companionTo }) => {
|
|
|
652
271
|
label: [
|
|
653
272
|
"chat-toolbar.title",
|
|
654
273
|
{
|
|
655
|
-
ns: meta.
|
|
274
|
+
ns: meta.profile.key
|
|
656
275
|
}
|
|
657
276
|
]
|
|
658
277
|
}).action("new", {
|
|
659
278
|
label: [
|
|
660
279
|
"new-thread.button",
|
|
661
280
|
{
|
|
662
|
-
ns: meta.
|
|
281
|
+
ns: meta.profile.key
|
|
663
282
|
}
|
|
664
283
|
],
|
|
665
284
|
icon: "ph--plus--regular",
|
|
666
285
|
type: "new",
|
|
667
286
|
disabled: !companionTo
|
|
668
287
|
}, () => {
|
|
669
|
-
invariant(companionTo, void 0, { "~LogMeta": "~LogMeta", F:
|
|
670
|
-
return invoke(
|
|
288
|
+
invariant(companionTo, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 38, S: void 0, A: ["companionTo", ""] });
|
|
289
|
+
return invoke(AssistantOperation.SetCurrentChat, {
|
|
671
290
|
companionTo,
|
|
672
291
|
chat: void 0
|
|
673
|
-
}).pipe(
|
|
292
|
+
}).pipe(EffectEx2.runAndForwardErrors);
|
|
674
293
|
}).action("rename", {
|
|
675
294
|
label: [
|
|
676
295
|
"rename-thread.button",
|
|
677
296
|
{
|
|
678
|
-
ns: meta.
|
|
297
|
+
ns: meta.profile.key
|
|
679
298
|
}
|
|
680
299
|
],
|
|
681
300
|
icon: "ph--magic-wand--regular",
|
|
682
301
|
type: "rename",
|
|
683
302
|
disabled: !chat
|
|
684
|
-
}, () =>
|
|
685
|
-
invariant(chat, void 0, { "~LogMeta": "~LogMeta", F:
|
|
686
|
-
yield* invoke(
|
|
303
|
+
}, () => Effect2.gen(function* () {
|
|
304
|
+
invariant(chat, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 54, S: this, A: ["chat", ""] });
|
|
305
|
+
yield* invoke(AssistantOperation.UpdateChatName, {
|
|
687
306
|
chat
|
|
688
307
|
}, {
|
|
689
308
|
spaceId: db?.spaceId
|
|
690
309
|
});
|
|
691
|
-
}).pipe(
|
|
310
|
+
}).pipe(EffectEx2.runAndForwardErrors)).action("branch", {
|
|
692
311
|
label: [
|
|
693
312
|
"branch-thread.menu",
|
|
694
313
|
{
|
|
695
|
-
ns: meta.
|
|
314
|
+
ns: meta.profile.key
|
|
696
315
|
}
|
|
697
316
|
],
|
|
698
317
|
icon: "ph--git-branch--regular",
|
|
699
318
|
type: "branch",
|
|
700
319
|
disabled: !chat || !db
|
|
701
|
-
}, () =>
|
|
702
|
-
invariant(chat, void 0, { "~LogMeta": "~LogMeta", F:
|
|
703
|
-
yield* invoke(
|
|
320
|
+
}, () => Effect2.gen(function* () {
|
|
321
|
+
invariant(chat, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 71, S: this, A: ["chat", ""] });
|
|
322
|
+
yield* invoke(AssistantOperation.ForkChat, {
|
|
704
323
|
chat,
|
|
705
324
|
companionTo
|
|
706
325
|
}, {
|
|
707
326
|
spaceId: db?.spaceId
|
|
708
327
|
});
|
|
709
|
-
}).pipe(
|
|
328
|
+
}).pipe(EffectEx2.runAndForwardErrors));
|
|
710
329
|
if (chats.length > 0) {
|
|
711
330
|
builder.group("chats", {
|
|
712
331
|
label: [
|
|
713
332
|
"chat-history.label",
|
|
714
333
|
{
|
|
715
|
-
ns: meta.
|
|
334
|
+
ns: meta.profile.key
|
|
716
335
|
}
|
|
717
336
|
],
|
|
718
337
|
icon: "ph--clock-counter-clockwise--regular",
|
|
@@ -728,13 +347,13 @@ var useChatToolbarActions = ({ chat, companionTo }) => {
|
|
|
728
347
|
ns: Type.getTypename(Chat.Chat)
|
|
729
348
|
}
|
|
730
349
|
]
|
|
731
|
-
}, () =>
|
|
732
|
-
invariant(companionTo, void 0, { "~LogMeta": "~LogMeta", F:
|
|
733
|
-
yield* invoke(
|
|
350
|
+
}, () => Effect2.gen(function* () {
|
|
351
|
+
invariant(companionTo, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 102, S: this, A: ["companionTo", ""] });
|
|
352
|
+
yield* invoke(AssistantOperation.SetCurrentChat, {
|
|
734
353
|
companionTo,
|
|
735
354
|
chat: chat2
|
|
736
355
|
});
|
|
737
|
-
}).pipe(
|
|
356
|
+
}).pipe(EffectEx2.runAndForwardErrors));
|
|
738
357
|
});
|
|
739
358
|
});
|
|
740
359
|
}
|
|
@@ -749,11 +368,11 @@ var useChatToolbarActions = ({ chat, companionTo }) => {
|
|
|
749
368
|
|
|
750
369
|
// src/hooks/useContextBinder.ts
|
|
751
370
|
import { RegistryContext as RegistryContext2 } from "@effect-atom/atom-react";
|
|
752
|
-
import * as
|
|
371
|
+
import * as Effect3 from "effect/Effect";
|
|
753
372
|
import { useContext as useContext2, useState as useState3 } from "react";
|
|
754
|
-
import { AiContext
|
|
755
|
-
import {
|
|
756
|
-
import { EffectEx as
|
|
373
|
+
import { AiContext } from "@dxos/assistant";
|
|
374
|
+
import { Database as Database2 } from "@dxos/echo";
|
|
375
|
+
import { EffectEx as EffectEx3 } from "@dxos/effect";
|
|
757
376
|
import { useAsyncEffect as useAsyncEffect2 } from "@dxos/react-ui";
|
|
758
377
|
var useContextBinder = (space, feed) => {
|
|
759
378
|
const registry = useContext2(RegistryContext2);
|
|
@@ -763,9 +382,8 @@ var useContextBinder = (space, feed) => {
|
|
|
763
382
|
if (!space || !feed) {
|
|
764
383
|
return;
|
|
765
384
|
}
|
|
766
|
-
const
|
|
767
|
-
const
|
|
768
|
-
const binder2 = new AiContext2.Binder({
|
|
385
|
+
const runtime3 = await EffectEx3.runAndForwardErrors(Effect3.runtime().pipe(Effect3.provide(Database2.layer(space.db))));
|
|
386
|
+
const binder2 = new AiContext.Binder({
|
|
769
387
|
feed,
|
|
770
388
|
runtime: runtime3,
|
|
771
389
|
registry
|
|
@@ -783,9 +401,9 @@ var useContextBinder = (space, feed) => {
|
|
|
783
401
|
};
|
|
784
402
|
|
|
785
403
|
// src/hooks/useContextObjects.ts
|
|
786
|
-
import { Atom
|
|
404
|
+
import { Atom, useAtomValue } from "@effect-atom/atom-react";
|
|
787
405
|
import { useCallback as useCallback2 } from "react";
|
|
788
|
-
var emptyObjectsAtom =
|
|
406
|
+
var emptyObjectsAtom = Atom.make([]);
|
|
789
407
|
var useContextObjects = ({ db, context }) => {
|
|
790
408
|
const objects = useAtomValue(context?.objects ?? emptyObjectsAtom);
|
|
791
409
|
const handleUpdateObject = useCallback2(async (dxn, checked) => {
|
|
@@ -823,12 +441,12 @@ import { trim } from "@dxos/util";
|
|
|
823
441
|
var useDebug = ({ processor }) => {
|
|
824
442
|
return useCallback3(async () => {
|
|
825
443
|
const objects = processor.context.getObjects();
|
|
826
|
-
const
|
|
444
|
+
const skills = processor.context.getSkills();
|
|
827
445
|
const system = await processor.getSystemPrompt();
|
|
828
446
|
const tools = await processor.getTools() ?? {};
|
|
829
447
|
console.group("Chat", {
|
|
830
448
|
objects,
|
|
831
|
-
|
|
449
|
+
skills
|
|
832
450
|
});
|
|
833
451
|
try {
|
|
834
452
|
console.log(trim`
|
|
@@ -848,12 +466,12 @@ var useDebug = ({ processor }) => {
|
|
|
848
466
|
};
|
|
849
467
|
|
|
850
468
|
// src/hooks/useFilteredTypes.ts
|
|
851
|
-
import * as
|
|
469
|
+
import * as Option from "effect/Option";
|
|
852
470
|
import { useEffect as useEffect2, useState as useState4 } from "react";
|
|
853
471
|
import { Type as Type2 } from "@dxos/echo";
|
|
854
472
|
import { HiddenAnnotation, getTypeAnnotation } from "@dxos/echo/Annotation";
|
|
855
473
|
import { Kind as EntityKind } from "@dxos/echo/Entity";
|
|
856
|
-
var getFilteredTypes = (db) => Array.from(new Set(db.graph.registry.list().filter(Type2.isType).filter((schema) => getTypeAnnotation(Type2.getSchema(schema))?.kind !== EntityKind.Relation).filter((schema) => !HiddenAnnotation.get(Type2.getSchema(schema)).pipe(
|
|
474
|
+
var getFilteredTypes = (db) => Array.from(new Set(db.graph.registry.list().filter(Type2.isType).filter((schema) => getTypeAnnotation(Type2.getSchema(schema))?.kind !== EntityKind.Relation).filter((schema) => !HiddenAnnotation.get(Type2.getSchema(schema)).pipe(Option.getOrElse(() => false)))));
|
|
857
475
|
var useFilteredTypes = (db) => {
|
|
858
476
|
const [types, setTypes] = useState4([]);
|
|
859
477
|
useEffect2(() => {
|
|
@@ -900,22 +518,45 @@ var useFlush = (space) => {
|
|
|
900
518
|
};
|
|
901
519
|
};
|
|
902
520
|
|
|
903
|
-
// src/hooks/useOnline.ts
|
|
904
|
-
import { useState as useState6 } from "react";
|
|
905
|
-
var useOnline = () => {
|
|
906
|
-
const [online, setOnline] = useState6(true);
|
|
907
|
-
return [
|
|
908
|
-
online,
|
|
909
|
-
setOnline
|
|
910
|
-
];
|
|
911
|
-
};
|
|
912
|
-
|
|
913
521
|
// src/hooks/usePresets.ts
|
|
914
|
-
import {
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
522
|
+
import { useAtomValue as useAtomValue2 } from "@effect-atom/atom-react";
|
|
523
|
+
import { useCallback as useCallback5, useEffect as useEffect3, useMemo as useMemo4, useState as useState6 } from "react";
|
|
524
|
+
import { Provider } from "@dxos/ai";
|
|
525
|
+
import { useOptionalCapability } from "@dxos/app-framework/ui";
|
|
526
|
+
import { EffectEx as EffectEx4 } from "@dxos/effect";
|
|
527
|
+
import { AssistantCapabilities, Ollama } from "#types";
|
|
528
|
+
var usePresets = (settings) => {
|
|
529
|
+
const [preset, setPreset] = useState6();
|
|
530
|
+
const ollamaManager = useOptionalCapability(AssistantCapabilities.OllamaManager);
|
|
531
|
+
const provider = resolveProvider(settings.modelProvider, !!ollamaManager);
|
|
532
|
+
const defaultModel = settings.modelDefaults?.[defaultsKeyForProvider(provider)];
|
|
533
|
+
const localModels = useAtomValue2(ollamaManager?.state ?? Ollama.emptyState);
|
|
534
|
+
useEffect3(() => {
|
|
535
|
+
if (provider === Provider.builtIn.id && ollamaManager && localModels.kind === "idle") {
|
|
536
|
+
void EffectEx4.runPromise(ollamaManager.refresh);
|
|
537
|
+
}
|
|
538
|
+
}, [
|
|
539
|
+
provider,
|
|
540
|
+
ollamaManager,
|
|
541
|
+
localModels.kind
|
|
542
|
+
]);
|
|
543
|
+
const lmStudioProbeUrl = provider === Provider.lmStudio.id && ollamaManager ? `${Provider.lmStudio.endpoint}/v1/models` : void 0;
|
|
544
|
+
const lmStudioReachable = useEndpointReachable(lmStudioProbeUrl);
|
|
545
|
+
const presets = useMemo4(() => {
|
|
546
|
+
const base = presetsForProvider(provider);
|
|
547
|
+
if (provider === Provider.lmStudio.id && ollamaManager) {
|
|
548
|
+
return lmStudioReachable ? base : [];
|
|
549
|
+
}
|
|
550
|
+
if (provider === Provider.builtIn.id && ollamaManager) {
|
|
551
|
+
const installed = new Set(localModels.models.map((model) => model.name));
|
|
552
|
+
return base.filter((preset2) => installed.has(preset2.backend));
|
|
553
|
+
}
|
|
554
|
+
return base;
|
|
555
|
+
}, [
|
|
556
|
+
provider,
|
|
557
|
+
ollamaManager,
|
|
558
|
+
lmStudioReachable,
|
|
559
|
+
localModels
|
|
919
560
|
]);
|
|
920
561
|
const presetOptions = useMemo4(() => presets.map(({ id, model, label }) => ({
|
|
921
562
|
id,
|
|
@@ -924,9 +565,11 @@ var usePresets = (online) => {
|
|
|
924
565
|
presets
|
|
925
566
|
]);
|
|
926
567
|
useEffect3(() => {
|
|
927
|
-
|
|
568
|
+
const configured = defaultModel ? presets.find((preset2) => preset2.model === defaultModel) : void 0;
|
|
569
|
+
setPreset(configured ?? presets[0]);
|
|
928
570
|
}, [
|
|
929
|
-
presets
|
|
571
|
+
presets,
|
|
572
|
+
defaultModel
|
|
930
573
|
]);
|
|
931
574
|
const handlePresetChange = useCallback5((id) => {
|
|
932
575
|
const preset2 = presets.find((preset3) => preset3.id === id);
|
|
@@ -942,6 +585,29 @@ var usePresets = (online) => {
|
|
|
942
585
|
onPresetChange: handlePresetChange
|
|
943
586
|
};
|
|
944
587
|
};
|
|
588
|
+
var useEndpointReachable = (url) => {
|
|
589
|
+
const [reachable, setReachable] = useState6(false);
|
|
590
|
+
useEffect3(() => {
|
|
591
|
+
if (!url) {
|
|
592
|
+
setReachable(false);
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
let active = true;
|
|
596
|
+
const controller = new AbortController();
|
|
597
|
+
const timer = setTimeout(() => controller.abort(), 1500);
|
|
598
|
+
fetch(url, {
|
|
599
|
+
signal: controller.signal
|
|
600
|
+
}).then((response) => active && setReachable(response.ok)).catch(() => active && setReachable(false)).finally(() => clearTimeout(timer));
|
|
601
|
+
return () => {
|
|
602
|
+
active = false;
|
|
603
|
+
controller.abort();
|
|
604
|
+
clearTimeout(timer);
|
|
605
|
+
};
|
|
606
|
+
}, [
|
|
607
|
+
url
|
|
608
|
+
]);
|
|
609
|
+
return reachable;
|
|
610
|
+
};
|
|
945
611
|
|
|
946
612
|
// src/hooks/useReferencesProvider.ts
|
|
947
613
|
import { useMemo as useMemo5 } from "react";
|
|
@@ -972,10 +638,225 @@ var useReferencesProvider = (space) => {
|
|
|
972
638
|
]);
|
|
973
639
|
};
|
|
974
640
|
var stringMatch = (query, label) => label.toLowerCase().startsWith(query.toLowerCase());
|
|
641
|
+
|
|
642
|
+
// src/hooks/useTraceMessages.ts
|
|
643
|
+
import { Atom as Atom2 } from "@effect-atom/atom";
|
|
644
|
+
import { useAtomValue as useAtomValue3 } from "@effect-atom/atom-react";
|
|
645
|
+
import { pipe } from "effect/Function";
|
|
646
|
+
import { useMemo as useMemo6 } from "react";
|
|
647
|
+
import { Trace } from "@dxos/compute";
|
|
648
|
+
import { Filter as Filter4, Query as Query2 } from "@dxos/echo";
|
|
649
|
+
import { FeedTraceSink } from "@dxos/functions-runtime";
|
|
650
|
+
var atomEmpty = Atom2.make(() => []);
|
|
651
|
+
var getTraceMessagesAtom = (space) => pipe(space.db.query(FeedTraceSink.query).atom, Atom2.map((feeds) => (
|
|
652
|
+
// TODO(dmaretskyi): Single query with limit(1) and feed traversal when query supports it.
|
|
653
|
+
space.db.query(feeds.length > 0 ? Query2.type(Trace.Message).from(feeds[0]) : Query2.select(Filter4.nothing())).atom
|
|
654
|
+
)), (atom) => Atom2.make((get) => get(get(atom))));
|
|
655
|
+
var useTraceMessages = (space) => {
|
|
656
|
+
const atom = useMemo6(() => space ? getTraceMessagesAtom(space) : atomEmpty, [
|
|
657
|
+
space
|
|
658
|
+
]);
|
|
659
|
+
return useAtomValue3(atom);
|
|
660
|
+
};
|
|
661
|
+
|
|
662
|
+
// src/hooks/useHomeSuggestions.ts
|
|
663
|
+
import { useMemo as useMemo7, useState as useState7 } from "react";
|
|
664
|
+
import { useOperationInvoker as useOperationInvoker2 } from "@dxos/app-framework/ui";
|
|
665
|
+
import { useAsyncEffect as useAsyncEffect3, useTranslation } from "@dxos/react-ui";
|
|
666
|
+
import { meta as meta2 } from "#meta";
|
|
667
|
+
import { AssistantOperation as AssistantOperation2 } from "#types";
|
|
668
|
+
var FALLBACK_SUGGESTION_KEYS = [
|
|
669
|
+
"space-home.suggestion-magazine.label",
|
|
670
|
+
"space-home.suggestion-spreadsheet.label",
|
|
671
|
+
"space-home.suggestion-kanban.label"
|
|
672
|
+
];
|
|
673
|
+
var useHomeSuggestions = (space) => {
|
|
674
|
+
const { t } = useTranslation(meta2.profile.key);
|
|
675
|
+
const { invokePromise } = useOperationInvoker2();
|
|
676
|
+
const fallbacks = useMemo7(() => FALLBACK_SUGGESTION_KEYS.map((key) => t(key, {
|
|
677
|
+
year: (/* @__PURE__ */ new Date()).getFullYear()
|
|
678
|
+
})), [
|
|
679
|
+
t
|
|
680
|
+
]);
|
|
681
|
+
const [suggestions, setSuggestions] = useState7(void 0);
|
|
682
|
+
useAsyncEffect3(async (controller) => {
|
|
683
|
+
setSuggestions(void 0);
|
|
684
|
+
if (!space) {
|
|
685
|
+
return;
|
|
686
|
+
}
|
|
687
|
+
const result = await invokePromise(AssistantOperation2.GenerateHomeSuggestions, {
|
|
688
|
+
db: space.db
|
|
689
|
+
}, {
|
|
690
|
+
spaceId: space.db.spaceId
|
|
691
|
+
});
|
|
692
|
+
if (controller.signal.aborted) {
|
|
693
|
+
return;
|
|
694
|
+
}
|
|
695
|
+
const prompts = result.data?.prompts;
|
|
696
|
+
setSuggestions(prompts && prompts.length > 0 ? prompts : fallbacks);
|
|
697
|
+
}, [
|
|
698
|
+
space,
|
|
699
|
+
invokePromise
|
|
700
|
+
]);
|
|
701
|
+
return suggestions;
|
|
702
|
+
};
|
|
703
|
+
|
|
704
|
+
// src/hooks/useProcessEphemeralStatus.ts
|
|
705
|
+
import { Atom as Atom3 } from "@effect-atom/atom";
|
|
706
|
+
import { useAtomValue as useAtomValue4 } from "@effect-atom/atom-react";
|
|
707
|
+
import * as Effect4 from "effect/Effect";
|
|
708
|
+
import * as Fiber from "effect/Fiber";
|
|
709
|
+
import * as Stream from "effect/Stream";
|
|
710
|
+
import { useEffect as useEffect4, useMemo as useMemo8, useRef as useRef2, useState as useState8 } from "react";
|
|
711
|
+
import { Capabilities as Capabilities3 } from "@dxos/app-framework";
|
|
712
|
+
import { useOptionalCapability as useOptionalCapability2 } from "@dxos/app-framework/ui";
|
|
713
|
+
import { Process, ServiceResolver as ServiceResolver2 } from "@dxos/compute";
|
|
714
|
+
import { ProcessManager } from "@dxos/compute-runtime";
|
|
715
|
+
import { resolveEphemeralStatusUpdate } from "#execution-graph";
|
|
716
|
+
var atomEmpty2 = Atom3.make(() => []);
|
|
717
|
+
var ACTIVE_PROCESS_STATES = /* @__PURE__ */ new Set([
|
|
718
|
+
Process.State.RUNNING,
|
|
719
|
+
Process.State.HYBERNATING
|
|
720
|
+
]);
|
|
721
|
+
var isTerminalActivityLine = (line) => line.endsWith(" - Success") || line.endsWith(" - Error") || line === "Agent completed request";
|
|
722
|
+
var collectDescendantPids = (processes, rootPid) => {
|
|
723
|
+
const pids = /* @__PURE__ */ new Set([
|
|
724
|
+
rootPid
|
|
725
|
+
]);
|
|
726
|
+
let expanded = true;
|
|
727
|
+
while (expanded) {
|
|
728
|
+
expanded = false;
|
|
729
|
+
for (const process of processes) {
|
|
730
|
+
const pid = String(process.pid);
|
|
731
|
+
const parentPid = process.parentPid ? String(process.parentPid) : void 0;
|
|
732
|
+
if (parentPid && pids.has(parentPid) && !pids.has(pid)) {
|
|
733
|
+
pids.add(pid);
|
|
734
|
+
expanded = true;
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
return pids;
|
|
739
|
+
};
|
|
740
|
+
var resolveSubscribePids = (agentPid, processes) => {
|
|
741
|
+
const rootPid = String(agentPid);
|
|
742
|
+
const descendants = collectDescendantPids(processes, rootPid);
|
|
743
|
+
const activePids = processes.filter((process) => descendants.has(String(process.pid)) && ACTIVE_PROCESS_STATES.has(process.state)).map((process) => process.pid);
|
|
744
|
+
if (activePids.length > 0) {
|
|
745
|
+
return activePids;
|
|
746
|
+
}
|
|
747
|
+
return [
|
|
748
|
+
agentPid
|
|
749
|
+
];
|
|
750
|
+
};
|
|
751
|
+
var attachActiveHandle = (processManager, pid) => Effect4.gen(function* () {
|
|
752
|
+
const maxAttempts = 15;
|
|
753
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
754
|
+
const handle = yield* processManager.attach(pid).pipe(Effect4.catchAll(() => Effect4.succeed(void 0)));
|
|
755
|
+
if (handle && ACTIVE_PROCESS_STATES.has(handle.status.state)) {
|
|
756
|
+
return handle;
|
|
757
|
+
}
|
|
758
|
+
if (handle) {
|
|
759
|
+
return void 0;
|
|
760
|
+
}
|
|
761
|
+
yield* Effect4.sleep(100);
|
|
762
|
+
}
|
|
763
|
+
return void 0;
|
|
764
|
+
});
|
|
765
|
+
var useProcessEphemeralStatus = (agentPid, space) => {
|
|
766
|
+
const runtime3 = useOptionalCapability2(Capabilities3.ProcessManagerRuntime);
|
|
767
|
+
const monitor = useOptionalCapability2(Capabilities3.ProcessMonitor);
|
|
768
|
+
const processes = useAtomValue4(monitor?.processTreeAtom ?? atomEmpty2);
|
|
769
|
+
const [status, setStatus] = useState8();
|
|
770
|
+
const fibersRef = useRef2([]);
|
|
771
|
+
const subscribePidsKey = useMemo8(() => {
|
|
772
|
+
if (!agentPid) {
|
|
773
|
+
return "";
|
|
774
|
+
}
|
|
775
|
+
return resolveSubscribePids(agentPid, processes).map((pid) => String(pid)).sort().join("|");
|
|
776
|
+
}, [
|
|
777
|
+
agentPid,
|
|
778
|
+
processes
|
|
779
|
+
]);
|
|
780
|
+
useEffect4(() => {
|
|
781
|
+
if (!agentPid || !space?.id || !runtime3 || !subscribePidsKey) {
|
|
782
|
+
setStatus(void 0);
|
|
783
|
+
return;
|
|
784
|
+
}
|
|
785
|
+
const pids = subscribePidsKey.split("|").map((pid) => Process.ID.make(pid));
|
|
786
|
+
let disposed = false;
|
|
787
|
+
let replaying = true;
|
|
788
|
+
let replayStatus;
|
|
789
|
+
const endReplay = () => {
|
|
790
|
+
replaying = false;
|
|
791
|
+
if (!disposed) {
|
|
792
|
+
setStatus(replayStatus);
|
|
793
|
+
}
|
|
794
|
+
};
|
|
795
|
+
queueMicrotask(endReplay);
|
|
796
|
+
fibersRef.current = [];
|
|
797
|
+
const handleEphemeralMessage = (message) => {
|
|
798
|
+
const update = resolveEphemeralStatusUpdate(message);
|
|
799
|
+
if (update === "unchanged") {
|
|
800
|
+
return;
|
|
801
|
+
}
|
|
802
|
+
if (replaying) {
|
|
803
|
+
replayStatus = update.line;
|
|
804
|
+
return;
|
|
805
|
+
}
|
|
806
|
+
setStatus(update.line);
|
|
807
|
+
};
|
|
808
|
+
const layer = ServiceResolver2.provide({
|
|
809
|
+
space: space.id
|
|
810
|
+
}, ProcessManager.ProcessManagerService);
|
|
811
|
+
const subscribe = (pid) => Effect4.gen(function* () {
|
|
812
|
+
if (disposed) {
|
|
813
|
+
return;
|
|
814
|
+
}
|
|
815
|
+
const processManager = yield* ProcessManager.ProcessManagerService;
|
|
816
|
+
const handle = yield* attachActiveHandle(processManager, pid);
|
|
817
|
+
if (!handle || disposed) {
|
|
818
|
+
return;
|
|
819
|
+
}
|
|
820
|
+
const fiber = yield* handle.subscribeEphemeral().pipe(Stream.runForEach((message) => Effect4.sync(() => {
|
|
821
|
+
if (disposed) {
|
|
822
|
+
return;
|
|
823
|
+
}
|
|
824
|
+
handleEphemeralMessage(message);
|
|
825
|
+
})), Effect4.forkDaemon);
|
|
826
|
+
if (disposed) {
|
|
827
|
+
yield* Fiber.interrupt(fiber);
|
|
828
|
+
return;
|
|
829
|
+
}
|
|
830
|
+
fibersRef.current.push(fiber);
|
|
831
|
+
});
|
|
832
|
+
void runtime3.runPromise(Effect4.forEach(pids, subscribe, {
|
|
833
|
+
concurrency: "unbounded",
|
|
834
|
+
discard: true
|
|
835
|
+
}).pipe(Effect4.provide(layer))).catch(() => {
|
|
836
|
+
if (!disposed) {
|
|
837
|
+
setStatus(void 0);
|
|
838
|
+
}
|
|
839
|
+
});
|
|
840
|
+
return () => {
|
|
841
|
+
disposed = true;
|
|
842
|
+
const fibers = fibersRef.current;
|
|
843
|
+
fibersRef.current = [];
|
|
844
|
+
for (const fiber of fibers) {
|
|
845
|
+
void runtime3.runPromise(Fiber.interrupt(fiber).pipe(Effect4.provide(layer)));
|
|
846
|
+
}
|
|
847
|
+
};
|
|
848
|
+
}, [
|
|
849
|
+
agentPid,
|
|
850
|
+
runtime3,
|
|
851
|
+
space?.id,
|
|
852
|
+
subscribePidsKey
|
|
853
|
+
]);
|
|
854
|
+
return status;
|
|
855
|
+
};
|
|
975
856
|
export {
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
857
|
+
getTraceMessagesAtom,
|
|
858
|
+
isTerminalActivityLine,
|
|
859
|
+
useActiveSkills,
|
|
979
860
|
useChatKeymapExtensions,
|
|
980
861
|
useChatProcessor,
|
|
981
862
|
useChatServices,
|
|
@@ -985,8 +866,12 @@ export {
|
|
|
985
866
|
useDebug,
|
|
986
867
|
useFilteredTypes,
|
|
987
868
|
useFlush,
|
|
988
|
-
|
|
869
|
+
useHomeSuggestions,
|
|
989
870
|
usePresets,
|
|
990
|
-
|
|
871
|
+
useProcessEphemeralStatus,
|
|
872
|
+
useReferencesProvider,
|
|
873
|
+
useSkillHandlers,
|
|
874
|
+
useSkills,
|
|
875
|
+
useTraceMessages
|
|
991
876
|
};
|
|
992
877
|
//# sourceMappingURL=index.mjs.map
|