@dxos/plugin-assistant 0.8.4-main.e098934 → 0.8.4-main.ead640a
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/{BlueprintContainer-BFNN6K46.mjs → BlueprintContainer-FOZTO447.mjs} +6 -7
- package/dist/lib/browser/{BlueprintContainer-BFNN6K46.mjs.map → BlueprintContainer-FOZTO447.mjs.map} +3 -3
- package/dist/lib/browser/{ChatCompanion-DOVN34C7.mjs → ChatCompanion-EC6LBEWF.mjs} +38 -14
- package/dist/lib/browser/ChatCompanion-EC6LBEWF.mjs.map +7 -0
- package/dist/lib/browser/{ChatContainer-XIVJTCC2.mjs → ChatContainer-A2SL6WO5.mjs} +7 -9
- package/dist/lib/browser/{ChatContainer-XIVJTCC2.mjs.map → ChatContainer-A2SL6WO5.mjs.map} +3 -3
- package/dist/lib/browser/{ChatDialog-EJJMK3WL.mjs → ChatDialog-XMOUFX2P.mjs} +3 -5
- package/dist/lib/browser/{ChatDialog-EJJMK3WL.mjs.map → ChatDialog-XMOUFX2P.mjs.map} +1 -1
- package/dist/lib/browser/{SequenceContainer-TF5QNXYM.mjs → SequenceContainer-2FEWMQGW.mjs} +4 -4
- package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs.map +7 -0
- package/dist/lib/browser/ai-service-ERTZBTP3.mjs +19 -0
- package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-3C43MLCD.mjs → app-graph-builder-7AE4R5KJ.mjs} +41 -11
- package/dist/lib/browser/app-graph-builder-7AE4R5KJ.mjs.map +7 -0
- package/dist/lib/browser/{blueprint-definition-VHFSRTEJ.mjs → blueprint-definition-NSJARW5U.mjs} +2 -2
- package/dist/lib/browser/{chunk-GLWD66TA.mjs → chunk-2CE2KPKZ.mjs} +28 -14
- package/dist/lib/browser/chunk-2CE2KPKZ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-SMIVXXAI.mjs → chunk-37VMDB4P.mjs} +32 -14
- package/dist/lib/browser/chunk-37VMDB4P.mjs.map +7 -0
- package/dist/lib/browser/{chunk-R6LRGW3I.mjs → chunk-3EWE2UQD.mjs} +11 -7
- package/dist/lib/browser/chunk-3EWE2UQD.mjs.map +7 -0
- package/dist/lib/browser/{chunk-EZUSNS2J.mjs → chunk-5EGXHCAZ.mjs} +2 -5
- package/dist/lib/browser/chunk-5EGXHCAZ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-O4LUJEDV.mjs → chunk-5RICKAMN.mjs} +5 -7
- package/dist/lib/browser/chunk-5RICKAMN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-C4Q2RYQM.mjs → chunk-7THOIN6F.mjs} +309 -481
- package/dist/lib/browser/chunk-7THOIN6F.mjs.map +7 -0
- package/dist/lib/browser/{chunk-PQI3MGDN.mjs → chunk-HYYWP3KP.mjs} +6 -5
- package/dist/lib/browser/chunk-HYYWP3KP.mjs.map +7 -0
- package/dist/lib/browser/{chunk-QD4UUISH.mjs → chunk-Z7DQT64Z.mjs} +39 -37
- package/dist/lib/browser/chunk-Z7DQT64Z.mjs.map +7 -0
- package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +18 -0
- package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +71 -48
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/{intent-resolver-I6M3ZDAS.mjs → intent-resolver-BZUU4UNA.mjs} +29 -11
- package/dist/lib/browser/intent-resolver-BZUU4UNA.mjs.map +7 -0
- package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs +17 -0
- package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-E4NAGB6R.mjs → react-surface-KRRUOMYY.mjs} +13 -15
- package/dist/lib/browser/react-surface-KRRUOMYY.mjs.map +7 -0
- package/dist/lib/browser/{settings-36V3VUMW.mjs → settings-PSR3WF3X.mjs} +5 -5
- package/dist/lib/browser/{settings-36V3VUMW.mjs.map → settings-PSR3WF3X.mjs.map} +1 -1
- package/dist/lib/browser/{state-AINRYS5W.mjs → state-LXTS54DI.mjs} +5 -5
- package/dist/lib/browser/{state-AINRYS5W.mjs.map → state-LXTS54DI.mjs.map} +1 -1
- package/dist/lib/browser/{toolkit-MPUS3U64.mjs → toolkit-NQ2GXCF5.mjs} +27 -19
- package/dist/lib/browser/toolkit-NQ2GXCF5.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/{BlueprintContainer-X4MRBKDR.mjs → BlueprintContainer-6HSEVQ7U.mjs} +6 -7
- package/dist/lib/node-esm/{BlueprintContainer-X4MRBKDR.mjs.map → BlueprintContainer-6HSEVQ7U.mjs.map} +3 -3
- package/dist/lib/node-esm/{ChatCompanion-ICWYVPRD.mjs → ChatCompanion-NDYEAUQN.mjs} +38 -14
- package/dist/lib/node-esm/ChatCompanion-NDYEAUQN.mjs.map +7 -0
- package/dist/lib/node-esm/{ChatContainer-LMMMQD4K.mjs → ChatContainer-NMDQM5HG.mjs} +7 -9
- package/dist/lib/node-esm/{ChatContainer-LMMMQD4K.mjs.map → ChatContainer-NMDQM5HG.mjs.map} +3 -3
- package/dist/lib/node-esm/{ChatDialog-UUE3F7BT.mjs → ChatDialog-QPRWMRU4.mjs} +3 -5
- package/dist/lib/node-esm/{ChatDialog-UUE3F7BT.mjs.map → ChatDialog-QPRWMRU4.mjs.map} +1 -1
- package/dist/lib/node-esm/{SequenceContainer-UXOVZPZO.mjs → SequenceContainer-PGGJUQ46.mjs} +4 -4
- package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs.map +7 -0
- package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +20 -0
- package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-NM3JDLQ2.mjs → app-graph-builder-SJCOS64C.mjs} +41 -11
- package/dist/lib/node-esm/app-graph-builder-SJCOS64C.mjs.map +7 -0
- package/dist/lib/node-esm/{blueprint-definition-4E6XTLVN.mjs → blueprint-definition-WD2IVMAI.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-VFY2JG62.mjs → chunk-73ABYRYX.mjs} +5 -7
- package/dist/lib/node-esm/chunk-73ABYRYX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LVTG5JTW.mjs → chunk-HDZX6TSZ.mjs} +11 -7
- package/dist/lib/node-esm/chunk-HDZX6TSZ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-4WLFSXZG.mjs → chunk-TMCGJPAN.mjs} +6 -5
- package/dist/lib/node-esm/chunk-TMCGJPAN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-YU62ZWJN.mjs → chunk-TW2WKKSR.mjs} +39 -37
- package/dist/lib/node-esm/chunk-TW2WKKSR.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-QG2KT3AT.mjs → chunk-U2NYUS2N.mjs} +28 -14
- package/dist/lib/node-esm/chunk-U2NYUS2N.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-XD4CDA4R.mjs → chunk-XQGWSZ4T.mjs} +2 -5
- package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-V44ZG7CU.mjs → chunk-YZYGXFVG.mjs} +309 -481
- package/dist/lib/node-esm/chunk-YZYGXFVG.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-7YOGZI66.mjs → chunk-ZQ3THJ2W.mjs} +32 -14
- package/dist/lib/node-esm/chunk-ZQ3THJ2W.mjs.map +7 -0
- package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +19 -0
- package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +71 -48
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/{intent-resolver-VIINHFMT.mjs → intent-resolver-B7YAS3NT.mjs} +29 -11
- package/dist/lib/node-esm/intent-resolver-B7YAS3NT.mjs.map +7 -0
- package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs +18 -0
- package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-5WQLRTCH.mjs → react-surface-VRDDARFF.mjs} +13 -15
- package/dist/lib/node-esm/react-surface-VRDDARFF.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs → settings-4EBIOJVK.mjs} +5 -5
- package/dist/lib/node-esm/{settings-7ZCZ6AS5.mjs.map → settings-4EBIOJVK.mjs.map} +1 -1
- package/dist/lib/node-esm/{state-EQS5KP6M.mjs → state-BO6GUFLB.mjs} +5 -5
- package/dist/lib/node-esm/{state-EQS5KP6M.mjs.map → state-BO6GUFLB.mjs.map} +1 -1
- package/dist/lib/node-esm/{toolkit-PKVYDZ4H.mjs → toolkit-V57PRJNG.mjs} +27 -19
- package/dist/lib/node-esm/toolkit-V57PRJNG.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/AssistantPlugin.d.ts +1 -1
- package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/ai-service.d.ts +2 -3
- package/dist/types/src/capabilities/ai-service.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +0 -21
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +0 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
- package/dist/types/src/components/BlueprintSettings.d.ts +6 -0
- package/dist/types/src/components/BlueprintSettings.d.ts.map +1 -0
- package/dist/types/src/components/Chat/Chat.d.ts +2 -1
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
- package/dist/types/src/components/ChatCompanion.d.ts.map +1 -1
- package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.d.ts +4 -2
- package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +7 -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/SequenceEditor/SequenceEditor.d.ts +1 -1
- package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -1
- package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +8 -3
- package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +4 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +4 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
- package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +1 -3
- package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +4 -1
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/functions/analysis.d.ts.map +1 -1
- package/dist/types/src/functions/list.d.ts.map +1 -1
- package/dist/types/src/functions/load.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +0 -2
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts +2 -1
- 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/useContextBinder.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/processor/index.d.ts +1 -0
- package/dist/types/src/processor/index.d.ts.map +1 -1
- package/dist/types/src/processor/presets.d.ts +1 -1
- package/dist/types/src/processor/presets.d.ts.map +1 -1
- package/dist/types/src/processor/processor.d.ts +4 -3
- package/dist/types/src/processor/processor.d.ts.map +1 -1
- package/dist/types/src/processor/update-name.d.ts +10 -0
- package/dist/types/src/processor/update-name.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +0 -2
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-generator.d.ts +1 -1
- package/dist/types/src/testing/test-generator.d.ts.map +1 -1
- package/dist/types/src/testing/test-services.d.ts +2 -2
- package/dist/types/src/testing/test-services.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +1 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Assistant.d.ts +16 -7
- package/dist/types/src/types/Assistant.d.ts.map +1 -1
- package/dist/types/src/types/AssistantAction.d.ts +19 -4
- package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
- package/dist/types/src/types/service.d.ts +12 -12
- package/dist/types/src/types/service.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +91 -112
- package/src/AssistantPlugin.tsx +138 -137
- package/src/capabilities/ai-service.ts +6 -7
- package/src/capabilities/app-graph-builder.ts +36 -4
- package/src/capabilities/blueprint-definition.ts +7 -1
- package/src/capabilities/capabilities.ts +0 -53
- package/src/capabilities/edge-model-resolver.ts +5 -7
- package/src/capabilities/index.ts +0 -1
- package/src/capabilities/intent-resolver.ts +26 -3
- package/src/capabilities/local-model-resolver.ts +6 -8
- package/src/capabilities/react-surface.tsx +3 -3
- package/src/capabilities/toolkit.ts +16 -11
- package/src/components/BlueprintContainer.tsx +2 -2
- package/src/components/BlueprintSettings.tsx +15 -0
- package/src/components/Chat/Chat.tsx +41 -34
- package/src/components/ChatCompanion.tsx +33 -8
- package/src/components/ChatContainer.tsx +2 -2
- package/src/components/ChatProgress/ChatProgress.tsx +1 -2
- package/src/components/ChatPrompt/ChatOptions.tsx +17 -25
- package/src/components/ChatThread/ChatThread.stories.tsx +6 -7
- package/src/components/ChatThread/ChatThread.tsx +7 -3
- package/src/components/ChatThread/registry.tsx +6 -11
- package/src/components/ChatThread/sync.test.ts +1 -1
- package/src/components/ChatThread/sync.ts +1 -1
- package/src/components/SequenceContainer.tsx +2 -2
- package/src/components/SequenceEditor/SequenceEditor.stories.tsx +5 -4
- package/src/components/SequenceEditor/SequenceEditor.tsx +2 -2
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +5 -5
- package/src/components/TemplateEditor/TemplateEditor.tsx +8 -4
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +3 -5
- package/src/components/TemplateEditor/TemplateForm.tsx +1 -1
- package/src/components/ToolBlock/ToolBlock.tsx +6 -6
- package/src/components/Toolbar/Toolbar.tsx +1 -1
- package/src/components/Toolbar/useChatToolbarActions.ts +1 -1
- package/src/components/Toolbox/Toolbox.stories.tsx +3 -6
- package/src/components/index.ts +1 -1
- package/src/functions/analysis.ts +4 -2
- package/src/functions/list.ts +4 -2
- package/src/functions/load.ts +7 -3
- package/src/hooks/index.ts +0 -2
- package/src/hooks/useBlueprintRegistry.ts +17 -3
- package/src/hooks/useChatProcessor.ts +12 -4
- package/src/hooks/useChatServices.ts +5 -4
- package/src/hooks/useContextBinder.ts +17 -5
- package/src/hooks/useItemTypes.ts +1 -1
- package/src/index.ts +2 -0
- package/src/meta.ts +3 -5
- package/src/processor/index.ts +1 -0
- package/src/processor/presets.ts +1 -1
- package/src/processor/processor.test.ts +17 -13
- package/src/processor/processor.ts +14 -39
- package/src/processor/update-name.ts +57 -0
- package/src/testing/index.ts +0 -2
- package/src/testing/test-generator.ts +5 -1
- package/src/testing/test-services.ts +2 -8
- package/src/translations.ts +1 -0
- package/src/types/Assistant.ts +7 -4
- package/src/types/AssistantAction.ts +10 -2
- package/src/types/service.ts +15 -7
- package/dist/lib/browser/ChatCompanion-DOVN34C7.mjs.map +0 -7
- package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs.map +0 -7
- package/dist/lib/browser/ai-service-YC2EQPHA.mjs +0 -22
- package/dist/lib/browser/ai-service-YC2EQPHA.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-3C43MLCD.mjs.map +0 -7
- package/dist/lib/browser/chunk-C4Q2RYQM.mjs.map +0 -7
- package/dist/lib/browser/chunk-EZUSNS2J.mjs.map +0 -7
- package/dist/lib/browser/chunk-GLWD66TA.mjs.map +0 -7
- package/dist/lib/browser/chunk-O4LUJEDV.mjs.map +0 -7
- package/dist/lib/browser/chunk-PQI3MGDN.mjs.map +0 -7
- package/dist/lib/browser/chunk-QD4UUISH.mjs.map +0 -7
- package/dist/lib/browser/chunk-R6LRGW3I.mjs.map +0 -7
- package/dist/lib/browser/chunk-SMIVXXAI.mjs.map +0 -7
- package/dist/lib/browser/compute-runtime-X6IREJN3.mjs +0 -155
- package/dist/lib/browser/compute-runtime-X6IREJN3.mjs.map +0 -7
- package/dist/lib/browser/edge-model-resolver-JNEB355N.mjs +0 -22
- package/dist/lib/browser/edge-model-resolver-JNEB355N.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-I6M3ZDAS.mjs.map +0 -7
- package/dist/lib/browser/local-model-resolver-EUXSRZ7X.mjs +0 -21
- package/dist/lib/browser/local-model-resolver-EUXSRZ7X.mjs.map +0 -7
- package/dist/lib/browser/react-surface-E4NAGB6R.mjs.map +0 -7
- package/dist/lib/browser/toolkit-MPUS3U64.mjs.map +0 -7
- package/dist/lib/node-esm/ChatCompanion-ICWYVPRD.mjs.map +0 -7
- package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs.map +0 -7
- package/dist/lib/node-esm/ai-service-XUMZVFCK.mjs +0 -23
- package/dist/lib/node-esm/ai-service-XUMZVFCK.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-NM3JDLQ2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-4WLFSXZG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7YOGZI66.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LVTG5JTW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QG2KT3AT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-V44ZG7CU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-VFY2JG62.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XD4CDA4R.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YU62ZWJN.mjs.map +0 -7
- package/dist/lib/node-esm/compute-runtime-NRHLLTSC.mjs +0 -156
- package/dist/lib/node-esm/compute-runtime-NRHLLTSC.mjs.map +0 -7
- package/dist/lib/node-esm/edge-model-resolver-UE5TLLJZ.mjs +0 -23
- package/dist/lib/node-esm/edge-model-resolver-UE5TLLJZ.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-VIINHFMT.mjs.map +0 -7
- package/dist/lib/node-esm/local-model-resolver-JBEFVVZA.mjs +0 -22
- package/dist/lib/node-esm/local-model-resolver-JBEFVVZA.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-5WQLRTCH.mjs.map +0 -7
- package/dist/lib/node-esm/toolkit-PKVYDZ4H.mjs.map +0 -7
- package/dist/types/src/capabilities/compute-runtime.d.ts +0 -5
- package/dist/types/src/capabilities/compute-runtime.d.ts.map +0 -1
- package/dist/types/src/components/PromptSettings.d.ts +0 -6
- package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
- package/dist/types/src/execution-graph/execution-graph.d.ts +0 -21
- package/dist/types/src/execution-graph/execution-graph.d.ts.map +0 -1
- package/dist/types/src/execution-graph/index.d.ts +0 -2
- package/dist/types/src/execution-graph/index.d.ts.map +0 -1
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +0 -8
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +0 -1
- package/dist/types/src/hooks/useExecutionGraph.d.ts +0 -6
- package/dist/types/src/hooks/useExecutionGraph.d.ts.map +0 -1
- package/dist/types/src/stories/Chat.stories.d.ts +0 -30
- package/dist/types/src/stories/Chat.stories.d.ts.map +0 -1
- package/dist/types/src/stories/components/BlueprintContainer.d.ts +0 -4
- package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/ChatContainer.d.ts +0 -4
- package/dist/types/src/stories/components/ChatContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/ChessContainer.d.ts +0 -4
- package/dist/types/src/stories/components/ChessContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/CommentsContainer.d.ts +0 -4
- package/dist/types/src/stories/components/CommentsContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/DebugCard.d.ts +0 -8
- package/dist/types/src/stories/components/DebugCard.d.ts.map +0 -1
- package/dist/types/src/stories/components/GraphContainer.d.ts +0 -6
- package/dist/types/src/stories/components/GraphContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/InvocationsContainer.d.ts +0 -4
- package/dist/types/src/stories/components/InvocationsContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/LoggingContainer.d.ts +0 -7
- package/dist/types/src/stories/components/LoggingContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/MessageContainer.d.ts +0 -4
- package/dist/types/src/stories/components/MessageContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/PromptContainer.d.ts +0 -6
- package/dist/types/src/stories/components/PromptContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/ResearchInputStack.d.ts +0 -4
- package/dist/types/src/stories/components/ResearchInputStack.d.ts.map +0 -1
- package/dist/types/src/stories/components/ResearchOutputStack.d.ts +0 -4
- package/dist/types/src/stories/components/ResearchOutputStack.d.ts.map +0 -1
- package/dist/types/src/stories/components/TasksContainer.d.ts +0 -4
- package/dist/types/src/stories/components/TasksContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/TokenManagerContainer.d.ts +0 -3
- package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/TriggersContainer.d.ts +0 -14
- package/dist/types/src/stories/components/TriggersContainer.d.ts.map +0 -1
- package/dist/types/src/stories/components/index.d.ts +0 -16
- package/dist/types/src/stories/components/index.d.ts.map +0 -1
- package/dist/types/src/stories/components/types.d.ts +0 -7
- package/dist/types/src/stories/components/types.d.ts.map +0 -1
- package/dist/types/src/stories/testing/data.d.ts +0 -9
- package/dist/types/src/stories/testing/data.d.ts.map +0 -1
- package/dist/types/src/stories/testing/index.d.ts +0 -3
- package/dist/types/src/stories/testing/index.d.ts.map +0 -1
- package/dist/types/src/stories/testing/schema.d.ts +0 -7
- package/dist/types/src/stories/testing/schema.d.ts.map +0 -1
- package/dist/types/src/stories/testing/testing.d.ts +0 -48
- package/dist/types/src/stories/testing/testing.d.ts.map +0 -1
- package/dist/types/src/testing/test-data.d.ts +0 -14
- package/dist/types/src/testing/test-data.d.ts.map +0 -1
- package/dist/types/src/testing/test-functions.d.ts +0 -6
- package/dist/types/src/testing/test-functions.d.ts.map +0 -1
- package/src/capabilities/compute-runtime.ts +0 -124
- package/src/components/PromptSettings.tsx +0 -90
- package/src/execution-graph/execution-graph.ts +0 -211
- package/src/execution-graph/index.ts +0 -5
- package/src/hooks/useComputeRuntimeCallback.ts +0 -25
- package/src/hooks/useExecutionGraph.ts +0 -20
- package/src/stories/Chat.stories.tsx +0 -657
- package/src/stories/components/BlueprintContainer.tsx +0 -34
- package/src/stories/components/ChatContainer.tsx +0 -74
- package/src/stories/components/ChessContainer.tsx +0 -17
- package/src/stories/components/CommentsContainer.tsx +0 -25
- package/src/stories/components/DebugCard.tsx +0 -61
- package/src/stories/components/GraphContainer.tsx +0 -119
- package/src/stories/components/InvocationsContainer.tsx +0 -17
- package/src/stories/components/LoggingContainer.tsx +0 -33
- package/src/stories/components/MessageContainer.tsx +0 -22
- package/src/stories/components/PromptContainer.tsx +0 -52
- package/src/stories/components/ResearchInputStack.tsx +0 -30
- package/src/stories/components/ResearchOutputStack.tsx +0 -29
- package/src/stories/components/TasksContainer.tsx +0 -49
- package/src/stories/components/TokenManagerContainer.tsx +0 -14
- package/src/stories/components/TriggersContainer.tsx +0 -75
- package/src/stories/components/index.ts +0 -20
- package/src/stories/components/types.ts +0 -11
- package/src/stories/testing/data.ts +0 -142
- package/src/stories/testing/index.ts +0 -6
- package/src/stories/testing/schema.ts +0 -17
- package/src/stories/testing/testing.tsx +0 -279
- package/src/testing/test-data.ts +0 -245
- package/src/testing/test-functions.ts +0 -16
- /package/dist/lib/browser/{blueprint-definition-VHFSRTEJ.mjs.map → blueprint-definition-NSJARW5U.mjs.map} +0 -0
- /package/dist/lib/node-esm/{blueprint-definition-4E6XTLVN.mjs.map → blueprint-definition-WD2IVMAI.mjs.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/SequenceContainer.tsx", "../../../src/components/SequenceEditor/SequenceEditor.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport JSON5 from 'json5';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { type Sequence, type SequenceDefinition } from '@dxos/conductor';\nimport { Key } from '@dxos/echo';\nimport { Toolbar, useTranslation } from '@dxos/react-ui';\nimport { useSelectionManager } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { meta } from '../meta';\n\nimport { SequenceEditor } from './SequenceEditor';\n\n// TODO(burdon): Move to config.\nexport const EXA_API_KEY = '9c7e17ff-0c85-4cd5-827a-8b489f139e03';\n\n// TODO(burdon): Validate.\nconst parseSequence = (text: string): SequenceDefinition | undefined => {\n try {\n const json = JSON5.parse(text);\n const { steps } = json;\n return { steps };\n } catch (error) {\n // Ignore.\n }\n};\n\nexport const SequenceContainer = ({ sequence }: { sequence: Sequence }) => {\n const { t } = useTranslation(meta.id);\n const selectionManager = useSelectionManager();\n const [definition, setDefinition] = useState<SequenceDefinition>();\n useEffect(() => {\n setDefinition({\n steps: sequence.steps.map(({ instructions, tools }) => ({ instructions, tools })),\n });\n }, [sequence]);\n\n const editorRef = useRef<EditorView | undefined>(undefined);\n\n // TODO(burdon): Factor out.\n // const toolRegistry = useMemo(() => {\n // const space = getSpace(sequence);\n // if (!space) {\n // return;\n // }\n\n // // TODO(burdon): How should the queue be created?\n // // eslint-disable-next-line no-unused-vars\n // const _queue = space.queues.create();\n\n // return new ToolRegistry([\n // // createExaTool({ apiKey: EXA_API_KEY }),\n // // createLocalSearchTool(space.db, queue),\n // // createGraphWriterTool({\n // // db: space.db,\n // // queue,\n // // schema: [], // TODO(burdon): Get schema from client/sequence?\n // // onDone: async (objects) => {\n // // await queue.append(objects);\n // // },\n // // }),\n // ]);\n // }, [sequence]);\n\n const formatAndSave = useCallback((): SequenceDefinition | undefined => {\n if (!sequence) {\n return;\n }\n\n const text = editorRef.current?.state.doc.toString();\n if (!text) {\n return;\n }\n\n const definition = parseSequence(text);\n if (!definition) {\n return;\n }\n\n setDefinition(definition);\n const formatted = JSON.stringify(definition, null, 2);\n editorRef.current?.dispatch({\n changes: { from: 0, to: text.length, insert: formatted },\n });\n\n sequence.steps.length = 0;\n for (const step of definition.steps) {\n sequence.steps.push({\n id: Key.ObjectId.random(),\n instructions: step.instructions,\n tools: step.tools,\n });\n }\n\n return sequence;\n }, [sequence]);\n\n // TODO(burdon): Save raw sequence separately from parsed sequence? (like Script).\n const handleSave = useCallback(() => formatAndSave(), [formatAndSave]);\n\n const handleRun = useCallback(async () => {\n // if (!aiClient?.value || !toolRegistry) {\n // return;\n // }\n // formatAndSave();\n // // Get input from selection.\n // const input = Array.from(getSelectionSet(selectionManager)).map((id) => DXN.fromLocalObjectId(id));\n // if (!input.length) {\n // return;\n // }\n // const machine = new SequenceMachine(toolRegistry, sequence).setLogger(new QueueLogger(sequence));\n // await machine.runToCompletion({ aiClient: aiClient.value, input });\n }, [sequence, formatAndSave, selectionManager]);\n\n return (\n <StackItem.Content toolbar>\n <Toolbar.Root>\n <Toolbar.Button onClick={handleSave}>{t('button save')}</Toolbar.Button>\n <Toolbar.Button onClick={handleRun}>{t('button run')}</Toolbar.Button>\n </Toolbar.Root>\n {definition && <SequenceEditor ref={editorRef} sequence={definition} />}\n </StackItem.Content>\n );\n};\n\nexport default SequenceContainer;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { forwardRef, useImperativeHandle } from 'react';\n\nimport { SequenceDefinition } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport { type ThemedClassName, useThemeContext } from '@dxos/react-ui';\nimport {\n type EditorView,\n createBasicExtensions,\n createJsonExtensions,\n createThemeExtensions,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type SequenceEditorProps = ThemedClassName<{\n sequence: SequenceDefinition;\n}>;\n\n// TODO(burdon): Factor out JsonEditor.\nexport const SequenceEditor = forwardRef<EditorView | undefined, SequenceEditorProps>(\n ({ classNames, sequence }, forwardedRef) => {\n const { themeMode } = useThemeContext();\n const { parentRef, view } = useTextEditor({\n initialValue: JSON.stringify(sequence, null, 2),\n extensions: [\n createBasicExtensions({\n lineNumbers: true,\n lineWrapping: false,\n monospace: true,\n scrollPastEnd: true,\n }),\n createThemeExtensions({\n themeMode,\n syntaxHighlighting: true,\n }),\n createJsonExtensions({\n schema: Type.toJsonSchema(SequenceDefinition, { strict: true }),\n }),\n ],\n });\n\n useImperativeHandle(forwardedRef, () => view, [view]);\n\n return <div ref={parentRef} className={mx('overflow-hidden', classNames)} />;\n },\n);\n"],
|
|
5
|
-
"mappings": ";;;;;;;AAKA,OAAOA,WAAW;AAClB,OAAOC,UAASC,aAAaC,WAAWC,QAAQC,gBAAgB;AAGhE,SAASC,WAAW;AACpB,SAASC,SAASC,sBAAsB;AACxC,SAASC,2BAA2B;AACpC,SAASC,iBAAiB;;;;ACR1B,OAAOC,SAASC,YAAYC,2BAA2B;AAEvD,SAASC,0BAA0B;AACnC,SAASC,YAAY;AACrB,SAA+BC,uBAAuB;AACtD,SAEEC,uBACAC,sBACAC,uBACAC,qBACK;AACP,SAASC,UAAU;AAOZ,IAAMC,iBAAiBC,2BAC5B,CAAC,EAAEC,YAAYC,SAAQ,GAAIC,iBAAAA;;;AACzB,UAAM,EAAEC,UAAS,IAAKC,gBAAAA;AACtB,UAAM,EAAEC,WAAWC,KAAI,IAAKC,cAAc;MACxCC,cAAcC,KAAKC,UAAUT,UAAU,MAAM,CAAA;MAC7CU,YAAY;QACVC,sBAAsB;UACpBC,aAAa;UACbC,cAAc;UACdC,WAAW;UACXC,eAAe;QACjB,CAAA;QACAC,sBAAsB;UACpBd;UACAe,oBAAoB;QACtB,CAAA;QACAC,qBAAqB;UACnBC,QAAQC,KAAKC,aAAaC,oBAAoB;YAAEC,QAAQ;UAAK,CAAA;QAC/D,CAAA;;IAEJ,CAAA;AAEAC,wBAAoBvB,cAAc,MAAMI,MAAM;MAACA;KAAK;AAEpD,WAAO,sBAAA,cAACoB,OAAAA;MAAIC,KAAKtB;MAAWuB,WAAWC,GAAG,mBAAmB7B,UAAAA;;;;;AAC/D,CAAA;;;AD7BK,IAAM8B,cAAc;AAG3B,IAAMC,gBAAgB,CAACC,SAAAA;AACrB,MAAI;AACF,UAAMC,OAAOC,MAAMC,MAAMH,IAAAA;AACzB,UAAM,EAAEI,MAAK,IAAKH;AAClB,WAAO;MAAEG;IAAM;EACjB,SAASC,OAAO;EAEhB;AACF;AAEO,IAAMC,oBAAoB,CAAC,EAAEC,SAAQ,MAA0B;;;AACpE,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,UAAMC,mBAAmBC,oBAAAA;AACzB,UAAM,CAACC,YAAYC,aAAAA,IAAiBC,SAAAA;AACpCC,cAAU,MAAA;AACRF,oBAAc;QACZX,OAAOG,SAASH,MAAMc,IAAI,CAAC,EAAEC,cAAcC,MAAK,OAAQ;UAAED;UAAcC;QAAM,EAAA;MAChF,CAAA;IACF,GAAG;MAACb;KAAS;AAEb,UAAMc,YAAYC,OAA+BC,MAAAA;AA2BjD,UAAMC,gBAAgBC,YAAY,MAAA;AAChC,UAAI,CAAClB,UAAU;AACb;MACF;AAEA,YAAMP,OAAOqB,UAAUK,SAASC,MAAMC,IAAIC,SAAAA;AAC1C,UAAI,CAAC7B,MAAM;AACT;MACF;AAEA,YAAMc,cAAaf,cAAcC,IAAAA;AACjC,UAAI,CAACc,aAAY;AACf;MACF;AAEAC,oBAAcD,WAAAA;AACd,YAAMgB,YAAYC,KAAKC,UAAUlB,aAAY,MAAM,CAAA;AACnDO,gBAAUK,SAASO,SAAS;QAC1BC,SAAS;UAAEC,MAAM;UAAGC,IAAIpC,KAAKqC;UAAQC,QAAQR;QAAU;MACzD,CAAA;AAEAvB,eAASH,MAAMiC,SAAS;AACxB,iBAAWE,QAAQzB,YAAWV,OAAO;AACnCG,iBAASH,MAAMoC,KAAK;UAClB7B,IAAI8B,IAAIC,SAASC,OAAM;UACvBxB,cAAcoB,KAAKpB;UACnBC,OAAOmB,KAAKnB;QACd,CAAA;MACF;AAEA,aAAOb;IACT,GAAG;MAACA;KAAS;AAGb,UAAMqC,aAAanB,YAAY,MAAMD,cAAAA,GAAiB;MAACA;KAAc;AAErE,UAAMqB,YAAYpB,YAAY,YAAA;IAY9B,GAAG;MAAClB;MAAUiB;MAAeZ;KAAiB;AAE9C,WACE,gBAAAkC,OAAA,cAACC,UAAUC,SAAO;MAACC,SAAAA;OACjB,gBAAAH,OAAA,cAACI,QAAQC,MAAI,MACX,gBAAAL,OAAA,cAACI,QAAQE,QAAM;MAACC,SAAST;OAAapC,EAAE,aAAA,CAAA,GACxC,gBAAAsC,OAAA,cAACI,QAAQE,QAAM;MAACC,SAASR;OAAYrC,EAAE,YAAA,CAAA,CAAA,GAExCM,cAAc,gBAAAgC,OAAA,cAACQ,gBAAAA;MAAeC,KAAKlC;MAAWd,UAAUO;;;;;AAG/D;AAEA,IAAA,4BAAeR;",
|
|
6
|
-
"names": ["JSON5", "React", "useCallback", "useEffect", "useRef", "useState", "Key", "Toolbar", "useTranslation", "useSelectionManager", "StackItem", "React", "forwardRef", "useImperativeHandle", "SequenceDefinition", "Type", "useThemeContext", "createBasicExtensions", "createJsonExtensions", "createThemeExtensions", "useTextEditor", "mx", "SequenceEditor", "forwardRef", "classNames", "sequence", "forwardedRef", "themeMode", "useThemeContext", "parentRef", "view", "useTextEditor", "initialValue", "JSON", "stringify", "extensions", "createBasicExtensions", "lineNumbers", "lineWrapping", "monospace", "scrollPastEnd", "createThemeExtensions", "syntaxHighlighting", "createJsonExtensions", "schema", "Type", "toJsonSchema", "SequenceDefinition", "strict", "useImperativeHandle", "div", "ref", "className", "mx", "EXA_API_KEY", "parseSequence", "text", "json", "JSON5", "parse", "steps", "error", "SequenceContainer", "sequence", "t", "useTranslation", "meta", "id", "selectionManager", "useSelectionManager", "definition", "setDefinition", "useState", "useEffect", "map", "instructions", "tools", "editorRef", "useRef", "undefined", "formatAndSave", "useCallback", "current", "state", "doc", "toString", "formatted", "JSON", "stringify", "dispatch", "changes", "from", "to", "length", "insert", "step", "push", "Key", "ObjectId", "random", "handleSave", "handleRun", "React", "StackItem", "Content", "toolbar", "Toolbar", "Root", "Button", "onClick", "SequenceEditor", "ref"]
|
|
7
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AssistantCapabilities
|
|
3
|
-
} from "./chunk-EZUSNS2J.mjs";
|
|
4
|
-
import "./chunk-O4LUJEDV.mjs";
|
|
5
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
6
|
-
|
|
7
|
-
// src/capabilities/ai-service.ts
|
|
8
|
-
import { Effect, Layer } from "effect";
|
|
9
|
-
import { AiServiceRouter } from "@dxos/ai";
|
|
10
|
-
import { contributes } from "@dxos/app-framework";
|
|
11
|
-
var ai_service_default = (context) => {
|
|
12
|
-
const resolvers = context.getCapabilities(AssistantCapabilities.AiModelResolver);
|
|
13
|
-
const combinedLayer = resolvers.reduce((acc, resolver) => resolver.pipe(Layer.provide(acc)), AiServiceRouter.AiModelResolver.fromModelMap(Effect.succeed({})));
|
|
14
|
-
return [
|
|
15
|
-
// TODO(dmaretskyi): Read config from settings.
|
|
16
|
-
contributes(AssistantCapabilities.AiServiceLayer, AiServiceRouter.AiModelResolver.buildAiService.pipe(Layer.provide(combinedLayer)))
|
|
17
|
-
];
|
|
18
|
-
};
|
|
19
|
-
export {
|
|
20
|
-
ai_service_default as default
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=ai-service-YC2EQPHA.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/ai-service.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Effect, Layer } from 'effect';\n\nimport { AiServiceRouter } from '@dxos/ai';\nimport { type PluginContext, contributes } from '@dxos/app-framework';\n\nimport { AssistantCapabilities } from './capabilities';\n\nexport default (context: PluginContext) => {\n const resolvers = context.getCapabilities(AssistantCapabilities.AiModelResolver);\n\n // TODO(dmaretskyi): Extract function to reduce them.\n const combinedLayer = resolvers.reduce(\n (acc, resolver) => resolver.pipe(Layer.provide(acc)),\n AiServiceRouter.AiModelResolver.fromModelMap(Effect.succeed({})), // Empty resolver as fallback.\n );\n\n return [\n // TODO(dmaretskyi): Read config from settings.\n contributes(\n AssistantCapabilities.AiServiceLayer,\n AiServiceRouter.AiModelResolver.buildAiService.pipe(Layer.provide(combinedLayer)),\n ),\n ];\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;AAIA,SAASA,QAAQC,aAAa;AAE9B,SAASC,uBAAuB;AAChC,SAA6BC,mBAAmB;AAIhD,IAAA,qBAAe,CAACC,YAAAA;AACd,QAAMC,YAAYD,QAAQE,gBAAgBC,sBAAsBC,eAAe;AAG/E,QAAMC,gBAAgBJ,UAAUK,OAC9B,CAACC,KAAKC,aAAaA,SAASC,KAAKC,MAAMC,QAAQJ,GAAAA,CAAAA,GAC/CK,gBAAgBR,gBAAgBS,aAAaC,OAAOC,QAAQ,CAAC,CAAA,CAAA,CAAA;AAG/D,SAAO;;IAELC,YACEb,sBAAsBc,gBACtBL,gBAAgBR,gBAAgBc,eAAeT,KAAKC,MAAMC,QAAQN,aAAAA,CAAAA,CAAAA;;AAGxE;",
|
|
6
|
-
"names": ["Effect", "Layer", "AiServiceRouter", "contributes", "context", "resolvers", "getCapabilities", "AssistantCapabilities", "AiModelResolver", "combinedLayer", "reduce", "acc", "resolver", "pipe", "Layer", "provide", "AiServiceRouter", "fromModelMap", "Effect", "succeed", "contributes", "AiServiceLayer", "buildAiService"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport {\n Capabilities,\n LayoutAction,\n type PluginContext,\n type PromiseIntentDispatcher,\n contributes,\n createIntent,\n} from '@dxos/app-framework';\nimport { Sequence } from '@dxos/conductor';\nimport { Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { ROOT_ID, createExtension, rxFromSignal } from '@dxos/plugin-graph';\nimport { getActiveSpace } from '@dxos/plugin-space';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { Query, type Space, fullyQualifiedId } from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, meta } from '../meta';\nimport { Assistant, AssistantAction } from '../types';\n\nimport { AssistantCapabilities } from './capabilities';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/assistant`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n const chat = await getOrCreateChat(dispatch, space);\n if (!chat) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: ASSISTANT_DIALOG,\n options: {\n state: true,\n blockAlign: 'end',\n props: {\n chat,\n },\n },\n }),\n );\n },\n properties: {\n label: ['open assistant label', { ns: meta.id }],\n icon: 'ph--sparkle--regular',\n disposition: 'pin-end',\n position: 'hoist',\n keyBinding: {\n macos: 'shift+meta+k',\n windows: 'shift+ctrl+k',\n },\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${meta.id}/companion-chat`,\n connector: (node) => {\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node.data) : Option.none())),\n Option.map((object) => {\n const currentChat = get(\n rxFromSignal(\n () => context.getCapability(AssistantCapabilities.State).currentChat[fullyQualifiedId(object)],\n ),\n );\n\n return [\n {\n id: [fullyQualifiedId(object), 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: currentChat ?? 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: meta.id }],\n icon: 'ph--sparkle--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n createExtension({\n id: `${meta.id}/sequence-logs`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(Sequence, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'logs'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'logs',\n properties: {\n label: ['sequence logs label', { ns: meta.id }],\n icon: 'ph--clock-countdown--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (\n dispatch: PromiseIntentDispatcher,\n space: Space,\n): Promise<Assistant.Chat | undefined> => {\n // TODO(wittjosiah): This should be possible with a single query.\n const { objects: allChats } = await space.db.query(Query.type(Assistant.Chat)).run();\n const { objects: relatedChats } = await space.db\n .query(Query.type(Assistant.Chat).sourceOf(Assistant.CompanionTo).source())\n .run();\n\n const chats = allChats.filter((chat) => !relatedChats.includes(chat));\n if (chats.length > 0) {\n return chats.at(-1);\n }\n\n const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { space }));\n invariant(Obj.instanceOf(Assistant.Chat, data?.object));\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Rx", "Option", "pipe", "Capabilities", "LayoutAction", "contributes", "createIntent", "Sequence", "Obj", "invariant", "ClientCapabilities", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "ROOT_ID", "createExtension", "rxFromSignal", "getActiveSpace", "SpaceAction", "Query", "fullyQualifiedId", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "actions", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "map", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "space", "getActiveSpace", "spaces", "default", "chat", "getOrCreateChat", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "getOrElse", "connector", "Obj", "isObject", "object", "currentChat", "rxFromSignal", "AssistantCapabilities", "State", "fullyQualifiedId", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "PLANK_COMPANION_TYPE", "instanceOf", "Sequence", "objects", "allChats", "db", "query", "Query", "Assistant", "Chat", "run", "relatedChats", "sourceOf", "CompanionTo", "source", "chats", "filter", "includes", "length", "at", "AssistantAction", "CreateChat", "invariant", "SpaceAction", "AddObject", "target"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/hooks/useBlueprintRegistry.ts", "../../../src/hooks/useChatProcessor.ts", "../../../src/processor/presets.ts", "../../../src/processor/processor.ts", "../../../src/hooks/useChatServices.ts", "../../../src/capabilities/index.ts", "../../../src/hooks/useContextBinder.ts", "../../../src/hooks/useOnline.ts", "../../../src/hooks/usePresets.ts", "../../../src/hooks/useContextObjects.ts", "../../../src/hooks/useExecutionGraph.ts", "../../../src/execution-graph/execution-graph.ts", "../../../src/hooks/useFlush.ts", "../../../src/hooks/useItemTypes.ts", "../../../src/hooks/useReferencesProvider.ts", "../../../src/hooks/useComputeRuntimeCallback.ts", "../../../src/components/Chat/Chat.tsx", "../../../src/components/ChatPrompt/ChatActions.tsx", "../../../src/components/ChatPrompt/ChatOptions.tsx", "../../../src/components/ChatPrompt/ChatPresets.tsx", "../../../src/components/ChatPrompt/ChatReferences.tsx", "../../../src/components/ChatPrompt/ChatStatusIndicator.tsx", "../../../src/components/ChatThread/ChatThread.tsx", "../../../src/components/ChatThread/registry.tsx", "../../../src/components/ToolBlock/ToolBlock.tsx", "../../../src/components/ChatThread/sync.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useSignalEffect } from '@preact/signals-react';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport { Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { Blueprint } from '@dxos/blueprints';\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { isNonNullable } from '@dxos/util';\n\n/**\n * Provide a registry of blueprints from plugins.\n */\n// TODO(burdon): Reconcile with eventual public registry.\nexport const useBlueprintRegistry = () => {\n const blueprints = useCapabilities(Capabilities.BlueprintDefinition);\n return useMemo(() => new Blueprint.Registry(blueprints), [blueprints]);\n};\n\nexport const useBlueprints = ({ blueprintRegistry }: { blueprintRegistry?: Blueprint.Registry }) =>\n useMemo(() => blueprintRegistry?.query() ?? [], [blueprintRegistry]);\n\n/**\n * Create reactive map of active blueprints (by key).\n */\nexport const useActiveBlueprints = ({ context }: { context?: AiContextBinder }) => {\n const [active, setActive] = useState<Map<string, Blueprint.Blueprint>>(new Map());\n\n useSignalEffect(() => {\n const refs = [...(context?.blueprints.value ?? [])];\n const blueprints = refs.map((ref) => ref.target).filter(isNonNullable);\n setActive(new Map(blueprints.map((blueprint) => [blueprint.key, blueprint])));\n });\n\n return active;\n};\n\n// TODO(burdon): Move logic into binder.\nexport const useBlueprintHandlers = ({\n space,\n context,\n blueprintRegistry,\n}: {\n space: Space;\n context?: AiContextBinder;\n blueprintRegistry?: Blueprint.Registry;\n}) => {\n const onUpdateBlueprint = useCallback(\n async (key: string, checked: boolean) => {\n if (!context || !blueprintRegistry) {\n return;\n }\n\n // Find existing cloned blueprint.\n const { objects } = await space.db.query(Filter.type(Blueprint.Blueprint)).run();\n let storedBlueprint = objects.find((blueprint) => blueprint.key === key);\n if (checked) {\n if (!storedBlueprint) {\n const blueprint = blueprintRegistry.getByKey(key);\n if (!blueprint) {\n return;\n }\n\n // NOTE: Possible race condition with other peers.\n storedBlueprint = space.db.add(Obj.clone(blueprint));\n }\n await context.bind({ blueprints: [Ref.make(storedBlueprint)] });\n } else if (storedBlueprint) {\n await context.unbind({ blueprints: [Ref.make(storedBlueprint)] });\n }\n },\n [space, context, blueprintRegistry],\n );\n\n return { onUpdateBlueprint };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { RegistryContext } from '@effect-rx/rx-react';\nimport { type Runtime } from 'effect';\nimport { useContext, useMemo } from 'react';\n\nimport { AiConversation } from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { log } from '@dxos/log';\nimport { type Queue } from '@dxos/react-client/echo';\n\nimport { AiChatProcessor, type AiChatServices, type AiServicePreset } from '../processor';\nimport { type Assistant } from '../types';\n\nexport type UseChatProcessorProps = {\n chat?: Assistant.Chat;\n preset?: AiServicePreset;\n services?: () => Promise<Runtime.Runtime<AiChatServices>>;\n blueprintRegistry?: Blueprint.Registry;\n settings?: Assistant.Settings;\n};\n\n/**\n * Configure and create AiChatProcessor.\n */\nexport const useChatProcessor = ({\n chat,\n preset,\n services,\n blueprintRegistry,\n settings,\n}: UseChatProcessorProps): AiChatProcessor | undefined => {\n const observableRegistry = useContext(RegistryContext);\n\n // Create conversation from chat queue.\n const conversation = useMemo(() => {\n if (!chat?.queue.target) {\n return;\n }\n\n return new AiConversation({ queue: chat.queue.target as Queue<any> });\n }, [chat?.queue.target]);\n\n // Create processor.\n const processor = useMemo(() => {\n if (!services || !conversation) {\n return undefined;\n }\n\n log('creating processor', {\n preset,\n model: preset?.model,\n settings,\n });\n\n return new AiChatProcessor(conversation, services, {\n observableRegistry,\n blueprintRegistry,\n model: preset?.model,\n });\n }, [services, conversation, blueprintRegistry, preset]);\n\n return processor;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { type ModelName } from '@dxos/ai';\n\nconst ModelProviders = ['dxos-local', 'dxos-remote', 'lm-studio'] as const;\n\nconst ModelProvider = Schema.Literal(...ModelProviders);\ntype ModelProvider = Schema.Schema.Type<typeof ModelProvider>;\n\nexport type AiServicePreset = {\n id: string;\n provider: ModelProvider;\n model: ModelName;\n label?: string;\n};\n\nconst createModelLabel = (model: ModelName) => {\n const parts = model.split('/');\n return parts[parts.length - 1];\n};\n\n// TODO(burdon): Users should be able to create and edit presets.\nexport const AiServicePresets: AiServicePreset[] = [\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-opus-4-0' as const,\n },\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-sonnet-4-0' as const,\n },\n {\n provider: 'dxos-remote' as const,\n model: '@anthropic/claude-3-5-haiku-20241022' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: '@google/gemma-3-27b' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: '@mlx-community/llama-3.2-3b-instruct' as const,\n },\n {\n model: 'deepseek-r1:latest' as const,\n provider: 'dxos-local' as const,\n },\n].map(\n ({ model, provider }, i) =>\n ({\n id: `preset-${i}`,\n provider,\n model,\n label: createModelLabel(model),\n }) satisfies AiServicePreset,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Registry, Rx } from '@effect-rx/rx-react';\nimport { Cause, Effect, Exit, Fiber, Option, Runtime } from 'effect';\n\nimport {\n AiService,\n DEFAULT_EDGE_MODEL,\n type ModelName,\n type ModelRegistry,\n type ToolExecutionService,\n type ToolResolverService,\n} from '@dxos/ai';\nimport {\n type AiConversation,\n type AiConversationRunParams,\n AiSession,\n ArtifactDiffResolver,\n GenerationObserver,\n createSystemPrompt,\n} from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { Obj } from '@dxos/echo';\nimport { throwCause } from '@dxos/effect';\nimport {\n type CredentialsService,\n type DatabaseService,\n type QueueService,\n type RemoteFunctionExecutionService,\n type TracingService,\n} from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { type ContentBlock, DataType } from '@dxos/schema';\nimport { trim } from '@dxos/util';\n\nimport { type Assistant } from '../types';\n\nexport type AiChatServices =\n | CredentialsService\n | DatabaseService\n | QueueService\n | RemoteFunctionExecutionService\n | AiService.AiService\n | ToolExecutionService\n | ToolResolverService\n | TracingService;\n\nexport type AiChatProcessorOptions = {\n model?: ModelName;\n modelRegistry?: ModelRegistry;\n blueprintRegistry?: Blueprint.Registry;\n observableRegistry?: Registry.Registry;\n extensions?: ToolContextExtensions;\n} & Pick<AiConversationRunParams, 'system'>;\n\nconst defaultOptions: Partial<AiChatProcessorOptions> = {\n model: DEFAULT_EDGE_MODEL,\n};\n\n// TODO(burdon): Retry, timeout?\nexport type AiRequestOptions = {};\n\nexport type AiRequest = {\n message: string;\n options?: AiRequestOptions;\n};\n\n/**\n * Handles interactions with the AI service.\n * Handles streaming responses from the conversation.\n */\nexport class AiChatProcessor {\n private readonly _rx: Registry.Registry;\n\n /** External observer. */\n private readonly _observer: GenerationObserver;\n\n /** Currently active request fiber. */\n private _fiber: Fiber.Fiber<void, any> | undefined;\n\n /** Last request (for retries). */\n private _lastRequest: AiRequest | undefined;\n\n /** Pending messages (incl. the current user request). */\n private readonly _pending = Rx.make<DataType.Message[]>([]);\n\n /** Currently streaming message (from the AI service). */\n private readonly _streaming = Rx.make<Option.Option<DataType.Message>>(Option.none());\n\n /** Streaming state. */\n public readonly streaming = Rx.make<boolean>((get) => Option.isSome(get(this._streaming)));\n\n /** Active state. */\n public readonly active = Rx.make(false);\n\n /** Array of Messages (incl. the current message being streamed). */\n public readonly messages = Rx.make<DataType.Message[]>((get) =>\n Option.match(get(this._streaming), {\n onNone: () => get(this._pending),\n onSome: (streaming) => [...get(this._pending), streaming],\n }),\n );\n\n /** Last error. */\n public readonly error = Rx.make<Option.Option<Error>>(Option.none());\n\n constructor(\n private readonly _conversation: AiConversation,\n // TODO(dmaretskyi): Replace this with effect's ManagedRuntime wrapping this layer.\n private readonly _services: () => Promise<Runtime.Runtime<AiChatServices>>,\n private readonly _options: AiChatProcessorOptions = defaultOptions,\n ) {\n // Initialize registries and defaults before using in other logic.\n this._rx = this._options.observableRegistry ?? Registry.make();\n this._observer = GenerationObserver.make({\n onBlock: this._onBlock,\n onMessage: this._onMessage,\n });\n if (this._options.model && !this._options.system) {\n const capabilities = this._options.modelRegistry?.getCapabilities(this._options.model) ?? {};\n this._options.system = createSystemPrompt(capabilities);\n }\n }\n\n get context() {\n return this._conversation.context;\n }\n\n get conversation() {\n return this._conversation;\n }\n\n get blueprintRegistry() {\n return this._options.blueprintRegistry;\n }\n\n /**\n * Initiates a new request.\n */\n async request(requestParam: AiRequest): Promise<void> {\n if (this._fiber) {\n await this.cancel();\n }\n\n try {\n this._lastRequest = requestParam;\n this._rx.set(this.error, Option.none());\n this._rx.set(this.active, true);\n\n // Create request.\n const request = this._conversation.createRequest({\n system: this._options.system,\n prompt: requestParam.message,\n observer: this._observer,\n });\n\n const runtime = await this._services();\n\n // Create fiber.\n this._fiber = request.pipe(\n Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),\n\n // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.\n Effect.provideService(ArtifactDiffResolver, this._artifactDiffResolver),\n\n Effect.asVoid,\n Effect.tapErrorCause((cause) => {\n log.error('request failed', { cause });\n return Effect.void;\n }),\n Runtime.runFork(runtime), // Runs in the background.\n );\n\n // Execute request.\n const response = await this._fiber.pipe(Fiber.join, Effect.runPromiseExit);\n if (!Exit.isSuccess(response) && !Cause.isInterruptedOnly(response.cause)) {\n throwCause(response.cause);\n }\n\n this._rx.set(this.error, Option.none());\n this._lastRequest = undefined;\n this._fiber = undefined;\n } catch (err) {\n log.error('request failed', { err });\n this._rx.set(this.error, Option.some(new Error('AI service error', { cause: err })));\n } finally {\n this._fiber = undefined;\n this._rx.set(this.active, false);\n }\n }\n\n /**\n * Cancels the current request.\n */\n async cancel(): Promise<void> {\n await Effect.runPromise(\n Effect.gen(this, function* () {\n if (this._fiber) {\n yield* this._fiber.pipe(Fiber.interrupt);\n }\n }),\n );\n\n this._fiber = undefined;\n this._rx.set(this.active, false);\n }\n\n /**\n * Retry last failed request.\n */\n async retry(): Promise<void> {\n if (this._lastRequest) {\n return this.request(this._lastRequest);\n }\n }\n\n /**\n * Update the current chat's name.\n */\n async updateName(chat: Assistant.Chat): Promise<void> {\n const runtime = await this._services();\n\n const system = trim`\n It is extremely important that you respond only with the title and nothing else.\n If you cannot do this effectively respond with \"New Chat\".\n `;\n\n const history = await this._conversation.getHistory();\n const fiber = Effect.gen(this, function* () {\n const session = new AiSession();\n return yield* session.run({ system, prompt: 'Suggest a name for this chat', history });\n }).pipe(\n // TODO(burdon): Use simpler model.\n Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),\n Effect.tap((messages) => {\n const message = messages.find((message) => message.sender.role === 'assistant');\n const title = message?.blocks.find((b) => b._tag === 'text')?.text;\n if (title) {\n chat.name = title;\n }\n }),\n Runtime.runFork(runtime), // Run in the background.\n );\n\n const response = await fiber.pipe(Fiber.join, Effect.runPromiseExit);\n if (!Exit.isSuccess(response)) {\n throwCause(response.cause);\n }\n }\n\n // TODO(burdon): Fix/factor out.\n private _artifactDiffResolver: ArtifactDiffResolver.Service = {\n resolve: async (_artifacts) => {\n const versions = new Map();\n // await Promise.all(\n // artifacts.map(async (artifact) => {\n // const {\n // objects: [object],\n // } = await space.db.query(Filter.ids(artifact.id)).run();\n // if (!object) {\n // return;\n // }\n\n // versions.set(artifact.id, {\n // version: getVersion(object),\n // diff: `Current state: ${JSON.stringify(object)}`,\n // });\n // }),\n // );\n\n return versions;\n },\n };\n\n private _onMessage = Effect.fn(\n function* (this: AiChatProcessor, message: DataType.Message) {\n this._rx.set(this._streaming, Option.none());\n this._rx.update(this._pending, (pending) => [...pending, message]);\n }.bind(this),\n );\n\n private _onBlock = Effect.fn(\n function* (this: AiChatProcessor, block: ContentBlock.Any) {\n this._rx.update(this._streaming, (streaming) => {\n const blocks = streaming.pipe(\n Option.map((streaming) => streaming.blocks.filter((b) => !b.pending)),\n Option.getOrElse(() => []),\n );\n\n return Option.some(\n Obj.make(DataType.Message, {\n created: new Date().toISOString(),\n sender: { role: 'assistant' },\n blocks: [...blocks, block],\n }),\n );\n });\n }.bind(this),\n );\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect, type Runtime } from 'effect';\nimport { useMemo } from 'react';\n\nimport { useCapability } from '@dxos/app-framework';\nimport { type Space } from '@dxos/client/echo';\nimport { TracingService } from '@dxos/functions';\nimport { useClient } from '@dxos/react-client';\n\nimport { AssistantCapabilities } from '../capabilities';\nimport { type AiChatServices } from '../processor';\nimport { type Assistant } from '../types';\n\nexport type UseChatServicesProps = {\n space?: Space;\n chat?: Assistant.Chat;\n};\n\n/**\n * Construct service layer.\n */\n// TODO(dmaretskyi): Better return type.\nexport const useChatServices = ({\n space,\n chat,\n}: UseChatServicesProps): (() => Promise<Runtime.Runtime<AiChatServices>>) | undefined => {\n const client = useClient();\n space ??= client.spaces.default;\n\n const computeRuntimeResolver = useCapability(AssistantCapabilities.ComputeRuntime);\n\n return useMemo(() => {\n const runtime = computeRuntimeResolver.getRuntime(space.id);\n return () =>\n runtime.runPromise(\n Effect.gen(function* () {\n return yield* Effect.runtime<AiChatServices>().pipe(\n Effect.provide(\n chat?.traceQueue?.target ? TracingService.layerQueue(chat.traceQueue?.target) : TracingService.layerNoop,\n ),\n );\n }),\n );\n }, [space, chat?.traceQueue?.target]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AiService = lazy(() => import('./ai-service'));\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const AssistantState = lazy(() => import('./state'));\nexport const BlueprintDefinition = lazy(() => import('./blueprint-definition'));\nexport const EdgeModelResolver = lazy(() => import('./edge-model-resolver'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const LocalModelResolver = lazy(() => import('./local-model-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const Settings = lazy(() => import('./settings'));\nexport const Toolkit = lazy(() => import('./toolkit'));\nexport const ComputeRuntime = lazy(() => import('./compute-runtime'));\n\nexport * from './blueprint-definition';\nexport * from './capabilities';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { AiContextBinder } from '@dxos/assistant';\n\nimport { type Assistant } from '../types';\n\nexport const useContextBinder = (chat: Assistant.Chat | undefined): AiContextBinder | undefined => {\n const binder = useMemo(() => {\n const queue = chat?.queue.target;\n return queue && new AiContextBinder(queue);\n }, [chat]);\n\n return binder;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Dispatch, type SetStateAction, useState } from 'react';\n\nexport const useOnline = (): [boolean, Dispatch<SetStateAction<boolean>>] => {\n const [online, setOnline] = useState(true);\n return [online, setOnline];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type ChatPromptProps } from '../components';\nimport { type AiServicePreset, AiServicePresets } from '../processor';\n\nexport type UsePresets = {\n preset: AiServicePreset | undefined;\n} & Pick<ChatPromptProps, 'presets' | 'onPresetChange'>;\n\nexport const usePresets = (online: boolean): UsePresets => {\n // TODO(burdon): Memo preset for provider.\n const [preset, setPreset] = useState<AiServicePreset>();\n const presets = useMemo(\n () => AiServicePresets.filter((preset) => online === (preset.provider === 'dxos-remote')),\n [online],\n );\n const presetOptions = useMemo(\n () => presets.map(({ id, model, label }) => ({ id, label: label ?? model })),\n [presets],\n );\n useEffect(() => {\n setPreset(presets[0]);\n }, [presets]);\n\n const handlePresetChange = useCallback<NonNullable<ChatPromptProps['onPresetChange']>>(\n (id) => {\n const preset = presets.find((preset) => preset.id === id);\n if (preset) {\n setPreset(preset);\n }\n },\n [presets],\n );\n\n return {\n preset: preset,\n presets: presetOptions,\n onPresetChange: handlePresetChange,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type DXN, type Obj, Ref } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { type Space } from '@dxos/react-client/echo';\nimport { isNonNullable } from '@dxos/util';\n\nexport type UseContextObjects = {\n objects: Obj.Any[];\n onUpdateObject: (dxn: DXN, checked: boolean) => Promise<void>;\n};\n\n/**\n * Create reactive map of active object references (by DXN string).\n */\nexport const useContextObjects = ({\n space,\n context,\n}: {\n space?: Space;\n context?: AiContextBinder;\n}): UseContextObjects => {\n const objects = context?.objects.value.map((ref) => ref.target).filter(isNonNullable) ?? [];\n\n const handleUpdateObject = useCallback<UseContextObjects['onUpdateObject']>(\n async (dxn: DXN, checked: boolean) => {\n if (!space || !context) {\n return;\n }\n\n // Load the object by DXN/id from the current space.\n const id = dxn.asEchoDXN();\n const object = id && (await space.db.getObjectById(id.echoId));\n if (!object) {\n log.warn('Object not found', { dxn, id });\n return;\n }\n\n const ref = Ref.fromDXN(dxn);\n if (checked) {\n await context.bind({ objects: [ref] });\n } else {\n await context.unbind({ objects: [ref] });\n }\n },\n [space, context],\n );\n\n return {\n objects,\n onUpdateObject: handleUpdateObject,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Queue } from '@dxos/client/echo';\nimport { Obj } from '@dxos/echo';\nimport { useQueue } from '@dxos/react-client/echo';\n\nimport { ExecutionGraph } from '../execution-graph';\n\nexport const useExecutionGraph = (queueRef?: Queue, lastRequest = false) => {\n const queue = useQueue(queueRef?.dxn);\n return useMemo(() => {\n const graph = new ExecutionGraph();\n graph.addEvents(queue?.objects.filter(Obj.isObject) ?? []);\n return graph.getGraph(lastRequest);\n }, [queue?.objects, lastRequest]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { AgentStatus } from '@dxos/ai';\nimport { Obj, type Ref } from '@dxos/echo';\nimport { MESSAGE_PROPERTY_TOOL_CALL_ID } from '@dxos/functions';\nimport { type ObjectId } from '@dxos/keys';\nimport { LogLevel } from '@dxos/log';\nimport { type Commit } from '@dxos/react-ui-components';\nimport { ContentBlock, DataType } from '@dxos/schema';\nimport { isNotFalsy } from '@dxos/util';\n\n// TODO(burdon): Move to assistant.\n\n// TODO(burdon): Add colors?\nenum IconType {\n // General status.\n SUCCESS = 'ph--check-circle--regular',\n WARNING = 'ph--warning-circle--regular',\n ERROR = 'ph--x-circle--regular',\n FLAG = 'ph--flag--regular',\n ROCKET = 'ph--rocket--regular',\n TIMER = 'ph--timer--regular',\n\n // Interactions.\n USER = 'ph--user--regular',\n USER_INTERACTION = 'ph--user-sound--regular',\n AGENT = 'ph--robot--regular',\n THINKING = 'ph--brain--regular',\n LINK = 'ph--link--regular',\n TOOL = 'ph--wrench--regular',\n}\n\n/**\n * Models the execution graph based on a stream of events.\n */\nexport class ExecutionGraph {\n // TODO(dmaretskyi): Evolve the internal state to support chats, functions, circuit workflows, etc.\n private _commits: Commit[] = [];\n private _branchNames = new Set<string>();\n\n /**\n * Adds events to the graph.\n */\n addEvents(events: Obj.Any[]) {\n for (const event of events) {\n if (Obj.instanceOf(DataType.Message, event)) {\n const messageCommits = messageToCommit(event);\n this._commits.push(...messageCommits);\n messageCommits.map((c) => c.branch).forEach((branch) => this._branchNames.add(branch));\n } else if (Obj.instanceOf(AgentStatus, event)) {\n const branch = getBranchName({ parentMessage: event.parentMessage, toolCallId: event.toolCallId });\n this._branchNames.add(branch);\n this._commits.push({\n id: event.id,\n branch,\n message: event.message,\n icon: IconType.FLAG,\n parents:\n event.parentMessage && event.toolCallId\n ? [getToolCallId(event.parentMessage, event.toolCallId)]\n : undefined, // TODO(burdon): Fix.\n });\n }\n }\n }\n\n /**\n * Returns the current state of the graph.\n */\n getGraph(lastRequest = false): { branches: string[]; commits: Commit[] } {\n const idx = lastRequest ? this._commits.findLastIndex((c) => c.tags?.includes('user')) : -1;\n const commits = idx === -1 ? this._commits : this._commits.slice(idx);\n\n return {\n branches: Array.from(this._branchNames),\n commits: commits,\n };\n }\n}\n\n// TODO(burdon): Pass in AiToolProvider.\nconst messageToCommit = (message: DataType.Message): Commit[] => {\n return message.blocks\n .map((block, idx) => {\n const branch = getMessageBranch(message);\n const parent = getParentId(message);\n const parents = parent ? [parent] : [];\n switch (block._tag) {\n case 'text':\n if (!block.text.trim().length) {\n return null;\n }\n return {\n id: getGenericBlockId(message.id, idx),\n branch,\n parents,\n ...(message.sender.role === 'user'\n ? {\n icon: IconType.USER,\n tags: ['user'],\n message: 'Processing request...',\n }\n : {\n icon: IconType.AGENT,\n message: `Response (${block.text.split(' ').length} words)`,\n }),\n } satisfies Commit;\n case 'toolCall':\n return {\n id: getToolCallId(message.id, block.toolCallId),\n branch,\n parents,\n icon: IconType.TOOL,\n level: LogLevel.INFO,\n // TODO(burdon): Lookup tool name/description?\n message: `Calling tool (${block.name})`,\n } satisfies Commit;\n case 'toolResult':\n return {\n id: getToolResultId(message.id, block.toolCallId),\n branch,\n parents,\n icon: block.error ? IconType.ERROR : IconType.SUCCESS,\n level: block.error ? LogLevel.ERROR : LogLevel.INFO,\n message: block.error ? 'Tool error: ' + block.error : 'Tool call succeeded',\n } satisfies Commit;\n case 'summary':\n return {\n id: getGenericBlockId(message.id, idx),\n branch,\n parents,\n icon: IconType.ROCKET,\n level: LogLevel.INFO,\n message: ContentBlock.createSummaryMessage(block),\n } satisfies Commit;\n case 'status':\n return {\n id: getGenericBlockId(message.id, idx),\n branch,\n parents,\n message: block.statusText,\n level: LogLevel.INFO,\n icon: IconType.FLAG,\n } satisfies Commit;\n case 'reasoning':\n return {\n id: getGenericBlockId(message.id, idx),\n branch,\n parents,\n message: block.reasoningText ?? 'Thinking...',\n icon: IconType.THINKING,\n } satisfies Commit;\n case 'reference':\n return {\n id: getGenericBlockId(message.id, idx),\n branch,\n parents,\n icon: IconType.LINK,\n message: stringifyRef(block.reference),\n } satisfies Commit;\n default:\n return null;\n }\n })\n .filter(isNotFalsy);\n};\n\nconst getToolCallId = (messageId: ObjectId, toolCallId: string) => `${messageId}_toolCall_${toolCallId}`;\n\nconst getToolResultId = (messageId: ObjectId, toolCallId: string) => `${messageId}_toolResult_${toolCallId}`;\n\nconst getGenericBlockId = (messageId: ObjectId, idx: number) => `${messageId}_block_${idx}`;\n\nconst getBranchName = (options: { parentMessage?: ObjectId; toolCallId?: string }) => {\n if (options.parentMessage && options.toolCallId) {\n return `${options.parentMessage}_${options.toolCallId}`;\n } else if (options.parentMessage) {\n return options.parentMessage;\n } else {\n return 'main';\n }\n};\n\nconst getMessageBranch = (message: DataType.Message) => {\n return getBranchName({\n parentMessage: message.parentMessage,\n toolCallId: message.properties?.[MESSAGE_PROPERTY_TOOL_CALL_ID],\n });\n};\n\nconst getParentId = (message: DataType.Message) => {\n if (message.parentMessage && message.properties?.[MESSAGE_PROPERTY_TOOL_CALL_ID]) {\n return getToolCallId(message.parentMessage, message.properties[MESSAGE_PROPERTY_TOOL_CALL_ID]);\n } else {\n return undefined;\n }\n};\n\nconst stringifyRef = (ref: Ref.Any) => {\n if (ref.target) {\n return stringifyObject(ref.target);\n }\n\n return ref.dxn.asEchoDXN()?.echoId ?? ref.dxn.asQueueDXN()?.objectId ?? '';\n};\n\nconst stringifyObject = (obj: Obj.Any) => {\n return Obj.getLabel(obj) ?? Obj.getTypename(obj) ?? obj.id;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useRef, useState } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\n\nexport const useFlush = (space?: Space) => {\n const [state, setState] = useState<'idle' | 'flushing' | 'flushed'>('idle');\n const resetTimer = useRef<NodeJS.Timeout | null>(null);\n\n const handleFlush = useCallback(() => {\n if (!space) {\n return;\n }\n\n queueMicrotask(async () => {\n if (resetTimer.current) {\n clearTimeout(resetTimer.current);\n }\n\n setState('flushing');\n await space.db.flush();\n setState('flushed');\n\n resetTimer.current = setTimeout(() => {\n setState('idle');\n resetTimer.current = null;\n }, 1_000);\n });\n }, [space]);\n\n return { state, handleFlush };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Option } from 'effect';\nimport { useEffect, useState } from 'react';\n\nimport { type Type } from '@dxos/echo';\nimport { type Space } from '@dxos/react-client/echo';\nimport { ItemAnnotation } from '@dxos/schema';\n\n// TODO(burdon): Pass in filter.\nexport const useItemTypes = (space?: Space): Type.Obj.Any[] => {\n const [types, setTypes] = useState<Type.Obj.Any[]>([]);\n useEffect(() => {\n if (!space) {\n return;\n }\n\n return space.db.schemaRegistry.query().subscribe(\n (query) => {\n const types = Array.from(\n new Set(\n [...space.db.graph.schemaRegistry.schemas, ...query.results].filter((type) =>\n Option.isSome(ItemAnnotation.get(type)),\n ),\n ),\n );\n\n setTypes(types);\n },\n { fire: true },\n );\n }, [space]);\n\n return types;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type ReferencesProvider } from '@dxos/react-ui-chat';\n\n/**\n * Resolve references to objects in the space.\n */\nexport const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {\n const blueprints = useCapabilities(Capabilities.BlueprintDefinition);\n\n return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n getReferences: async ({ query }) => {\n // TODO(burdon): Previously we filtered by types declared by the artifact definitions.\n // const schemas = blueprints.map((blueprint) => blueprint.schema).flat();\n // const { objects } = await space.db\n // .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))\n // .run();\n\n const { objects } = await space.db.query(Filter.everything()).run();\n\n return (\n objects\n // TODO(burdon): Remove cast ??? (+ two instances below).\n // .map((object) => {\n // log.info('object', { object, label: Obj.getLabel(object as any) });\n // return object;\n // })\n .filter((object) => stringMatch(query, Obj.getLabel(object as any) ?? ''))\n // TODO(dmaretskyi): `Type.getDXN` (at the point of writing) didn't work here as it was schema-only.\n .filter((object) => !!Obj.getDXN(object as Obj.Any))\n .map((object) => ({\n uri: Obj.getDXN(object as any).toString(),\n label: Obj.getLabel(object as any) ?? '',\n }))\n );\n },\n resolveReference: async ({ uri }) => {\n const object = await space.db.query(Filter.ids(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n } satisfies ReferencesProvider;\n }, [space, blueprints]);\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type { Effect } from 'effect';\nimport { useCallback } from 'react';\n\nimport { useCapability } from '@dxos/app-framework';\nimport type { Space } from '@dxos/client/echo';\n\nimport { AssistantCapabilities } from '../capabilities';\n\n/**\n * Create an effectful function that has access to compute services\n */\nexport const useComputeRuntimeCallback = <T>(\n space: Space,\n fn: () => Effect.Effect<T, any, AssistantCapabilities.ComputeServices>,\n deps?: React.DependencyList,\n): (() => Promise<T>) => {\n const computeRuntime = useCapability(AssistantCapabilities.ComputeRuntime);\n const runtime = computeRuntime.getRuntime(space.id);\n\n return useCallback(() => runtime.runPromise(fn()), [runtime, ...(deps ?? [])]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { useRxValue } from '@effect-rx/rx-react';\nimport { createContext } from '@radix-ui/react-context';\nimport { Array, Option } from 'effect';\nimport React, { type PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Event } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { useVoiceInput } from '@dxos/plugin-transcription';\nimport { type Space, getSpace, useQueue } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Input, type ThemedClassName, useDynamicRef, useTranslation } from '@dxos/react-ui';\nimport { ChatEditor, type ChatEditorController, type ChatEditorProps, references } from '@dxos/react-ui-chat';\nimport { mx } from '@dxos/react-ui-theme';\nimport { DataType } from '@dxos/schema';\nimport { isNotFalsy } from '@dxos/util';\n\nimport { useReferencesProvider } from '../../hooks';\nimport { meta } from '../../meta';\nimport { type AiChatProcessor } from '../../processor';\nimport { type Assistant } from '../../types';\nimport {\n ChatActions,\n type ChatActionsProps,\n ChatOptions,\n type ChatPresetsProps,\n ChatReferences,\n ChatStatusIndicator,\n} from '../ChatPrompt';\nimport {\n type ChatThreadController,\n ChatThread as NaturalChatThread,\n type ChatThreadProps as NaturalChatThreadProps,\n} from '../ChatThread';\n\nimport { type ChatEvent } from './events';\n\n//\n// Context\n// NOTE: The context should not be exported. It is only used internally.\n// Components outside of this Radix-style group shuld define their own APIs.\n//\n\ntype ChatContextValue = {\n debug?: boolean;\n event: Event<ChatEvent>;\n space: Space;\n chat: Assistant.Chat;\n messages: DataType.Message[];\n processor: AiChatProcessor;\n};\n\nexport const [ChatContextProvider, useChatContext] = createContext<ChatContextValue>('Chat');\n\n//\n// Root\n//\n\ntype ChatRootProps = ThemedClassName<\n PropsWithChildren<\n Pick<ChatContextValue, 'chat' | 'processor'> & {\n onEvent?: (event: ChatEvent) => void;\n }\n >\n>;\n\nconst ChatRoot = ({ classNames, children, chat, processor, onEvent, ...props }: ChatRootProps) => {\n const [debug, setDebug] = useState(false);\n const space = getSpace(chat);\n\n // Messages.\n const queue = useQueue<DataType.Message>(chat?.queue.dxn);\n const pending = useRxValue(processor.messages);\n const streaming = useRxValue(processor.streaming);\n const lastPrompt = useRef<string | undefined>(undefined);\n\n const messages = useMemo(() => {\n const queueMessages = queue?.objects?.filter(Obj.instanceOf(DataType.Message)) ?? [];\n return Array.dedupeWith([...queueMessages, ...pending], (a, b) => a.id === b.id);\n }, [queue?.objects, pending]);\n\n // Events.\n const event = useMemo(() => new Event<ChatEvent>(), []);\n useEffect(() => {\n return event.on((ev) => {\n switch (ev.type) {\n case 'toggle-debug': {\n setDebug((current) => !current);\n break;\n }\n\n case 'submit': {\n const text = ev.text.trim();\n if (!streaming && text.length) {\n lastPrompt.current = ev.text;\n void processor.request({ message: text });\n }\n break;\n }\n\n case 'retry': {\n if (!streaming) {\n void processor.retry();\n }\n break;\n }\n\n case 'cancel': {\n if (streaming) {\n void processor.cancel();\n if (lastPrompt.current) {\n event.emit({ type: 'update-prompt', text: lastPrompt.current });\n }\n }\n break;\n }\n\n default: {\n onEvent?.(ev);\n }\n }\n });\n }, [event, processor, streaming, onEvent]);\n\n if (!space) {\n return null;\n }\n\n return (\n <ChatContextProvider\n debug={debug}\n event={event}\n chat={chat}\n space={space}\n messages={messages}\n processor={processor}\n {...props}\n >\n <div role='none' className={mx('flex flex-col h-full overflow-hidden', classNames)}>\n {children}\n </div>\n </ChatContextProvider>\n );\n};\n\nChatRoot.displayName = 'Chat.Root';\n\n//\n// Prompt\n//\n\ntype ChatPromptProps = ThemedClassName<\n {\n outline?: boolean;\n } & Pick<ChatEditorProps, 'placeholder'> &\n Omit<ChatPresetsProps, 'onChange'> & {\n expandable?: boolean;\n online?: boolean;\n onOnlineChange?: (online: boolean) => void;\n onPresetChange?: ChatPresetsProps['onChange'];\n }\n>;\n\nconst ChatPrompt = ({\n classNames,\n outline,\n placeholder,\n expandable,\n online,\n presets,\n preset,\n onPresetChange,\n onOnlineChange,\n}: ChatPromptProps) => {\n const { t } = useTranslation(meta.id);\n const { space, event, processor } = useChatContext(ChatPrompt.displayName);\n\n const error = useRxValue(processor.error).pipe(Option.getOrUndefined);\n const streaming = useRxValue(processor.streaming);\n const active = useRxValue(processor.active);\n const activeRef = useDynamicRef(active);\n\n const editorRef = useRef<ChatEditorController>(null);\n const [recordingState, setRecordingState] = useState(false);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'update-prompt':\n if (!editorRef.current?.getText()?.length) {\n editorRef.current?.setText(event.text);\n editorRef.current?.focus();\n }\n break;\n case 'record-start':\n setRecordingState(true);\n break;\n case 'record-stop':\n setRecordingState(false);\n break;\n }\n });\n }, [event]);\n\n // TODO(burdon): Configure capability in TranscriptionPlugin.\n const { recording } = useVoiceInput({\n active: recordingState,\n onUpdate: (text) => {\n editorRef.current?.setText(text);\n editorRef.current?.focus();\n },\n });\n\n // TODO(burdon): Reconcile with object tags.\n const referencesProvider = useReferencesProvider(space);\n const extensions = useMemo<Extension[]>(() => {\n return [\n referencesProvider && references({ provider: referencesProvider }),\n Prec.highest(\n keymap.of(\n [\n {\n key: 'cmd-d',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'toggle-debug' });\n return true;\n },\n },\n expandable && {\n key: 'cmd-ArrowUp',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'thread-open' });\n return true;\n },\n },\n expandable && {\n key: 'cmd-ArrowDown',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'thread-close' });\n return true;\n },\n },\n ].filter(isNotFalsy),\n ),\n ),\n ].filter(isNotFalsy);\n }, [event, expandable, referencesProvider]);\n\n const handleSubmit = useCallback<NonNullable<ChatEditorProps['onSubmit']>>(\n (text) => {\n if (!activeRef.current) {\n event.emit({ type: 'submit', text });\n return true;\n }\n },\n [event],\n );\n\n const handleEvent = useCallback<NonNullable<ChatActionsProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n return (\n <div\n className={mx(\n 'is-full flex flex-col density-fine',\n outline && [\n 'p-2 bg-groupSurface border border-subduedSeparator transition transition-border [&:has(.cm-content:focus)]:border-separator rounded',\n ],\n classNames,\n )}\n >\n <div className='flex gap-2'>\n <ChatStatusIndicator classNames='p-1' preset={preset} error={error} processing={streaming} />\n\n <ChatEditor\n ref={editorRef}\n autoFocus\n lineWrapping\n classNames='col-span-2 pbs-0.5'\n placeholder={placeholder ?? t('prompt placeholder')}\n extensions={extensions}\n onSubmit={handleSubmit}\n />\n </div>\n\n <div className='flex pbs-2 items-center'>\n <ChatOptions\n space={space}\n blueprintRegistry={processor.blueprintRegistry}\n context={processor.context}\n preset={preset}\n presets={presets}\n onPresetChange={onPresetChange}\n />\n\n <div role='none' className='pli-cardSpacingChrome grow'>\n <ChatReferences space={space} context={processor.context} />\n </div>\n\n <ChatActions\n classNames='col-span-2'\n microphone={true}\n recording={recording}\n processing={streaming}\n onEvent={handleEvent}\n >\n {online !== undefined && (\n <Input.Root>\n <Input.Switch classNames='mis-2 mie-2' checked={online} onCheckedChange={onOnlineChange} />\n </Input.Root>\n )}\n </ChatActions>\n </div>\n </div>\n );\n};\n\nChatPrompt.displayName = 'Chat.Prompt';\n\n//\n// Thread\n//\n\ntype ChatThreadProps = Omit<NaturalChatThreadProps, 'identity' | 'messages' | 'tools'>;\n\nconst ChatThread = (props: ChatThreadProps) => {\n const { event, messages, processor } = useChatContext(ChatThread.displayName);\n const identity = useIdentity();\n const error = useRxValue(processor.error).pipe(Option.getOrUndefined);\n\n const scrollerRef = useRef<ChatThreadController | null>(null);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'submit':\n case 'scroll-to-bottom':\n scrollerRef.current?.scrollToBottom();\n break;\n }\n });\n }, [event]);\n\n const handleEvent = useCallback<NonNullable<NaturalChatThreadProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n if (!identity) {\n return null;\n }\n\n return (\n <NaturalChatThread\n {...props}\n ref={scrollerRef}\n identity={identity}\n messages={messages}\n error={error}\n onEvent={handleEvent}\n />\n );\n};\n\nChatThread.displayName = 'Chat.Thread';\n\n//\n// Chat\n//\n\nexport const Chat = {\n Root: ChatRoot,\n Prompt: ChatPrompt,\n Thread: ChatThread,\n};\n\nexport type { ChatRootProps, ChatThreadProps, ChatPromptProps, ChatEvent };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { meta } from '../../meta';\nimport { type ChatEvent } from '../Chat';\n\nexport type ChatActionsProps = ThemedClassName<\n PropsWithChildren<{\n microphone?: boolean;\n recording?: boolean;\n processing?: boolean;\n onEvent?: (event: ChatEvent) => void;\n }>\n>;\n\nexport const ChatActions = ({ classNames, children, microphone, recording, processing, onEvent }: ChatActionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className={mx('flex items-center mie-1', classNames)}>\n {children}\n\n <IconButton\n disabled={!processing}\n variant='ghost'\n size={5}\n icon='ph--x--regular'\n iconOnly\n label={t('button cancel processing')}\n onClick={() => onEvent?.({ type: 'cancel' })}\n />\n\n {microphone && (\n <IconButton\n disabled={!processing}\n classNames={mx(recording && 'bg-primary-500')}\n variant='ghost'\n size={5}\n icon='ph--microphone--regular'\n iconOnly\n noTooltip\n label={t('button microphone')}\n onMouseDown={() => onEvent?.({ type: 'record-start' })}\n onMouseUp={() => onEvent?.({ type: 'record-stop' })}\n onTouchStart={() => onEvent?.({ type: 'record-start' })}\n onTouchEnd={() => onEvent?.({ type: 'record-stop' })}\n />\n )}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type JSX, useMemo, useState } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { Filter, Obj, Type } from '@dxos/echo';\nimport { type Space, useQuery } from '@dxos/react-client/echo';\nimport { Icon, IconButton, Popover, Select, useTranslation } from '@dxos/react-ui';\nimport { SearchList } from '@dxos/react-ui-searchlist';\nimport { Tabs } from '@dxos/react-ui-tabs';\n\nimport { useActiveBlueprints, useBlueprintHandlers, useBlueprints, useContextObjects, useItemTypes } from '../../hooks';\nimport { meta } from '../../meta';\n\nconst panelClassNames = 'is-[calc(100dvw-.5rem)] sm:is-max md:is-[25rem] max-is-[--text-content]';\n\nexport type ChatOptionsProps = {\n space: Space;\n context: AiContextBinder;\n blueprintRegistry?: Blueprint.Registry;\n presets?: { id: string; label: string }[];\n preset?: string;\n onPresetChange?: (id: string) => void;\n};\n\n/**\n * Manages the runtime context for the chat.\n */\nexport const ChatOptions = ({\n space,\n context,\n blueprintRegistry,\n presets,\n preset,\n onPresetChange,\n}: ChatOptionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div role='none' className='flex gap-0.5'>\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton variant='ghost' icon='ph--plus--regular' iconOnly size={5} label={t('button context objects')} />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={panelClassNames}>\n <ObjectsPanel space={space} context={context} />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton\n variant='ghost'\n icon='ph--sliders-horizontal--regular'\n iconOnly\n size={5}\n label={t('button context settings')}\n />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={panelClassNames}>\n <Tabs.Root orientation='horizontal' defaultValue='blueprints' defaultActivePart='list'>\n <Tabs.Viewport classNames='max-bs-[--radix-popover-content-available-height] grid grid-rows-[1fr_min-content] [&_[cmdk-root]]:contents [&_[role=\"tabpanel\"]]:grid [&_[role=\"tabpanel\"]]:grid-rows-[1fr_min-content] [&_[role=\"listbox\"]]:min-bs-0 [&_[role=\"listbox\"]]:overflow-y-auto [&_[role=\"tabpanel\"]]:min-bs-0 [&_[role=\"tabpanel\"]]:pli-cardSpacingChrome [&_[role=\"tabpanel\"][data-state=\"active\"]]:order-first [&_[role=\"tabpanel\"][data-state=\"inactive\"]]:hidden'>\n <Tabs.Tabpanel value='blueprints'>\n <BlueprintsPanel blueprintRegistry={blueprintRegistry} space={space} context={context} />\n </Tabs.Tabpanel>\n <Tabs.Tabpanel value='model'>\n <ModelsPanel presets={presets} preset={preset} onPresetChange={onPresetChange} />\n </Tabs.Tabpanel>\n <Tabs.Tablist classNames='sm:overflow-x-hidden justify-center p-[--dx-cardSpacingChrome] border-bs border-subduedSeparator order-last'>\n <Tabs.IconTab\n value='blueprints'\n icon='ph--blueprint--regular'\n label={t('blueprints in context title')}\n />\n <Tabs.IconTab value='model' label={t('chat model title')} icon='ph--cpu--regular' />\n </Tabs.Tablist>\n </Tabs.Viewport>\n </Tabs.Root>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n );\n};\n\nconst BlueprintsPanel = ({\n blueprintRegistry,\n space,\n context,\n}: Pick<ChatOptionsProps, 'blueprintRegistry' | 'space' | 'context'>) => {\n const { t } = useTranslation(meta.id);\n\n const blueprints = useBlueprints({ blueprintRegistry });\n const activeBlueprints = useActiveBlueprints({ context });\n const { onUpdateBlueprint } = useBlueprintHandlers({ space, context, blueprintRegistry });\n\n return (\n <SearchList.Root>\n <SearchList.Content classNames='plb-cardSpacingChrome'>\n {blueprints.map((blueprint) => {\n const isActive = activeBlueprints.has(blueprint.key);\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={blueprint.key}\n value={blueprint.name}\n onSelect={() => onUpdateBlueprint?.(blueprint.key, !isActive)}\n >\n <div className='grow truncate'>{blueprint.name}</div>\n <Icon icon='ph--check--regular' classNames={[!isActive && 'invisible']} />\n </SearchList.Item>\n );\n })}\n </SearchList.Content>\n <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-cardSpacingChrome' />\n </SearchList.Root>\n );\n};\n\nconst ModelsPanel = ({\n presets,\n preset,\n onPresetChange,\n}: Pick<ChatOptionsProps, 'presets' | 'preset' | 'onPresetChange'>) => {\n return (\n <ul role='listbox' className='plb-cardSpacingChrome'>\n {presets?.map(({ id, label }) => {\n const isActive = preset === id;\n return (\n <li\n role='option'\n key={id}\n aria-selected={isActive}\n tabIndex={0}\n className='overflow-hidden dx-focus-ring flex gap-2 p-1 pis-2 pie-2 items-center rounded-sm select-none cursor-pointer hover:bg-hoverOverlay'\n onClick={() => onPresetChange?.(id)}\n >\n <div className='grow truncate'>{label}</div>\n <Icon icon='ph--check--regular' classNames={[!isActive && 'invisible']} />\n </li>\n );\n })}\n </ul>\n );\n};\n\nconst ANY = '__any__';\n\nconst ObjectsPanel = ({ space, context }: Pick<ChatOptionsProps, 'space' | 'context'>): JSX.Element => {\n const { t } = useTranslation(meta.id);\n\n // Item types sorted by label.\n const types = useItemTypes(space);\n const typenames = useMemo(() => {\n const typenames = types.map((type) => {\n const typename = Type.getTypename(type);\n return {\n typename,\n label: t('typename label', { ns: typename, defaultValue: typename }),\n };\n });\n\n typenames.sort((a, b) => a.label.localeCompare(b.label));\n return typenames;\n }, [types]);\n\n // Current type and filter.\n const [typename, setTypename] = useState<string>(ANY);\n const anyFilter = useMemo(\n () => Filter.or(...typenames.map(({ typename }) => Filter.typename(typename))),\n [typenames],\n );\n\n // Context objects.\n const objects = useQuery(space, typename === ANY ? anyFilter : Filter.typename(typename));\n const { objects: contextObjects, onUpdateObject } = useContextObjects({ space, context });\n\n return (\n <SearchList.Root classNames='pis-2 pie-2'>\n <SearchList.Content classNames='plb-cardSpacingChrome [&:has([cmdk-list-sizer]:empty)]:plb-0'>\n {objects.length ? (\n objects.map((object) => {\n const label = Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id;\n const isActive = contextObjects.findIndex((obj) => obj.id === object.id) !== -1;\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={object.id}\n value={object.id}\n onSelect={() => onUpdateObject?.(Obj.getDXN(object), !isActive)}\n >\n <div className='grow truncate'>{label}</div>\n <Icon icon='ph--check--regular' classNames={[!isActive && 'invisible']} />\n </SearchList.Item>\n );\n })\n ) : (\n <SearchList.Item>{t('no results')}</SearchList.Item>\n )}\n </SearchList.Content>\n\n <div role='none' className='grid grid-cols-[min-content_1fr] gap-2 mbe-cardSpacingChrome'>\n <Select.Root value={typename === ANY ? undefined : typename} onValueChange={setTypename}>\n <Select.TriggerButton density='fine' placeholder={t('type filter placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.ScrollUpButton />\n <Select.Viewport>\n <Select.Option value={ANY}>{t('any type filter label')}</Select.Option>\n {typenames.map(({ typename, label }) => (\n <Select.Option key={typename} value={typename}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.ScrollDownButton />\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n <SearchList.Input placeholder={t('search placeholder')} classNames='mbe-0' />\n </div>\n </SearchList.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Select } from '@dxos/react-ui';\n\nexport type ChatPresetsProps = {\n presets?: { id: string; label: string }[];\n preset?: string;\n onChange?: (id: string) => void;\n};\n\nexport const ChatPresets = ({ presets, preset, onChange }: ChatPresetsProps) => {\n return (\n <Select.Root value={preset} onValueChange={onChange}>\n <Select.TriggerButton classNames='text-sm' />\n <Select.Content>\n {presets?.map(({ id, label }) => (\n <Select.Option key={id} value={id} classNames='text-sm'>\n {label}\n </Select.Option>\n ))}\n <Select.Arrow />\n </Select.Content>\n </Select.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { type Space } from '@dxos/react-client/echo';\nimport { IconButton, type Label, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useContextObjects } from '../../hooks';\nimport { meta } from '../../meta';\n\nexport type ChatReferencesProps = ThemedClassName<{\n context: AiContextBinder;\n space: Space;\n}>;\n\nexport const ChatReferences = ({ classNames, context, space }: ChatReferencesProps) => {\n const { t } = useTranslation(meta.id);\n const { objects, onUpdateObject } = useContextObjects({ space, context });\n\n return (\n <ul className={mx('flex flex-wrap', classNames)}>\n {objects.map((obj) => {\n const dxn = Obj.getDXN(obj);\n const typename = Obj.getTypename(obj);\n const label: Label = Obj.getLabel(obj) ?? (typename ? ['object name placeholder', { ns: typename }] : obj.id);\n return (\n <li key={dxn.toString()} className='dx-tag plb-0 pis-2 flex items-center' data-hue='neutral'>\n {toLocalizedString(label, t)}\n <IconButton\n iconOnly\n variant='ghost'\n label={t('remove object in context label')}\n classNames='p-0 hover:bg-transparent'\n size={3}\n icon='ph--x--bold'\n onClick={() => onUpdateObject?.(dxn, false)}\n />\n </li>\n );\n })}\n </ul>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { type ThemedClassName, Tooltip, useTimeout } from '@dxos/react-ui';\nimport { Spinner, type SpinnerProps } from '@dxos/react-ui-sfx';\nimport { mx } from '@dxos/react-ui-theme';\n\nconst period = 3_000;\n\nexport type ChatStatusIndicatorProps = ThemedClassName<\n {\n preset?: string;\n processing?: boolean;\n error?: Error;\n } & Pick<SpinnerProps, 'size' | 'onClick'>\n>;\n\nexport const ChatStatusIndicator = ({ classNames, preset, processing, error, ...props }: ChatStatusIndicatorProps) => {\n const [init, setInit] = useState(false);\n useEffect(() => setInit(false), [preset]);\n useTimeout(\n async () => {\n setInit(true);\n },\n period / 2,\n [preset],\n );\n\n return (\n <div role='none' className={mx('relative flex', classNames)}>\n <Spinner duration={period} state={!init ? 'flash' : error ? 'error' : processing ? 'spin' : 'pulse'} {...props} />\n {error && (\n <Tooltip.Trigger asChild content={error.message}>\n <div className='absolute inset-0' />\n </Tooltip.Trigger>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, {\n type CSSProperties,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\n\nimport { PublicKey } from '@dxos/keys';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { MarkdownStream, type MarkdownStreamController, type MarkdownStreamProps } from '@dxos/react-ui-components';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\nimport { keyToFallback } from '@dxos/util';\n\nimport { type ChatEvent } from '../Chat';\n\nimport { blockToMarkdown, componentRegistry } from './registry';\nimport { MessageSyncer } from './sync';\n\nexport type ChatThreadController = Pick<MarkdownStreamController, 'setContext' | 'scrollToBottom'>;\n\nexport type ChatThreadProps = ThemedClassName<\n {\n identity?: Identity;\n messages?: DataType.Message[];\n error?: Error;\n onEvent?: (event: ChatEvent) => void;\n } & Pick<MarkdownStreamProps, 'cursor' | 'fadeIn'>\n>;\n\nexport const ChatThread = forwardRef<ChatThreadController | null, ChatThreadProps>(\n ({ classNames, identity, messages = [], error, cursor = false, fadeIn = true, onEvent }, forwardedRef) => {\n const userHue = useMemo(() => {\n return identity?.profile?.data?.hue || keyToFallback(identity?.identityKey ?? PublicKey.random()).hue;\n }, [identity]);\n\n // Expose controller.\n const [controller, setController] = useState<MarkdownStreamController | null>(null);\n useImperativeHandle(forwardedRef, () => (controller ? controller : (null as any)), [controller]);\n\n // Show error.\n useEffect(() => {\n controller?.scrollToBottom();\n }, [controller, error]);\n\n // Update document.\n const syncer = useMemo(() => controller && new MessageSyncer(controller, blockToMarkdown), [controller]);\n useEffect(() => {\n syncer?.sync(messages);\n }, [syncer, messages]);\n\n // Event handler.\n const handleEvent = useCallback<NonNullable<MarkdownStreamProps['onEvent']>>(\n (ev) => {\n switch (ev.type) {\n case 'submit': {\n ev.value &&\n onEvent?.({\n type: 'submit',\n text: ev.value,\n });\n break;\n }\n }\n },\n [onEvent],\n );\n\n return (\n <div\n className={mx('flex bs-full is-full justify-center overflow-hidden', classNames)}\n style={{ '--user-fill': `var(--dx-${userHue}Fill)` } as CSSProperties}\n >\n <MarkdownStream\n ref={setController}\n classNames='bs-full max-is-prose overflow-hidden'\n registry={componentRegistry}\n cursor={cursor}\n fadeIn={fadeIn}\n onEvent={handleEvent}\n />\n </div>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { log } from '@dxos/log';\nimport {\n PromptWidget,\n ReferenceWidget,\n SelectWidget,\n SuggestionWidget,\n SummaryWidget,\n ToggleContainer,\n} from '@dxos/react-ui-components';\nimport { type XmlWidgetProps, type XmlWidgetRegistry } from '@dxos/react-ui-editor';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { ContentBlock, type DataType } from '@dxos/schema';\n\nimport { ToolBlock } from '../ToolBlock';\n\nimport { type BlockRenderer, type MessageThreadContext } from './sync';\n\nconst Fallback = ({ _tag, ...props }: XmlWidgetProps<MessageThreadContext>) => {\n return (\n <ToggleContainer.Root classNames='rounded-sm'>\n <ToggleContainer.Header classNames='bg-groupSurface'>{_tag}</ToggleContainer.Header>\n <ToggleContainer.Content classNames='bg-modalSurface'>\n <Json classNames='!p-2 text-sm' data={props} />\n </ToggleContainer.Content>\n </ToggleContainer.Root>\n );\n};\n\nconst getTextChild = (children: any[]): string | null => {\n const child = children?.[0];\n return typeof child === 'string' ? child : null;\n};\n\n/**\n * Custom XML tags registry.\n */\nexport const componentRegistry: XmlWidgetRegistry = {\n //\n // Widgets\n //\n\n ['prompt' as const]: {\n block: true,\n factory: (props) => {\n const text = getTextChild(props.children);\n return text ? new PromptWidget(text) : null;\n },\n },\n ['reference' as const]: {\n block: false,\n factory: (props) => {\n const text = getTextChild(props.children);\n return text && props.ref ? new ReferenceWidget(text, props.ref) : null;\n },\n },\n ['select' as const]: {\n block: true,\n factory: (props) => {\n const options = props.children\n ?.map((option: any) => option._tag === 'option' && getTextChild(option.children))\n .filter(Boolean);\n return options?.length ? new SelectWidget(options) : null;\n },\n },\n ['suggestion' as const]: {\n block: true,\n factory: (props) => {\n const text = getTextChild(props.children);\n return text ? new SuggestionWidget(text) : null;\n },\n },\n ['summary' as const]: {\n block: true,\n factory: (props) => {\n const text = getTextChild(props.children);\n return text ? new SummaryWidget(text) : null;\n },\n },\n\n //\n // React\n //\n\n ['toolCall' as const]: {\n block: true,\n Component: ToolBlock,\n },\n ['toolResult' as const]: {\n block: true,\n Component: Fallback,\n },\n ['toolkit' as const]: {\n block: true,\n Component: Fallback,\n },\n\n //\n // Fallback\n //\n\n ['json' as const]: {\n block: true,\n Component: Fallback,\n },\n};\n\n/**\n * Convert block to markdown.\n */\nexport const blockToMarkdown: BlockRenderer = (\n context: MessageThreadContext,\n message: DataType.Message,\n block: ContentBlock.Any,\n) => {\n let str = _blockToMarkdown(context, message, block);\n if (str && !block.pending) {\n return (str += '\\n');\n }\n\n return str;\n};\n\nconst _blockToMarkdown = (context: MessageThreadContext, message: DataType.Message, block: ContentBlock.Any) => {\n log('blockToMarkdown', { block: JSON.stringify(block) });\n switch (block._tag) {\n case 'text': {\n if (message.sender.role === 'user') {\n return `\\n<prompt>${block.text}</prompt>\\n`;\n } else {\n const text = block.text.trim();\n if (text.length > 0) {\n return text;\n }\n }\n break;\n }\n\n case 'suggestion': {\n if (block.pending) {\n return;\n }\n return `<suggestion>${block.text}</suggestion>`;\n }\n case 'select': {\n if (block.pending || block.options.length === 0) {\n return;\n }\n\n return `<select>${block.options.map((option) => `<option>${option}</option>`).join('')}</select>`;\n }\n\n // TODO(burdon): Need label.\n case 'reference': {\n return `<reference ref=\"${block.reference.dxn.toString()}\">Ref</reference>`;\n }\n\n // case 'toolkit': {\n // return `<toolkit />`;\n // }\n\n case 'toolCall': {\n context.updateWidget(block.toolCallId, {\n blocks: [block],\n });\n return `<toolCall id=\"${block.toolCallId}\" />`;\n }\n case 'toolResult': {\n context.updateWidget(block.toolCallId, ({ blocks = [] }: { blocks: ContentBlock.Any[] }) => ({\n blocks: [...blocks, block],\n }));\n break;\n }\n\n case 'summary': {\n return `<summary>${ContentBlock.createSummaryMessage(block)}</summary>`;\n }\n\n // TODO(burdon): Need stable ID.\n default: {\n return `<json id=\"${message.id}\">\\n${JSON.stringify(block)}\\n</json>`;\n }\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type AiTool } from '@effect/ai';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { type AgentStatus } from '@dxos/ai';\nimport { useTranslation } from '@dxos/react-ui';\nimport {\n NumericTabs,\n TextCrawl,\n ToggleContainer,\n chatMessageJson,\n chatMessagePanel,\n chatMessagePanelContent,\n chatMessagePanelHeader,\n} from '@dxos/react-ui-components';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { type ContentBlock, type DataType } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\nimport { safeParseJson } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nexport const isToolMessage = (message: DataType.Message) => {\n return message.blocks.some((block) => block._tag === 'toolCall' || block._tag === 'toolResult');\n};\n\nexport type ToolBlockProps = {\n blocks: ContentBlock.Any[];\n};\n\nexport const ToolBlock = ({ blocks = [] }: ToolBlockProps) => {\n const { t } = useTranslation(meta.id);\n\n const getToolCaption = (tool?: AiTool.Any, status?: AgentStatus) => {\n if (!tool) {\n return t('calling tool label');\n }\n\n return status?.message ?? tool.description ?? [t('calling label'), tool.name].join(' ');\n };\n\n const items = useMemo(() => {\n let lastToolCall: { tool: AiTool.Any | undefined; block: ContentBlock.ToolCall } | undefined;\n // TODO(burdon): Get from context?\n const tools: AiTool.Any[] = []; //processor.conversation.toolkit?.tools ?? [];\n return blocks\n .filter((block) => block._tag === 'toolCall' || block._tag === 'toolResult' || block._tag === 'summary')\n .map((block) => {\n switch (block._tag) {\n case 'toolCall': {\n if (block.pending && lastToolCall?.block.toolCallId === block.toolCallId) {\n return null;\n }\n\n const tool = tools.find((tool) => tool.name === block.name);\n lastToolCall = { tool, block };\n return {\n title: getToolCaption(lastToolCall?.tool),\n content: {\n ...block,\n input: safeParseJson(block.input),\n },\n };\n }\n\n case 'toolResult': {\n // TODO(burdon): Parse error type.\n if (block.error) {\n return {\n title: t('error label'),\n content: block,\n };\n }\n\n const title = getToolCaption(lastToolCall?.tool ?? t('tool result label'));\n lastToolCall = undefined;\n return {\n title,\n content: {\n ...block,\n result: safeParseJson(block.result),\n },\n };\n }\n\n case 'summary': {\n if (!lastToolCall) {\n return null;\n }\n\n return {\n title: t('summary label'),\n content: block,\n };\n }\n }\n })\n .filter(isNonNullable);\n }, [blocks]);\n\n if (!items.length) {\n return null;\n }\n\n return <ToolContainer items={items} />;\n};\n\nToolBlock.displayName = 'ToolBlock';\n\ntype ToolContainerParams = {\n items: { title: string; content: any }[];\n};\n\nexport const ToolContainer = ({ items }: ToolContainerParams) => {\n const tabsRef = useRef<HTMLDivElement>(null);\n const [selected, setSelected] = useState(0);\n const [open, setOpen] = useState(false);\n useEffect(() => {\n if (open) {\n tabsRef.current?.focus();\n }\n }, [open]);\n\n const handleSelect = (index: number) => {\n setSelected(index);\n };\n\n const data = items[selected]?.content;\n\n return (\n <ToggleContainer.Root classNames={chatMessagePanel} open={open} onChangeOpen={setOpen}>\n <ToggleContainer.Header classNames={chatMessagePanelHeader}>\n <TextCrawl key='status-roll' lines={items.map((item) => item.title)} />\n </ToggleContainer.Header>\n <ToggleContainer.Content classNames={['grid grid-cols-[32px_1fr]', chatMessagePanelContent]}>\n <NumericTabs ref={tabsRef} classNames='p-1' length={items.length} selected={selected} onSelect={handleSelect} />\n <Json\n data={data}\n classNames={chatMessageJson}\n replacer={{\n maxDepth: 3,\n maxArrayLen: 10,\n maxStringLen: 128,\n }}\n />\n </ToggleContainer.Content>\n </ToggleContainer.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { log } from '@dxos/log';\nimport { type MarkdownStreamController } from '@dxos/react-ui-components';\nimport { type XmlWidgetStateManager } from '@dxos/react-ui-editor';\nimport { type ContentBlock, type DataType } from '@dxos/schema';\n\n/**\n * Update document.\n */\nexport type TextModel = Pick<MarkdownStreamController, 'reset' | 'append' | 'updateWidget'>;\n\n/**\n * Thread context passed to renderer.\n */\nexport class MessageThreadContext implements Pick<MarkdownStreamController, 'updateWidget'> {\n constructor(private readonly _widgetState?: XmlWidgetStateManager) {}\n\n updateWidget<T>(id: string, value: T) {\n this._widgetState?.updateWidget(id, value);\n }\n}\n\n/**\n * Renders a block to markdown.\n */\nexport type BlockRenderer = (\n context: MessageThreadContext,\n message: DataType.Message,\n block: ContentBlock.Any,\n) => string | undefined;\n\n/**\n * Syncs messages with the editor.\n */\nexport class MessageSyncer {\n private _initialMessageId?: string;\n private _currentMessageIndex = 0;\n private _currentBlockIndex = 0;\n private _currentBlockContent?: string;\n\n private readonly _context: MessageThreadContext;\n\n constructor(\n private readonly _model: TextModel,\n private readonly _blockRenderer: BlockRenderer,\n ) {\n this._context = new MessageThreadContext(this._model);\n }\n\n get context() {\n return this._context;\n }\n\n reset() {\n log('reset');\n this._initialMessageId = undefined;\n this._currentMessageIndex = 0;\n this._currentBlockIndex = 0;\n this._currentBlockContent = undefined;\n void this._model.reset('');\n }\n\n sync(messages: DataType.Message[]) {\n log('sync', {\n messages: messages.map((m) => m.blocks.length),\n currentMessageIndex: this._currentMessageIndex,\n currentBlockIndex: this._currentBlockIndex,\n currentBlockContent: this._currentBlockContent,\n });\n if (this._initialMessageId !== messages[0]?.id) {\n this.reset();\n this._initialMessageId = messages[0]?.id;\n }\n\n let i = this._currentMessageIndex;\n for (const message of messages.slice(this._currentMessageIndex)) {\n if (i > this._currentMessageIndex) {\n this._currentBlockIndex = 0;\n }\n\n this._currentMessageIndex = i;\n let j = this._currentBlockIndex;\n for (const block of message.blocks.slice(this._currentBlockIndex)) {\n this._currentBlockIndex = j;\n const currentBlockContent = this._blockRenderer(this._context, message, block);\n if (currentBlockContent) {\n let content: string = '';\n if (this._currentBlockContent && currentBlockContent.startsWith(this._currentBlockContent)) {\n content = currentBlockContent.slice(this._currentBlockContent.length);\n } else {\n content = currentBlockContent;\n }\n\n void this._model.append(content);\n this._currentBlockContent = currentBlockContent;\n log('append', { message: i, block: j, content });\n }\n\n if (block.pending) {\n return;\n } else {\n this._currentBlockContent = undefined;\n this._currentBlockIndex++;\n }\n j++;\n }\n i++;\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["useSignalEffect", "useCallback", "useMemo", "useState", "Capabilities", "useCapabilities", "Blueprint", "Filter", "Obj", "Ref", "isNonNullable", "useBlueprintRegistry", "blueprints", "useCapabilities", "Capabilities", "BlueprintDefinition", "useMemo", "Blueprint", "Registry", "useBlueprints", "blueprintRegistry", "query", "useActiveBlueprints", "context", "active", "setActive", "useState", "Map", "useSignalEffect", "refs", "value", "map", "ref", "target", "filter", "isNonNullable", "blueprint", "key", "useBlueprintHandlers", "space", "onUpdateBlueprint", "useCallback", "checked", "objects", "db", "Filter", "type", "run", "storedBlueprint", "find", "getByKey", "add", "Obj", "clone", "bind", "Ref", "make", "unbind", "RegistryContext", "useContext", "useMemo", "AiConversation", "log", "Schema", "ModelProviders", "ModelProvider", "Schema", "Literal", "createModelLabel", "model", "parts", "split", "length", "AiServicePresets", "provider", "map", "i", "id", "label", "Registry", "Rx", "Cause", "Effect", "Exit", "Fiber", "Option", "Runtime", "AiService", "DEFAULT_EDGE_MODEL", "AiSession", "ArtifactDiffResolver", "GenerationObserver", "createSystemPrompt", "Obj", "throwCause", "log", "DataType", "trim", "defaultOptions", "model", "AiChatProcessor", "context", "_conversation", "conversation", "blueprintRegistry", "_options", "request", "requestParam", "_fiber", "cancel", "_lastRequest", "_rx", "set", "error", "none", "active", "createRequest", "system", "prompt", "message", "observer", "_observer", "runtime", "_services", "pipe", "provide", "provideService", "_artifactDiffResolver", "asVoid", "tapErrorCause", "cause", "void", "runFork", "response", "join", "runPromiseExit", "isSuccess", "isInterruptedOnly", "undefined", "err", "some", "Error", "runPromise", "gen", "interrupt", "retry", "updateName", "chat", "history", "getHistory", "fiber", "session", "run", "tap", "messages", "find", "sender", "role", "title", "blocks", "b", "_tag", "text", "name", "_pending", "_streaming", "streaming", "_onMessage", "_onBlock", "make", "get", "isSome", "match", "onNone", "onSome", "resolve", "_artifacts", "versions", "Map", "fn", "update", "pending", "bind", "block", "map", "filter", "getOrElse", "Message", "created", "Date", "toISOString", "observableRegistry", "onBlock", "onMessage", "capabilities", "modelRegistry", "getCapabilities", "useChatProcessor", "chat", "preset", "services", "blueprintRegistry", "settings", "observableRegistry", "useContext", "RegistryContext", "conversation", "useMemo", "queue", "target", "AiConversation", "processor", "undefined", "log", "model", "AiChatProcessor", "Effect", "useMemo", "useCapability", "TracingService", "useClient", "lazy", "AiService", "lazy", "AppGraphBuilder", "AssistantState", "BlueprintDefinition", "EdgeModelResolver", "IntentResolver", "LocalModelResolver", "ReactSurface", "Settings", "Toolkit", "ComputeRuntime", "useChatServices", "space", "chat", "client", "useClient", "spaces", "default", "computeRuntimeResolver", "useCapability", "AssistantCapabilities", "ComputeRuntime", "useMemo", "runtime", "getRuntime", "id", "runPromise", "Effect", "gen", "pipe", "provide", "traceQueue", "target", "TracingService", "layerQueue", "layerNoop", "useMemo", "AiContextBinder", "useContextBinder", "chat", "binder", "useMemo", "queue", "target", "AiContextBinder", "useState", "useOnline", "online", "setOnline", "useState", "useCallback", "useEffect", "useMemo", "useState", "usePresets", "online", "preset", "setPreset", "useState", "presets", "useMemo", "AiServicePresets", "filter", "provider", "presetOptions", "map", "id", "model", "label", "useEffect", "handlePresetChange", "useCallback", "find", "onPresetChange", "useCallback", "Ref", "log", "isNonNullable", "useContextObjects", "space", "context", "objects", "value", "map", "ref", "target", "filter", "handleUpdateObject", "dxn", "checked", "id", "asEchoDXN", "object", "db", "getObjectById", "echoId", "warn", "fromDXN", "bind", "unbind", "onUpdateObject", "useMemo", "Obj", "useQueue", "AgentStatus", "Obj", "MESSAGE_PROPERTY_TOOL_CALL_ID", "LogLevel", "ContentBlock", "DataType", "isNotFalsy", "ExecutionGraph", "addEvents", "events", "event", "Obj", "instanceOf", "DataType", "Message", "messageCommits", "messageToCommit", "_commits", "push", "map", "c", "branch", "forEach", "_branchNames", "add", "AgentStatus", "getBranchName", "parentMessage", "toolCallId", "id", "message", "icon", "parents", "getToolCallId", "undefined", "getGraph", "lastRequest", "idx", "findLastIndex", "tags", "includes", "commits", "slice", "branches", "Array", "from", "_define_property", "Set", "blocks", "block", "getMessageBranch", "parent", "getParentId", "_tag", "text", "trim", "length", "getGenericBlockId", "sender", "role", "split", "level", "LogLevel", "INFO", "name", "getToolResultId", "error", "ERROR", "ContentBlock", "createSummaryMessage", "statusText", "reasoningText", "stringifyRef", "reference", "filter", "isNotFalsy", "messageId", "options", "properties", "MESSAGE_PROPERTY_TOOL_CALL_ID", "ref", "target", "stringifyObject", "dxn", "asEchoDXN", "echoId", "asQueueDXN", "objectId", "obj", "getLabel", "getTypename", "useExecutionGraph", "queueRef", "lastRequest", "queue", "useQueue", "dxn", "useMemo", "graph", "ExecutionGraph", "addEvents", "objects", "filter", "Obj", "isObject", "getGraph", "useCallback", "useRef", "useState", "Option", "useEffect", "useState", "ItemAnnotation", "useItemTypes", "space", "types", "setTypes", "useState", "useEffect", "db", "schemaRegistry", "query", "subscribe", "Array", "from", "Set", "graph", "schemas", "results", "filter", "type", "Option", "isSome", "ItemAnnotation", "get", "fire", "useMemo", "Capabilities", "useCapabilities", "Filter", "Obj", "useReferencesProvider", "space", "blueprints", "useCapabilities", "Capabilities", "BlueprintDefinition", "useMemo", "undefined", "getReferences", "query", "objects", "db", "Filter", "everything", "run", "filter", "object", "stringMatch", "Obj", "getLabel", "getDXN", "map", "uri", "toString", "label", "resolveReference", "ids", "first", "toLowerCase", "startsWith", "useCallback", "useCapability", "Prec", "keymap", "useRxValue", "createContext", "Array", "Option", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Event", "Obj", "useVoiceInput", "getSpace", "useQueue", "useIdentity", "Input", "useDynamicRef", "useTranslation", "ChatEditor", "references", "mx", "DataType", "isNotFalsy", "React", "IconButton", "useTranslation", "mx", "ChatActions", "classNames", "children", "microphone", "recording", "processing", "onEvent", "t", "useTranslation", "meta", "id", "div", "className", "mx", "IconButton", "disabled", "variant", "size", "icon", "iconOnly", "label", "onClick", "type", "noTooltip", "onMouseDown", "onMouseUp", "onTouchStart", "onTouchEnd", "React", "useMemo", "useState", "Filter", "Obj", "Type", "useQuery", "Icon", "IconButton", "Popover", "Select", "useTranslation", "SearchList", "Tabs", "panelClassNames", "ChatOptions", "space", "context", "blueprintRegistry", "presets", "preset", "onPresetChange", "t", "useTranslation", "meta", "id", "React", "div", "role", "className", "Popover", "Root", "Trigger", "asChild", "IconButton", "variant", "icon", "iconOnly", "size", "label", "Portal", "Content", "side", "classNames", "ObjectsPanel", "Arrow", "Tabs", "orientation", "defaultValue", "defaultActivePart", "Viewport", "Tabpanel", "value", "BlueprintsPanel", "ModelsPanel", "Tablist", "IconTab", "blueprints", "useBlueprints", "activeBlueprints", "useActiveBlueprints", "onUpdateBlueprint", "useBlueprintHandlers", "SearchList", "map", "blueprint", "isActive", "has", "key", "Item", "name", "onSelect", "Icon", "Input", "placeholder", "ul", "li", "aria-selected", "tabIndex", "onClick", "ANY", "types", "useItemTypes", "typenames", "useMemo", "type", "typename", "Type", "getTypename", "ns", "sort", "a", "b", "localeCompare", "setTypename", "useState", "anyFilter", "Filter", "or", "objects", "useQuery", "contextObjects", "onUpdateObject", "useContextObjects", "length", "object", "Obj", "getLabel", "findIndex", "obj", "getDXN", "Select", "undefined", "onValueChange", "TriggerButton", "density", "ScrollUpButton", "Option", "ScrollDownButton", "React", "Select", "React", "Obj", "IconButton", "toLocalizedString", "useTranslation", "mx", "ChatReferences", "classNames", "context", "space", "t", "useTranslation", "meta", "id", "objects", "onUpdateObject", "useContextObjects", "React", "ul", "className", "mx", "map", "obj", "dxn", "Obj", "getDXN", "typename", "getTypename", "label", "getLabel", "ns", "li", "key", "toString", "data-hue", "toLocalizedString", "IconButton", "iconOnly", "variant", "size", "icon", "onClick", "React", "useEffect", "useState", "Tooltip", "useTimeout", "Spinner", "mx", "period", "ChatStatusIndicator", "classNames", "preset", "processing", "error", "props", "init", "setInit", "useState", "useEffect", "useTimeout", "React", "div", "role", "className", "mx", "Spinner", "duration", "state", "Tooltip", "Trigger", "asChild", "content", "message", "React", "forwardRef", "useCallback", "useEffect", "useImperativeHandle", "useMemo", "useState", "PublicKey", "MarkdownStream", "mx", "keyToFallback", "React", "log", "PromptWidget", "ReferenceWidget", "SelectWidget", "SuggestionWidget", "SummaryWidget", "ToggleContainer", "Json", "ContentBlock", "React", "useEffect", "useMemo", "useRef", "useState", "useTranslation", "NumericTabs", "TextCrawl", "ToggleContainer", "chatMessageJson", "chatMessagePanel", "chatMessagePanelContent", "chatMessagePanelHeader", "Json", "isNonNullable", "safeParseJson", "ToolBlock", "blocks", "t", "useTranslation", "meta", "id", "getToolCaption", "tool", "status", "message", "description", "name", "join", "items", "useMemo", "lastToolCall", "tools", "filter", "block", "_tag", "map", "pending", "toolCallId", "find", "title", "content", "input", "safeParseJson", "error", "undefined", "result", "isNonNullable", "length", "React", "ToolContainer", "displayName", "tabsRef", "useRef", "selected", "setSelected", "useState", "open", "setOpen", "useEffect", "current", "focus", "handleSelect", "index", "data", "ToggleContainer", "Root", "classNames", "chatMessagePanel", "onChangeOpen", "Header", "chatMessagePanelHeader", "TextCrawl", "key", "lines", "item", "Content", "chatMessagePanelContent", "NumericTabs", "ref", "onSelect", "Json", "chatMessageJson", "replacer", "maxDepth", "maxArrayLen", "maxStringLen", "Fallback", "_tag", "props", "React", "ToggleContainer", "Root", "classNames", "Header", "Content", "Json", "data", "getTextChild", "children", "child", "componentRegistry", "block", "factory", "text", "PromptWidget", "ref", "ReferenceWidget", "options", "map", "option", "filter", "Boolean", "length", "SelectWidget", "SuggestionWidget", "SummaryWidget", "Component", "ToolBlock", "blockToMarkdown", "context", "message", "str", "_blockToMarkdown", "pending", "log", "JSON", "stringify", "sender", "role", "trim", "join", "reference", "dxn", "toString", "updateWidget", "toolCallId", "blocks", "ContentBlock", "createSummaryMessage", "id", "log", "MessageThreadContext", "updateWidget", "id", "value", "_widgetState", "MessageSyncer", "context", "_context", "reset", "_initialMessageId", "undefined", "_currentMessageIndex", "_currentBlockIndex", "_currentBlockContent", "_model", "sync", "messages", "map", "m", "blocks", "length", "currentMessageIndex", "currentBlockIndex", "currentBlockContent", "i", "message", "slice", "j", "block", "_blockRenderer", "content", "startsWith", "append", "pending", "_define_property", "ChatThread", "forwardRef", "classNames", "identity", "messages", "error", "cursor", "fadeIn", "onEvent", "forwardedRef", "userHue", "useMemo", "profile", "data", "hue", "keyToFallback", "identityKey", "PublicKey", "random", "controller", "setController", "useState", "useImperativeHandle", "useEffect", "scrollToBottom", "syncer", "MessageSyncer", "blockToMarkdown", "sync", "handleEvent", "useCallback", "ev", "type", "value", "text", "React", "div", "className", "mx", "style", "MarkdownStream", "ref", "registry", "componentRegistry", "ChatContextProvider", "useChatContext", "createContext", "ChatRoot", "classNames", "children", "chat", "processor", "onEvent", "props", "debug", "setDebug", "useState", "space", "getSpace", "queue", "useQueue", "dxn", "pending", "useRxValue", "messages", "streaming", "lastPrompt", "useRef", "undefined", "useMemo", "queueMessages", "objects", "filter", "Obj", "instanceOf", "DataType", "Message", "Array", "dedupeWith", "a", "b", "id", "event", "Event", "useEffect", "on", "ev", "type", "current", "text", "trim", "length", "request", "message", "retry", "cancel", "emit", "React", "div", "role", "className", "mx", "displayName", "ChatPrompt", "outline", "placeholder", "expandable", "online", "presets", "preset", "onPresetChange", "onOnlineChange", "t", "useTranslation", "meta", "error", "pipe", "Option", "getOrUndefined", "active", "activeRef", "useDynamicRef", "editorRef", "recordingState", "setRecordingState", "getText", "setText", "focus", "recording", "useVoiceInput", "onUpdate", "referencesProvider", "useReferencesProvider", "extensions", "references", "provider", "Prec", "highest", "keymap", "of", "key", "preventDefault", "run", "isNotFalsy", "handleSubmit", "useCallback", "handleEvent", "ChatStatusIndicator", "processing", "ChatEditor", "ref", "autoFocus", "lineWrapping", "onSubmit", "ChatOptions", "blueprintRegistry", "context", "ChatReferences", "ChatActions", "microphone", "Input", "Root", "Switch", "checked", "onCheckedChange", "ChatThread", "identity", "useIdentity", "scrollerRef", "scrollToBottom", "NaturalChatThread", "Chat", "Prompt", "Thread"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/capabilities.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Layer, type ManagedRuntime } from 'effect';\n\nimport { type AiService, type AiServiceRouter, type ToolExecutionService, type ToolResolverService } from '@dxos/ai';\nimport { defineCapability } from '@dxos/app-framework';\nimport type {\n CredentialsService,\n DatabaseService,\n FunctionImplementationResolver,\n InvocationTracer,\n LocalFunctionExecutionService,\n QueueService,\n RemoteFunctionExecutionService,\n TriggerDispatcher,\n TriggerStateStore,\n} from '@dxos/functions';\nimport type { SpaceId } from '@dxos/keys';\nimport { type DeepReadonly } from '@dxos/util';\n\nimport { meta } from '../meta';\nimport { type Assistant } from '../types';\n\nexport namespace AssistantCapabilities {\n export type AssistantState = {\n /** Map of primary object fq id to current chat. */\n currentChat: Record<string, Assistant.Chat>;\n };\n export const State = defineCapability<DeepReadonly<AssistantState>>(`${meta.id}/capability/state`);\n export const MutableState = defineCapability<AssistantState>(`${meta.id}/capability/state`);\n\n export type AiServiceLayer = Layer.Layer<AiService.AiService>;\n export const AiServiceLayer = defineCapability<AiServiceLayer>(`${meta.id}/capability/ai-service-factory`);\n\n /**\n * Plugins can contribute them to provide model resolvers.\n */\n export const AiModelResolver = defineCapability<Layer.Layer<AiServiceRouter.AiModelResolver>>(\n `${meta.id}/capability/ai-model-resolver`,\n );\n\n /**\n * Service stack for executing agents, functions, and triggers.\n */\n export type ComputeServices =\n | TriggerDispatcher\n | AiService.AiService\n | DatabaseService\n | QueueService\n | CredentialsService\n | LocalFunctionExecutionService\n | RemoteFunctionExecutionService\n // TODO(dmaretskyi): This service is private and shouldn't be exposed as a part of public API.\n | FunctionImplementationResolver\n | InvocationTracer\n | TriggerStateStore\n // TODO(dmaretskyi): Those should be provided at AI-chat call site.\n | ToolResolverService\n | ToolExecutionService;\n\n export interface ComputeRuntimeProvider {\n getRuntime(spaceId: SpaceId): ManagedRuntime.ManagedRuntime<ComputeServices, never>;\n }\n\n /**\n * Runtime for executing agents, functions, and triggers.\n */\n export const ComputeRuntime = defineCapability<ComputeRuntimeProvider>(`${meta.id}/capability/compute-runtime`);\n}\n"],
|
|
5
|
-
"mappings": ";;;;;AAOA,SAASA,wBAAwB;UAkBhBC,wBAAAA;yBAKFC,QAAQC,iBAA+C,GAAGC,KAAKC,EAAE,mBAAmB;yBACpFC,eAAeH,iBAAiC,GAAGC,KAAKC,EAAE,mBAAmB;yBAG7EE,iBAAiBJ,iBAAiC,GAAGC,KAAKC,EAAE,gCAAgC;yBAK5FG,kBAAkBL,iBAC7B,GAAGC,KAAKC,EAAE,+BAA+B;yBA6B9BI,iBAAiBN,iBAAyC,GAAGC,KAAKC,EAAE,6BAA6B;AAChH,GA7CiBJ,0BAAAA,wBAAAA,CAAAA,EAAAA;;",
|
|
6
|
-
"names": ["defineCapability", "AssistantCapabilities", "State", "defineCapability", "meta", "id", "MutableState", "AiServiceLayer", "AiModelResolver", "ComputeRuntime"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/blueprint-definition.ts", "../../../src/functions/analysis.ts", "../../../src/functions/list.ts", "../../../src/functions/load.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, type Capability, contributes } from '@dxos/app-framework';\nimport { templates } from '@dxos/assistant';\nimport {\n DISCORD_BLUEPRINT,\n LINEAR_BLUEPRINT,\n RESEARCH_BLUEPRINT,\n fetchDiscordMessages,\n research,\n syncLinearIssues,\n} from '@dxos/assistant-testing';\nimport { Blueprint } from '@dxos/blueprints';\nimport { type FunctionDefinition } from '@dxos/functions';\n\nimport { analysis, list, load } from '../functions';\n\nconst functions: FunctionDefinition[] = [analysis, list, load];\nconst tools = [\n 'add-to-context',\n // TODO(wittjosiah): Factor out to an ECHO blueprint.\n 'get-schemas',\n 'add-schema',\n 'create-record',\n // TODO(wittjosiah): Factor out to a generic app-framework blueprint.\n 'open-item',\n // TODO(burdon): Anthropic only.\n // https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/text-editor-tool#example-str-replace-command\n // AI_TOOL_NOT_FOUND: str_replace_based_edit_tool\n // 'str_replace_based_edit_tool',\n];\n\nexport const BLUEPRINT_KEY = 'dxos.org/blueprint/assistant';\n\nexport const createBlueprint = (): Blueprint.Blueprint =>\n Blueprint.make({\n key: BLUEPRINT_KEY,\n name: 'Assistant',\n tools: Blueprint.toolDefinitions({ functions, tools }),\n instructions: templates.system,\n });\n\nconst blueprint = createBlueprint();\n\n// TODO(dmaretskyi): Consider splitting into multiple modules.\nexport default (): Capability<any>[] => [\n contributes(Capabilities.Functions, functions),\n contributes(Capabilities.Functions, [research]),\n contributes(Capabilities.BlueprintDefinition, blueprint),\n contributes(Capabilities.BlueprintDefinition, RESEARCH_BLUEPRINT),\n // TODO(burdon): Move out of assistant.\n contributes(Capabilities.Functions, [syncLinearIssues]),\n contributes(Capabilities.Functions, [fetchDiscordMessages]),\n contributes(Capabilities.BlueprintDefinition, LINEAR_BLUEPRINT),\n contributes(Capabilities.BlueprintDefinition, DISCORD_BLUEPRINT),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect, Schema } from 'effect';\n\nimport { defineFunction } from '@dxos/functions';\nimport { log } from '@dxos/log';\n\nexport default defineFunction({\n name: 'dxos.org/function/assistant-analysis',\n description: 'Enter analysis analysis mode.',\n inputSchema: Schema.Struct({\n enable: Schema.Boolean.annotations({ description: 'Enable or disable analysis mode.' }),\n }),\n outputSchema: Schema.Void,\n handler: Effect.fn(function* ({ context, data: { enable } }) {\n log.info('analysis mode', { space: context.space?.id, enable });\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect, Schema } from 'effect';\n\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\n// TODO(burdon): Factor out to space plugin.\nexport default defineFunction({\n name: 'dxos.org/function/assistant/list',\n description:\n // TODO(wittjosiah): Find a better way to prompt for looking up typenames before querying with them.\n trim`\n Lists the objects of the given type.\n Check the list-schemas tool for available types before calling this function.\n `,\n inputSchema: Schema.Struct({\n typename: Schema.String.annotations({\n description: 'The typename of the objects to list.',\n }),\n }),\n outputSchema: Schema.Struct({\n results: Schema.Array(\n Schema.Struct({\n dxn: Schema.String.annotations({ description: 'The DXN of the object.' }),\n label: Schema.optional(Schema.String.annotations({ description: 'The label of the object.' })),\n }),\n ),\n }),\n handler: Effect.fn(function* ({ data: { typename } }) {\n // TODO(wittjosiah): Typename query is not working for dynamic schemas.\n const [schema] = yield* DatabaseService.runSchemaQuery({ typename });\n const filter = schema ? Filter.type(schema) : Filter.typename(typename);\n\n const { objects } = yield* DatabaseService.runQuery(Query.select(filter));\n const results = objects.map((object) => ({\n dxn: Obj.getDXN(object).toString(),\n label: Obj.getLabel(object),\n }));\n\n return { results };\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect, Option, Schema, pipe } from 'effect';\n\nimport { ArtifactId } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\n\n// TODO(burdon): Common error handling.\n// TODO(burdon): Factor out to space plugin.\nexport default defineFunction({\n name: 'dxos.org/function/assistant/load',\n description: 'Loads the object.',\n inputSchema: Schema.Struct({\n id: ArtifactId.annotations({\n description: 'The ID of the object.',\n }),\n typename: Schema.String.annotations({\n description: 'The typename of the object.',\n }),\n }),\n outputSchema: Schema.Struct({\n // TODO(wittjosiah): Type.Obj.Any | Type.Relation.Any\n object: Schema.Any,\n }),\n handler: Effect.fn(function* ({ data: { id, typename } }) {\n const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id));\n return yield* pipe(\n Option.fromNullable(object),\n Option.flatMap((object) => (Obj.getTypename(object) === typename ? Option.some(object) : Option.none())),\n Option.match({\n onNone: () => Effect.fail('Object not found.'),\n onSome: (object) => {\n // log.info('object', { object });\n return Effect.succeed({ object });\n },\n }),\n );\n }),\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Capabilities", "contributes", "templates", "DISCORD_BLUEPRINT", "LINEAR_BLUEPRINT", "RESEARCH_BLUEPRINT", "fetchDiscordMessages", "research", "syncLinearIssues", "Blueprint", "Effect", "Schema", "defineFunction", "log", "name", "description", "inputSchema", "Struct", "enable", "Boolean", "annotations", "outputSchema", "Void", "handler", "fn", "context", "data", "info", "space", "id", "Effect", "Schema", "Filter", "Obj", "Query", "DatabaseService", "defineFunction", "trim", "defineFunction", "name", "description", "trim", "inputSchema", "Schema", "Struct", "typename", "String", "annotations", "outputSchema", "results", "Array", "dxn", "label", "optional", "handler", "Effect", "fn", "data", "schema", "DatabaseService", "runSchemaQuery", "filter", "Filter", "type", "objects", "runQuery", "Query", "select", "map", "object", "Obj", "getDXN", "toString", "getLabel", "Effect", "Option", "Schema", "pipe", "ArtifactId", "Obj", "DatabaseService", "defineFunction", "defineFunction", "name", "description", "inputSchema", "Schema", "Struct", "id", "ArtifactId", "annotations", "typename", "String", "outputSchema", "object", "Any", "handler", "Effect", "fn", "data", "DatabaseService", "resolve", "toDXN", "pipe", "Option", "fromNullable", "flatMap", "Obj", "getTypename", "some", "none", "match", "onNone", "fail", "onSome", "succeed", "functions", "analysis", "list", "load", "tools", "BLUEPRINT_KEY", "createBlueprint", "Blueprint", "make", "key", "name", "toolDefinitions", "instructions", "templates", "system", "blueprint", "contributes", "Capabilities", "Functions", "research", "BlueprintDefinition", "RESEARCH_BLUEPRINT", "syncLinearIssues", "fetchDiscordMessages", "LINEAR_BLUEPRINT", "DISCORD_BLUEPRINT"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const ASSISTANT_PLUGIN = 'dxos.org/plugin/assistant';\n\nexport const ASSISTANT_DIALOG = `${ASSISTANT_PLUGIN}/assistant/dialog`;\n\nexport const meta: PluginMeta = {\n id: ASSISTANT_PLUGIN,\n name: 'Assistant',\n description: 'The Assistant plugin allows you to chat with your spaces inside of Composer.',\n icon: 'ph--atom--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant',\n tags: ['labs'],\n};\n"],
|
|
5
|
-
"mappings": ";AAMO,IAAMA,mBAAmB;AAEzB,IAAMC,mBAAmB,GAAGD,gBAAAA;AAE5B,IAAME,OAAmB;EAC9BC,IAAIH;EACJI,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;AACT;",
|
|
6
|
-
"names": ["ASSISTANT_PLUGIN", "ASSISTANT_DIALOG", "meta", "id", "name", "description", "icon", "source", "tags"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/Toolbar/Toolbar.tsx", "../../../src/components/Toolbar/useChatToolbarActions.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { MenuProvider, ToolbarMenu } from '@dxos/react-ui-menu';\n\nimport { type ChatToolbarActionsProps, useChatToolbarActions } from './useChatToolbarActions';\n\nexport const Toolbar = ({ chat, companionTo, onReset, classNames }: ThemedClassName<ChatToolbarActionsProps>) => {\n const menu = useChatToolbarActions({ chat, companionTo, onReset });\n\n return (\n <MenuProvider {...menu} attendableId={companionTo ? fullyQualifiedId(companionTo) : fullyQualifiedId(chat)}>\n <ToolbarMenu classNames={classNames} />\n </MenuProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Effect } from 'effect';\nimport { useMemo } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { getSpace, useQuery } from '@dxos/react-client/echo';\nimport { MenuBuilder, useMenuActions } from '@dxos/react-ui-menu';\n\nimport { meta } from '../../meta';\nimport { Assistant, AssistantAction } from '../../types';\n\nexport type ChatToolbarActionsProps = {\n chat: Assistant.Chat;\n companionTo?: Obj.Any;\n onReset?: () => void;\n};\n\nexport const useChatToolbarActions = ({ chat, companionTo, onReset }: ChatToolbarActionsProps) => {\n const { dispatch } = useIntentDispatcher();\n const space = getSpace(chat);\n const query = companionTo\n ? Query.select(Filter.ids(companionTo.id)).targetOf(Assistant.CompanionTo).source()\n : Query.select(Filter.nothing());\n // TODO(wittjosiah): Query in react vs query in rx?\n const chats = useQuery(space, query);\n\n return useMenuActions(\n useMemo(\n () =>\n Rx.make(() => {\n const builder = MenuBuilder.make()\n .root({\n label: ['chat toolbar title', { ns: meta.id }],\n })\n .action(\n 'new',\n {\n label: ['button new thread', { ns: meta.id }],\n icon: 'ph--plus--regular',\n type: 'new',\n },\n () =>\n Effect.gen(function* () {\n invariant(space);\n const { object } = yield* dispatch(createIntent(AssistantAction.CreateChat, { space }));\n yield* dispatch(createIntent(SpaceAction.AddObject, { object, target: space, hidden: true }));\n if (companionTo) {\n yield* dispatch(\n createIntent(SpaceAction.AddRelation, {\n space,\n schema: Assistant.CompanionTo,\n source: object,\n target: companionTo,\n }),\n );\n\n yield* dispatch(createIntent(AssistantAction.SetCurrentChat, { companionTo, chat: object }));\n }\n }).pipe(Effect.runPromise),\n )\n .action(\n 'branch',\n {\n label: ['button branch thread', { ns: meta.id }],\n icon: 'ph--git-branch--regular',\n type: 'branch',\n disabled: true,\n },\n () => {},\n );\n\n if (chats.length > 0) {\n builder.group(\n 'chats',\n {\n label: ['chat history label', { ns: meta.id }],\n icon: 'ph--clock-counter-clockwise--regular',\n selectCardinality: 'single',\n variant: 'dropdownMenu',\n },\n (builder) => {\n chats\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\n .forEach((chat) => {\n builder.action(\n chat.id,\n {\n label: Obj.getLabel(chat) ?? ['object name placeholder', { ns: Assistant.Chat.typename }],\n },\n () =>\n Effect.gen(function* () {\n invariant(companionTo);\n yield* dispatch(createIntent(AssistantAction.SetCurrentChat, { companionTo, chat }));\n }).pipe(Effect.runPromise),\n );\n });\n },\n );\n }\n\n if (onReset) {\n builder.action(\n 'reset',\n {\n label: ['button reset', { ns: meta.id }],\n icon: 'ph--trash--regular',\n type: 'reset',\n },\n onReset,\n );\n }\n\n return builder.build();\n }),\n [chats],\n ),\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "fullyQualifiedId", "MenuProvider", "ToolbarMenu", "Rx", "Effect", "useMemo", "createIntent", "useIntentDispatcher", "Filter", "Obj", "Query", "invariant", "SpaceAction", "getSpace", "useQuery", "MenuBuilder", "useMenuActions", "useChatToolbarActions", "chat", "companionTo", "onReset", "dispatch", "useIntentDispatcher", "space", "getSpace", "query", "Query", "select", "Filter", "ids", "id", "targetOf", "Assistant", "CompanionTo", "source", "nothing", "chats", "useQuery", "useMenuActions", "useMemo", "Rx", "make", "builder", "MenuBuilder", "root", "label", "ns", "meta", "action", "icon", "type", "Effect", "gen", "invariant", "object", "createIntent", "AssistantAction", "CreateChat", "SpaceAction", "AddObject", "target", "hidden", "AddRelation", "schema", "SetCurrentChat", "pipe", "runPromise", "disabled", "length", "group", "selectCardinality", "variant", "toSorted", "a", "b", "localeCompare", "forEach", "Obj", "getLabel", "Chat", "typename", "build", "Toolbar", "chat", "companionTo", "onReset", "classNames", "menu", "useChatToolbarActions", "MenuProvider", "attendableId", "fullyQualifiedId", "ToolbarMenu"]
|
|
7
|
-
}
|