@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
|
@@ -12,27 +12,31 @@ import * as Layer from 'effect/Layer';
|
|
|
12
12
|
import * as Option from 'effect/Option';
|
|
13
13
|
import * as Stream from 'effect/Stream';
|
|
14
14
|
|
|
15
|
-
import { type AiService,
|
|
15
|
+
import { type AiService, Model, type OpaqueToolkit } from '@dxos/ai';
|
|
16
16
|
import { Capabilities } from '@dxos/app-framework';
|
|
17
17
|
import {
|
|
18
18
|
AiContext,
|
|
19
19
|
AiSession,
|
|
20
|
-
|
|
21
|
-
formatSystemPrompt,
|
|
20
|
+
Harness,
|
|
22
21
|
McpServerError,
|
|
23
22
|
PartialBlock,
|
|
24
23
|
ToolExecutionServices,
|
|
24
|
+
createSystemPrompt,
|
|
25
|
+
formatSystemPrompt,
|
|
25
26
|
} from '@dxos/assistant';
|
|
26
27
|
import { type Chat } from '@dxos/assistant-toolkit';
|
|
27
|
-
import { type Credential, Operation, type ServiceNotAvailableError, Trace } from '@dxos/compute';
|
|
28
|
+
import { AgentService, type Credential, Operation, type ServiceNotAvailableError, Trace } from '@dxos/compute';
|
|
28
29
|
import { type Database, Feed, Obj, Ref, type Registry } from '@dxos/echo';
|
|
30
|
+
import { UsageQuotaExceededError } from '@dxos/edge-client';
|
|
29
31
|
import { EffectEx } from '@dxos/effect';
|
|
30
|
-
import {
|
|
32
|
+
import { DXN } from '@dxos/keys';
|
|
31
33
|
import { log } from '@dxos/log';
|
|
32
34
|
import { Message } from '@dxos/types';
|
|
33
35
|
|
|
34
36
|
import { AssistantOperation } from '#types';
|
|
35
37
|
|
|
38
|
+
import { findInCause } from '../util/error-cause';
|
|
39
|
+
|
|
36
40
|
/**
|
|
37
41
|
* @deprecated Services type for the old direct-conversation processor path.
|
|
38
42
|
* Retained for backward compatibility with CLI and update-name.
|
|
@@ -50,7 +54,6 @@ export type AiChatServices =
|
|
|
50
54
|
*/
|
|
51
55
|
export type SpaceServices =
|
|
52
56
|
| Database.Service
|
|
53
|
-
| Feed.FeedService
|
|
54
57
|
| Credential.CredentialsService
|
|
55
58
|
| AiService.AiService
|
|
56
59
|
| AgentService.AgentService
|
|
@@ -58,8 +61,11 @@ export type SpaceServices =
|
|
|
58
61
|
| OpaqueToolkit.OpaqueToolkitProvider;
|
|
59
62
|
|
|
60
63
|
export type AiChatProcessorOptions = {
|
|
61
|
-
model?:
|
|
62
|
-
|
|
64
|
+
model?: DXN.DXN;
|
|
65
|
+
// The selected provider, carried with the model so the agent process resolves the (provider, id)
|
|
66
|
+
// pair — the catalog's shared model ids are ambiguous without it.
|
|
67
|
+
provider?: DXN.DXN;
|
|
68
|
+
modelRegistry?: Model.Registry;
|
|
63
69
|
registry?: Registry.Registry;
|
|
64
70
|
observableRegistry?: AtomRegistry.Registry;
|
|
65
71
|
/**
|
|
@@ -70,7 +76,7 @@ export type AiChatProcessorOptions = {
|
|
|
70
76
|
};
|
|
71
77
|
|
|
72
78
|
const defaultOptions: Partial<AiChatProcessorOptions> = {
|
|
73
|
-
model:
|
|
79
|
+
model: Model.DEFAULT_EDGE,
|
|
74
80
|
};
|
|
75
81
|
|
|
76
82
|
export type ProcessorRequestOptions = {};
|
|
@@ -80,14 +86,57 @@ export type ProcessorRequest = {
|
|
|
80
86
|
options?: ProcessorRequestOptions;
|
|
81
87
|
};
|
|
82
88
|
|
|
89
|
+
/** User-facing message shown when an AI request is rejected for exceeding the account usage quota (HTTP 429). */
|
|
90
|
+
const QUOTA_EXCEEDED_MESSAGE = 'You have reached your AI usage limit for this period.';
|
|
91
|
+
|
|
92
|
+
/** An actionable next-step a chat error surfaces in its toast; the label key is resolved by the chat UI. */
|
|
93
|
+
export type ChatErrorAction = { readonly labelKey: string };
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Display error for an over-quota (HTTP 429) rejection. Declares an {@link action} so the chat toast can
|
|
97
|
+
* offer a usage-dashboard link declaratively — the UI renders whatever action an error declares rather
|
|
98
|
+
* than branching on the error type.
|
|
99
|
+
*/
|
|
100
|
+
export class AiUsageQuotaError extends Error {
|
|
101
|
+
readonly action: ChatErrorAction = { labelKey: 'view-usage.label' };
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Matches an over-quota rejection (EDGE responds 429) in error text. The typed
|
|
106
|
+
* {@link UsageQuotaExceededError} is wrapped deep in the cause chain and does not survive the
|
|
107
|
+
* agent-process boundary — the failure is rendered to a string via `Cause.pretty`, which drops
|
|
108
|
+
* nested causes — so detection also relies on the HTTP 429 that `@effect/ai`'s
|
|
109
|
+
* {@link AiError.HttpResponseError} embeds in its message (e.g. "... (429 POST ...").
|
|
110
|
+
*/
|
|
111
|
+
const QUOTA_PATTERN = /\b429\b|rate.?limit|too many requests|usage quota|quota exceeded/i;
|
|
112
|
+
|
|
113
|
+
/** Whether an error denotes an over-quota (HTTP 429) rejection, detected by typed status or message text. */
|
|
114
|
+
const isQuotaError = (err: unknown): boolean => {
|
|
115
|
+
if (AiError.isAiError(err)) {
|
|
116
|
+
if (err._tag === 'HttpResponseError' && err.response.status === 429) {
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
return QUOTA_PATTERN.test(err.description ?? err.message);
|
|
120
|
+
}
|
|
121
|
+
return typeof err === 'string' && QUOTA_PATTERN.test(err);
|
|
122
|
+
};
|
|
123
|
+
|
|
83
124
|
/**
|
|
84
125
|
* Maps a failure from the agent fiber to an error suitable for display.
|
|
85
|
-
*
|
|
126
|
+
* An over-quota (HTTP 429) rejection is surfaced as an actionable usage-limit message; the typed
|
|
127
|
+
* {@link UsageQuotaExceededError} only survives on the direct path, so {@link isQuotaError} also
|
|
128
|
+
* recognizes the stringified 429 the chat receives across the agent-process boundary.
|
|
129
|
+
* Other {@link AiError}s originate from the AI service and are actionable by the user
|
|
86
130
|
* (e.g., "model 'x' not found", "Connection refused"), so their detail is propagated.
|
|
87
131
|
* Any other failure is treated as an internal/unexpected error and reported generically
|
|
88
132
|
* to avoid leaking implementation detail.
|
|
89
133
|
*/
|
|
90
|
-
const parseError = (err: unknown): Error => {
|
|
134
|
+
export const parseError = (err: unknown): Error => {
|
|
135
|
+
const quotaError = findInCause(err, UsageQuotaExceededError.is);
|
|
136
|
+
if (quotaError || isQuotaError(err)) {
|
|
137
|
+
return new AiUsageQuotaError(quotaError?.message?.trim() || QUOTA_EXCEEDED_MESSAGE, { cause: err });
|
|
138
|
+
}
|
|
139
|
+
|
|
91
140
|
let message: string | undefined;
|
|
92
141
|
if (AiError.isAiError(err)) {
|
|
93
142
|
message = err.description?.trim() || err.message;
|
|
@@ -170,7 +219,7 @@ export class AiChatProcessor {
|
|
|
170
219
|
}
|
|
171
220
|
}
|
|
172
221
|
|
|
173
|
-
get context() {
|
|
222
|
+
get context(): AiContext.Binder {
|
|
174
223
|
return this._conversation.context;
|
|
175
224
|
}
|
|
176
225
|
|
|
@@ -195,14 +244,18 @@ export class AiChatProcessor {
|
|
|
195
244
|
async getSystemPrompt(): Promise<string> {
|
|
196
245
|
return this._runtime.runPromise(
|
|
197
246
|
Effect.gen(this, function* () {
|
|
198
|
-
const
|
|
247
|
+
const skills = this.context.getSkills();
|
|
199
248
|
const objects = this.context.getObjects();
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
Effect.
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
249
|
+
// Tier A only: system-prompt formatting runs operations that read the conversation context;
|
|
250
|
+
// the live-host Tier B control surface is not reachable from this fiber.
|
|
251
|
+
const runtime = yield* Effect.runtime<Database.Service>();
|
|
252
|
+
return yield* formatSystemPrompt({ system: this._options.system, skills, objects }).pipe(
|
|
253
|
+
Effect.provideService(
|
|
254
|
+
Harness.HarnessService,
|
|
255
|
+
Harness.fromBinder({ feed: this._feed, runtime, binder: this.context }),
|
|
256
|
+
),
|
|
257
|
+
);
|
|
258
|
+
}).pipe(Effect.provide(this._spaceLayer), Effect.orDie),
|
|
206
259
|
);
|
|
207
260
|
}
|
|
208
261
|
|
|
@@ -222,8 +275,15 @@ export class AiChatProcessor {
|
|
|
222
275
|
|
|
223
276
|
const effect = Effect.gen(this, function* () {
|
|
224
277
|
// NOTE: Gets or creates a session for the feed.
|
|
225
|
-
log.info('init agent session', {
|
|
226
|
-
|
|
278
|
+
log.info('init agent session', {
|
|
279
|
+
feed: Obj.getURI(this._feed),
|
|
280
|
+
model: this._options.model,
|
|
281
|
+
provider: this._options.provider,
|
|
282
|
+
});
|
|
283
|
+
const session = yield* AgentService.getSession(this._feed, {
|
|
284
|
+
model: this._options.model,
|
|
285
|
+
provider: this._options.provider,
|
|
286
|
+
});
|
|
227
287
|
const ephemeralStream = session.subscribeEphemeral();
|
|
228
288
|
yield* ephemeralStream.pipe(
|
|
229
289
|
Stream.runForEach((message) =>
|
|
@@ -263,6 +323,7 @@ export class AiChatProcessor {
|
|
|
263
323
|
const exit = await this._runtime.runPromise(Fiber.await(this.#requestFiber));
|
|
264
324
|
if (Exit.isFailure(exit)) {
|
|
265
325
|
if (Cause.isInterruptedOnly(exit.cause)) {
|
|
326
|
+
this.#discardStreaming();
|
|
266
327
|
return;
|
|
267
328
|
}
|
|
268
329
|
|
|
@@ -300,6 +361,7 @@ export class AiChatProcessor {
|
|
|
300
361
|
);
|
|
301
362
|
|
|
302
363
|
this.#requestFiber = undefined;
|
|
364
|
+
this.#discardStreaming();
|
|
303
365
|
this.#registry.set(this.active, false);
|
|
304
366
|
}
|
|
305
367
|
|
|
@@ -390,6 +452,14 @@ export class AiChatProcessor {
|
|
|
390
452
|
});
|
|
391
453
|
}
|
|
392
454
|
|
|
455
|
+
/**
|
|
456
|
+
* Drop in-flight streaming messages (cancel/interrupt — partial blocks are discarded).
|
|
457
|
+
*/
|
|
458
|
+
#discardStreaming() {
|
|
459
|
+
this.#registry.set(this.#streaming, []);
|
|
460
|
+
this.#finalizedIds.clear();
|
|
461
|
+
}
|
|
462
|
+
|
|
393
463
|
/**
|
|
394
464
|
* Move remaining streaming messages to pending (called when agent completes).
|
|
395
465
|
*/
|
package/src/{blueprints/assistant/blueprint.node.test.ts → skills/assistant/skill.node.test.ts}
RENAMED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
import { describe, it } from '@effect/vitest';
|
|
6
6
|
import * as Effect from 'effect/Effect';
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { DatabaseHandlers, DatabaseSkill } from '@dxos/assistant-toolkit';
|
|
9
|
+
import { Skill } from '@dxos/compute';
|
|
10
10
|
import { Feed } from '@dxos/echo';
|
|
11
11
|
import { TestHelpers } from '@dxos/effect/testing';
|
|
12
12
|
import { AgentService } from '@dxos/functions-runtime';
|
|
@@ -14,26 +14,26 @@ import { AssistantTestLayer } from '@dxos/functions-runtime/testing';
|
|
|
14
14
|
import { EntityId } from '@dxos/keys';
|
|
15
15
|
import { Organization } from '@dxos/types';
|
|
16
16
|
|
|
17
|
-
import
|
|
17
|
+
import AssistantSkill from './skill';
|
|
18
18
|
|
|
19
19
|
EntityId.dangerouslyDisableRandomness();
|
|
20
20
|
|
|
21
21
|
const TestLayer = AssistantTestLayer({
|
|
22
22
|
aiServicePreset: 'edge-remote',
|
|
23
23
|
operationHandlers: DatabaseHandlers,
|
|
24
|
-
types: [Organization.Organization,
|
|
25
|
-
|
|
24
|
+
types: [Organization.Organization, Skill.Skill, Feed.Feed],
|
|
25
|
+
skills: [AssistantSkill.make(), DatabaseSkill.make()],
|
|
26
26
|
tracing: 'pretty',
|
|
27
27
|
});
|
|
28
28
|
|
|
29
|
-
describe('Assistant
|
|
29
|
+
describe('Assistant Skill', () => {
|
|
30
30
|
// TODO(dmaretskyi): Regenerate memoized conversation with ALLOW_LLM_GENERATION=1.
|
|
31
31
|
it.effect.skip(
|
|
32
|
-
'works with Database
|
|
32
|
+
'works with Database skill to create objects',
|
|
33
33
|
Effect.fnUntraced(
|
|
34
34
|
function* (_) {
|
|
35
35
|
const agent = yield* AgentService.createSession({
|
|
36
|
-
|
|
36
|
+
skills: [AssistantSkill.make(), DatabaseSkill.make()],
|
|
37
37
|
});
|
|
38
38
|
yield* agent.submitPrompt('Create a new organization called "Test Corp".');
|
|
39
39
|
yield* agent.waitForCompletion();
|
|
@@ -4,28 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
import { LayoutOperation } from '@dxos/app-toolkit';
|
|
6
6
|
import { templates } from '@dxos/assistant';
|
|
7
|
-
import {
|
|
7
|
+
import { Skill } from '@dxos/compute';
|
|
8
8
|
|
|
9
9
|
import { AssistantOperation } from '#types';
|
|
10
10
|
|
|
11
|
-
const
|
|
11
|
+
const SKILL_KEY = 'org.dxos.skill.assistant';
|
|
12
12
|
|
|
13
13
|
const make = () =>
|
|
14
|
-
|
|
15
|
-
key:
|
|
14
|
+
Skill.make({
|
|
15
|
+
key: SKILL_KEY,
|
|
16
16
|
name: 'Assistant',
|
|
17
|
-
tools:
|
|
17
|
+
tools: Skill.toolDefinitions({
|
|
18
18
|
// TODO(wittjosiah): LayoutOperation.Open requires Capability.Service which is only available
|
|
19
|
-
// via the compute-runtime layer (plugin-
|
|
19
|
+
// via the compute-runtime layer (plugin-routine). Once Capability.Service is propagated
|
|
20
20
|
// through LocalFunctionExecutionService, this will work without the compute-runtime dependency.
|
|
21
21
|
operations: [LayoutOperation.Open, AssistantOperation.ResolveNavigationTargets],
|
|
22
22
|
}),
|
|
23
23
|
instructions: templates.system,
|
|
24
24
|
});
|
|
25
25
|
|
|
26
|
-
const
|
|
27
|
-
key:
|
|
26
|
+
const skill: Skill.Definition = {
|
|
27
|
+
key: SKILL_KEY,
|
|
28
28
|
make,
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
export default
|
|
31
|
+
export default skill;
|
|
@@ -2,16 +2,12 @@
|
|
|
2
2
|
// Copyright 2026 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type
|
|
5
|
+
import { type RoutineCapabilities } from '@dxos/plugin-routine';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { makeScheduledRoutine } from './scaffold';
|
|
8
8
|
|
|
9
9
|
/** Inbox supplies new messages; database queries recent objects; markdown writes the digest document. */
|
|
10
|
-
const
|
|
11
|
-
'org.dxos.blueprint.inbox',
|
|
12
|
-
'org.dxos.blueprint.database',
|
|
13
|
-
'org.dxos.blueprint.markdown',
|
|
14
|
-
] as const;
|
|
10
|
+
const SKILL_KEYS = ['org.dxos.skill.inbox', 'org.dxos.skill.database', 'org.dxos.skill.markdown'] as const;
|
|
15
11
|
|
|
16
12
|
/** Runs daily by default; the user edits the schedule and the scope by opening the trigger and routine. */
|
|
17
13
|
const DEFAULT_CRON = '0 9 * * *';
|
|
@@ -23,15 +19,17 @@ Review new messages in the inbox and recently changed objects. Produce a short d
|
|
|
23
19
|
highlight anything that needs attention, and write it to a markdown document titled with the current date.
|
|
24
20
|
`;
|
|
25
21
|
|
|
26
|
-
export const dailyDigest:
|
|
27
|
-
id: 'org.dxos.
|
|
22
|
+
export const dailyDigest: RoutineCapabilities.Template = {
|
|
23
|
+
id: 'org.dxos.routine.dailyDigest',
|
|
28
24
|
label: 'Daily Digest',
|
|
29
25
|
icon: 'ph--list-bullets--regular',
|
|
26
|
+
// Scheduled space-level digest — not meaningful for a specific object companion.
|
|
27
|
+
appliesTo: (subject) => subject == null,
|
|
30
28
|
scaffold: ({ name }) =>
|
|
31
|
-
|
|
29
|
+
makeScheduledRoutine({
|
|
32
30
|
name: name ?? 'Daily Digest',
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
text: DEFAULT_INSTRUCTIONS,
|
|
32
|
+
skillKeys: SKILL_KEYS,
|
|
35
33
|
cron: DEFAULT_CRON,
|
|
36
34
|
}),
|
|
37
35
|
};
|
package/src/templates/index.ts
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
// Copyright 2026 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type
|
|
5
|
+
import { type RoutineCapabilities } from '@dxos/plugin-routine';
|
|
6
6
|
|
|
7
7
|
import { dailyDigest } from './daily-digest';
|
|
8
8
|
import { researchBrief } from './research-brief';
|
|
9
9
|
|
|
10
|
-
/** Generic, subject-less
|
|
11
|
-
export const
|
|
10
|
+
/** Generic, subject-less routine templates contributed alongside plugin-routine's Blank. */
|
|
11
|
+
export const routineTemplates: RoutineCapabilities.Template[] = [researchBrief, dailyDigest];
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
// Copyright 2026 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type
|
|
5
|
+
import { type RoutineCapabilities } from '@dxos/plugin-routine';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { makeScheduledRoutine } from './scaffold';
|
|
8
8
|
|
|
9
|
-
/** The research
|
|
10
|
-
const
|
|
11
|
-
'org.dxos.
|
|
12
|
-
'org.dxos.
|
|
13
|
-
'org.dxos.
|
|
14
|
-
'org.dxos.
|
|
9
|
+
/** The research skill drives the brief; web-search, markdown, and database tools support it. */
|
|
10
|
+
const SKILL_KEYS = [
|
|
11
|
+
'org.dxos.skill.research',
|
|
12
|
+
'org.dxos.skill.webSearch',
|
|
13
|
+
'org.dxos.skill.markdown',
|
|
14
|
+
'org.dxos.skill.database',
|
|
15
15
|
] as const;
|
|
16
16
|
|
|
17
17
|
/** Runs weekly by default; the user edits the schedule and the topic by opening the trigger and routine. */
|
|
@@ -26,15 +26,17 @@ Gather current information with the web-search and research tools. Summarize the
|
|
|
26
26
|
sources you used, and create a markdown document titled with the topic and the current date.
|
|
27
27
|
`;
|
|
28
28
|
|
|
29
|
-
export const researchBrief:
|
|
30
|
-
id: 'org.dxos.
|
|
29
|
+
export const researchBrief: RoutineCapabilities.Template = {
|
|
30
|
+
id: 'org.dxos.routine.researchBrief',
|
|
31
31
|
label: 'Research Brief',
|
|
32
32
|
icon: 'ph--newspaper--regular',
|
|
33
|
+
// Scheduled space-level research — not meaningful for a specific object companion.
|
|
34
|
+
appliesTo: (subject) => subject == null,
|
|
33
35
|
scaffold: ({ name }) =>
|
|
34
|
-
|
|
36
|
+
makeScheduledRoutine({
|
|
35
37
|
name: name ?? 'Research Brief',
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
text: DEFAULT_INSTRUCTIONS,
|
|
39
|
+
skillKeys: SKILL_KEYS,
|
|
38
40
|
cron: DEFAULT_CRON,
|
|
39
41
|
}),
|
|
40
42
|
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Effect from 'effect/Effect';
|
|
6
|
+
import { describe, test } from 'vitest';
|
|
7
|
+
|
|
8
|
+
import { Instructions, Trigger } from '@dxos/compute';
|
|
9
|
+
import { Database, Obj } from '@dxos/echo';
|
|
10
|
+
import { EffectEx } from '@dxos/effect';
|
|
11
|
+
import { Routine } from '@dxos/plugin-routine';
|
|
12
|
+
|
|
13
|
+
import { dailyDigest } from './daily-digest';
|
|
14
|
+
import { researchBrief } from './research-brief';
|
|
15
|
+
|
|
16
|
+
const templates = [
|
|
17
|
+
{ template: researchBrief, skillCount: 4 },
|
|
18
|
+
{ template: dailyDigest, skillCount: 3 },
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
describe('scheduled routine templates', () => {
|
|
22
|
+
test('apply only in the global create dialog (no companion subject)', ({ expect }) => {
|
|
23
|
+
// These templates appear only in the global create dialog, not in object companions.
|
|
24
|
+
expect(dailyDigest.appliesTo?.(undefined)).toBe(true);
|
|
25
|
+
expect(researchBrief.appliesTo?.(undefined)).toBe(true);
|
|
26
|
+
expect(dailyDigest.appliesTo?.({} as Obj.Unknown)).toBe(false);
|
|
27
|
+
expect(researchBrief.appliesTo?.({} as Obj.Unknown)).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
for (const { template, skillCount } of templates) {
|
|
31
|
+
test(`${template.label} scaffolds an in-memory routine draft graph with a disabled timer trigger and instructions`, async ({
|
|
32
|
+
expect,
|
|
33
|
+
}) => {
|
|
34
|
+
// Templates are in-memory (no DB calls); Database.notAvailable surfaces any accidental DB access.
|
|
35
|
+
const draft = await EffectEx.runPromise(template.scaffold({}).pipe(Effect.provide(Database.notAvailable)));
|
|
36
|
+
|
|
37
|
+
// The draft is a routine graph wired for an instructions action (spec → RunInstructions).
|
|
38
|
+
expect(Obj.instanceOf(Routine.Routine, draft)).toBe(true);
|
|
39
|
+
expect(draft.spec?.kind).toBe('instructions');
|
|
40
|
+
|
|
41
|
+
// Timer trigger, disabled by default, owned by the routine.
|
|
42
|
+
const trigger = draft.triggers[0]?.target;
|
|
43
|
+
expect(trigger != null && Obj.instanceOf(Trigger.Trigger, trigger)).toBe(true);
|
|
44
|
+
expect(trigger?.enabled).toBe(false);
|
|
45
|
+
expect(trigger?.spec?.kind).toBe('timer');
|
|
46
|
+
|
|
47
|
+
// The owned instructions is the routine's action (an instructions action), with the right skill set.
|
|
48
|
+
const instructions = Routine.instructionsRef(draft)?.target;
|
|
49
|
+
expect(Obj.instanceOf(Instructions.Instructions, instructions)).toBe(true);
|
|
50
|
+
expect(Obj.instanceOf(Instructions.Instructions, instructions) ? instructions.skills : []).toHaveLength(
|
|
51
|
+
skillCount,
|
|
52
|
+
);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
});
|
|
@@ -3,72 +3,37 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import * as Effect from 'effect/Effect';
|
|
6
|
-
import * as Schema from 'effect/Schema';
|
|
7
6
|
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { Automation } from '@dxos/plugin-automation';
|
|
12
|
-
|
|
13
|
-
/** Registry key of the persisted AgentPrompt ("Run Routine") operation a routine trigger dispatches. */
|
|
14
|
-
const AGENT_PROMPT_KEY = 'org.dxos.function.prompt';
|
|
7
|
+
import { Instructions, Skill, Trigger } from '@dxos/compute';
|
|
8
|
+
import { Ref } from '@dxos/echo';
|
|
9
|
+
import { Routine } from '@dxos/plugin-routine/types';
|
|
15
10
|
|
|
16
11
|
export type ScheduledRoutineOptions = {
|
|
17
12
|
name: string;
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
text: string;
|
|
14
|
+
skillKeys: readonly string[];
|
|
20
15
|
cron: string;
|
|
21
16
|
};
|
|
22
17
|
|
|
23
18
|
/**
|
|
24
|
-
* Scaffold a timer-driven
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
19
|
+
* Scaffold a timer-driven routine as an in-memory {@link Routine.Routine} draft graph. The caller's save
|
|
20
|
+
* flow (the companion's Save button) persists it; nothing is added to the database here, so the function is
|
|
21
|
+
* always safe to call without DB access.
|
|
22
|
+
*
|
|
23
|
+
* The trigger starts disabled so the user can review the schedule and instructions before activating.
|
|
28
24
|
*/
|
|
29
|
-
export const
|
|
25
|
+
export const makeScheduledRoutine = ({
|
|
30
26
|
name,
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
text,
|
|
28
|
+
skillKeys,
|
|
33
29
|
cron,
|
|
34
|
-
}: ScheduledRoutineOptions): Effect.Effect<
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
Routine.make({
|
|
39
|
-
name,
|
|
40
|
-
instructions,
|
|
41
|
-
// No per-run input; the task lives in the instructions. Unknown (not Void) so the empty trigger
|
|
42
|
-
// input still validates.
|
|
43
|
-
input: Schema.Unknown,
|
|
44
|
-
output: Schema.Void,
|
|
45
|
-
blueprints,
|
|
46
|
-
context: [],
|
|
47
|
-
}),
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
// The trigger's `function` must reference an in-space PersistentOperation; reuse the space's AgentPrompt
|
|
51
|
-
// or persist it on first use.
|
|
52
|
-
const existingFns = yield* Database.query(
|
|
53
|
-
Filter.and(Filter.type(Operation.PersistentOperation), Filter.key(AGENT_PROMPT_KEY)),
|
|
54
|
-
).run;
|
|
55
|
-
const agentPromptFn = existingFns[0] ?? (yield* Database.add(Operation.serialize(AgentPrompt)));
|
|
56
|
-
|
|
57
|
-
const trigger = yield* Database.add(
|
|
58
|
-
Obj.make(Trigger.Trigger, {
|
|
59
|
-
enabled: false,
|
|
60
|
-
function: Ref.make(agentPromptFn),
|
|
61
|
-
spec: Trigger.specTimer(cron),
|
|
62
|
-
input: { prompt: Ref.make(routine), input: {} },
|
|
63
|
-
concurrency: 1,
|
|
64
|
-
}),
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
const automation = Automation.make({
|
|
30
|
+
}: ScheduledRoutineOptions): Effect.Effect<Routine.Routine, never, never> => {
|
|
31
|
+
const skills = skillKeys.map((key) => Ref.fromURI(Skill.registryURI(key)));
|
|
32
|
+
return Effect.succeed(
|
|
33
|
+
Routine.make({
|
|
68
34
|
name,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
});
|
|
35
|
+
instructions: Instructions.make({ name, text, skills }),
|
|
36
|
+
trigger: Trigger.make({ spec: Trigger.specTimer(cron), enabled: false }),
|
|
37
|
+
}),
|
|
38
|
+
);
|
|
39
|
+
};
|