@dxos/plugin-assistant 0.8.4-main.bc674ce → 0.8.4-main.c351d160a8
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/dist/lib/browser/AssistantSettings-RBJHZPUJ.mjs +93 -0
- package/dist/lib/browser/AssistantSettings-RBJHZPUJ.mjs.map +7 -0
- package/dist/lib/browser/BlueprintArticle-FTGO6Y2F.mjs +35 -0
- package/dist/lib/browser/BlueprintArticle-FTGO6Y2F.mjs.map +7 -0
- package/dist/lib/browser/{ChatCompanion-ECQYUQ2B.mjs → ChatCompanion-J7UAC5TX.mjs} +76 -26
- package/dist/lib/browser/ChatCompanion-J7UAC5TX.mjs.map +7 -0
- package/dist/lib/browser/ChatContainer-QPPZHQRQ.mjs +12 -0
- package/dist/lib/browser/{ChatDialog-SMK4RSZU.mjs → ChatDialog-NYU67AQS.mjs} +9 -9
- package/dist/lib/browser/ChatDialog-NYU67AQS.mjs.map +7 -0
- package/dist/lib/browser/ProjectArticle-ZB27ZROW.mjs +92 -0
- package/dist/lib/browser/ProjectArticle-ZB27ZROW.mjs.map +7 -0
- package/dist/lib/browser/ProjectSettings-DDYTUL25.mjs +117 -0
- package/dist/lib/browser/ProjectSettings-DDYTUL25.mjs.map +7 -0
- package/dist/lib/browser/PromptArticle-RHTAHF23.mjs +71 -0
- package/dist/lib/browser/PromptArticle-RHTAHF23.mjs.map +7 -0
- package/dist/lib/browser/TracePanel-UPRPODLO.mjs +228 -0
- package/dist/lib/browser/TracePanel-UPRPODLO.mjs.map +7 -0
- package/dist/lib/browser/TriggerStatus-X35WDCK5.mjs +112 -0
- package/dist/lib/browser/TriggerStatus-X35WDCK5.mjs.map +7 -0
- package/dist/lib/browser/{ai-service-5GUDOEWF.mjs → ai-service-CY2BYPH6.mjs} +5 -4
- package/dist/lib/browser/ai-service-CY2BYPH6.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-DSNH2OMY.mjs → app-graph-builder-RXT6BPSZ.mjs} +74 -42
- package/dist/lib/browser/app-graph-builder-RXT6BPSZ.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-O4XHPNJB.mjs +37 -0
- package/dist/lib/browser/blueprint-definition-O4XHPNJB.mjs.map +7 -0
- package/dist/lib/browser/blueprints/index.mjs +3 -7
- package/dist/lib/browser/{chunk-EXVT7D4B.mjs → chunk-2VIEX4RA.mjs} +3 -3
- package/dist/lib/browser/{chunk-EXVT7D4B.mjs.map → chunk-2VIEX4RA.mjs.map} +1 -1
- package/dist/lib/browser/chunk-IWAEH25L.mjs +101 -0
- package/dist/lib/browser/chunk-IWAEH25L.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ML3QCFKA.mjs → chunk-JYY5AD65.mjs} +50 -29
- package/dist/lib/browser/chunk-JYY5AD65.mjs.map +7 -0
- package/dist/lib/browser/{chunk-3JYPE2MM.mjs → chunk-KR3KDUVF.mjs} +637 -346
- package/dist/lib/browser/chunk-KR3KDUVF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-V772AMZM.mjs → chunk-MZWRGUND.mjs} +51 -48
- package/dist/lib/browser/chunk-MZWRGUND.mjs.map +7 -0
- package/dist/lib/browser/chunk-ZZRRSIQQ.mjs +26 -0
- package/dist/lib/browser/chunk-ZZRRSIQQ.mjs.map +7 -0
- package/dist/lib/browser/{edge-model-resolver-26BOY6HY.mjs → edge-model-resolver-YTMFQEN5.mjs} +4 -3
- package/dist/lib/browser/edge-model-resolver-YTMFQEN5.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +128 -91
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/{local-model-resolver-ZFIM6GGV.mjs → local-model-resolver-CGRQH37T.mjs} +4 -3
- package/dist/lib/browser/local-model-resolver-CGRQH37T.mjs.map +7 -0
- package/dist/lib/browser/markdown-QGCIPTMQ.mjs +155 -0
- package/dist/lib/browser/markdown-QGCIPTMQ.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{operation-resolver-7XJLBRQY.mjs → operation-resolver-BNMDF2JV.mjs} +64 -43
- package/dist/lib/browser/operation-resolver-BNMDF2JV.mjs.map +7 -0
- package/dist/lib/browser/react-surface-XPQLYF6H.mjs +150 -0
- package/dist/lib/browser/react-surface-XPQLYF6H.mjs.map +7 -0
- package/dist/lib/browser/{settings-4ZDLUMYE.mjs → settings-BVW4UWJL.mjs} +6 -5
- package/dist/lib/browser/settings-BVW4UWJL.mjs.map +7 -0
- package/dist/lib/browser/{state-AN6336ZX.mjs → state-TKE6OVOG.mjs} +5 -4
- package/dist/lib/browser/{state-AN6336ZX.mjs.map → state-TKE6OVOG.mjs.map} +3 -3
- package/dist/lib/browser/toolkit-XRSBBB3L.mjs +16 -0
- package/dist/lib/browser/toolkit-XRSBBB3L.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/AssistantSettings-KYN2CIJJ.mjs +94 -0
- package/dist/lib/node-esm/AssistantSettings-KYN2CIJJ.mjs.map +7 -0
- package/dist/lib/node-esm/BlueprintArticle-DFTPXAYU.mjs +36 -0
- package/dist/lib/node-esm/BlueprintArticle-DFTPXAYU.mjs.map +7 -0
- package/dist/lib/node-esm/{ChatCompanion-Q4FUZ2MW.mjs → ChatCompanion-OJJVO44R.mjs} +76 -26
- package/dist/lib/node-esm/ChatCompanion-OJJVO44R.mjs.map +7 -0
- package/dist/lib/node-esm/ChatContainer-RIVOAWFM.mjs +13 -0
- package/dist/lib/node-esm/{ChatDialog-AP45PVZR.mjs → ChatDialog-IEZLH7T5.mjs} +9 -9
- package/dist/lib/node-esm/ChatDialog-IEZLH7T5.mjs.map +7 -0
- package/dist/lib/node-esm/ProjectArticle-WVJI6IYZ.mjs +93 -0
- package/dist/lib/node-esm/ProjectArticle-WVJI6IYZ.mjs.map +7 -0
- package/dist/lib/node-esm/ProjectSettings-JQLRY6AS.mjs +118 -0
- package/dist/lib/node-esm/ProjectSettings-JQLRY6AS.mjs.map +7 -0
- package/dist/lib/node-esm/PromptArticle-HPCQDVFD.mjs +72 -0
- package/dist/lib/node-esm/PromptArticle-HPCQDVFD.mjs.map +7 -0
- package/dist/lib/node-esm/TracePanel-KAUU6OVE.mjs +229 -0
- package/dist/lib/node-esm/TracePanel-KAUU6OVE.mjs.map +7 -0
- package/dist/lib/node-esm/TriggerStatus-V3QMIE7T.mjs +113 -0
- package/dist/lib/node-esm/TriggerStatus-V3QMIE7T.mjs.map +7 -0
- package/dist/lib/node-esm/{ai-service-PXKKCFIF.mjs → ai-service-ZI3A6RVG.mjs} +5 -4
- package/dist/lib/node-esm/ai-service-ZI3A6RVG.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-TJCUEXW5.mjs → app-graph-builder-H24ZSWEY.mjs} +74 -42
- package/dist/lib/node-esm/app-graph-builder-H24ZSWEY.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-LWPM3FBG.mjs +38 -0
- package/dist/lib/node-esm/blueprint-definition-LWPM3FBG.mjs.map +7 -0
- package/dist/lib/node-esm/blueprints/index.mjs +3 -7
- package/dist/lib/node-esm/chunk-5BLOZBHM.mjs +102 -0
- package/dist/lib/node-esm/chunk-5BLOZBHM.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-AK3JJ76X.mjs +28 -0
- package/dist/lib/node-esm/chunk-AK3JJ76X.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ZRIPP7YF.mjs → chunk-JMBYVUD6.mjs} +50 -29
- package/dist/lib/node-esm/chunk-JMBYVUD6.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-XI5T3MJC.mjs → chunk-QYHBAOBD.mjs} +637 -346
- package/dist/lib/node-esm/chunk-QYHBAOBD.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-POWB2BPC.mjs → chunk-TEYTGR67.mjs} +3 -3
- package/dist/lib/node-esm/{chunk-POWB2BPC.mjs.map → chunk-TEYTGR67.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-355W5B27.mjs → chunk-VSA3KDAW.mjs} +51 -48
- package/dist/lib/node-esm/chunk-VSA3KDAW.mjs.map +7 -0
- package/dist/lib/node-esm/{edge-model-resolver-G5KMODPO.mjs → edge-model-resolver-CMJ3KNLQ.mjs} +4 -3
- package/dist/lib/node-esm/edge-model-resolver-CMJ3KNLQ.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +128 -91
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/{local-model-resolver-KDZLYI7Y.mjs → local-model-resolver-FFDAKOXN.mjs} +4 -3
- package/dist/lib/node-esm/local-model-resolver-FFDAKOXN.mjs.map +7 -0
- package/dist/lib/node-esm/markdown-5FJCWKIE.mjs +156 -0
- package/dist/lib/node-esm/markdown-5FJCWKIE.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{operation-resolver-SX4WMNA7.mjs → operation-resolver-TWGZ3ODO.mjs} +64 -43
- package/dist/lib/node-esm/operation-resolver-TWGZ3ODO.mjs.map +7 -0
- package/dist/lib/node-esm/react-surface-6I6JOQBD.mjs +151 -0
- package/dist/lib/node-esm/react-surface-6I6JOQBD.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-CQEOHR3R.mjs → settings-5CL6CQFK.mjs} +6 -5
- package/dist/lib/node-esm/settings-5CL6CQFK.mjs.map +7 -0
- package/dist/lib/node-esm/{state-HDON4REW.mjs → state-XBRFX5FL.mjs} +5 -4
- package/dist/lib/node-esm/{state-HDON4REW.mjs.map → state-XBRFX5FL.mjs.map} +3 -3
- package/dist/lib/node-esm/toolkit-5IWGLUF4.mjs +17 -0
- package/dist/lib/node-esm/toolkit-5IWGLUF4.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
- package/dist/types/src/blueprints/assistant/blueprint.d.ts +4 -0
- package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -0
- package/dist/types/src/blueprints/assistant/blueprint.test.d.ts +2 -0
- package/dist/types/src/blueprints/assistant/blueprint.test.d.ts.map +1 -0
- package/dist/types/src/blueprints/assistant/index.d.ts +2 -0
- package/dist/types/src/blueprints/assistant/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/index.d.ts +1 -6
- package/dist/types/src/blueprints/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/ai-service/ai-service.d.ts +3 -2
- package/dist/types/src/capabilities/ai-service/ai-service.d.ts.map +1 -1
- package/dist/types/src/capabilities/ai-service/index.d.ts +1 -1
- package/dist/types/src/capabilities/ai-service/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +4 -19
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +1 -2
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts +4 -3
- package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts +4 -3
- package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
- package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
- package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings/index.d.ts +1 -1
- package/dist/types/src/capabilities/settings/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings/settings.d.ts +4 -3
- package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/state/index.d.ts +6 -0
- package/dist/types/src/capabilities/state/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/state/state.d.ts +7 -1
- package/dist/types/src/capabilities/state/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/toolkit/index.d.ts +1 -1
- package/dist/types/src/capabilities/toolkit/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/toolkit/toolkit.d.ts +3 -2
- package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +1 -1
- package/dist/types/src/components/Chat/Chat.d.ts +12 -8
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
- package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +2 -2
- package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
- 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/ChatReferences.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.d.ts +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +133 -7
- 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/sync.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +131 -5
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +131 -5
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
- package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +4 -4
- package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.d.ts +2 -2
- package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +131 -5
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
- package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +2 -2
- package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +1 -1
- package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +0 -12
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts.map +1 -1
- package/dist/types/src/containers/AssistantSettings/index.d.ts +3 -0
- package/dist/types/src/containers/AssistantSettings/index.d.ts.map +1 -0
- package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +6 -0
- package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -0
- package/dist/types/src/containers/BlueprintArticle/index.d.ts +3 -0
- package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/ChatCompanion}/ChatCompanion.d.ts +3 -3
- package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -0
- package/dist/types/src/containers/ChatCompanion/index.d.ts +3 -0
- package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/ChatContainer}/ChatContainer.d.ts +6 -6
- package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -0
- package/dist/types/src/containers/ChatContainer/index.d.ts +3 -0
- package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/ChatDialog}/ChatDialog.d.ts +2 -3
- package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -0
- package/dist/types/src/containers/ChatDialog/index.d.ts +3 -0
- package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -0
- package/dist/types/src/containers/Project/ProjectArticle.d.ts +7 -0
- package/dist/types/src/containers/Project/ProjectArticle.d.ts.map +1 -0
- package/dist/types/src/containers/Project/ProjectSettings.d.ts +6 -0
- package/dist/types/src/containers/Project/ProjectSettings.d.ts.map +1 -0
- package/dist/types/src/containers/Project/index.d.ts +7 -0
- package/dist/types/src/containers/Project/index.d.ts.map +1 -0
- package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts +6 -0
- package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts.map +1 -0
- package/dist/types/src/containers/PromptArticle/index.d.ts +3 -0
- package/dist/types/src/containers/PromptArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/TracePanel/TracePanel.d.ts +3 -0
- package/dist/types/src/containers/TracePanel/TracePanel.d.ts.map +1 -0
- package/dist/types/src/containers/TracePanel/index.d.ts +3 -0
- package/dist/types/src/containers/TracePanel/index.d.ts.map +1 -0
- package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +4 -0
- package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -0
- package/dist/types/src/containers/TriggerStatus/index.d.ts +3 -0
- package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +11 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/extensions/index.d.ts +2 -0
- package/dist/types/src/extensions/index.d.ts.map +1 -0
- package/dist/types/src/extensions/prompt-extension.d.ts +10 -0
- package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -0
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatProcessor.d.ts +2 -1
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatServices.d.ts +2 -2
- package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatToolbarActions.d.ts +2 -2
- package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -1
- package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -1
- package/dist/types/src/hooks/useFilteredTypes.d.ts +1 -1
- package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -1
- package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/processor/processor.d.ts +7 -3
- package/dist/types/src/processor/processor.d.ts.map +1 -1
- package/dist/types/src/processor/update-name.d.ts +2 -2
- package/dist/types/src/processor/update-name.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +131 -5
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Assistant.d.ts +5 -27
- package/dist/types/src/types/Assistant.d.ts.map +1 -1
- package/dist/types/src/types/AssistantAction.d.ts +35 -15
- package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
- package/dist/types/src/types/capabilities.d.ts +8 -0
- package/dist/types/src/types/capabilities.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +1 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/service.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +95 -92
- package/src/AssistantPlugin.tsx +82 -45
- package/src/blueprints/assistant/blueprint.conversations.json +1 -0
- package/src/blueprints/assistant/blueprint.test.ts +48 -0
- package/src/blueprints/assistant/blueprint.ts +27 -0
- package/src/blueprints/assistant/index.ts +5 -0
- package/src/blueprints/index.ts +1 -8
- package/src/capabilities/ai-service/ai-service.ts +4 -3
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +67 -31
- package/src/capabilities/blueprint-definition/blueprint-definition.ts +36 -42
- package/src/capabilities/blueprint-definition/index.ts +0 -1
- package/src/capabilities/edge-model-resolver/edge-model-resolver.ts +4 -3
- package/src/capabilities/index.ts +1 -1
- package/src/capabilities/local-model-resolver/local-model-resolver.ts +4 -3
- package/src/capabilities/markdown/index.ts +7 -0
- package/src/capabilities/markdown/markdown.ts +39 -0
- package/src/capabilities/operation-resolver/operation-resolver.ts +53 -26
- package/src/capabilities/react-surface/react-surface.tsx +68 -30
- package/src/capabilities/settings/settings.ts +3 -2
- package/src/capabilities/state/state.ts +1 -0
- package/src/capabilities/toolkit/toolkit.ts +5 -16
- package/src/components/Chat/Chat.tsx +66 -33
- package/src/components/ChatProgress/ChatProgress.tsx +4 -5
- package/src/components/ChatPrompt/ChatActions.tsx +9 -1
- package/src/components/ChatPrompt/ChatOptions.tsx +29 -9
- package/src/components/ChatPrompt/ChatReferences.tsx +14 -4
- package/src/components/ChatThread/ChatThread.stories.tsx +11 -11
- package/src/components/ChatThread/ChatThread.tsx +15 -6
- package/src/components/ChatThread/Link.tsx +1 -1
- package/src/components/ChatThread/registry.tsx +51 -18
- package/src/components/ChatThread/sync.test.ts +2 -0
- package/src/components/ChatThread/sync.ts +14 -8
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +3 -7
- package/src/components/TemplateEditor/TemplateEditor.tsx +2 -2
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +3 -3
- package/src/components/TemplateEditor/TemplateForm.tsx +6 -7
- package/src/components/TemplateEditor/extensions/handlebars-extension.ts +4 -4
- package/src/components/ToolBlock/ToolBlock.tsx +15 -15
- package/src/components/Toolbox/Toolbox.stories.tsx +3 -3
- package/src/components/Toolbox/Toolbox.tsx +49 -48
- package/src/components/Typewriter/AssistantToolbar.tsx +3 -3
- package/src/components/Typewriter/Typewriter.stories.tsx +18 -15
- package/src/components/Typewriter/Typewriter.tsx +1 -1
- package/src/components/Typewriter/assistant-extension.tsx +3 -5
- package/src/components/index.ts +0 -9
- package/src/{components → containers}/AssistantSettings/AssistantSettings.tsx +15 -15
- package/src/containers/AssistantSettings/index.ts +7 -0
- package/src/containers/BlueprintArticle/BlueprintArticle.tsx +29 -0
- package/src/containers/BlueprintArticle/index.ts +7 -0
- package/src/{components → containers/ChatCompanion}/ChatCompanion.tsx +86 -22
- package/src/containers/ChatCompanion/index.ts +7 -0
- package/src/containers/ChatContainer/ChatContainer.tsx +92 -0
- package/src/containers/ChatContainer/index.ts +7 -0
- package/src/{components → containers/ChatDialog}/ChatDialog.tsx +7 -9
- package/src/containers/ChatDialog/index.ts +7 -0
- package/src/containers/Project/ProjectArticle.tsx +124 -0
- package/src/containers/Project/ProjectSettings.tsx +135 -0
- package/src/containers/Project/index.ts +16 -0
- package/src/containers/PromptArticle/PromptArticle.tsx +59 -0
- package/src/containers/PromptArticle/index.ts +7 -0
- package/src/containers/TracePanel/TracePanel.tsx +260 -0
- package/src/containers/TracePanel/index.ts +7 -0
- package/src/containers/TriggerStatus/TriggerStatus.tsx +140 -0
- package/src/containers/TriggerStatus/index.ts +7 -0
- package/src/containers/index.ts +16 -0
- package/src/extensions/index.ts +5 -0
- package/src/extensions/prompt-extension.ts +142 -0
- package/src/hooks/useBlueprintRegistry.ts +8 -4
- package/src/hooks/useChatProcessor.ts +2 -1
- package/src/hooks/useChatServices.ts +3 -3
- package/src/hooks/useChatToolbarActions.ts +6 -5
- package/src/hooks/useContextObjects.ts +7 -3
- package/src/hooks/useFilteredTypes.ts +3 -3
- package/src/hooks/useReferencesProvider.ts +1 -5
- package/src/index.ts +1 -0
- package/src/meta.ts +2 -2
- package/src/processor/processor.test.ts +8 -7
- package/src/processor/processor.ts +47 -26
- package/src/processor/update-name.ts +2 -3
- package/src/testing/test-sequence.ts +3 -3
- package/src/testing/test-services.ts +1 -1
- package/src/translations.ts +30 -3
- package/src/types/Assistant.ts +4 -38
- package/src/types/AssistantAction.ts +28 -13
- package/src/types/capabilities.ts +4 -2
- package/src/types/events.ts +1 -1
- package/src/types/index.ts +3 -0
- package/src/types/service.ts +4 -4
- package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs +0 -31
- package/dist/lib/browser/BlueprintArticle-WP3G5GLG.mjs.map +0 -7
- package/dist/lib/browser/ChatCompanion-ECQYUQ2B.mjs.map +0 -7
- package/dist/lib/browser/ChatContainer-QCCOFBUX.mjs +0 -73
- package/dist/lib/browser/ChatContainer-QCCOFBUX.mjs.map +0 -7
- package/dist/lib/browser/ChatDialog-SMK4RSZU.mjs.map +0 -7
- package/dist/lib/browser/PromptArticle-K362ZPAE.mjs +0 -53
- package/dist/lib/browser/PromptArticle-K362ZPAE.mjs.map +0 -7
- package/dist/lib/browser/ai-service-5GUDOEWF.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-DSNH2OMY.mjs.map +0 -7
- package/dist/lib/browser/blueprint-definition-DGHH7MUU.mjs +0 -14
- package/dist/lib/browser/chunk-3JYPE2MM.mjs.map +0 -7
- package/dist/lib/browser/chunk-DKQMSMBN.mjs +0 -326
- package/dist/lib/browser/chunk-DKQMSMBN.mjs.map +0 -7
- package/dist/lib/browser/chunk-ML3QCFKA.mjs.map +0 -7
- package/dist/lib/browser/chunk-MRJVYGLU.mjs +0 -208
- package/dist/lib/browser/chunk-MRJVYGLU.mjs.map +0 -7
- package/dist/lib/browser/chunk-V772AMZM.mjs.map +0 -7
- package/dist/lib/browser/chunk-WGQTU6UJ.mjs +0 -41
- package/dist/lib/browser/chunk-WGQTU6UJ.mjs.map +0 -7
- package/dist/lib/browser/edge-model-resolver-26BOY6HY.mjs.map +0 -7
- package/dist/lib/browser/local-model-resolver-ZFIM6GGV.mjs.map +0 -7
- package/dist/lib/browser/operation-resolver-7XJLBRQY.mjs.map +0 -7
- package/dist/lib/browser/react-surface-NCITRSJJ.mjs +0 -109
- package/dist/lib/browser/react-surface-NCITRSJJ.mjs.map +0 -7
- package/dist/lib/browser/repair-6QGAKOVM.mjs +0 -54
- package/dist/lib/browser/repair-6QGAKOVM.mjs.map +0 -7
- package/dist/lib/browser/settings-4ZDLUMYE.mjs.map +0 -7
- package/dist/lib/browser/toolkit-7AVTEPMA.mjs +0 -18
- package/dist/lib/browser/toolkit-7AVTEPMA.mjs.map +0 -7
- package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs +0 -32
- package/dist/lib/node-esm/BlueprintArticle-WZ76E2C4.mjs.map +0 -7
- package/dist/lib/node-esm/ChatCompanion-Q4FUZ2MW.mjs.map +0 -7
- package/dist/lib/node-esm/ChatContainer-AKI33HIB.mjs +0 -74
- package/dist/lib/node-esm/ChatContainer-AKI33HIB.mjs.map +0 -7
- package/dist/lib/node-esm/ChatDialog-AP45PVZR.mjs.map +0 -7
- package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs +0 -54
- package/dist/lib/node-esm/PromptArticle-D4HAIIC6.mjs.map +0 -7
- package/dist/lib/node-esm/ai-service-PXKKCFIF.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-TJCUEXW5.mjs.map +0 -7
- package/dist/lib/node-esm/blueprint-definition-SEMDEIYG.mjs +0 -15
- package/dist/lib/node-esm/chunk-355W5B27.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-75PHXBN3.mjs +0 -327
- package/dist/lib/node-esm/chunk-75PHXBN3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-DCA5QWQT.mjs +0 -209
- package/dist/lib/node-esm/chunk-DCA5QWQT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs +0 -42
- package/dist/lib/node-esm/chunk-MSBPC4RJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XI5T3MJC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZRIPP7YF.mjs.map +0 -7
- package/dist/lib/node-esm/edge-model-resolver-G5KMODPO.mjs.map +0 -7
- package/dist/lib/node-esm/local-model-resolver-KDZLYI7Y.mjs.map +0 -7
- package/dist/lib/node-esm/operation-resolver-SX4WMNA7.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-ST6V7LPE.mjs +0 -110
- package/dist/lib/node-esm/react-surface-ST6V7LPE.mjs.map +0 -7
- package/dist/lib/node-esm/repair-QJ7CQDKU.mjs +0 -55
- package/dist/lib/node-esm/repair-QJ7CQDKU.mjs.map +0 -7
- package/dist/lib/node-esm/settings-CQEOHR3R.mjs.map +0 -7
- package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs +0 -19
- package/dist/lib/node-esm/toolkit-OWGCEKOO.mjs.map +0 -7
- package/dist/types/src/blueprints/assistant-blueprint.d.ts +0 -209
- package/dist/types/src/blueprints/assistant-blueprint.d.ts.map +0 -1
- package/dist/types/src/capabilities/repair/index.d.ts +0 -3
- package/dist/types/src/capabilities/repair/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/repair/repair.d.ts +0 -6
- package/dist/types/src/capabilities/repair/repair.d.ts.map +0 -1
- package/dist/types/src/components/AssistantSettings/index.d.ts +0 -2
- package/dist/types/src/components/AssistantSettings/index.d.ts.map +0 -1
- package/dist/types/src/components/BlueprintArticle.d.ts +0 -7
- package/dist/types/src/components/BlueprintArticle.d.ts.map +0 -1
- package/dist/types/src/components/ChatCompanion.d.ts.map +0 -1
- package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
- package/dist/types/src/components/ChatDialog.d.ts.map +0 -1
- package/dist/types/src/components/PromptArticle.d.ts +0 -7
- package/dist/types/src/components/PromptArticle.d.ts.map +0 -1
- package/dist/types/src/functions/index.d.ts +0 -4
- package/dist/types/src/functions/index.d.ts.map +0 -1
- package/dist/types/src/functions/object-list.d.ts +0 -10
- package/dist/types/src/functions/object-list.d.ts.map +0 -1
- package/dist/types/src/functions/object-load.d.ts +0 -8
- package/dist/types/src/functions/object-load.d.ts.map +0 -1
- package/dist/types/src/functions/object-search.d.ts +0 -10
- package/dist/types/src/functions/object-search.d.ts.map +0 -1
- package/src/blueprints/assistant-blueprint.ts +0 -62
- package/src/capabilities/repair/index.ts +0 -7
- package/src/capabilities/repair/repair.ts +0 -63
- package/src/components/AssistantSettings/index.ts +0 -5
- package/src/components/BlueprintArticle.tsx +0 -29
- package/src/components/ChatContainer.tsx +0 -61
- package/src/components/PromptArticle.tsx +0 -50
- package/src/functions/index.ts +0 -7
- package/src/functions/object-list.ts +0 -49
- package/src/functions/object-load.ts +0 -47
- package/src/functions/object-search.ts +0 -46
- /package/dist/lib/browser/{blueprint-definition-DGHH7MUU.mjs.map → ChatContainer-QPPZHQRQ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{blueprint-definition-SEMDEIYG.mjs.map → ChatContainer-RIVOAWFM.mjs.map} +0 -0
- /package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts +0 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
6
|
+
import React, { useMemo } from 'react';
|
|
7
|
+
|
|
8
|
+
import { Filter, Obj, Query } from '@dxos/echo';
|
|
9
|
+
import { InvocationOutcome, InvocationTraceEndEvent, InvocationTraceStartEvent } from '@dxos/functions-runtime';
|
|
10
|
+
import { useTriggerRuntimeControls } from '@dxos/plugin-automation';
|
|
11
|
+
import { useActiveSpace } from '@dxos/plugin-space';
|
|
12
|
+
import { type Space } from '@dxos/react-client/echo';
|
|
13
|
+
import { Input, Panel, Toolbar, useTranslation } from '@dxos/react-ui';
|
|
14
|
+
import { Timeline, type Commit } from '@dxos/react-ui-components';
|
|
15
|
+
import { Message } from '@dxos/types';
|
|
16
|
+
|
|
17
|
+
import { AtomObj, AtomQuery, AtomRef } from '@dxos/echo-atom';
|
|
18
|
+
import { LogLevel } from '@dxos/log';
|
|
19
|
+
import { Atom } from '@effect-atom/atom';
|
|
20
|
+
import { useAtomValue } from '@effect-atom/atom-react';
|
|
21
|
+
import * as Array from 'effect/Array';
|
|
22
|
+
import { pipe } from 'effect/Function';
|
|
23
|
+
import { meta } from '../../meta';
|
|
24
|
+
|
|
25
|
+
export const TracePanel = () => {
|
|
26
|
+
const space = useActiveSpace();
|
|
27
|
+
if (!space) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return <TracePanelMain space={space} />;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const TracePanelMain = ({ space }: { space: Space }) => {
|
|
35
|
+
const { t } = useTranslation(meta.id);
|
|
36
|
+
const { state, start, stop } = useTriggerRuntimeControls(space.db);
|
|
37
|
+
const isRunning = state?.enabled ?? false;
|
|
38
|
+
|
|
39
|
+
const { branches, commits } = useAtomValue(useMemo(() => getExecutionGraph(space), [space]));
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<Panel.Root>
|
|
43
|
+
<Panel.Toolbar asChild>
|
|
44
|
+
<Toolbar.Root>
|
|
45
|
+
<Input.Root>
|
|
46
|
+
<Input.Switch checked={isRunning} onCheckedChange={isRunning ? stop : start} />
|
|
47
|
+
</Input.Root>
|
|
48
|
+
<span className='text-sm'>{t('trigger runtime label')}</span>
|
|
49
|
+
</Toolbar.Root>
|
|
50
|
+
</Panel.Toolbar>
|
|
51
|
+
<Panel.Content>
|
|
52
|
+
<Timeline branches={branches} commits={commits} compact />
|
|
53
|
+
</Panel.Content>
|
|
54
|
+
</Panel.Root>
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
type InvocationInfo = {
|
|
59
|
+
startEvent: InvocationTraceStartEvent;
|
|
60
|
+
endEvent: InvocationTraceEndEvent | null;
|
|
61
|
+
subevents: Obj.Unknown[];
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const getExecutionGraph = (
|
|
65
|
+
space: Space,
|
|
66
|
+
{
|
|
67
|
+
invocationsLimit = 100,
|
|
68
|
+
subeventsLimit = 20,
|
|
69
|
+
showSubeventsForLastNInvocations = 4,
|
|
70
|
+
}: { invocationsLimit?: number; subeventsLimit?: number; showSubeventsForLastNInvocations?: number } = {},
|
|
71
|
+
): Atom.Atom<{
|
|
72
|
+
branches: string[];
|
|
73
|
+
commits: Commit[];
|
|
74
|
+
}> => {
|
|
75
|
+
return pipe(
|
|
76
|
+
space.properties,
|
|
77
|
+
(_) => AtomObj.make(_),
|
|
78
|
+
// space properies => Atom<Atom<InvocationTraceEvent[]>>
|
|
79
|
+
(_) =>
|
|
80
|
+
Atom.make((get) => {
|
|
81
|
+
const queueDxn = get(_).invocationTraceQueue?.dxn;
|
|
82
|
+
return AtomQuery.make(
|
|
83
|
+
space.db,
|
|
84
|
+
!queueDxn
|
|
85
|
+
? (Query.select(Filter.nothing()) as Query.Query<never>) // TODO(dmaretskyi): Broken echo types here.
|
|
86
|
+
: Query.select(
|
|
87
|
+
Filter.or(Filter.type(InvocationTraceStartEvent), Filter.type(InvocationTraceEndEvent)),
|
|
88
|
+
).from({
|
|
89
|
+
queues: [queueDxn.toString()],
|
|
90
|
+
}),
|
|
91
|
+
);
|
|
92
|
+
}),
|
|
93
|
+
// Flatten atoms
|
|
94
|
+
(_) => Atom.make((get) => get(get(_))),
|
|
95
|
+
// Atom<InvocationTraceEvent[]> => Atom<InvocationInfo[]>
|
|
96
|
+
(_) =>
|
|
97
|
+
Atom.make((get) => {
|
|
98
|
+
const events = get(_);
|
|
99
|
+
const invocations: InvocationInfo[] = [];
|
|
100
|
+
|
|
101
|
+
for (const event of events) {
|
|
102
|
+
if (Schema.is(InvocationTraceStartEvent)(event)) {
|
|
103
|
+
const invocationInfo: InvocationInfo = {
|
|
104
|
+
startEvent: event,
|
|
105
|
+
endEvent: null,
|
|
106
|
+
subevents: [],
|
|
107
|
+
};
|
|
108
|
+
invocations.push(invocationInfo);
|
|
109
|
+
} else if (Schema.is(InvocationTraceEndEvent)(event)) {
|
|
110
|
+
const invocationInfo = invocations.find((i) => i.startEvent.invocationId === event.invocationId);
|
|
111
|
+
if (invocationInfo) {
|
|
112
|
+
invocationInfo.endEvent = event;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
let expandedBudget = showSubeventsForLastNInvocations;
|
|
118
|
+
for (let i = invocations.length - 1; i >= 0; i--) {
|
|
119
|
+
const invocation = invocations[i];
|
|
120
|
+
if (!invocation.startEvent.invocationTraceQueue) {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
const subevents = get(
|
|
124
|
+
AtomQuery.make(
|
|
125
|
+
space.db,
|
|
126
|
+
Query.select(Filter.everything())
|
|
127
|
+
.limit(subeventsLimit)
|
|
128
|
+
.from({ queues: [invocation.startEvent.invocationTraceQueue?.dxn?.toString()] }),
|
|
129
|
+
),
|
|
130
|
+
);
|
|
131
|
+
invocation.subevents = subevents;
|
|
132
|
+
if (subevents.length > 0) {
|
|
133
|
+
expandedBudget--;
|
|
134
|
+
}
|
|
135
|
+
if (expandedBudget <= 0) {
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return invocations;
|
|
141
|
+
}),
|
|
142
|
+
|
|
143
|
+
// Build commit graph from InvocationInfo[]
|
|
144
|
+
(_) =>
|
|
145
|
+
Atom.make((get) => {
|
|
146
|
+
const invocations = get(_);
|
|
147
|
+
// Two alternating branches for subevents to save horizontal space.
|
|
148
|
+
const branches: string[] = ['invocations'];
|
|
149
|
+
const commits: Commit[] = [];
|
|
150
|
+
|
|
151
|
+
const sorted = invocations.sort((a, b) => a.startEvent.timestamp - b.startEvent.timestamp);
|
|
152
|
+
let idx = 0;
|
|
153
|
+
for (const invocation of sorted.slice(-invocationsLimit)) {
|
|
154
|
+
const trigger = invocation.startEvent.trigger && AtomRef.make(invocation.startEvent.trigger).pipe(get);
|
|
155
|
+
const fn =
|
|
156
|
+
(invocation.startEvent.invocationTarget &&
|
|
157
|
+
AtomRef.make(invocation.startEvent.invocationTarget).pipe(get)) ??
|
|
158
|
+
(trigger?.function && AtomRef.make(trigger.function).pipe(get));
|
|
159
|
+
|
|
160
|
+
const functionName = fn ? Obj.getLabel(fn) : undefined;
|
|
161
|
+
const triggerName = trigger?.spec?.kind ?? 'trigger';
|
|
162
|
+
const label = functionName ? `${functionName} on ${triggerName}` : triggerName;
|
|
163
|
+
|
|
164
|
+
const branchName = `invocation-${invocation.startEvent.invocationId.slice(0, 8)}`;
|
|
165
|
+
|
|
166
|
+
if (invocation.endEvent && invocation.subevents.length === 0) {
|
|
167
|
+
commits.push({
|
|
168
|
+
id: invocation.endEvent.id,
|
|
169
|
+
branch: 'invocations',
|
|
170
|
+
parents: commits.length > 0 ? [commits.at(-1)!.id] : [],
|
|
171
|
+
icon:
|
|
172
|
+
invocation.endEvent.outcome === InvocationOutcome.SUCCESS
|
|
173
|
+
? 'ph--check-circle--regular'
|
|
174
|
+
: 'ph--x-circle--regular',
|
|
175
|
+
level: invocation.endEvent.outcome === InvocationOutcome.SUCCESS ? LogLevel.INFO : LogLevel.ERROR,
|
|
176
|
+
message: `${label} - ${invocation.endEvent.outcome}`,
|
|
177
|
+
timestamp: new Date(invocation.endEvent.timestamp),
|
|
178
|
+
});
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
commits.push({
|
|
183
|
+
id: invocation.startEvent.id,
|
|
184
|
+
branch: 'invocations',
|
|
185
|
+
parents: commits.length > 0 ? [commits.at(-1)!.id] : [],
|
|
186
|
+
icon: invocation.endEvent ? 'ph--play--regular' : 'ph--spinner-gap--regular',
|
|
187
|
+
level: invocation.endEvent ? LogLevel.INFO : LogLevel.VERBOSE,
|
|
188
|
+
message: label,
|
|
189
|
+
timestamp: new Date(invocation.startEvent.timestamp),
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
for (const subevent of invocation.subevents.slice(-subeventsLimit)) {
|
|
193
|
+
if (Obj.instanceOf(Message.Message, subevent)) {
|
|
194
|
+
for (const block of subevent.blocks) {
|
|
195
|
+
switch (block._tag) {
|
|
196
|
+
case 'text':
|
|
197
|
+
commits.push({
|
|
198
|
+
id: subevent.id,
|
|
199
|
+
branch: branchName,
|
|
200
|
+
parents: [commits.at(-1)!.id],
|
|
201
|
+
icon: 'ph--robot--regular',
|
|
202
|
+
level: LogLevel.VERBOSE,
|
|
203
|
+
message: block.text.slice(0, 50),
|
|
204
|
+
timestamp: new Date(subevent.created),
|
|
205
|
+
});
|
|
206
|
+
if (!branches.includes(branchName)) {
|
|
207
|
+
branches.push(branchName);
|
|
208
|
+
}
|
|
209
|
+
break;
|
|
210
|
+
case 'toolCall':
|
|
211
|
+
commits.push({
|
|
212
|
+
id: subevent.id,
|
|
213
|
+
branch: branchName,
|
|
214
|
+
parents: [commits.at(-1)!.id],
|
|
215
|
+
icon: 'ph--wrench--regular',
|
|
216
|
+
level: LogLevel.VERBOSE,
|
|
217
|
+
message: block.name,
|
|
218
|
+
timestamp: new Date(subevent.created),
|
|
219
|
+
});
|
|
220
|
+
if (!branches.includes(branchName)) {
|
|
221
|
+
branches.push(branchName);
|
|
222
|
+
}
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (!invocation.endEvent && invocation.subevents.length > 0) {
|
|
230
|
+
commits.push({
|
|
231
|
+
id: invocation.startEvent.invocationId + 'pending',
|
|
232
|
+
branch: branchName,
|
|
233
|
+
parents: [commits.at(-1)!.id],
|
|
234
|
+
icon: 'ph--dots-three-vertical--regular',
|
|
235
|
+
level: LogLevel.VERBOSE,
|
|
236
|
+
message: 'Running...',
|
|
237
|
+
timestamp: new Date(),
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
if (invocation.endEvent && invocation.subevents.length > 0) {
|
|
242
|
+
commits.push({
|
|
243
|
+
id: invocation.endEvent.id,
|
|
244
|
+
branch: 'invocations',
|
|
245
|
+
parents: Array.dedupe([invocation.startEvent.invocationId, commits.at(-1)!.id]),
|
|
246
|
+
icon:
|
|
247
|
+
invocation.endEvent.outcome === InvocationOutcome.SUCCESS
|
|
248
|
+
? 'ph--check-circle--regular'
|
|
249
|
+
: 'ph--x-circle--regular',
|
|
250
|
+
level: invocation.endEvent.outcome === InvocationOutcome.SUCCESS ? LogLevel.INFO : LogLevel.ERROR,
|
|
251
|
+
message: `${label} - ${invocation.endEvent.outcome === InvocationOutcome.SUCCESS ? 'Success' : 'Failure'}`,
|
|
252
|
+
timestamp: new Date(invocation.endEvent.timestamp),
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return { branches, commits };
|
|
258
|
+
}),
|
|
259
|
+
);
|
|
260
|
+
};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { useMemo } from 'react';
|
|
6
|
+
|
|
7
|
+
import { type InvocationsState } from '@dxos/functions-runtime';
|
|
8
|
+
import { useTriggerRuntimeControls } from '@dxos/plugin-automation';
|
|
9
|
+
import { useActiveSpace } from '@dxos/plugin-space';
|
|
10
|
+
import { StatusBar } from '@dxos/plugin-status-bar';
|
|
11
|
+
import { type Database } from '@dxos/react-client/echo';
|
|
12
|
+
import { Icon, Input, Popover, useTranslation } from '@dxos/react-ui';
|
|
13
|
+
import { Settings } from '@dxos/react-ui-form';
|
|
14
|
+
import { mx } from '@dxos/ui-theme';
|
|
15
|
+
|
|
16
|
+
import { meta } from '../../meta';
|
|
17
|
+
|
|
18
|
+
type TriggerStatusState = 'disabled' | 'idle' | 'running' | 'error';
|
|
19
|
+
|
|
20
|
+
const getIcon = (state: TriggerStatusState): string => {
|
|
21
|
+
switch (state) {
|
|
22
|
+
case 'disabled':
|
|
23
|
+
return 'ph--lightning-slash--regular';
|
|
24
|
+
case 'idle':
|
|
25
|
+
return 'ph--lightning--regular';
|
|
26
|
+
case 'running':
|
|
27
|
+
return 'ph--lightning--fill';
|
|
28
|
+
case 'error':
|
|
29
|
+
return 'ph--warning--regular';
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const getIconClassNames = (state: TriggerStatusState): string | undefined => {
|
|
34
|
+
switch (state) {
|
|
35
|
+
case 'running':
|
|
36
|
+
return 'animate-pulse text-accent-text';
|
|
37
|
+
case 'error':
|
|
38
|
+
return 'text-error-text';
|
|
39
|
+
default:
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const TriggerStatus = () => {
|
|
45
|
+
const space = useActiveSpace();
|
|
46
|
+
const db = space?.db;
|
|
47
|
+
if (!db) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return <SpaceStatusMain db={db} />;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const SpaceStatusMain = ({ db }: { db: Database.Database }) => {
|
|
55
|
+
const { state, start, stop } = useTriggerRuntimeControls(db);
|
|
56
|
+
const isRunning = state?.enabled ?? false;
|
|
57
|
+
|
|
58
|
+
// Determine the current trigger status state.
|
|
59
|
+
const triggerState: TriggerStatusState = useMemo(() => {
|
|
60
|
+
if (!isRunning) {
|
|
61
|
+
return 'disabled';
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Check if there's any pending invocation.
|
|
65
|
+
const hasPending = state?.invocations.some((invocation) => invocation.result === null);
|
|
66
|
+
if (hasPending) {
|
|
67
|
+
return 'running';
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Check if the last invocation failed.
|
|
71
|
+
const lastInvocation = state?.invocations.at(-1);
|
|
72
|
+
if (lastInvocation?.result?._tag === 'Failure') {
|
|
73
|
+
return 'error';
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return 'idle';
|
|
77
|
+
}, [isRunning, state?.invocations]);
|
|
78
|
+
|
|
79
|
+
const { t } = useTranslation(meta.id);
|
|
80
|
+
const title = t(`trigger status ${triggerState} label`);
|
|
81
|
+
const icon = <Icon icon={getIcon(triggerState)} classNames={getIconClassNames(triggerState)} />;
|
|
82
|
+
|
|
83
|
+
return (
|
|
84
|
+
<Popover.Root>
|
|
85
|
+
<Popover.Trigger asChild>
|
|
86
|
+
<StatusBar.Item title={title}>{icon}</StatusBar.Item>
|
|
87
|
+
</Popover.Trigger>
|
|
88
|
+
<Popover.Portal>
|
|
89
|
+
<Popover.Content>
|
|
90
|
+
<TriggerStatusPopover
|
|
91
|
+
isRunning={isRunning}
|
|
92
|
+
state={triggerState}
|
|
93
|
+
currentFunctionName={state?.invocations.at(-1)?.function?.name ?? state?.invocations.at(-1)?.function?.key}
|
|
94
|
+
lastInvocation={state?.invocations.at(-1)}
|
|
95
|
+
onToggle={isRunning ? stop : start}
|
|
96
|
+
/>
|
|
97
|
+
<Popover.Arrow />
|
|
98
|
+
</Popover.Content>
|
|
99
|
+
</Popover.Portal>
|
|
100
|
+
</Popover.Root>
|
|
101
|
+
);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
interface TriggerStatusPopoverProps {
|
|
105
|
+
isRunning: boolean;
|
|
106
|
+
state: TriggerStatusState;
|
|
107
|
+
currentFunctionName?: string;
|
|
108
|
+
lastInvocation?: InvocationsState;
|
|
109
|
+
onToggle: () => void;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const TriggerStatusPopover = ({
|
|
113
|
+
isRunning,
|
|
114
|
+
state,
|
|
115
|
+
currentFunctionName,
|
|
116
|
+
lastInvocation,
|
|
117
|
+
onToggle,
|
|
118
|
+
}: TriggerStatusPopoverProps) => {
|
|
119
|
+
const { t } = useTranslation(meta.id);
|
|
120
|
+
|
|
121
|
+
return (
|
|
122
|
+
<div className='min-w-[240px] p-2 space-y-3'>
|
|
123
|
+
{/* Runtime Toggle */}
|
|
124
|
+
<Settings.ItemInput title={t('trigger runtime label')} description={t('trigger runtime description')}>
|
|
125
|
+
<Input.Switch classNames='justify-self-end' checked={isRunning} onCheckedChange={onToggle} />
|
|
126
|
+
</Settings.ItemInput>
|
|
127
|
+
|
|
128
|
+
{/* Status Indicator */}
|
|
129
|
+
<div className='flex items-center gap-2 pt-2 border-t border-separator'>
|
|
130
|
+
<Icon icon={getIcon(state)} classNames={mx(getIconClassNames(state), 'shrink-0')} />
|
|
131
|
+
<span className='text-sm'>{t(`trigger status ${state} label`)}</span>
|
|
132
|
+
{currentFunctionName && state === 'running' && (
|
|
133
|
+
<span className='text-xs text-description'>{currentFunctionName}</span>
|
|
134
|
+
)}
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
);
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
export default TriggerStatus;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { type ComponentType, lazy } from 'react';
|
|
6
|
+
|
|
7
|
+
export * from './Project';
|
|
8
|
+
|
|
9
|
+
export const AssistantSettings: ComponentType<any> = lazy(() => import('./AssistantSettings'));
|
|
10
|
+
export const BlueprintArticle: ComponentType<any> = lazy(() => import('./BlueprintArticle'));
|
|
11
|
+
export const ChatCompanion: ComponentType<any> = lazy(() => import('./ChatCompanion'));
|
|
12
|
+
export const ChatContainer: ComponentType<any> = lazy(() => import('./ChatContainer'));
|
|
13
|
+
export const ChatDialog: ComponentType<any> = lazy(() => import('./ChatDialog'));
|
|
14
|
+
export const PromptArticle: ComponentType<any> = lazy(() => import('./PromptArticle'));
|
|
15
|
+
export const TracePanel: ComponentType<any> = lazy(() => import('./TracePanel'));
|
|
16
|
+
export const TriggerStatus: ComponentType<any> = lazy(() => import('./TriggerStatus'));
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { syntaxTree } from '@codemirror/language';
|
|
6
|
+
import { type Extension } from '@codemirror/state';
|
|
7
|
+
import { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';
|
|
8
|
+
|
|
9
|
+
export type PromptExtensionOptions = {
|
|
10
|
+
/** Called when the user clicks the run button on a prompt code block. */
|
|
11
|
+
onRun: (promptText: string) => void;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* CodeMirror extension that adds a green "run" button to ```prompt fenced code blocks.
|
|
16
|
+
*/
|
|
17
|
+
export const promptRunExtension = ({ onRun }: PromptExtensionOptions): Extension => {
|
|
18
|
+
return [
|
|
19
|
+
ViewPlugin.fromClass(
|
|
20
|
+
class {
|
|
21
|
+
decorations: DecorationSet;
|
|
22
|
+
|
|
23
|
+
constructor(view: EditorView) {
|
|
24
|
+
this.decorations = this.buildDecorations(view);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
update(update: ViewUpdate) {
|
|
28
|
+
if (update.docChanged || update.viewportChanged || update.selectionSet || update.focusChanged) {
|
|
29
|
+
this.decorations = this.buildDecorations(update.view);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
buildDecorations(view: EditorView): DecorationSet {
|
|
34
|
+
const decorations: Array<{ from: number; to: number; decoration: Decoration }> = [];
|
|
35
|
+
|
|
36
|
+
syntaxTree(view.state).iterate({
|
|
37
|
+
enter: (node) => {
|
|
38
|
+
if (node.name === 'FencedCode') {
|
|
39
|
+
const info = node.node.getChild('CodeInfo');
|
|
40
|
+
if (info) {
|
|
41
|
+
const type = view.state.sliceDoc(info.from, info.to);
|
|
42
|
+
const text = node.node.getChild('CodeText');
|
|
43
|
+
if (type === 'prompt' && text) {
|
|
44
|
+
const content = view.state.sliceDoc(text.from, text.to).trim();
|
|
45
|
+
if (content.length > 0) {
|
|
46
|
+
const widget = new PromptRunWidget(content, onRun);
|
|
47
|
+
decorations.push({
|
|
48
|
+
from: node.from,
|
|
49
|
+
to: node.from,
|
|
50
|
+
decoration: Decoration.widget({ widget, side: -1 }),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
return Decoration.set(
|
|
60
|
+
decorations.sort((a, b) => a.from - b.from || a.to - b.to).map((d) => d.decoration.range(d.from, d.to)),
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
decorations: (v) => v.decorations,
|
|
66
|
+
},
|
|
67
|
+
),
|
|
68
|
+
EditorView.theme({
|
|
69
|
+
'& .cm-prompt-run-container': {
|
|
70
|
+
position: 'relative',
|
|
71
|
+
display: 'block',
|
|
72
|
+
height: '0',
|
|
73
|
+
},
|
|
74
|
+
'& .cm-prompt-run': {
|
|
75
|
+
position: 'absolute',
|
|
76
|
+
right: '8px',
|
|
77
|
+
top: '8px',
|
|
78
|
+
zIndex: '10',
|
|
79
|
+
display: 'inline-flex',
|
|
80
|
+
alignItems: 'center',
|
|
81
|
+
justifyContent: 'center',
|
|
82
|
+
width: '24px',
|
|
83
|
+
height: '24px',
|
|
84
|
+
border: 'none',
|
|
85
|
+
borderRadius: '4px',
|
|
86
|
+
background: 'var(--color-success, #22c55e)',
|
|
87
|
+
cursor: 'pointer',
|
|
88
|
+
opacity: '0.85',
|
|
89
|
+
transition: 'opacity 0.15s ease',
|
|
90
|
+
'&:hover': {
|
|
91
|
+
opacity: '1',
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
'& .cm-prompt-run-icon': {
|
|
95
|
+
width: '0',
|
|
96
|
+
height: '0',
|
|
97
|
+
borderTop: '5px solid transparent',
|
|
98
|
+
borderBottom: '5px solid transparent',
|
|
99
|
+
borderLeft: '8px solid white',
|
|
100
|
+
marginLeft: '2px',
|
|
101
|
+
},
|
|
102
|
+
}),
|
|
103
|
+
];
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
class PromptRunWidget extends WidgetType {
|
|
107
|
+
constructor(
|
|
108
|
+
private readonly _promptText: string,
|
|
109
|
+
private readonly _onRun: (promptText: string) => void,
|
|
110
|
+
) {
|
|
111
|
+
super();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
override eq(other: this) {
|
|
115
|
+
return this._promptText === other._promptText;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
override ignoreEvent() {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
override toDOM() {
|
|
123
|
+
const container = document.createElement('div');
|
|
124
|
+
container.className = 'cm-prompt-run-container';
|
|
125
|
+
|
|
126
|
+
const button = document.createElement('button');
|
|
127
|
+
button.className = 'cm-prompt-run';
|
|
128
|
+
button.title = 'Run prompt in new chat';
|
|
129
|
+
button.addEventListener('mousedown', (event) => {
|
|
130
|
+
event.preventDefault();
|
|
131
|
+
event.stopPropagation();
|
|
132
|
+
this._onRun(this._promptText);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
const icon = document.createElement('span');
|
|
136
|
+
icon.className = 'cm-prompt-run-icon';
|
|
137
|
+
button.appendChild(icon);
|
|
138
|
+
container.appendChild(button);
|
|
139
|
+
|
|
140
|
+
return container;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { useCapabilities } from '@dxos/app-framework/ui';
|
|
8
|
+
import { AppCapabilities } from '@dxos/app-toolkit';
|
|
9
9
|
import { type AiContextBinder } from '@dxos/assistant';
|
|
10
10
|
import { Blueprint } from '@dxos/blueprints';
|
|
11
11
|
import { type Database, Filter, Obj, Ref } from '@dxos/echo';
|
|
@@ -16,9 +16,13 @@ import { distinctBy } from '@dxos/util';
|
|
|
16
16
|
* Provide a registry of blueprints from plugins.
|
|
17
17
|
*/
|
|
18
18
|
// TODO(burdon): Reconcile with eventual public registry.
|
|
19
|
+
// TODO(dmaretskyi): Reconcile with blueprint registry in compute runtime.
|
|
19
20
|
export const useBlueprintRegistry = () => {
|
|
20
|
-
const
|
|
21
|
-
return useMemo(
|
|
21
|
+
const blueprintDefinitions = useCapabilities(AppCapabilities.BlueprintDefinition);
|
|
22
|
+
return useMemo(
|
|
23
|
+
() => new Blueprint.Registry(blueprintDefinitions.map((blueprint) => blueprint.make())),
|
|
24
|
+
[blueprintDefinitions],
|
|
25
|
+
);
|
|
22
26
|
};
|
|
23
27
|
|
|
24
28
|
export const useBlueprints = ({
|
|
@@ -7,6 +7,7 @@ import type * as Runtime from 'effect/Runtime';
|
|
|
7
7
|
import { useContext, useMemo, useState } from 'react';
|
|
8
8
|
|
|
9
9
|
import { AiConversation } from '@dxos/assistant';
|
|
10
|
+
import { type Chat } from '@dxos/assistant-toolkit';
|
|
10
11
|
import { type Blueprint } from '@dxos/blueprints';
|
|
11
12
|
import { log } from '@dxos/log';
|
|
12
13
|
import { type Queue, type Space } from '@dxos/react-client/echo';
|
|
@@ -17,7 +18,7 @@ import { type Assistant } from '../types';
|
|
|
17
18
|
|
|
18
19
|
export type UseChatProcessorProps = {
|
|
19
20
|
space?: Space;
|
|
20
|
-
chat?:
|
|
21
|
+
chat?: Chat.Chat;
|
|
21
22
|
preset?: AiServicePreset;
|
|
22
23
|
services?: () => Promise<Runtime.Runtime<AiChatServices>>;
|
|
23
24
|
blueprintRegistry?: Blueprint.Registry;
|
|
@@ -6,7 +6,8 @@ import * as Effect from 'effect/Effect';
|
|
|
6
6
|
import type * as Runtime from 'effect/Runtime';
|
|
7
7
|
import { useMemo } from 'react';
|
|
8
8
|
|
|
9
|
-
import { useCapability } from '@dxos/app-framework/
|
|
9
|
+
import { useCapability } from '@dxos/app-framework/ui';
|
|
10
|
+
import { type Chat } from '@dxos/assistant-toolkit';
|
|
10
11
|
import { type Key } from '@dxos/echo';
|
|
11
12
|
import { TracingService } from '@dxos/functions';
|
|
12
13
|
import { TracingServiceExt } from '@dxos/functions-runtime';
|
|
@@ -14,11 +15,10 @@ import { AutomationCapabilities } from '@dxos/plugin-automation';
|
|
|
14
15
|
import { useClient } from '@dxos/react-client';
|
|
15
16
|
|
|
16
17
|
import { type AiChatServices } from '../processor';
|
|
17
|
-
import { type Assistant } from '../types';
|
|
18
18
|
|
|
19
19
|
export type UseChatServicesProps = {
|
|
20
20
|
id?: Key.SpaceId;
|
|
21
|
-
chat?:
|
|
21
|
+
chat?: Chat.Chat;
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
/**
|