@dxos/plugin-assistant 0.8.4-main.abd8ff62ef → 0.8.4-main.bc2380dfbc
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/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/neutral/AgentArticle-5XDDEXMP.mjs +169 -0
- package/dist/lib/neutral/AgentArticle-5XDDEXMP.mjs.map +7 -0
- package/dist/lib/neutral/AgentProperties-CNH4JMDZ.mjs +100 -0
- package/dist/lib/neutral/AgentProperties-CNH4JMDZ.mjs.map +7 -0
- package/dist/lib/neutral/AssistantPlugin.mjs +10 -0
- package/dist/lib/neutral/AssistantPlugin.node.mjs +46 -0
- package/dist/lib/neutral/AssistantPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/AssistantPlugin.workerd.mjs +40 -0
- package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs +27 -0
- package/dist/lib/neutral/BlueprintArticle-U7LUBFOS.mjs.map +7 -0
- package/dist/lib/neutral/ChatArticle-WVAFZPVI.mjs +8 -0
- package/dist/lib/neutral/ChatCompanion-DFRMRUK3.mjs +133 -0
- package/dist/lib/neutral/ChatCompanion-DFRMRUK3.mjs.map +7 -0
- package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs +72 -0
- package/dist/lib/neutral/ChatDialog-QKZLG7SQ.mjs.map +7 -0
- package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs +28 -0
- package/dist/lib/neutral/PlanArticle-TS5ULWYS.mjs.map +7 -0
- package/dist/lib/neutral/RoutineArticle-H7ECM7AH.mjs +116 -0
- package/dist/lib/neutral/RoutineArticle-H7ECM7AH.mjs.map +7 -0
- package/dist/lib/neutral/RoutineList-CLDXGQUD.mjs +48 -0
- package/dist/lib/neutral/RoutineList-CLDXGQUD.mjs.map +7 -0
- package/dist/lib/neutral/TracePanel-C77SPEIS.mjs +672 -0
- package/dist/lib/neutral/TracePanel-C77SPEIS.mjs.map +7 -0
- package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs +92 -0
- package/dist/lib/neutral/TriggerStatus-WTFYUIG5.mjs.map +7 -0
- package/dist/lib/neutral/ai-service-GJXMI5OI.mjs +22 -0
- package/dist/lib/neutral/ai-service-GJXMI5OI.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-5QBICPYP.mjs +200 -0
- package/dist/lib/neutral/app-graph-builder-5QBICPYP.mjs.map +7 -0
- package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs +32 -0
- package/dist/lib/neutral/blueprint-definition-VXJYQ5AE.mjs.map +7 -0
- package/dist/lib/neutral/blueprints/index.mjs +8 -0
- package/dist/lib/neutral/capabilities/index.mjs +35 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-3FIV362Z.mjs +8 -0
- package/dist/lib/neutral/chunk-3FIV362Z.mjs.map +7 -0
- package/dist/lib/neutral/chunk-4CQZCMRP.mjs +25 -0
- package/dist/lib/neutral/chunk-4CQZCMRP.mjs.map +7 -0
- package/dist/lib/{browser/blueprints/index.mjs → neutral/chunk-5H6UJHLF.mjs} +4 -5
- package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +7 -0
- package/dist/lib/neutral/chunk-ITJX2YZZ.mjs +98 -0
- package/dist/lib/neutral/chunk-ITJX2YZZ.mjs.map +7 -0
- package/dist/lib/neutral/chunk-IZQWGJNG.mjs +380 -0
- package/dist/lib/neutral/chunk-IZQWGJNG.mjs.map +7 -0
- package/dist/lib/neutral/chunk-SLIPV6NN.mjs +106 -0
- package/dist/lib/neutral/chunk-SLIPV6NN.mjs.map +7 -0
- package/dist/lib/neutral/companion-chat-provisioner-2Y6PRSDK.mjs +116 -0
- package/dist/lib/neutral/companion-chat-provisioner-2Y6PRSDK.mjs.map +7 -0
- package/dist/lib/{browser/chunk-VK53MITK.mjs → neutral/components/index.mjs} +139 -141
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +29 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/{browser/create-chat-E2ZLVTLP.mjs → neutral/create-chat-QQZURUBW.mjs} +10 -12
- package/dist/lib/neutral/create-chat-QQZURUBW.mjs.map +7 -0
- package/dist/lib/neutral/create-object-UZCJCPWM.mjs +93 -0
- package/dist/lib/neutral/create-object-UZCJCPWM.mjs.map +7 -0
- package/dist/lib/neutral/edge-model-resolver-XDNBZ3US.mjs +21 -0
- package/dist/lib/neutral/edge-model-resolver-XDNBZ3US.mjs.map +7 -0
- package/dist/lib/{browser/ensure-companion-chat-7GDMXSQW.mjs → neutral/ensure-companion-chat-5S4LZM2H.mjs} +9 -16
- package/dist/lib/neutral/ensure-companion-chat-5S4LZM2H.mjs.map +7 -0
- package/dist/lib/{browser/chunk-M55MBYG7.mjs → neutral/hooks/index.mjs} +106 -111
- package/dist/lib/neutral/hooks/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +32 -0
- package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs +24 -0
- package/dist/lib/neutral/local-model-resolver-I2BENFFS.mjs.map +7 -0
- package/dist/lib/neutral/markdown-KTBFOMFM.mjs +110 -0
- package/dist/lib/neutral/markdown-KTBFOMFM.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +12 -0
- package/dist/lib/neutral/migrations-7DEMVBOG.mjs +28 -0
- package/dist/lib/neutral/migrations-7DEMVBOG.mjs.map +7 -0
- package/dist/lib/{browser/on-create-space-4J3KTNAJ.mjs → neutral/on-create-space-Q2R7OSP6.mjs} +4 -7
- package/dist/lib/neutral/on-create-space-Q2R7OSP6.mjs.map +7 -0
- package/dist/lib/neutral/operation-handler-SF36MOB5.mjs +13 -0
- package/dist/lib/neutral/operation-handler-SF36MOB5.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +8 -0
- package/dist/lib/neutral/plugin.mjs +16 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-T4R65UJU.mjs +174 -0
- package/dist/lib/neutral/react-surface-T4R65UJU.mjs.map +7 -0
- package/dist/lib/{browser/resolve-navigation-targets-3ZPQE6SZ.mjs → neutral/resolve-navigation-targets-VXBSWV5L.mjs} +3 -5
- package/dist/lib/neutral/resolve-navigation-targets-VXBSWV5L.mjs.map +7 -0
- package/dist/lib/{browser/run-prompt-in-new-chat-AA3KPBDN.mjs → neutral/run-prompt-in-new-chat-VJXXZ6SI.mjs} +16 -19
- package/dist/lib/neutral/run-prompt-in-new-chat-VJXXZ6SI.mjs.map +7 -0
- package/dist/lib/{browser/set-current-chat-P4VHI3YF.mjs → neutral/set-current-chat-ZFDCYK5I.mjs} +4 -10
- package/dist/lib/neutral/set-current-chat-ZFDCYK5I.mjs.map +7 -0
- package/dist/lib/neutral/settings-W4BLWQ53.mjs +28 -0
- package/dist/lib/neutral/settings-W4BLWQ53.mjs.map +7 -0
- package/dist/lib/neutral/state-H3G7QCU6.mjs +28 -0
- package/dist/lib/neutral/state-H3G7QCU6.mjs.map +7 -0
- package/dist/lib/neutral/testing.mjs +8 -0
- package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs +21 -0
- package/dist/lib/neutral/toggle-trace-panel-debug-JGTB6KVJ.mjs.map +7 -0
- package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs +14 -0
- package/dist/lib/neutral/toolkit-GVWXPDLJ.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/translations.mjs +5 -2
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +20 -0
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/lib/{browser/update-chat-name-VWKNUON7.mjs → neutral/update-chat-name-ENXRUMDJ.mjs} +3 -5
- package/dist/lib/neutral/update-chat-name-ENXRUMDJ.mjs.map +7 -0
- package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
- package/dist/types/src/AssistantPlugin.node.d.ts.map +1 -1
- package/dist/types/src/AssistantPlugin.workerd.d.ts +4 -0
- package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -0
- package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
- package/dist/types/src/capabilities/create-object.d.ts +31 -0
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +27 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown.d.ts +1 -1
- package/dist/types/src/capabilities/migrations.d.ts +2 -1
- package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
- package/dist/types/src/components/Chat/Chat.d.ts +11 -5
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +2 -2
- package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +2 -2
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +2 -3
- package/dist/types/src/components/ChatThread/ChatThread.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/StatusWidget.d.ts +2 -15
- package/dist/types/src/components/ChatThread/widgets/StatusWidget.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/widgets/SummaryWidget.d.ts.map +1 -1
- package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
- package/dist/types/src/components/TaskList/TaskList.d.ts +10 -0
- package/dist/types/src/components/TaskList/TaskList.d.ts.map +1 -0
- package/dist/types/src/components/TaskList/TaskList.stories.d.ts +16 -0
- package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -0
- package/dist/types/src/components/TaskList/index.d.ts +2 -0
- package/dist/types/src/components/TaskList/index.d.ts.map +1 -0
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +1 -2
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/AgentArticle/AgentArticle.d.ts.map +1 -1
- package/dist/types/src/containers/{ChatContainer/ChatContainer.d.ts → ChatArticle/ChatArticle.d.ts} +3 -3
- package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -0
- package/dist/types/src/containers/ChatArticle/index.d.ts +2 -0
- package/dist/types/src/containers/ChatArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
- package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts +6 -0
- package/dist/types/src/containers/PlanArticle/PlanArticle.d.ts.map +1 -0
- package/dist/types/src/containers/PlanArticle/index.d.ts +2 -0
- package/dist/types/src/containers/PlanArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -1
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +15 -0
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.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/execution-graph.d.ts +11 -2
- package/dist/types/src/containers/TracePanel/execution-graph.d.ts.map +1 -1
- package/dist/types/src/containers/TracePanel/span-tree.d.ts +73 -0
- package/dist/types/src/containers/TracePanel/span-tree.d.ts.map +1 -0
- package/dist/types/src/containers/TracePanel/span-tree.test.d.ts +2 -0
- package/dist/types/src/containers/TracePanel/span-tree.test.d.ts.map +1 -0
- 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/feed-logger.d.ts +13 -0
- package/dist/types/src/feed-logger.d.ts.map +1 -0
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts +3 -3
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatProcessor.d.ts +1 -1
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatServices.d.ts +1 -1
- package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
- package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
- package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
- package/dist/types/src/hooks/useContextObjects.d.ts +2 -2
- package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -4
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/operations/create-chat.d.ts +2 -2
- package/dist/types/src/operations/create-chat.d.ts.map +1 -1
- package/dist/types/src/operations/ensure-companion-chat.d.ts +2 -2
- package/dist/types/src/operations/ensure-companion-chat.d.ts.map +1 -1
- package/dist/types/src/operations/index.d.ts +0 -1
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/on-create-space.d.ts +2 -2
- package/dist/types/src/operations/on-create-space.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/operations/set-current-chat.d.ts +2 -2
- package/dist/types/src/operations/set-current-chat.d.ts.map +1 -1
- package/dist/types/src/operations/toggle-trace-panel-debug.d.ts +5 -0
- package/dist/types/src/operations/toggle-trace-panel-debug.d.ts.map +1 -0
- package/dist/types/src/operations/update-chat-name.d.ts +2 -2
- package/dist/types/src/operations/update-chat-name.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/processor/processor.d.ts +11 -11
- package/dist/types/src/processor/processor.d.ts.map +1 -1
- package/dist/types/src/testing/test-generator.d.ts +2 -3
- package/dist/types/src/testing/test-generator.d.ts.map +1 -1
- package/dist/types/src/testing/test-sequence.d.ts +3 -3
- package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
- package/dist/types/src/testing.d.ts +2 -0
- package/dist/types/src/testing.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Assistant.d.ts +1 -0
- package/dist/types/src/types/Assistant.d.ts.map +1 -1
- package/dist/types/src/types/AssistantCapabilities.d.ts +30 -0
- package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -0
- package/dist/types/src/types/AssistantEvents.d.ts +3 -0
- package/dist/types/src/types/AssistantEvents.d.ts.map +1 -0
- package/dist/types/src/{operations/definitions.d.ts → types/AssistantOperation.d.ts} +10 -6
- package/dist/types/src/types/AssistantOperation.d.ts.map +1 -0
- package/dist/types/src/types/Settings.d.ts +1 -0
- package/dist/types/src/types/Settings.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +3 -2
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/util/suggestions.d.ts +9 -0
- package/dist/types/src/util/suggestions.d.ts.map +1 -0
- package/dist/types/src/util/suggestions.test.d.ts +2 -0
- package/dist/types/src/util/suggestions.test.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +152 -128
- package/src/AssistantPlugin.node.ts +7 -88
- package/src/AssistantPlugin.test.ts +3 -3
- package/src/AssistantPlugin.ts +126 -0
- package/src/AssistantPlugin.workerd.ts +41 -0
- package/src/blueprints/assistant/blueprint.ts +1 -1
- package/src/capabilities/app-graph-builder.ts +48 -9
- package/src/capabilities/companion-chat-provisioner.ts +4 -5
- package/src/capabilities/create-object.ts +107 -0
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/markdown.ts +2 -2
- package/src/capabilities/migrations.ts +3 -3
- package/src/capabilities/react-surface.tsx +15 -7
- package/src/components/Chat/Chat.tsx +35 -5
- package/src/components/ChatPrompt/ChatMcpErrors.tsx +1 -1
- package/src/components/ChatPrompt/ChatOptions.stories.tsx +4 -4
- package/src/components/ChatPrompt/ChatOptions.tsx +12 -11
- package/src/components/ChatPrompt/ChatPrompt.tsx +3 -3
- package/src/components/ChatPrompt/ChatReferences.tsx +3 -3
- package/src/components/ChatPrompt/ChatStatus.tsx +1 -1
- package/src/components/ChatPrompt/ChatStatusIndicator.tsx +1 -1
- package/src/components/ChatThread/Anchor.stories.tsx +3 -3
- package/src/components/ChatThread/ChatThread.stories.tsx +25 -29
- package/src/components/ChatThread/ChatThread.tsx +1 -1
- package/src/components/ChatThread/registry.tsx +8 -4
- package/src/components/ChatThread/sync.test.ts +4 -6
- package/src/components/ChatThread/widgets/ReasoningWidget.ts +2 -2
- package/src/components/ChatThread/widgets/StatusWidget.ts +3 -83
- package/src/components/ChatThread/widgets/SummaryWidget.tsx +1 -3
- package/src/components/ProcessTree/ProcessTree.tsx +2 -1
- package/src/components/TaskList/TaskList.stories.tsx +44 -0
- package/src/components/TaskList/TaskList.tsx +45 -0
- package/src/{cli → components/TaskList}/index.ts +1 -1
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +1 -1
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -6
- package/src/components/TemplateEditor/TemplateForm.tsx +48 -69
- package/src/components/Toolbox/Toolbox.stories.tsx +4 -4
- package/src/components/Toolbox/Toolbox.tsx +2 -2
- package/src/components/index.ts +1 -0
- package/src/containers/AgentArticle/AgentArticle.stories.tsx +7 -7
- package/src/containers/AgentArticle/AgentArticle.tsx +11 -7
- package/src/containers/AgentProperties/AgentProperties.stories.tsx +4 -4
- package/src/containers/AgentProperties/AgentProperties.tsx +4 -4
- package/src/containers/{ChatContainer/ChatContainer.tsx → ChatArticle/ChatArticle.tsx} +11 -9
- package/src/containers/ChatArticle/index.ts +5 -0
- package/src/containers/ChatCompanion/ChatCompanion.tsx +20 -29
- package/src/containers/PlanArticle/PlanArticle.tsx +33 -0
- package/src/containers/PlanArticle/index.ts +5 -0
- package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +75 -0
- package/src/containers/RoutineArticle/RoutineArticle.tsx +74 -24
- package/src/containers/RoutineList/RoutineList.stories.tsx +3 -3
- package/src/containers/RoutineList/RoutineList.tsx +3 -3
- package/src/containers/TracePanel/TracePanel.stories.tsx +33 -26
- package/src/containers/TracePanel/TracePanel.tsx +72 -33
- package/src/containers/TracePanel/dxn-extractor.ts +7 -7
- package/src/containers/TracePanel/execution-graph.test.ts +218 -213
- package/src/containers/TracePanel/execution-graph.ts +316 -271
- package/src/containers/TracePanel/span-tree.test.ts +166 -0
- package/src/containers/TracePanel/span-tree.ts +214 -0
- package/src/containers/index.ts +4 -3
- package/src/{queue-logger.ts → feed-logger.ts} +37 -27
- package/src/hooks/useBlueprintRegistry.ts +12 -6
- package/src/hooks/useChatProcessor.ts +3 -3
- package/src/hooks/useChatServices.ts +1 -1
- package/src/hooks/useChatToolbarActions.ts +86 -88
- package/src/hooks/useContextBinder.ts +4 -4
- package/src/hooks/useContextObjects.ts +2 -2
- package/src/index.ts +2 -9
- package/src/operations/create-chat.ts +16 -11
- package/src/operations/ensure-companion-chat.ts +47 -45
- package/src/operations/index.ts +1 -2
- package/src/operations/on-create-space.ts +3 -3
- package/src/operations/prompt.test.ts +5 -5
- package/src/operations/resolve-navigation-targets.ts +2 -2
- package/src/operations/run-prompt-in-new-chat.ts +85 -84
- package/src/operations/set-current-chat.ts +3 -4
- package/src/operations/toggle-trace-panel-debug.ts +27 -0
- package/src/operations/update-chat-name.ts +2 -2
- package/src/plugin.ts +11 -0
- package/src/processor/processor.test.ts +1 -1
- package/src/processor/processor.ts +15 -15
- package/src/testing/test-generator.test.ts +41 -52
- package/src/testing/test-generator.ts +174 -189
- package/src/testing/test-sequence.ts +3 -3
- package/src/testing/trace-timeline.conversations.json +1 -1
- package/src/testing/trace-timeline.test.ts +3 -5
- package/src/testing.ts +7 -0
- package/src/translations.ts +5 -2
- package/src/types/Assistant.ts +2 -1
- package/src/types/AssistantCapabilities.ts +35 -0
- package/src/types/AssistantEvents.ts +11 -0
- package/src/{operations/definitions.ts → types/AssistantOperation.ts} +15 -0
- package/src/types/Settings.ts +6 -0
- package/src/types/index.ts +5 -2
- package/src/util/suggestions.test.ts +52 -0
- package/src/util/suggestions.ts +42 -0
- package/dist/lib/browser/blueprints/index.mjs.map +0 -7
- package/dist/lib/browser/chunk-DVOOFAWU.mjs +0 -175
- package/dist/lib/browser/chunk-DVOOFAWU.mjs.map +0 -7
- package/dist/lib/browser/chunk-M55MBYG7.mjs.map +0 -7
- package/dist/lib/browser/chunk-SEMCG4ZK.mjs +0 -195
- package/dist/lib/browser/chunk-SEMCG4ZK.mjs.map +0 -7
- package/dist/lib/browser/chunk-VK53MITK.mjs.map +0 -7
- package/dist/lib/browser/cli/index.mjs +0 -73
- package/dist/lib/browser/cli/index.mjs.map +0 -7
- package/dist/lib/browser/components/index.mjs +0 -20
- package/dist/lib/browser/create-chat-E2ZLVTLP.mjs.map +0 -7
- package/dist/lib/browser/ensure-companion-chat-7GDMXSQW.mjs.map +0 -7
- package/dist/lib/browser/hooks/index.mjs +0 -39
- package/dist/lib/browser/index.mjs +0 -84
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/on-create-space-4J3KTNAJ.mjs.map +0 -7
- package/dist/lib/browser/operations/index.mjs +0 -13
- package/dist/lib/browser/operations/index.mjs.map +0 -7
- package/dist/lib/browser/resolve-navigation-targets-3ZPQE6SZ.mjs.map +0 -7
- package/dist/lib/browser/run-prompt-in-new-chat-AA3KPBDN.mjs.map +0 -7
- package/dist/lib/browser/set-current-chat-P4VHI3YF.mjs.map +0 -7
- package/dist/lib/browser/translations.mjs.map +0 -7
- package/dist/lib/browser/types/index.mjs +0 -18
- package/dist/lib/browser/update-chat-name-VWKNUON7.mjs.map +0 -7
- package/dist/lib/node-esm/AssistantSettings-23A5IMHS.mjs +0 -41
- package/dist/lib/node-esm/AssistantSettings-23A5IMHS.mjs.map +0 -7
- package/dist/lib/node-esm/blueprints/index.mjs +0 -32
- package/dist/lib/node-esm/blueprints/index.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FWC3ZGPH.mjs +0 -933
- package/dist/lib/node-esm/chunk-FWC3ZGPH.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-JKEB3NFZ.mjs +0 -2302
- package/dist/lib/node-esm/chunk-JKEB3NFZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MBDVPB4V.mjs +0 -176
- package/dist/lib/node-esm/chunk-MBDVPB4V.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XAFVSEUJ.mjs +0 -196
- package/dist/lib/node-esm/chunk-XAFVSEUJ.mjs.map +0 -7
- package/dist/lib/node-esm/cli/index.mjs +0 -74
- package/dist/lib/node-esm/cli/index.mjs.map +0 -7
- package/dist/lib/node-esm/components/index.mjs +0 -21
- package/dist/lib/node-esm/create-chat-UQQ3542N.mjs +0 -74
- package/dist/lib/node-esm/create-chat-UQQ3542N.mjs.map +0 -7
- package/dist/lib/node-esm/ensure-companion-chat-LVCPD4DJ.mjs +0 -66
- package/dist/lib/node-esm/ensure-companion-chat-LVCPD4DJ.mjs.map +0 -7
- package/dist/lib/node-esm/hooks/index.mjs +0 -40
- package/dist/lib/node-esm/index.mjs +0 -85
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/on-create-space-M63UBTTT.mjs +0 -23
- package/dist/lib/node-esm/on-create-space-M63UBTTT.mjs.map +0 -7
- package/dist/lib/node-esm/operations/index.mjs +0 -14
- package/dist/lib/node-esm/operations/index.mjs.map +0 -7
- package/dist/lib/node-esm/resolve-navigation-targets-HO77CAFT.mjs +0 -23
- package/dist/lib/node-esm/resolve-navigation-targets-HO77CAFT.mjs.map +0 -7
- package/dist/lib/node-esm/run-prompt-in-new-chat-RIRYYYPK.mjs +0 -107
- package/dist/lib/node-esm/run-prompt-in-new-chat-RIRYYYPK.mjs.map +0 -7
- package/dist/lib/node-esm/set-current-chat-Z7GJ52VX.mjs +0 -55
- package/dist/lib/node-esm/set-current-chat-Z7GJ52VX.mjs.map +0 -7
- package/dist/lib/node-esm/translations.mjs +0 -173
- package/dist/lib/node-esm/translations.mjs.map +0 -7
- package/dist/lib/node-esm/types/index.mjs +0 -19
- package/dist/lib/node-esm/update-chat-name-GV4HX32Z.mjs +0 -57
- package/dist/lib/node-esm/update-chat-name-GV4HX32Z.mjs.map +0 -7
- package/dist/types/src/cli/index.d.ts +0 -2
- package/dist/types/src/cli/index.d.ts.map +0 -1
- package/dist/types/src/cli/plugin.d.ts +0 -10
- package/dist/types/src/cli/plugin.d.ts.map +0 -1
- package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +0 -1
- package/dist/types/src/containers/ChatContainer/index.d.ts +0 -2
- package/dist/types/src/containers/ChatContainer/index.d.ts.map +0 -1
- package/dist/types/src/operations/definitions.d.ts.map +0 -1
- package/dist/types/src/queue-logger.d.ts +0 -11
- package/dist/types/src/queue-logger.d.ts.map +0 -1
- package/dist/types/src/types/capabilities.d.ts +0 -32
- package/dist/types/src/types/capabilities.d.ts.map +0 -1
- package/dist/types/src/types/events.d.ts +0 -5
- package/dist/types/src/types/events.d.ts.map +0 -1
- package/src/AssistantPlugin.tsx +0 -238
- package/src/cli/plugin.ts +0 -83
- package/src/containers/ChatContainer/index.ts +0 -5
- package/src/types/capabilities.ts +0 -35
- package/src/types/events.ts +0 -11
- /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/AssistantPlugin.mjs.map} +0 -0
- /package/dist/lib/{browser → neutral}/AssistantSettings-GG52BLKS.mjs +0 -0
- /package/dist/lib/{browser → neutral}/AssistantSettings-GG52BLKS.mjs.map +0 -0
- /package/dist/lib/{browser/components/index.mjs.map → neutral/ChatArticle-WVAFZPVI.mjs.map} +0 -0
- /package/dist/lib/{browser/hooks → neutral/blueprints}/index.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
- /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/{node-esm/components → neutral}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/meta.mjs.map} +0 -0
- /package/dist/lib/{node-esm/hooks → neutral/operations}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/types/index.mjs.map → neutral/testing.mjs.map} +0 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ChatArticle
|
|
3
|
+
} from "./chunk-SLIPV6NN.mjs";
|
|
4
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
+
|
|
6
|
+
// src/containers/ChatCompanion/ChatCompanion.tsx
|
|
7
|
+
import * as Option from "effect/Option";
|
|
8
|
+
import React, { forwardRef, useCallback, useMemo } from "react";
|
|
9
|
+
import { useOperationInvoker } from "@dxos/app-framework/ui";
|
|
10
|
+
import { BlueprintsAnnotation } from "@dxos/app-toolkit";
|
|
11
|
+
import { Chat } from "@dxos/assistant-toolkit";
|
|
12
|
+
import { getSpace } from "@dxos/client/echo";
|
|
13
|
+
import { Blueprint } from "@dxos/compute";
|
|
14
|
+
import { Filter, Obj, Ref } from "@dxos/echo";
|
|
15
|
+
import { SpaceOperation } from "@dxos/plugin-space";
|
|
16
|
+
import { useQuery } from "@dxos/react-client/echo";
|
|
17
|
+
import { useAsyncEffect } from "@dxos/react-ui";
|
|
18
|
+
import { useBlueprintRegistry, useContextBinder } from "#hooks";
|
|
19
|
+
import { AssistantOperation } from "#types";
|
|
20
|
+
var ChatCompanion = /* @__PURE__ */ forwardRef(({ role, subject: chat, companionTo, attendableId }, forwardedRef) => {
|
|
21
|
+
const { invokePromise } = useOperationInvoker();
|
|
22
|
+
const blueprintRegistry = useBlueprintRegistry();
|
|
23
|
+
const space = getSpace(companionTo);
|
|
24
|
+
const feedTarget = chat?.feed.target;
|
|
25
|
+
const binder = useContextBinder(space, feedTarget);
|
|
26
|
+
const handleEvent = useCallback(async (event) => {
|
|
27
|
+
if (!space || !chat) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (event.type === "submit" && !Obj.getDatabase(chat)) {
|
|
31
|
+
await invokePromise(SpaceOperation.AddObject, {
|
|
32
|
+
object: chat,
|
|
33
|
+
target: space.db,
|
|
34
|
+
hidden: true
|
|
35
|
+
});
|
|
36
|
+
await invokePromise(SpaceOperation.AddRelation, {
|
|
37
|
+
db: space.db,
|
|
38
|
+
schema: Chat.CompanionTo,
|
|
39
|
+
source: chat,
|
|
40
|
+
target: companionTo
|
|
41
|
+
});
|
|
42
|
+
await invokePromise(AssistantOperation.SetCurrentChat, {
|
|
43
|
+
companionTo,
|
|
44
|
+
chat
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}, [
|
|
48
|
+
chat,
|
|
49
|
+
space,
|
|
50
|
+
companionTo,
|
|
51
|
+
invokePromise
|
|
52
|
+
]);
|
|
53
|
+
const blueprintKeys = useMemo(() => {
|
|
54
|
+
const schema = companionTo ? Obj.getSchema(companionTo) : void 0;
|
|
55
|
+
if (!schema) {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
return Option.getOrElse(() => [])(BlueprintsAnnotation.get(schema));
|
|
59
|
+
}, [
|
|
60
|
+
companionTo
|
|
61
|
+
]);
|
|
62
|
+
const existingBlueprints = useQuery(space?.db, Filter.type(Blueprint.Blueprint));
|
|
63
|
+
const pluginBlueprints = useMemo(() => existingBlueprints.filter((blueprint) => {
|
|
64
|
+
const key = Obj.getMeta(blueprint).key;
|
|
65
|
+
return key !== void 0 && blueprintKeys.includes(key);
|
|
66
|
+
}), [
|
|
67
|
+
existingBlueprints,
|
|
68
|
+
blueprintKeys
|
|
69
|
+
]);
|
|
70
|
+
useAsyncEffect(async () => {
|
|
71
|
+
if (!space) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const existingBlueprints2 = await space.db.query(Filter.type(Blueprint.Blueprint)).run();
|
|
75
|
+
for (const key of blueprintKeys) {
|
|
76
|
+
const existingBlueprint = existingBlueprints2.find((blueprint2) => Obj.getMeta(blueprint2).key === key);
|
|
77
|
+
if (existingBlueprint) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const blueprint = blueprintRegistry.getByKey(key);
|
|
81
|
+
if (!blueprint) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
space.db.add(Obj.clone(blueprint, {
|
|
85
|
+
deep: true
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
}, [
|
|
89
|
+
space,
|
|
90
|
+
blueprintRegistry,
|
|
91
|
+
blueprintKeys
|
|
92
|
+
]);
|
|
93
|
+
useAsyncEffect(async () => {
|
|
94
|
+
if (!binder?.isOpen) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (pluginBlueprints.length > 0) {
|
|
98
|
+
await binder.bind({
|
|
99
|
+
blueprints: pluginBlueprints.map((blueprint) => Ref.make(blueprint))
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
if (Obj.instanceOf(Blueprint.Blueprint, companionTo)) {
|
|
103
|
+
await binder.bind({
|
|
104
|
+
blueprints: [
|
|
105
|
+
Ref.make(companionTo)
|
|
106
|
+
]
|
|
107
|
+
});
|
|
108
|
+
} else {
|
|
109
|
+
await binder.bind({
|
|
110
|
+
objects: [
|
|
111
|
+
Ref.make(companionTo)
|
|
112
|
+
]
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}, [
|
|
116
|
+
binder,
|
|
117
|
+
companionTo,
|
|
118
|
+
blueprintKeys
|
|
119
|
+
]);
|
|
120
|
+
return /* @__PURE__ */ React.createElement(ChatArticle, {
|
|
121
|
+
role: role ?? "article",
|
|
122
|
+
space,
|
|
123
|
+
subject: chat,
|
|
124
|
+
attendableId,
|
|
125
|
+
companionTo,
|
|
126
|
+
onEvent: handleEvent,
|
|
127
|
+
ref: forwardedRef
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
export {
|
|
131
|
+
ChatCompanion as default
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=ChatCompanion-DFRMRUK3.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/ChatCompanion/ChatCompanion.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { forwardRef, useCallback, useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { BlueprintsAnnotation } from '@dxos/app-toolkit';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { getSpace } from '@dxos/client/echo';\nimport { Blueprint } from '@dxos/compute';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { SpaceOperation } from '@dxos/plugin-space';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { type ChatEvent } from '#components';\nimport { useBlueprintRegistry, useContextBinder } from '#hooks';\nimport { AssistantOperation } from '#types';\n\nimport ChatArticle from '../ChatArticle';\n\nexport type ChatCompanionProps = AppSurface.ArticleProps<Chat.Chat, {}, Obj.Unknown>;\n\nexport const ChatCompanion = forwardRef<HTMLDivElement, ChatCompanionProps>(\n ({ role, subject: chat, companionTo, attendableId }, forwardedRef) => {\n const { invokePromise } = useOperationInvoker();\n const blueprintRegistry = useBlueprintRegistry();\n const space = getSpace(companionTo);\n const feedTarget = chat?.feed.target;\n const binder = useContextBinder(space, feedTarget);\n\n // Persist chat on first submit.\n const handleEvent = useCallback(\n async (event: ChatEvent) => {\n if (!space || !chat) {\n return;\n }\n\n if (event.type === 'submit' && !Obj.getDatabase(chat)) {\n await invokePromise(SpaceOperation.AddObject, {\n object: chat,\n target: space.db,\n hidden: true,\n });\n await invokePromise(SpaceOperation.AddRelation, {\n db: space.db,\n schema: Chat.CompanionTo,\n source: chat,\n target: companionTo,\n });\n await invokePromise(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat,\n });\n }\n },\n [chat, space, companionTo, invokePromise],\n );\n\n const blueprintKeys = useMemo(() => {\n const schema = companionTo ? Obj.getSchema(companionTo) : undefined;\n if (!schema) {\n return [] as string[];\n }\n return Option.getOrElse(() => [] as string[])(BlueprintsAnnotation.get(schema));\n }, [companionTo]);\n const existingBlueprints = useQuery(space?.db, Filter.type(Blueprint.Blueprint));\n const pluginBlueprints = useMemo(\n () =>\n existingBlueprints.filter((blueprint) => {\n const key = Obj.getMeta(blueprint).key;\n return key !== undefined && blueprintKeys.includes(key);\n }),\n [existingBlueprints, blueprintKeys],\n );\n\n // Initialize related blueprints that are not already in the space.\n useAsyncEffect(async () => {\n if (!space) {\n return;\n }\n\n // NOTE: This must be run instead of using the useQuery result to avoid duplicates.\n const existingBlueprints = await space.db.query(Filter.type(Blueprint.Blueprint)).run();\n for (const key of blueprintKeys) {\n const existingBlueprint = existingBlueprints.find((blueprint) => Obj.getMeta(blueprint).key === key);\n if (existingBlueprint) {\n continue;\n }\n\n const blueprint = blueprintRegistry.getByKey(key);\n if (!blueprint) {\n continue;\n }\n\n space.db.add(Obj.clone(blueprint, { deep: true }));\n }\n }, [space, blueprintRegistry, blueprintKeys]);\n\n useAsyncEffect(async () => {\n if (!binder?.isOpen) {\n return;\n }\n\n if (pluginBlueprints.length > 0) {\n await binder.bind({\n blueprints: pluginBlueprints.map((blueprint) => Ref.make(blueprint)),\n });\n }\n\n if (Obj.instanceOf(Blueprint.Blueprint, companionTo)) {\n await binder.bind({ blueprints: [Ref.make(companionTo)] });\n } else {\n await binder.bind({ objects: [Ref.make(companionTo)] });\n }\n }, [binder, companionTo, blueprintKeys]);\n\n return (\n <ChatArticle\n role={role ?? 'article'}\n space={space}\n subject={chat}\n attendableId={attendableId}\n companionTo={companionTo}\n onEvent={handleEvent}\n ref={forwardedRef}\n />\n );\n },\n);\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,SAASC,YAAYC,aAAaC,eAAe;AAExD,SAASC,2BAA2B;AACpC,SAASC,4BAA4B;AAErC,SAASC,YAAY;AACrB,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,SAASC,QAAQC,KAAKC,WAAW;AACjC,SAASC,sBAAsB;AAC/B,SAASC,gBAAgB;AACzB,SAASC,sBAAsB;AAG/B,SAASC,sBAAsBC,wBAAwB;AACvD,SAASC,0BAA0B;AAM5B,IAAMC,gBAAgBC,2BAC3B,CAAC,EAAEC,MAAMC,SAASC,MAAMC,aAAaC,aAAY,GAAIC,iBAAAA;AACnD,QAAM,EAAEC,cAAa,IAAKC,oBAAAA;AAC1B,QAAMC,oBAAoBC,qBAAAA;AAC1B,QAAMC,QAAQC,SAASR,WAAAA;AACvB,QAAMS,aAAaV,MAAMW,KAAKC;AAC9B,QAAMC,SAASC,iBAAiBN,OAAOE,UAAAA;AAGvC,QAAMK,cAAcC,YAClB,OAAOC,UAAAA;AACL,QAAI,CAACT,SAAS,CAACR,MAAM;AACnB;IACF;AAEA,QAAIiB,MAAMC,SAAS,YAAY,CAACC,IAAIC,YAAYpB,IAAAA,GAAO;AACrD,YAAMI,cAAciB,eAAeC,WAAW;QAC5CC,QAAQvB;QACRY,QAAQJ,MAAMgB;QACdC,QAAQ;MACV,CAAA;AACA,YAAMrB,cAAciB,eAAeK,aAAa;QAC9CF,IAAIhB,MAAMgB;QACVG,QAAQC,KAAKC;QACbC,QAAQ9B;QACRY,QAAQX;MACV,CAAA;AACA,YAAMG,cAAc2B,mBAAmBC,gBAAgB;QACrD/B;QACAD;MACF,CAAA;IACF;EACF,GACA;IAACA;IAAMQ;IAAOP;IAAaG;GAAc;AAG3C,QAAM6B,gBAAgBC,QAAQ,MAAA;AAC5B,UAAMP,SAAS1B,cAAckB,IAAIgB,UAAUlC,WAAAA,IAAemC;AAC1D,QAAI,CAACT,QAAQ;AACX,aAAO,CAAA;IACT;AACA,WAAcU,iBAAU,MAAM,CAAA,CAAE,EAAcC,qBAAqBC,IAAIZ,MAAAA,CAAAA;EACzE,GAAG;IAAC1B;GAAY;AAChB,QAAMuC,qBAAqBC,SAASjC,OAAOgB,IAAIkB,OAAOxB,KAAKyB,UAAUA,SAAS,CAAA;AAC9E,QAAMC,mBAAmBV,QACvB,MACEM,mBAAmBK,OAAO,CAACC,cAAAA;AACzB,UAAMC,MAAM5B,IAAI6B,QAAQF,SAAAA,EAAWC;AACnC,WAAOA,QAAQX,UAAaH,cAAcgB,SAASF,GAAAA;EACrD,CAAA,GACF;IAACP;IAAoBP;GAAc;AAIrCiB,iBAAe,YAAA;AACb,QAAI,CAAC1C,OAAO;AACV;IACF;AAGA,UAAMgC,sBAAqB,MAAMhC,MAAMgB,GAAG2B,MAAMT,OAAOxB,KAAKyB,UAAUA,SAAS,CAAA,EAAGS,IAAG;AACrF,eAAWL,OAAOd,eAAe;AAC/B,YAAMoB,oBAAoBb,oBAAmBc,KAAK,CAACR,eAAc3B,IAAI6B,QAAQF,UAAAA,EAAWC,QAAQA,GAAAA;AAChG,UAAIM,mBAAmB;AACrB;MACF;AAEA,YAAMP,YAAYxC,kBAAkBiD,SAASR,GAAAA;AAC7C,UAAI,CAACD,WAAW;AACd;MACF;AAEAtC,YAAMgB,GAAGgC,IAAIrC,IAAIsC,MAAMX,WAAW;QAAEY,MAAM;MAAK,CAAA,CAAA;IACjD;EACF,GAAG;IAAClD;IAAOF;IAAmB2B;GAAc;AAE5CiB,iBAAe,YAAA;AACb,QAAI,CAACrC,QAAQ8C,QAAQ;AACnB;IACF;AAEA,QAAIf,iBAAiBgB,SAAS,GAAG;AAC/B,YAAM/C,OAAOgD,KAAK;QAChBC,YAAYlB,iBAAiBmB,IAAI,CAACjB,cAAckB,IAAIC,KAAKnB,SAAAA,CAAAA;MAC3D,CAAA;IACF;AAEA,QAAI3B,IAAI+C,WAAWvB,UAAUA,WAAW1C,WAAAA,GAAc;AACpD,YAAMY,OAAOgD,KAAK;QAAEC,YAAY;UAACE,IAAIC,KAAKhE,WAAAA;;MAAc,CAAA;IAC1D,OAAO;AACL,YAAMY,OAAOgD,KAAK;QAAEM,SAAS;UAACH,IAAIC,KAAKhE,WAAAA;;MAAc,CAAA;IACvD;EACF,GAAG;IAACY;IAAQZ;IAAagC;GAAc;AAEvC,SACE,sBAAA,cAACmC,aAAAA;IACCtE,MAAMA,QAAQ;IACdU;IACAT,SAASC;IACTE;IACAD;IACAoE,SAAStD;IACTuD,KAAKnE;;AAGX,CAAA;",
|
|
6
|
+
"names": ["Option", "React", "forwardRef", "useCallback", "useMemo", "useOperationInvoker", "BlueprintsAnnotation", "Chat", "getSpace", "Blueprint", "Filter", "Obj", "Ref", "SpaceOperation", "useQuery", "useAsyncEffect", "useBlueprintRegistry", "useContextBinder", "AssistantOperation", "ChatCompanion", "forwardRef", "role", "subject", "chat", "companionTo", "attendableId", "forwardedRef", "invokePromise", "useOperationInvoker", "blueprintRegistry", "useBlueprintRegistry", "space", "getSpace", "feedTarget", "feed", "target", "binder", "useContextBinder", "handleEvent", "useCallback", "event", "type", "Obj", "getDatabase", "SpaceOperation", "AddObject", "object", "db", "hidden", "AddRelation", "schema", "Chat", "CompanionTo", "source", "AssistantOperation", "SetCurrentChat", "blueprintKeys", "useMemo", "getSchema", "undefined", "getOrElse", "BlueprintsAnnotation", "get", "existingBlueprints", "useQuery", "Filter", "Blueprint", "pluginBlueprints", "filter", "blueprint", "key", "getMeta", "includes", "useAsyncEffect", "query", "run", "existingBlueprint", "find", "getByKey", "add", "clone", "deep", "isOpen", "length", "bind", "blueprints", "map", "Ref", "make", "instanceOf", "objects", "ChatArticle", "onEvent", "ref"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/ChatDialog/ChatDialog.tsx
|
|
4
|
+
import React, { useCallback, useState } from "react";
|
|
5
|
+
import { useAtomCapability } from "@dxos/app-framework/ui";
|
|
6
|
+
import { Obj } from "@dxos/echo";
|
|
7
|
+
import { useTranslation } from "@dxos/react-ui";
|
|
8
|
+
import { ChatDialog as NaturalChatDialog } from "@dxos/react-ui-chat";
|
|
9
|
+
import { Chat } from "#components";
|
|
10
|
+
import { useBlueprintRegistry, useChatProcessor, useChatServices, useOnline, usePresets } from "#hooks";
|
|
11
|
+
import { meta } from "#meta";
|
|
12
|
+
import { AssistantCapabilities } from "#types";
|
|
13
|
+
var ChatDialog = ({ chat }) => {
|
|
14
|
+
const { t } = useTranslation(meta.id);
|
|
15
|
+
const db = chat && Obj.getDatabase(chat);
|
|
16
|
+
const settings = useAtomCapability(AssistantCapabilities.Settings);
|
|
17
|
+
const runtime = useChatServices({
|
|
18
|
+
id: db?.spaceId
|
|
19
|
+
});
|
|
20
|
+
const [online, setOnline] = useOnline();
|
|
21
|
+
const { preset, ...chatProps } = usePresets(online);
|
|
22
|
+
const blueprintRegistry = useBlueprintRegistry();
|
|
23
|
+
const processor = useChatProcessor({
|
|
24
|
+
chat,
|
|
25
|
+
preset,
|
|
26
|
+
runtime,
|
|
27
|
+
blueprintRegistry,
|
|
28
|
+
settings
|
|
29
|
+
});
|
|
30
|
+
const [open, setOpen] = useState(true);
|
|
31
|
+
const [expanded, setExpanded] = useState(false);
|
|
32
|
+
const handleEvent = useCallback((event) => {
|
|
33
|
+
switch (event.type) {
|
|
34
|
+
case "submit":
|
|
35
|
+
case "thread-open":
|
|
36
|
+
setOpen(true);
|
|
37
|
+
setExpanded(true);
|
|
38
|
+
break;
|
|
39
|
+
case "thread-close":
|
|
40
|
+
setOpen(false);
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}, []);
|
|
44
|
+
if (!chat || !processor) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return /* @__PURE__ */ React.createElement(Chat.Root, {
|
|
48
|
+
chat,
|
|
49
|
+
processor,
|
|
50
|
+
onEvent: handleEvent
|
|
51
|
+
}, /* @__PURE__ */ React.createElement(NaturalChatDialog.Root, {
|
|
52
|
+
open,
|
|
53
|
+
expanded,
|
|
54
|
+
onOpenChange: setOpen
|
|
55
|
+
}, /* @__PURE__ */ React.createElement(NaturalChatDialog.Header, {
|
|
56
|
+
title: t("assistant-dialog.title")
|
|
57
|
+
}), /* @__PURE__ */ React.createElement(NaturalChatDialog.Content, null, /* @__PURE__ */ React.createElement(Chat.Thread, {
|
|
58
|
+
viewType: chat.view ?? settings.chatView
|
|
59
|
+
})), /* @__PURE__ */ React.createElement(NaturalChatDialog.Footer, {
|
|
60
|
+
classNames: "p-1.5"
|
|
61
|
+
}, /* @__PURE__ */ React.createElement(Chat.Prompt, {
|
|
62
|
+
...chatProps,
|
|
63
|
+
preset: preset?.id,
|
|
64
|
+
online,
|
|
65
|
+
onOnlineChange: setOnline,
|
|
66
|
+
expandable: true
|
|
67
|
+
}))));
|
|
68
|
+
};
|
|
69
|
+
export {
|
|
70
|
+
ChatDialog as default
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=ChatDialog-QKZLG7SQ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/ChatDialog/ChatDialog.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { useAtomCapability } from '@dxos/app-framework/ui';\nimport { type Chat as ChatTypes } from '@dxos/assistant-toolkit';\nimport { Obj } from '@dxos/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { ChatDialog as NaturalChatDialog } from '@dxos/react-ui-chat';\n\nimport { Chat, type ChatRootProps } from '#components';\nimport { useBlueprintRegistry, useChatProcessor, useChatServices, useOnline, usePresets } from '#hooks';\nimport { meta } from '#meta';\nimport { type Assistant, AssistantCapabilities } from '#types';\n\nexport type ChatDialogProps = {\n chat?: ChatTypes.Chat;\n};\n\nexport const ChatDialog = ({ chat }: ChatDialogProps) => {\n const { t } = useTranslation(meta.id);\n\n const db = chat && Obj.getDatabase(chat);\n const settings = useAtomCapability(AssistantCapabilities.Settings);\n const runtime = useChatServices({ id: db?.spaceId });\n const [online, setOnline] = useOnline();\n const { preset, ...chatProps } = usePresets(online);\n const blueprintRegistry = useBlueprintRegistry();\n const processor = useChatProcessor({ chat, preset, runtime, blueprintRegistry, settings });\n\n // TODO(burdon): Refocus when open.\n const [open, setOpen] = useState(true);\n const [expanded, setExpanded] = useState(false);\n const handleEvent = useCallback<NonNullable<ChatRootProps['onEvent']>>((event) => {\n switch (event.type) {\n case 'submit':\n case 'thread-open':\n setOpen(true);\n setExpanded(true);\n break;\n case 'thread-close':\n setOpen(false);\n break;\n }\n }, []);\n\n if (!chat || !processor) {\n return null;\n }\n\n return (\n <Chat.Root chat={chat} processor={processor} onEvent={handleEvent}>\n <NaturalChatDialog.Root open={open} expanded={expanded} onOpenChange={setOpen}>\n <NaturalChatDialog.Header title={t('assistant-dialog.title')} />\n <NaturalChatDialog.Content>\n <Chat.Thread viewType={(chat.view as Assistant.ChatView | undefined) ?? settings.chatView} />\n </NaturalChatDialog.Content>\n <NaturalChatDialog.Footer classNames='p-1.5'>\n <Chat.Prompt {...chatProps} preset={preset?.id} online={online} onOnlineChange={setOnline} expandable />\n </NaturalChatDialog.Footer>\n </NaturalChatDialog.Root>\n </Chat.Root>\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,SAASC,aAAaC,gBAAgB;AAE7C,SAASC,yBAAyB;AAElC,SAASC,WAAW;AACpB,SAASC,sBAAsB;AAC/B,SAASC,cAAcC,yBAAyB;AAEhD,SAASC,YAAgC;AACzC,SAASC,sBAAsBC,kBAAkBC,iBAAiBC,WAAWC,kBAAkB;AAC/F,SAASC,YAAY;AACrB,SAAyBC,6BAA6B;AAM/C,IAAMT,aAAa,CAAC,EAAEU,KAAI,MAAmB;AAClD,QAAM,EAAEC,EAAC,IAAKZ,eAAeS,KAAKI,EAAE;AAEpC,QAAMC,KAAKH,QAAQZ,IAAIgB,YAAYJ,IAAAA;AACnC,QAAMK,WAAWlB,kBAAkBY,sBAAsBO,QAAQ;AACjE,QAAMC,UAAUZ,gBAAgB;IAAEO,IAAIC,IAAIK;EAAQ,CAAA;AAClD,QAAM,CAACC,QAAQC,SAAAA,IAAad,UAAAA;AAC5B,QAAM,EAAEe,QAAQ,GAAGC,UAAAA,IAAcf,WAAWY,MAAAA;AAC5C,QAAMI,oBAAoBpB,qBAAAA;AAC1B,QAAMqB,YAAYpB,iBAAiB;IAAEM;IAAMW;IAAQJ;IAASM;IAAmBR;EAAS,CAAA;AAGxF,QAAM,CAACU,MAAMC,OAAAA,IAAW9B,SAAS,IAAA;AACjC,QAAM,CAAC+B,UAAUC,WAAAA,IAAehC,SAAS,KAAA;AACzC,QAAMiC,cAAclC,YAAmD,CAACmC,UAAAA;AACtE,YAAQA,MAAMC,MAAI;MAChB,KAAK;MACL,KAAK;AACHL,gBAAQ,IAAA;AACRE,oBAAY,IAAA;AACZ;MACF,KAAK;AACHF,gBAAQ,KAAA;AACR;IACJ;EACF,GAAG,CAAA,CAAE;AAEL,MAAI,CAAChB,QAAQ,CAACc,WAAW;AACvB,WAAO;EACT;AAEA,SACE,sBAAA,cAACtB,KAAK8B,MAAI;IAACtB;IAAYc;IAAsBS,SAASJ;KACpD,sBAAA,cAAC5B,kBAAkB+B,MAAI;IAACP;IAAYE;IAAoBO,cAAcR;KACpE,sBAAA,cAACzB,kBAAkBkC,QAAM;IAACC,OAAOzB,EAAE,wBAAA;MACnC,sBAAA,cAACV,kBAAkBoC,SAAO,MACxB,sBAAA,cAACnC,KAAKoC,QAAM;IAACC,UAAW7B,KAAK8B,QAA2CzB,SAAS0B;OAEnF,sBAAA,cAACxC,kBAAkByC,QAAM;IAACC,YAAW;KACnC,sBAAA,cAACzC,KAAK0C,QAAM;IAAE,GAAGtB;IAAWD,QAAQA,QAAQT;IAAIO;IAAgB0B,gBAAgBzB;IAAW0B,YAAAA;;AAKrG;",
|
|
6
|
+
"names": ["React", "useCallback", "useState", "useAtomCapability", "Obj", "useTranslation", "ChatDialog", "NaturalChatDialog", "Chat", "useBlueprintRegistry", "useChatProcessor", "useChatServices", "useOnline", "usePresets", "meta", "AssistantCapabilities", "chat", "t", "id", "db", "getDatabase", "settings", "Settings", "runtime", "spaceId", "online", "setOnline", "preset", "chatProps", "blueprintRegistry", "processor", "open", "setOpen", "expanded", "setExpanded", "handleEvent", "event", "type", "Root", "onEvent", "onOpenChange", "Header", "title", "Content", "Thread", "viewType", "view", "chatView", "Footer", "classNames", "Prompt", "onOnlineChange", "expandable"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/PlanArticle/PlanArticle.tsx
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { Panel, ScrollArea, Toolbar } from "@dxos/react-ui";
|
|
6
|
+
import { useAttention } from "@dxos/react-ui-attention";
|
|
7
|
+
import { TaskList } from "#components";
|
|
8
|
+
var PlanArticle = ({ role, attendableId, subject }) => {
|
|
9
|
+
const { hasAttention } = useAttention(attendableId);
|
|
10
|
+
return /* @__PURE__ */ React.createElement(Panel.Root, {
|
|
11
|
+
role,
|
|
12
|
+
classNames: "dx-document"
|
|
13
|
+
}, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
|
|
14
|
+
asChild: true
|
|
15
|
+
}, /* @__PURE__ */ React.createElement(Toolbar.Root, {
|
|
16
|
+
disabled: !hasAttention
|
|
17
|
+
})), /* @__PURE__ */ React.createElement(Panel.Content, {
|
|
18
|
+
asChild: true
|
|
19
|
+
}, /* @__PURE__ */ React.createElement(ScrollArea.Root, {
|
|
20
|
+
orientation: "vertical"
|
|
21
|
+
}, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement(TaskList, {
|
|
22
|
+
plan: subject
|
|
23
|
+
})))));
|
|
24
|
+
};
|
|
25
|
+
export {
|
|
26
|
+
PlanArticle as default
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=PlanArticle-TS5ULWYS.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/PlanArticle/PlanArticle.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { type Plan } from '@dxos/assistant-toolkit';\nimport { Panel, ScrollArea, Toolbar } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\n\nimport { TaskList } from '#components';\n\nexport type PlanArticleProps = AppSurface.ObjectArticleProps<Plan.Plan>;\n\nexport const PlanArticle = ({ role, attendableId, subject }: PlanArticleProps) => {\n const { hasAttention } = useAttention(attendableId);\n\n return (\n <Panel.Root role={role} classNames='dx-document'>\n <Panel.Toolbar asChild>\n <Toolbar.Root disabled={!hasAttention} />\n </Panel.Toolbar>\n <Panel.Content asChild>\n <ScrollArea.Root orientation='vertical'>\n <ScrollArea.Viewport>\n <TaskList plan={subject} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Panel.Content>\n </Panel.Root>\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,WAAW;AAIlB,SAASC,OAAOC,YAAYC,eAAe;AAC3C,SAASC,oBAAoB;AAE7B,SAASC,gBAAgB;AAIlB,IAAMC,cAAc,CAAC,EAAEC,MAAMC,cAAcC,QAAO,MAAoB;AAC3E,QAAM,EAAEC,aAAY,IAAKN,aAAaI,YAAAA;AAEtC,SACE,sBAAA,cAACP,MAAMU,MAAI;IAACJ;IAAYK,YAAW;KACjC,sBAAA,cAACX,MAAME,SAAO;IAACU,SAAAA;KACb,sBAAA,cAACV,QAAQQ,MAAI;IAACG,UAAU,CAACJ;OAE3B,sBAAA,cAACT,MAAMc,SAAO;IAACF,SAAAA;KACb,sBAAA,cAACX,WAAWS,MAAI;IAACK,aAAY;KAC3B,sBAAA,cAACd,WAAWe,UAAQ,MAClB,sBAAA,cAACZ,UAAAA;IAASa,MAAMT;;AAM5B;",
|
|
6
|
+
"names": ["React", "Panel", "ScrollArea", "Toolbar", "useAttention", "TaskList", "PlanArticle", "role", "attendableId", "subject", "hasAttention", "Root", "classNames", "asChild", "disabled", "Content", "orientation", "Viewport", "plan"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/RoutineArticle/RoutineArticle.tsx
|
|
4
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
|
+
import { AgentPrompt } from "@dxos/assistant-toolkit";
|
|
6
|
+
import { Operation } from "@dxos/compute";
|
|
7
|
+
import { Obj } from "@dxos/echo";
|
|
8
|
+
import { invariant } from "@dxos/invariant";
|
|
9
|
+
import { useComputeRuntimeCallback } from "@dxos/plugin-automation/hooks";
|
|
10
|
+
import { Panel, Toolbar, useTranslation } from "@dxos/react-ui";
|
|
11
|
+
import { useAttention } from "@dxos/react-ui-attention";
|
|
12
|
+
import { JsonHighlighter } from "@dxos/react-ui-syntax-highlighter";
|
|
13
|
+
import { TemplateEditor } from "#components";
|
|
14
|
+
import { meta } from "#meta";
|
|
15
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/containers/RoutineArticle/RoutineArticle.tsx";
|
|
16
|
+
var RoutineArticle = ({ role, attendableId, subject }) => {
|
|
17
|
+
const { t } = useTranslation(meta.id);
|
|
18
|
+
const { hasAttention } = useAttention(attendableId);
|
|
19
|
+
const invoke = usePromptHandler(subject);
|
|
20
|
+
const [state, setState] = useState({
|
|
21
|
+
status: "idle"
|
|
22
|
+
});
|
|
23
|
+
const mountedRef = useRef(true);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
return () => {
|
|
26
|
+
mountedRef.current = false;
|
|
27
|
+
};
|
|
28
|
+
}, []);
|
|
29
|
+
const handleRun = useCallback(async () => {
|
|
30
|
+
setState({
|
|
31
|
+
status: "running"
|
|
32
|
+
});
|
|
33
|
+
try {
|
|
34
|
+
const result = await invoke();
|
|
35
|
+
if (mountedRef.current) {
|
|
36
|
+
setState({
|
|
37
|
+
status: "success",
|
|
38
|
+
result
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
} catch (err) {
|
|
42
|
+
if (mountedRef.current) {
|
|
43
|
+
setState({
|
|
44
|
+
status: "error",
|
|
45
|
+
error: err instanceof Error ? err : new Error(String(err))
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, [
|
|
50
|
+
invoke
|
|
51
|
+
]);
|
|
52
|
+
return /* @__PURE__ */ React.createElement(Panel.Root, {
|
|
53
|
+
role,
|
|
54
|
+
className: "dx-document"
|
|
55
|
+
}, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
|
|
56
|
+
asChild: true
|
|
57
|
+
}, /* @__PURE__ */ React.createElement(Toolbar.Root, {
|
|
58
|
+
disabled: !hasAttention || state.status === "running"
|
|
59
|
+
}, /* @__PURE__ */ React.createElement(Toolbar.IconButton, {
|
|
60
|
+
iconOnly: true,
|
|
61
|
+
icon: state.status === "running" ? "ph--spinner-gap--regular" : "ph--play--regular",
|
|
62
|
+
label: t("run-prompt.label"),
|
|
63
|
+
onClick: handleRun
|
|
64
|
+
}))), /* @__PURE__ */ React.createElement(Panel.Content, {
|
|
65
|
+
classNames: "flex flex-col gap-2"
|
|
66
|
+
}, /* @__PURE__ */ React.createElement(TemplateEditor, {
|
|
67
|
+
id: subject.id,
|
|
68
|
+
template: subject.instructions
|
|
69
|
+
}), /* @__PURE__ */ React.createElement(RoutineResult, {
|
|
70
|
+
state
|
|
71
|
+
})));
|
|
72
|
+
};
|
|
73
|
+
var RoutineResult = ({ state }) => {
|
|
74
|
+
const { t } = useTranslation(meta.id);
|
|
75
|
+
switch (state.status) {
|
|
76
|
+
case "idle":
|
|
77
|
+
return null;
|
|
78
|
+
case "running":
|
|
79
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
80
|
+
className: "p-2 text-sm text-subdued"
|
|
81
|
+
}, t("routine-running.label"));
|
|
82
|
+
case "error":
|
|
83
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
84
|
+
className: "p-2 text-sm text-error"
|
|
85
|
+
}, state.error.message);
|
|
86
|
+
case "success":
|
|
87
|
+
return /* @__PURE__ */ React.createElement(JsonHighlighter, {
|
|
88
|
+
classNames: "p-2! text-sm",
|
|
89
|
+
data: state.result
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
var usePromptHandler = (routine) => {
|
|
94
|
+
const db = Obj.getDatabase(routine);
|
|
95
|
+
const data = useMemo(() => {
|
|
96
|
+
if (db && routine) {
|
|
97
|
+
return {
|
|
98
|
+
prompt: db.makeRef(Obj.getDXN(routine)),
|
|
99
|
+
input: {}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}, [
|
|
103
|
+
routine,
|
|
104
|
+
db
|
|
105
|
+
]);
|
|
106
|
+
return useComputeRuntimeCallback(db?.spaceId, () => {
|
|
107
|
+
invariant(data, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 107, S: void 0, A: ["data", ""] });
|
|
108
|
+
return Operation.invoke(AgentPrompt, data);
|
|
109
|
+
}, [
|
|
110
|
+
data
|
|
111
|
+
]);
|
|
112
|
+
};
|
|
113
|
+
export {
|
|
114
|
+
RoutineArticle as default
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=RoutineArticle-H7ECM7AH.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/RoutineArticle/RoutineArticle.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { AgentPrompt } from '@dxos/assistant-toolkit';\nimport { type Routine } from '@dxos/compute';\nimport { Operation } from '@dxos/compute';\nimport { Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { useComputeRuntimeCallback } from '@dxos/plugin-automation/hooks';\nimport { Panel, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\n\nimport { TemplateEditor } from '#components';\nimport { meta } from '#meta';\n\nexport type RoutineArticleProps = AppSurface.ObjectArticleProps<Routine.Routine>;\n\ntype RunState =\n | { status: 'idle' }\n | { status: 'running' }\n | { status: 'success'; result: unknown }\n | { status: 'error'; error: Error };\n\n// TODO(burdon): Trigger editor.\nexport const RoutineArticle = ({ role, attendableId, subject }: RoutineArticleProps) => {\n const { t } = useTranslation(meta.id);\n const { hasAttention } = useAttention(attendableId);\n const invoke = usePromptHandler(subject);\n const [state, setState] = useState<RunState>({ status: 'idle' });\n const mountedRef = useRef(true);\n useEffect(() => {\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n const handleRun = useCallback(async () => {\n setState({ status: 'running' });\n try {\n const result = await invoke();\n if (mountedRef.current) {\n setState({ status: 'success', result });\n }\n } catch (err) {\n if (mountedRef.current) {\n setState({ status: 'error', error: err instanceof Error ? err : new Error(String(err)) });\n }\n }\n }, [invoke]);\n\n return (\n <Panel.Root role={role} className='dx-document'>\n <Panel.Toolbar asChild>\n <Toolbar.Root disabled={!hasAttention || state.status === 'running'}>\n <Toolbar.IconButton\n iconOnly\n icon={state.status === 'running' ? 'ph--spinner-gap--regular' : 'ph--play--regular'}\n label={t('run-prompt.label')}\n onClick={handleRun}\n />\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content classNames='flex flex-col gap-2'>\n <TemplateEditor id={subject.id} template={subject.instructions} />\n <RoutineResult state={state} />\n </Panel.Content>\n </Panel.Root>\n );\n};\n\nconst RoutineResult = ({ state }: { state: RunState }) => {\n const { t } = useTranslation(meta.id);\n switch (state.status) {\n case 'idle':\n return null;\n case 'running':\n return <div className='p-2 text-sm text-subdued'>{t('routine-running.label')}</div>;\n case 'error':\n return <div className='p-2 text-sm text-error'>{state.error.message}</div>;\n case 'success':\n return <JsonHighlighter classNames='p-2! text-sm' data={state.result} />;\n }\n};\n\nconst usePromptHandler = (routine: Routine.Routine) => {\n const db = Obj.getDatabase(routine);\n const data = useMemo<Operation.Definition.Input<typeof AgentPrompt> | undefined>(() => {\n if (db && routine) {\n return {\n prompt: db.makeRef(Obj.getDXN(routine)),\n input: {},\n };\n }\n }, [routine, db]);\n\n return useComputeRuntimeCallback(\n db?.spaceId,\n () => {\n invariant(data);\n return Operation.invoke(AgentPrompt, data);\n },\n [data],\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,SAASC,aAAaC,WAAWC,SAASC,QAAQC,gBAAgB;AAGzE,SAASC,mBAAmB;AAE5B,SAASC,iBAAiB;AAC1B,SAASC,WAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,iCAAiC;AAC1C,SAASC,OAAOC,SAASC,sBAAsB;AAC/C,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAEhC,SAASC,sBAAsB;AAC/B,SAASC,YAAY;AAUrB,IAAA,eAAA;AAGE,IAAQC,iBAAiBJ,CAAAA,EAAAA,MAAAA,cAAaK,QAAAA,MAAAA;AACtC,QAAMC,EAAAA,EAAAA,IAAAA,eAASC,KAAiBC,EAAAA;AAChC,QAAM,EAACC,aAAOC,IAAS,aAAsB,YAAA;QAAEC,SAAQ,iBAAA,OAAA;AAAO,QAAA,CAAA,OAAA,QAAA,IAAA,SAAA;IAC9D,QAAMC;EACNxB,CAAAA;QACE,aAAO,OAAA,IAAA;YACLwB,MAAAA;AACF,WAAA,MAAA;AACG,iBAAA,UAAA;IAEL;MACEF,CAAAA;oBAAmB,YAAA,YAAA;AAAU,aAAA;MACzB,QAAA;;QAEF;YACEA,SAAS,MAAA,OAAA;qBAAEC,SAAQ;iBAAWE;UAAO,QAAA;UACvC;QACA,CAAOC;MACP;aACEJ,KAAAA;qBAAWC,SAAQ;iBAASI;UAA2D,QAAA;UACzF,OAAA,eAAA,QAAA,MAAA,IAAA,MAAA,OAAA,GAAA,CAAA;QACF,CAAA;MACC;IAACT;KAAO;IAEX;;SACoC,sBAAA,cAAA,MAAA,MAAA;;IACjBU,WAAAA;KACb,sBAAA,cAAClB,MAAAA,SAAY;IAACmB,SAAAA;KACZ,sBAAA,cAACnB,QAAQoB,MAAAA;IACPC,UAAAA,CAAAA,gBAAAA,MAAAA,WAAAA;KACYR,sBAAM,cAAK,QAAY,YAAA;IACnCS,UAAS;IACTC,MAAAA,MAASC,WAAAA,YAAAA,6BAAAA;+BAIf;IAAeC,SAAAA;QACb,sBAAA,cAACrB,MAAAA,SAAAA;IAAesB,YAAYA;KAAchB,sBAAQiB,cAAY,gBAAA;;IAC/ChB,UAAOA,QAAAA;;IAI5B;EAEF,CAAA,CAAMiB,CAAAA;;IAEJ,gBAAcf,CAAM,EAAA,MAAA,MAAA;QAClB,EAAA,EAAK,IAAA,eAAA,KAAA,EAAA;gBACH,QAAO;IACT,KAAK;AACH,aAAA;;aAAoD,sBAAA,cAAA,OAAA;QACjD,WAAA;MACH,GAAA,EAAA,uBAAO,CAAA;;aAAqDgB,sBAAO,cAAA,OAAA;QAChE,WAAA;MACH,GAAA,MAAA,MAAA,OAAO;;aAAuDd,sBAAM,cAAA,iBAAA;;QACxE,MAAA,MAAA;MACF,CAAA;EAEA;;IAEE,mBAAiF,CAAA,YAAA;QAC/E,KAAIe,IAAMC,YAAS,OAAA;eACjB,QAAO,MAAA;cACLC,SAAWC;aACXC;QACF,QAAA,GAAA,QAAA,IAAA,OAAA,OAAA,CAAA;QACF,OAAA,CAAA;MACC;IAACH;;IAAY;IAEhB;;SAII,0BAAwBrC,IAAAA,SAAayC,MAAAA;AAEvC,cAAA,MAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,KAAA,GAAA,QAAA,GAAA,CAAA,QAAA,EAAA,EAAA,CAAA;AAACA,WAAAA,UAAAA,OAAAA,aAAAA,IAAAA;KAAK;IAEV;;;",
|
|
6
|
+
"names": ["React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "AgentPrompt", "Operation", "Obj", "invariant", "useComputeRuntimeCallback", "Panel", "Toolbar", "useTranslation", "useAttention", "JsonHighlighter", "TemplateEditor", "meta", "hasAttention", "attendableId", "invoke", "usePromptHandler", "subject", "state", "setState", "status", "mountedRef", "result", "err", "error", "asChild", "disabled", "IconButton", "iconOnly", "label", "onClick", "handleRun", "classNames", "id", "instructions", "RoutineResult", "message", "db", "routine", "prompt", "makeRef", "input", "data"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/RoutineList/RoutineList.tsx
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { useOperationInvoker } from "@dxos/app-framework/ui";
|
|
6
|
+
import { DatabaseBlueprint, WebSearchBlueprint } from "@dxos/assistant-toolkit";
|
|
7
|
+
import { Routine } from "@dxos/compute";
|
|
8
|
+
import { Filter, Obj, Ref } from "@dxos/echo";
|
|
9
|
+
import { MarkdownBlueprint } from "@dxos/plugin-markdown";
|
|
10
|
+
import { useQuery } from "@dxos/react-client/echo";
|
|
11
|
+
import { IconButton } from "@dxos/react-ui";
|
|
12
|
+
import { AssistantOperation } from "#types";
|
|
13
|
+
var RoutineList = ({ subject }) => {
|
|
14
|
+
const { invokePromise } = useOperationInvoker();
|
|
15
|
+
const db = Obj.getDatabase(subject);
|
|
16
|
+
const prompts = useQuery(db, Filter.type(Routine.Routine));
|
|
17
|
+
if (!db) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
21
|
+
className: "flex gap-2"
|
|
22
|
+
}, prompts.map((prompt, i) => /* @__PURE__ */ React.createElement("div", {
|
|
23
|
+
key: i
|
|
24
|
+
}, /* @__PURE__ */ React.createElement(IconButton, {
|
|
25
|
+
icon: "ph--magic-wand--regular",
|
|
26
|
+
label: Obj.getLabel(prompt) ?? Obj.getDXN(prompt).toString(),
|
|
27
|
+
onClick: () => {
|
|
28
|
+
void invokePromise(AssistantOperation.RunPromptInNewChat, {
|
|
29
|
+
db,
|
|
30
|
+
prompt: Ref.make(prompt),
|
|
31
|
+
objects: [
|
|
32
|
+
subject
|
|
33
|
+
],
|
|
34
|
+
// TODO(burdon): Concifgure from Prompt object.
|
|
35
|
+
blueprints: [
|
|
36
|
+
DatabaseBlueprint.key,
|
|
37
|
+
WebSearchBlueprint.key,
|
|
38
|
+
MarkdownBlueprint.key
|
|
39
|
+
],
|
|
40
|
+
background: true
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}))));
|
|
44
|
+
};
|
|
45
|
+
export {
|
|
46
|
+
RoutineList as default
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=RoutineList-CLDXGQUD.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/RoutineList/RoutineList.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { DatabaseBlueprint, WebSearchBlueprint } from '@dxos/assistant-toolkit';\nimport { Routine } from '@dxos/compute';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { MarkdownBlueprint } from '@dxos/plugin-markdown';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { IconButton } from '@dxos/react-ui';\n\nimport { AssistantOperation } from '#types';\n\nexport type RoutineListProps = AppSurface.ObjectSectionProps<Obj.Unknown>;\n\nexport const RoutineList = ({ subject }: RoutineListProps) => {\n const { invokePromise } = useOperationInvoker();\n const db = Obj.getDatabase(subject);\n const prompts = useQuery(db, Filter.type(Routine.Routine));\n if (!db) {\n return null;\n }\n\n return (\n <div className='flex gap-2'>\n {prompts.map((prompt, i) => (\n <div key={i}>\n <IconButton\n icon='ph--magic-wand--regular'\n label={Obj.getLabel(prompt) ?? Obj.getDXN(prompt).toString()}\n onClick={() => {\n void invokePromise(AssistantOperation.RunPromptInNewChat, {\n db,\n prompt: Ref.make(prompt),\n objects: [subject],\n // TODO(burdon): Concifgure from Prompt object.\n blueprints: [DatabaseBlueprint.key, WebSearchBlueprint.key, MarkdownBlueprint.key],\n background: true,\n });\n }}\n />\n </div>\n ))}\n </div>\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,WAAW;AAElB,SAASC,2BAA2B;AAEpC,SAASC,mBAAmBC,0BAA0B;AACtD,SAASC,eAAe;AACxB,SAASC,QAAQC,KAAKC,WAAW;AACjC,SAASC,yBAAyB;AAClC,SAASC,gBAAgB;AACzB,SAASC,kBAAkB;AAE3B,SAASC,0BAA0B;AAI5B,IAAMC,cAAc,CAAC,EAAEC,QAAO,MAAoB;AACvD,QAAM,EAAEC,cAAa,IAAKb,oBAAAA;AAC1B,QAAMc,KAAKT,IAAIU,YAAYH,OAAAA;AAC3B,QAAMI,UAAUR,SAASM,IAAIV,OAAOa,KAAKd,QAAQA,OAAO,CAAA;AACxD,MAAI,CAACW,IAAI;AACP,WAAO;EACT;AAEA,SACE,sBAAA,cAACI,OAAAA;IAAIC,WAAU;KACZH,QAAQI,IAAI,CAACC,QAAQC,MACpB,sBAAA,cAACJ,OAAAA;IAAIK,KAAKD;KACR,sBAAA,cAACb,YAAAA;IACCe,MAAK;IACLC,OAAOpB,IAAIqB,SAASL,MAAAA,KAAWhB,IAAIsB,OAAON,MAAAA,EAAQO,SAAQ;IAC1DC,SAAS,MAAA;AACP,WAAKhB,cAAcH,mBAAmBoB,oBAAoB;QACxDhB;QACAO,QAAQf,IAAIyB,KAAKV,MAAAA;QACjBW,SAAS;UAACpB;;;QAEVqB,YAAY;UAAChC,kBAAkBsB;UAAKrB,mBAAmBqB;UAAKhB,kBAAkBgB;;QAC9EW,YAAY;MACd,CAAA;IACF;;AAMZ;",
|
|
6
|
+
"names": ["React", "useOperationInvoker", "DatabaseBlueprint", "WebSearchBlueprint", "Routine", "Filter", "Obj", "Ref", "MarkdownBlueprint", "useQuery", "IconButton", "AssistantOperation", "RoutineList", "subject", "invokePromise", "db", "getDatabase", "prompts", "type", "div", "className", "map", "prompt", "i", "key", "icon", "label", "getLabel", "getDXN", "toString", "onClick", "RunPromptInNewChat", "make", "objects", "blueprints", "background"]
|
|
7
|
+
}
|