@dxos/plugin-assistant 0.8.4-main.c1de068 → 0.8.4-main.fd6878d
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/{TemplateContainer-RPJ2LBOB.mjs → BlueprintContainer-H7H4BQ2C.mjs} +11 -9
- package/dist/lib/browser/BlueprintContainer-H7H4BQ2C.mjs.map +7 -0
- package/dist/lib/browser/{ChatContainer-M3IHQLRS.mjs → ChatContainer-OUVSX5V5.mjs} +35 -13
- package/dist/lib/browser/ChatContainer-OUVSX5V5.mjs.map +7 -0
- package/dist/lib/browser/{ChatDialog-X6VN6QZI.mjs → ChatDialog-P4FLEOHG.mjs} +21 -7
- package/dist/lib/browser/ChatDialog-P4FLEOHG.mjs.map +7 -0
- package/dist/lib/browser/{SequenceContainer-3UDVKWPA.mjs → SequenceContainer-627OQ557.mjs} +3 -2
- package/dist/lib/browser/SequenceContainer-627OQ557.mjs.map +7 -0
- package/dist/lib/browser/ai-service-7KJ5LXBT.mjs +22 -0
- package/dist/lib/browser/ai-service-7KJ5LXBT.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-JTXBKE7O.mjs → app-graph-builder-AVHHQ3KV.mjs} +17 -74
- package/dist/lib/browser/app-graph-builder-AVHHQ3KV.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-CMGIZAOW.mjs +146 -0
- package/dist/lib/browser/blueprint-definition-CMGIZAOW.mjs.map +7 -0
- package/dist/lib/browser/chunk-BRLHDHOF.mjs +244 -0
- package/dist/lib/browser/chunk-BRLHDHOF.mjs.map +7 -0
- package/dist/lib/browser/chunk-HRLMD35M.mjs +191 -0
- package/dist/lib/browser/chunk-HRLMD35M.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
- package/dist/lib/browser/chunk-LKP65RPA.mjs +20 -0
- package/dist/lib/browser/{chunk-FDCJSQYF.mjs.map → chunk-LKP65RPA.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-AEAEKWOC.mjs → chunk-NZDCKQ6W.mjs} +12 -21
- package/dist/lib/browser/chunk-NZDCKQ6W.mjs.map +7 -0
- package/dist/lib/browser/chunk-QB7OVS6Z.mjs +16 -0
- package/dist/lib/browser/chunk-QB7OVS6Z.mjs.map +7 -0
- package/dist/lib/browser/{chunk-OWY4CUQY.mjs → chunk-VEBVAHNM.mjs} +799 -813
- package/dist/lib/browser/chunk-VEBVAHNM.mjs.map +7 -0
- package/dist/lib/browser/edge-model-resolver-2HB4PCWH.mjs +24 -0
- package/dist/lib/browser/edge-model-resolver-2HB4PCWH.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +96 -51
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/{intent-resolver-5RMMCMXG.mjs → intent-resolver-MVOIEJXZ.mjs} +33 -12
- package/dist/lib/browser/intent-resolver-MVOIEJXZ.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-66VY37YQ.mjs → react-surface-4HXS3YLT.mjs} +45 -32
- package/dist/lib/browser/react-surface-4HXS3YLT.mjs.map +7 -0
- package/dist/lib/browser/{settings-2DGP3UTS.mjs → settings-G2EZXMWT.mjs} +6 -5
- package/dist/lib/{node-esm/settings-47RYZOU4.mjs.map → browser/settings-G2EZXMWT.mjs.map} +1 -1
- package/dist/lib/browser/toolkit-IW4FBLLB.mjs +105 -0
- package/dist/lib/browser/toolkit-IW4FBLLB.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +7 -4
- package/dist/lib/node-esm/{TemplateContainer-A3NAQCZE.mjs → BlueprintContainer-VH4EE4CM.mjs} +11 -9
- package/dist/lib/node-esm/BlueprintContainer-VH4EE4CM.mjs.map +7 -0
- package/dist/lib/node-esm/{ChatContainer-VZT74PO2.mjs → ChatContainer-D5FABDNE.mjs} +35 -13
- package/dist/lib/node-esm/ChatContainer-D5FABDNE.mjs.map +7 -0
- package/dist/lib/node-esm/{ChatDialog-RJ6FDX4Q.mjs → ChatDialog-NKWVXHJP.mjs} +21 -7
- package/dist/lib/node-esm/ChatDialog-NKWVXHJP.mjs.map +7 -0
- package/dist/lib/node-esm/{SequenceContainer-RQQH5XOC.mjs → SequenceContainer-EQ5NP2PG.mjs} +3 -2
- package/dist/lib/node-esm/SequenceContainer-EQ5NP2PG.mjs.map +7 -0
- package/dist/lib/node-esm/ai-service-LDD32477.mjs +23 -0
- package/dist/lib/node-esm/ai-service-LDD32477.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-OWSOXFTD.mjs → app-graph-builder-RMOUJMMG.mjs} +17 -74
- package/dist/lib/node-esm/app-graph-builder-RMOUJMMG.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-AEWYMW6I.mjs +147 -0
- package/dist/lib/node-esm/blueprint-definition-AEWYMW6I.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SENTQAEO.mjs → chunk-3SOC5GOP.mjs} +799 -813
- package/dist/lib/node-esm/chunk-3SOC5GOP.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-F7RXCX5Y.mjs +192 -0
- package/dist/lib/node-esm/chunk-F7RXCX5Y.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2XL6MNPE.mjs → chunk-GAWXJ7K5.mjs} +12 -21
- package/dist/lib/node-esm/chunk-GAWXJ7K5.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-KOC6ESG7.mjs +22 -0
- package/dist/lib/node-esm/{chunk-QN2H2EHV.mjs.map → chunk-KOC6ESG7.mjs.map} +1 -1
- package/dist/lib/node-esm/chunk-RD755HN3.mjs +245 -0
- package/dist/lib/node-esm/chunk-RD755HN3.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-X6AANUHZ.mjs +17 -0
- package/dist/lib/node-esm/chunk-X6AANUHZ.mjs.map +7 -0
- package/dist/lib/node-esm/edge-model-resolver-UDDR2IA6.mjs +25 -0
- package/dist/lib/node-esm/edge-model-resolver-UDDR2IA6.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +96 -51
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/{intent-resolver-YPPYELY3.mjs → intent-resolver-DTDNCX3C.mjs} +33 -12
- package/dist/lib/node-esm/intent-resolver-DTDNCX3C.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-RJMRBR2M.mjs → react-surface-V6JNEZVO.mjs} +45 -32
- package/dist/lib/node-esm/react-surface-V6JNEZVO.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-47RYZOU4.mjs → settings-AIP5FOJG.mjs} +6 -5
- package/dist/lib/{browser/settings-2DGP3UTS.mjs.map → node-esm/settings-AIP5FOJG.mjs.map} +1 -1
- package/dist/lib/node-esm/toolkit-2VNUL77B.mjs +106 -0
- package/dist/lib/node-esm/toolkit-2VNUL77B.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +7 -4
- package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/ai-service.d.ts +5 -0
- package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +3 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/capabilities.d.ts +11 -0
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
- package/dist/types/src/capabilities/edge-model-resolver.d.ts +5 -0
- package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +5 -0
- 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/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/toolkit.d.ts +5 -0
- package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
- package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
- package/dist/types/src/components/BlueprintContainer.d.ts +8 -0
- package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -0
- package/dist/types/src/components/Chat/Chat.d.ts +6 -8
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts +5 -4
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +13 -0
- package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +3 -3
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/index.d.ts +1 -1
- package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatMessage.d.ts +4 -3
- package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.d.ts +2 -2
- package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +33 -48
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/Link.d.ts +9 -0
- package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +1 -1
- package/dist/types/src/components/SequenceContainer.d.ts.map +1 -1
- package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -1
- package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +1 -1
- package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
- package/dist/types/src/components/Timeline/Timeline.d.ts +24 -0
- package/dist/types/src/components/Timeline/Timeline.d.ts.map +1 -0
- package/dist/types/src/components/Timeline/Timeline.stories.d.ts +9 -0
- package/dist/types/src/components/Timeline/Timeline.stories.d.ts.map +1 -0
- package/dist/types/src/components/Timeline/index.d.ts +2 -0
- package/dist/types/src/components/Timeline/index.d.ts.map +1 -0
- package/dist/types/src/components/Toolbox/Toolbox.d.ts +4 -7
- package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +1 -2
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +3 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/functions/analysis.d.ts +5 -0
- package/dist/types/src/functions/analysis.d.ts.map +1 -0
- package/dist/types/src/functions/index.d.ts +4 -0
- package/dist/types/src/functions/index.d.ts.map +1 -0
- package/dist/types/src/functions/list.d.ts +10 -0
- package/dist/types/src/functions/list.d.ts.map +1 -0
- package/dist/types/src/functions/load.d.ts +8 -0
- package/dist/types/src/functions/load.d.ts.map +1 -0
- package/dist/types/src/hooks/chat-processor.d.ts +28 -42
- package/dist/types/src/hooks/chat-processor.d.ts.map +1 -1
- package/dist/types/src/hooks/errors.d.ts +4 -0
- package/dist/types/src/hooks/errors.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +5 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/presets.d.ts +2 -2
- package/dist/types/src/hooks/presets.d.ts.map +1 -1
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts +21 -0
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -0
- package/dist/types/src/hooks/useChatProcessor.d.ts +7 -14
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatServices.d.ts +3 -4
- package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
- package/dist/types/src/hooks/useOnline.d.ts +3 -0
- package/dist/types/src/hooks/useOnline.d.ts.map +1 -0
- package/dist/types/src/hooks/usePresets.d.ts +7 -0
- package/dist/types/src/hooks/usePresets.d.ts.map +1 -0
- package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
- package/dist/types/src/hooks/useResolveRef.d.ts +4 -0
- package/dist/types/src/hooks/useResolveRef.d.ts.map +1 -0
- package/dist/types/src/parser/filter-generator.d.ts.map +1 -1
- package/dist/types/src/parser/query-parser.d.ts.map +1 -1
- package/dist/types/src/stories/Chat.stories.d.ts +68 -49
- package/dist/types/src/stories/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/stories/components/BlueprintContainer.d.ts +5 -0
- package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/ChatContainer.d.ts +5 -0
- package/dist/types/src/stories/components/ChatContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/GraphContainer.d.ts +6 -0
- package/dist/types/src/stories/components/GraphContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/LoggingContainer.d.ts +5 -0
- package/dist/types/src/stories/components/LoggingContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/SurfaceContainer.d.ts +8 -0
- package/dist/types/src/stories/components/SurfaceContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/TasksContainer.d.ts +5 -0
- package/dist/types/src/stories/components/TasksContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/index.d.ts +8 -0
- package/dist/types/src/stories/components/index.d.ts.map +1 -0
- package/dist/types/src/stories/components/types.d.ts +7 -0
- package/dist/types/src/stories/components/types.d.ts.map +1 -0
- package/dist/types/src/stories/hooks/index.d.ts +3 -0
- package/dist/types/src/stories/hooks/index.d.ts.map +1 -0
- package/dist/types/src/stories/hooks/useFlush.d.ts +6 -0
- package/dist/types/src/stories/hooks/useFlush.d.ts.map +1 -0
- package/dist/types/src/stories/hooks/useMatcherExtension.d.ts +3 -0
- package/dist/types/src/stories/hooks/useMatcherExtension.d.ts.map +1 -0
- package/dist/types/src/stories/testing/data.d.ts +142 -0
- package/dist/types/src/stories/testing/data.d.ts.map +1 -0
- package/dist/types/src/stories/testing/index.d.ts +3 -0
- package/dist/types/src/stories/testing/index.d.ts.map +1 -0
- package/dist/types/src/stories/testing/testing.d.ts +26 -0
- package/dist/types/src/stories/testing/testing.d.ts.map +1 -0
- package/dist/types/src/testing/test-functions.d.ts +5 -2
- package/dist/types/src/testing/test-functions.d.ts.map +1 -1
- package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
- package/dist/types/src/tools/function.d.ts.map +1 -1
- package/dist/types/src/tools/openapi.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +6 -10
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Assistant.d.ts +40 -0
- package/dist/types/src/types/Assistant.d.ts.map +1 -0
- package/dist/types/src/types/AssistantAction.d.ts +90 -0
- package/dist/types/src/types/AssistantAction.d.ts.map +1 -0
- package/dist/types/src/types/defs.d.ts +2 -0
- package/dist/types/src/types/defs.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +3 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/service.d.ts +6 -6
- package/dist/types/src/types/service.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +81 -75
- package/src/AssistantPlugin.tsx +59 -12
- package/src/capabilities/ai-service.ts +28 -0
- package/src/capabilities/app-graph-builder.ts +9 -93
- package/src/capabilities/blueprint-definition.ts +32 -0
- package/src/capabilities/capabilities.ts +22 -0
- package/src/capabilities/edge-model-resolver.ts +29 -0
- package/src/capabilities/index.ts +6 -0
- package/src/capabilities/intent-resolver.ts +24 -9
- package/src/capabilities/react-surface.tsx +29 -22
- package/src/capabilities/toolkit.ts +106 -0
- package/src/components/AssistantSettings/AssistantSettings.tsx +1 -1
- package/src/components/BlueprintContainer.tsx +24 -0
- package/src/components/Chat/Chat.tsx +77 -64
- package/src/components/ChatContainer.tsx +37 -13
- package/src/components/ChatDialog.tsx +9 -5
- package/src/components/ChatPrompt/ChatOptions.tsx +59 -0
- package/src/components/ChatPrompt/ChatReferences.tsx +11 -9
- package/src/components/ChatPrompt/index.ts +1 -1
- package/src/components/ChatThread/ChatMessage.tsx +132 -118
- package/src/components/ChatThread/ChatThread.stories.tsx +220 -103
- package/src/components/ChatThread/ChatThread.tsx +2 -2
- package/src/components/ChatThread/Link.tsx +39 -0
- package/src/components/ChatThread/ToolBlock.tsx +20 -16
- package/src/components/SequenceContainer.tsx +2 -1
- package/src/components/SequenceEditor/SequenceEditor.stories.tsx +3 -2
- package/src/components/SequenceEditor/SequenceEditor.tsx +1 -1
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +12 -5
- package/src/components/TemplateEditor/TemplateEditor.tsx +15 -12
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +12 -5
- package/src/components/TemplateEditor/TemplateForm.tsx +5 -3
- package/src/components/Timeline/Timeline.stories.tsx +53 -0
- package/src/components/Timeline/Timeline.tsx +159 -0
- package/src/components/Timeline/index.ts +5 -0
- package/src/components/Toolbox/Toolbox.stories.tsx +6 -12
- package/src/components/Toolbox/Toolbox.tsx +16 -40
- package/src/components/index.ts +2 -5
- package/src/events.ts +2 -2
- package/src/functions/analysis.ts +20 -0
- package/src/functions/index.ts +7 -0
- package/src/functions/list.ts +42 -0
- package/src/functions/load.ts +43 -0
- package/src/hooks/chat-processor.ts +123 -177
- package/src/hooks/errors.ts +8 -0
- package/src/hooks/index.ts +5 -1
- package/src/hooks/presets.ts +6 -5
- package/src/hooks/useBlueprintRegistry.ts +79 -0
- package/src/hooks/useChatProcessor.ts +21 -83
- package/src/hooks/useChatServices.ts +35 -54
- package/src/hooks/useOnline.ts +10 -0
- package/src/hooks/usePresets.ts +45 -0
- package/src/hooks/useReferencesProvider.ts +11 -9
- package/src/hooks/useResolveRef.ts +33 -0
- package/src/parser/filter-generator.ts +6 -13
- package/src/parser/query-parser.ts +1 -1
- package/src/queue-logger.ts +5 -5
- package/src/stories/Chat.stories.tsx +238 -299
- package/src/stories/components/BlueprintContainer.tsx +34 -0
- package/src/stories/components/ChatContainer.tsx +80 -0
- package/src/stories/components/GraphContainer.tsx +118 -0
- package/src/stories/components/LoggingContainer.tsx +22 -0
- package/src/stories/components/SurfaceContainer.tsx +62 -0
- package/src/stories/components/TasksContainer.tsx +51 -0
- package/src/stories/components/index.ts +12 -0
- package/src/stories/components/types.ts +11 -0
- package/src/stories/hooks/index.ts +6 -0
- package/src/stories/hooks/useFlush.ts +35 -0
- package/src/stories/hooks/useMatcherExtension.ts +45 -0
- package/src/stories/testing/data.ts +130 -0
- package/src/stories/testing/index.ts +6 -0
- package/src/stories/testing/testing.tsx +162 -0
- package/src/testing/test-functions.ts +8 -3
- package/src/testing/test-sequence.ts +1 -1
- package/src/tools/function.ts +4 -1
- package/src/tools/openapi.test.ts +7 -5
- package/src/tools/openapi.ts +4 -1
- package/src/translations.ts +8 -10
- package/src/types/Assistant.ts +59 -0
- package/src/types/AssistantAction.ts +54 -0
- package/src/types/defs.ts +5 -0
- package/src/types/index.ts +4 -1
- package/dist/lib/browser/ChatContainer-M3IHQLRS.mjs.map +0 -7
- package/dist/lib/browser/ChatDialog-X6VN6QZI.mjs.map +0 -7
- package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs.map +0 -7
- package/dist/lib/browser/TemplateContainer-RPJ2LBOB.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-JTXBKE7O.mjs.map +0 -7
- package/dist/lib/browser/chunk-AEAEKWOC.mjs.map +0 -7
- package/dist/lib/browser/chunk-EQDW6BYQ.mjs +0 -108
- package/dist/lib/browser/chunk-EQDW6BYQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-FDCJSQYF.mjs +0 -40
- package/dist/lib/browser/chunk-JQBVLTM5.mjs +0 -158
- package/dist/lib/browser/chunk-JQBVLTM5.mjs.map +0 -7
- package/dist/lib/browser/chunk-OWY4CUQY.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs.map +0 -7
- package/dist/lib/browser/react-surface-66VY37YQ.mjs.map +0 -7
- package/dist/lib/node-esm/ChatContainer-VZT74PO2.mjs.map +0 -7
- package/dist/lib/node-esm/ChatDialog-RJ6FDX4Q.mjs.map +0 -7
- package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs.map +0 -7
- package/dist/lib/node-esm/TemplateContainer-A3NAQCZE.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-OWSOXFTD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2XL6MNPE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BISJDTBK.mjs +0 -159
- package/dist/lib/node-esm/chunk-BISJDTBK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-E33DNNDW.mjs +0 -109
- package/dist/lib/node-esm/chunk-E33DNNDW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QN2H2EHV.mjs +0 -41
- package/dist/lib/node-esm/chunk-SENTQAEO.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs.map +0 -7
- package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +0 -9
- package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +0 -1
- package/dist/types/src/components/TemplateContainer.d.ts +0 -8
- package/dist/types/src/components/TemplateContainer.d.ts.map +0 -1
- package/dist/types/src/hooks/chat-processor.test.d.ts +0 -2
- package/dist/types/src/hooks/chat-processor.test.d.ts.map +0 -1
- package/dist/types/src/hooks/useBlueprints.d.ts +0 -9
- package/dist/types/src/hooks/useBlueprints.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -88
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/components/ChatPrompt/ChatOptionsMenu.tsx +0 -52
- package/src/components/TemplateContainer.tsx +0 -24
- package/src/hooks/chat-processor.test.ts +0 -16
- package/src/hooks/useBlueprints.ts +0 -57
- package/src/types/schema.ts +0 -95
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/hooks/useBlueprintRegistry.ts", "../../../src/hooks/useChatProcessor.ts", "../../../src/hooks/chat-processor.ts", "../../../src/hooks/errors.ts", "../../../src/hooks/presets.ts", "../../../src/hooks/useChatServices.ts", "../../../src/capabilities/index.ts", "../../../src/hooks/useOnline.ts", "../../../src/hooks/usePresets.ts", "../../../src/hooks/useReferencesProvider.ts", "../../../src/hooks/useResolveRef.ts", "../../../src/components/Toolbox/Toolbox.tsx", "../../../src/tools/function.ts", "../../../src/tools/openapi.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/ChatMessage.tsx", "../../../src/components/ChatThread/Link.tsx", "../../../src/components/ChatThread/ToolBlock.tsx", "../../../src/components/ChatThread/reducer.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\n/**\n * Create reactive map of active blueprints (by key).\n */\nexport const useBlueprints = ({ context }: { context?: AiContextBinder }) => {\n const [active, setActive] = useState<Map<string, Blueprint.Blueprint>>(new Map());\n useSignalEffect(() => {\n const refs = [...(context?.blueprints.value ?? [])];\n const t = setTimeout(async () => {\n const blueprints = (await Ref.Array.loadAll(refs)).filter(isNonNullable);\n setActive(new Map(blueprints.map((blueprint) => [blueprint.key, blueprint])));\n });\n\n return () => clearTimeout(t);\n });\n\n return active;\n};\n\n// TODO(burdon): Context should manage ephemeral state of bindings until prompt is issued?\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 // 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 Layer } from 'effect';\nimport { useContext, useMemo } from 'react';\n\nimport { useIntentDispatcher } from '@dxos/app-framework';\nimport { AiConversation } from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { log } from '@dxos/log';\nimport { type Queue, type Space, fullyQualifiedId } from '@dxos/react-client/echo';\n\nimport { AiChatProcessor, type AiChatServices, type AiServicePreset } from '../hooks';\nimport { type Assistant } from '../types';\n\nexport type UseChatProcessorProps = {\n space?: Space;\n chat?: Assistant.Chat;\n preset?: AiServicePreset;\n services?: Layer.Layer<AiChatServices>;\n blueprintRegistry?: Blueprint.Registry;\n settings?: Assistant.Settings;\n};\n\n/**\n * Configure and create AiChatProcessor.\n */\nexport const useChatProcessor = ({\n space,\n chat,\n preset,\n services,\n blueprintRegistry,\n settings,\n}: UseChatProcessorProps): AiChatProcessor | undefined => {\n const observableRegistry = useContext(RegistryContext);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n // Tools and context.\n const chatId = useMemo(() => (chat ? fullyQualifiedId(chat) : undefined), [chat]);\n const extensions = useMemo(() => ({ space, dispatch, pivotId: chatId }), [dispatch, space, chatId]);\n\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 // TODO(burdon): Updated on each query update above; should just update current 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(services, conversation, {\n extensions,\n blueprintRegistry,\n observableRegistry,\n model: preset?.model,\n });\n }, [services, conversation, blueprintRegistry, extensions, preset]);\n\n return processor;\n};\n\n// TODO(dmaretskyi): Extract.\nexport const Stable = Object.freeze({\n array: [] as readonly never[],\n object: {} as {},\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Registry, Result, Rx } from '@effect-rx/rx-react';\nimport { Effect, type Layer, Option, Stream, pipe } from 'effect';\n\nimport { AiService, DEFAULT_EDGE_MODEL, type ModelName, type ModelRegistry } from '@dxos/ai';\nimport { type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport {\n type AiConversation,\n type AiConversationRunParams,\n AiSession,\n ArtifactDiffResolver,\n createSystemPrompt,\n} from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { Context } from '@dxos/context';\nimport { Obj } from '@dxos/echo';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { log } from '@dxos/log';\nimport { Filter, type Space, getVersion } from '@dxos/react-client/echo';\nimport { type ContentBlock, DataType } from '@dxos/schema';\n\nimport { AiServiceOverloadedError } from './errors';\nimport { type AiChatServices } from './useChatServices';\n\n// TODO(burdon): Is this still used?\ndeclare global {\n interface ToolContextExtensions {\n space?: Space;\n dispatch?: PromiseIntentDispatcher;\n }\n}\n\nexport type AiRequestOptions = {\n // Empty for now.\n};\n\nexport type AiChatProcessorOptions = {\n model?: ModelName;\n modelRegistry?: ModelRegistry;\n blueprintRegistry?: Blueprint.Registry;\n observableRegistry?: Registry.Registry;\n extensions?: ToolContextExtensions;\n} & Pick<AiConversationRunParams<any>, 'system'>;\n\nconst defaultOptions: Partial<AiChatProcessorOptions> = {\n model: DEFAULT_EDGE_MODEL,\n};\n\n/**\n * Handles interactions with the AI service.\n * Maintains a queue of messages and handles streaming responses from the AI service.\n * Executes tools based on AI responses.\n * Supports cancellation of in-progress requests.\n */\nexport class AiChatProcessor {\n /**\n * Last error.\n */\n // TODO(wittjosiah): Error should come from the message stream.\n readonly error = Rx.make<Option.Option<Error>>(Option.none());\n\n /** Rx registry. */\n private readonly _observableRegistry: Registry.Registry;\n\n /** Current session. */\n private readonly _session = Rx.make<Option.Option<AiSession>>(Option.none());\n\n /**\n * Current streaming message (from the AI service).\n */\n private readonly _streaming: Rx.Rx<Result.Result<Option.Option<DataType.Message>, Error>> = Rx.make((get) => {\n return pipe(\n get(this._session),\n Option.map((session) => Stream.fromQueue(session.blockQueue)),\n Option.getOrElse(() => Stream.make()),\n Stream.scan<Option.Option<DataType.Message>, Option.Option<ContentBlock.Any>>(Option.none(), (acc, blockOption) =>\n Option.flatMap(blockOption, (block) =>\n acc.pipe(\n Option.match({\n onNone: () => [block],\n onSome: (message) => [...message.blocks.filter((b) => !b.pending), block],\n }),\n Option.some,\n Option.map((blocks) =>\n Obj.make(DataType.Message, {\n created: new Date().toISOString(),\n sender: { role: 'assistant' },\n blocks,\n }),\n ),\n ),\n ),\n ),\n );\n });\n\n /**\n * Streaming state.\n */\n readonly streaming: Rx.Rx<boolean> = Rx.make((get) => {\n return pipe(\n get(this._streaming),\n Result.map((streaming) => Option.isSome(streaming)),\n Result.getOrElse(() => false),\n );\n });\n\n /**\n * Pending messages (incl. the current user request).\n */\n private readonly _pending: Rx.Rx<Result.Result<DataType.Message[], Error>> = Rx.make((get) => {\n // TODO(wittjosiah): For some reason using Option.map here loses reactivity.\n const session = get(this._session);\n return Option.isSome(session)\n ? pipe(\n session.value.messageQueue,\n Stream.fromQueue,\n Stream.scan<DataType.Message[], DataType.Message>([], (acc, message) => [...acc, message]),\n )\n : Stream.make();\n });\n\n /**\n * Array of Messages (incl. the current message being streamed).\n */\n readonly messages: Rx.Rx<Result.Result<DataType.Message[], Error>> = Rx.make((get) => {\n const streaming = get(this._streaming);\n return Result.map(get(this._pending), (pending) =>\n Result.match(streaming, {\n onInitial: () => pending,\n onSuccess: (streaming) =>\n Option.match(streaming.value, {\n onNone: () => pending,\n onSome: (message) => [...pending, message],\n }),\n onFailure: () => pending,\n }),\n );\n });\n\n constructor(\n // TODO(dmaretskyi): Replace this with effect's ManagedRuntime wrapping this layer.\n private readonly _services: Layer.Layer<AiChatServices>,\n private readonly _conversation: AiConversation,\n private readonly _options: AiChatProcessorOptions = defaultOptions,\n ) {\n // Initialize registries and defaults before using in other logic.\n this._observableRegistry = this._options.observableRegistry ?? Registry.make();\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 * Make GPT request.\n */\n async request(message: string, _options: AiRequestOptions = {}): Promise<void> {\n await using ctx = Context.default(); // Auto-disposed at the end of this block.\n\n const session = new AiSession();\n this._observableRegistry.set(this._session, Option.some(session));\n\n ctx.onDispose(() => {\n log.info('onDispose', { session, isDisposed: ctx.disposed });\n Option.match(this._observableRegistry.get(this._session), {\n onSome: (s) => {\n if (s === session) {\n this._observableRegistry.set(this._session, Option.none());\n }\n },\n onNone: () => {},\n });\n });\n\n try {\n const messages = await runAndForwardErrors(\n this._conversation\n .run({\n session,\n prompt: message,\n system: this._options.system,\n })\n .pipe(\n Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),\n // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.\n Effect.provideService(ArtifactDiffResolver, this._artifactDiffResolver),\n Effect.provide(this._services),\n Effect.tapErrorCause((cause) => {\n log.error('error', { cause });\n return Effect.void;\n }),\n ),\n );\n\n log('completed', { messages });\n } catch (err) {\n log.catch(err);\n if (err instanceof Error && err.message.includes('Overloaded')) {\n this._observableRegistry.set(\n this.error,\n Option.some(new AiServiceOverloadedError('AI service overloaded', { cause: err })),\n );\n } else {\n this._observableRegistry.set(this.error, Option.some(new Error('AI service error', { cause: err })));\n }\n }\n }\n\n /**\n * Cancel pending requests.\n */\n async cancel(): Promise<void> {\n log.info('cancelling...');\n\n // TODO(dmaretskyi): Abort using Fiber.interrupt.\n }\n\n private _artifactDiffResolver: ArtifactDiffResolver.Service = {\n resolve: async (artifacts) => {\n const space = this._options.extensions?.space;\n if (!space) {\n return new Map();\n }\n\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 return versions;\n },\n };\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// TODO(wittjosiah): Move to ai-service-client.\nexport class AiServiceOverloadedError extends Error {\n code = 'AI_SERVICE_OVERLOADED';\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-3-5-haiku-20241022' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: '@google/gemma-3-12b' as const,\n },\n {\n provider: 'lm-studio' as const,\n model: '@mlx-community/llama-3.2-3b-instruct' as const,\n },\n { model: 'deepseek-r1:latest' as const, provider: 'dxos-local' as const },\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 { type AiTool, AiToolkit } from '@effect/ai';\nimport { Layer } from 'effect';\nimport { useMemo } from 'react';\n\nimport { type AiService, type ToolExecutionService, type ToolResolverService } from '@dxos/ai';\nimport { Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { makeToolExecutionServiceFromFunctions, makeToolResolverFromFunctions } from '@dxos/assistant';\nimport { type Space } from '@dxos/client/echo';\nimport {\n ComputeEventLogger,\n CredentialsService,\n DatabaseService,\n LocalFunctionExecutionService,\n QueueService,\n RemoteFunctionExecutionService,\n TracingService,\n} from '@dxos/functions';\n\nimport { AssistantCapabilities } from '../capabilities';\n\n// TODO(burdon): Deconstruct into separate layers?\nexport type AiChatServices =\n | AiService.AiService\n | CredentialsService\n | DatabaseService\n | QueueService\n | RemoteFunctionExecutionService\n | ToolResolverService\n | ToolExecutionService\n | TracingService;\n\nexport type UseChatServicesProps = {\n space?: Space;\n};\n\n/**\n * Construct service layer.\n */\nexport const useChatServices = ({ space }: UseChatServicesProps): Layer.Layer<AiChatServices> | undefined => {\n const serviceLayer = useCapabilities(AssistantCapabilities.AiServiceLayer).at(0) ?? Layer.die('AiService not found');\n const functions = useCapabilities(Capabilities.Functions);\n const toolkits = useCapabilities(Capabilities.Toolkit);\n const handlers = useCapabilities(Capabilities.ToolkitHandler);\n\n return useMemo(() => {\n const allFunctions = functions.flat();\n // TODO(wittjosiah): Don't cast.\n const toolkit = AiToolkit.merge(...toolkits) as AiToolkit.Any as AiToolkit.AiToolkit<AiTool.Any>;\n const handlersLayer = Layer.mergeAll(Layer.empty, ...handlers);\n return Layer.mergeAll(\n serviceLayer,\n makeToolResolverFromFunctions(allFunctions, toolkit),\n makeToolExecutionServiceFromFunctions(allFunctions, toolkit, handlersLayer),\n CredentialsService.layerFromDatabase(),\n ComputeEventLogger.layerFromTracing,\n ).pipe(\n Layer.provideMerge(\n Layer.mergeAll(\n space ? DatabaseService.layer(space.db) : DatabaseService.notAvailable,\n space ? QueueService.layer(space.queues) : QueueService.notAvailable,\n TracingService.layerNoop,\n LocalFunctionExecutionService.layer,\n RemoteFunctionExecutionService.mockLayer,\n ),\n ),\n );\n }, [space, functions, toolkits, handlers]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport * from './capabilities';\n\nexport const AiService = lazy(() => import('./ai-service'));\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const BlueprintDefinition = lazy(() => import('./blueprint-definition'));\nexport const EdgeModelResolver = lazy(() => import('./edge-model-resolver'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const Settings = lazy(() => import('./settings'));\nexport const Toolkit = lazy(() => import('./toolkit'));\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';\n\nimport { type AiServicePreset, AiServicePresets } from './presets';\n\nexport type UsePresets = {\n preset: AiServicePreset | undefined;\n} & Pick<ChatPromptProps, 'presets' | 'onChangePreset'>;\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 handleChangePreset = useCallback<NonNullable<ChatPromptProps['onChangePreset']>>(\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 onChangePreset: handleChangePreset,\n };\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 { useMemo, useSyncExternalStore } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\nimport { type Ref } from '@dxos/echo';\n\n// TODO(burdon): Factor out.\nexport const useResolvedRef = <T>(space: Space, ref: Ref.Ref<T>): T | undefined => {\n const { subscribe, getSnapshot } = useMemo(() => {\n const resolver = space.db.graph.createRefResolver({});\n let currentCallback: (() => void) | undefined = undefined;\n\n return {\n subscribe: (cb: () => void) => {\n currentCallback = cb;\n return () => {\n if (currentCallback === cb) {\n currentCallback = undefined;\n }\n };\n },\n getSnapshot: () =>\n resolver?.resolveSync(ref.dxn, true, () => {\n currentCallback?.();\n }) as T | undefined,\n };\n }, [space, ref.dxn.toString()]);\n\n return useSyncExternalStore<T | undefined>(subscribe, getSnapshot);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, Fragment, useEffect, useState } from 'react';\n\nimport { type Tool } from '@dxos/ai';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { type Ref } from '@dxos/echo';\nimport { FunctionType } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { Filter, type Space, useQuery } from '@dxos/react-client/echo';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type AiChatProcessor } from '../../hooks';\nimport { meta } from '../../meta';\nimport { createToolsFromService } from '../../tools';\nimport { ServiceType } from '../../types';\n\nexport type ToolboxProps = ThemedClassName<{\n services?: { service: ServiceType; tools: Tool[] }[];\n functions?: FunctionType[];\n // TODO(burdon): Combine into single array.\n blueprints?: readonly Ref.Ref<Blueprint.Blueprint>[];\n activeBlueprints?: readonly Ref.Ref<Blueprint.Blueprint>[];\n}>;\n\nexport const Toolbox = ({ classNames, functions, services, blueprints, activeBlueprints }: ToolboxProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className={mx('flex flex-col overflow-y-auto box-content', classNames)}>\n {blueprints && blueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={blueprints.map(({ target }) => ({\n name: target?.name ?? '',\n description: target?.description ?? '',\n subitems: target?.tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),\n }))}\n />\n )}\n\n {activeBlueprints && activeBlueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={activeBlueprints.map(({ target }) => ({\n name: target?.name ?? '',\n description: target?.description ?? '',\n subitems: target?.tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),\n }))}\n />\n )}\n\n {services && services.length > 0 && (\n <Section\n title='Services'\n items={services.map(({ service: { serviceId, name, description }, tools }) => ({\n name: name ?? serviceId,\n description,\n subitems: tools.map(({ name, description }) => ({ name: `∙ ${name}`, description })),\n }))}\n />\n )}\n\n {functions && functions.length > 0 && (\n <Section title='Functions' items={functions.map(({ name, description }) => ({ name, description }))} />\n )}\n\n {!blueprints?.length && !activeBlueprints?.length && !services?.length && !functions?.length && (\n <div>{t('no tools')}</div>\n )}\n </div>\n );\n};\n\nconst Section: FC<{\n title: string;\n items: { name: string; description?: string; subitems?: { name: string; description?: string }[] }[];\n striped?: boolean;\n}> = ({ title, items, striped }) => {\n const stripeClassNames = 'odd:bg-neutral-50 dark:odd:bg-neutral-800';\n const gridClassNames = 'grid grid-cols-[8rem_1fr]';\n const subGridClassNames = mx('col-span-full grid grid-cols-subgrid text-xs px-2', striped && stripeClassNames);\n\n return (\n <div>\n <h1 className='px-2 text-sm'>{title}</h1>\n <div className={gridClassNames}>\n {items.map(({ name, description, subitems }, i) => (\n <Fragment key={i}>\n {name && (\n <div className={subGridClassNames}>\n <div className='truncate text-primary-500'>{name}</div>\n <div className='line-clamp-2'>{description}</div>\n </div>\n )}\n {subitems?.map(({ name, description }, i) => (\n <div key={i} className={mx(subGridClassNames, striped && stripeClassNames)}>\n <div className='truncate'>{name}</div>\n <div className='line-clamp-3 text-subdued'>{description}</div>\n </div>\n ))}\n </Fragment>\n ))}\n </div>\n </div>\n );\n};\n\nexport type ToolboxContainerProps = ThemedClassName<{\n space?: Space;\n processor?: AiChatProcessor;\n}>;\n\nexport const ToolboxContainer = ({ classNames, space, processor }: ToolboxContainerProps) => {\n // Registered services.\n const services = useQuery(space, Filter.type(ServiceType));\n const [serviceTools, setServiceTools] = useState<{ service: ServiceType; tools: Tool[] }[]>([]);\n useEffect(() => {\n log('creating service tools...', { services: services.length });\n queueMicrotask(async () => {\n const tools = await Promise.all(\n services.map(async (service) => ({ service, tools: await createToolsFromService(service) })),\n );\n\n setServiceTools(tools);\n });\n }, [services]);\n\n // Deployed functions.\n const functions = useQuery(space, Filter.type(FunctionType));\n\n return (\n <Toolbox\n classNames={classNames}\n blueprints={processor?.context.blueprints.value}\n services={serviceTools}\n functions={functions}\n />\n );\n};\n\nconst safeToolId = (name: string) => {\n return name.split('_').pop();\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// ISSUE(burdon): deprecated types: ToolResult\n\nimport { type ExecutableTool, ToolResult, createTool } from '@dxos/ai';\nimport { Type } from '@dxos/echo';\nimport { getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';\nimport { type FunctionType } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { type SpaceId } from '@dxos/react-client/echo';\nimport { getMeta } from '@dxos/react-client/echo';\n\n// TODO(burdon): Move to @dxos/ai.\nexport const convertFunctionToTool = (\n fn: FunctionType,\n edgeUrl: string,\n spaceId?: SpaceId | undefined,\n): ExecutableTool | undefined => {\n if (!fn.description || !fn.inputSchema) {\n return undefined;\n }\n const existingFunctionUrl = getUserFunctionUrlInMetadata(getMeta(fn));\n if (!existingFunctionUrl) {\n return undefined;\n }\n\n const url = getInvocationUrl(existingFunctionUrl, edgeUrl, { spaceId });\n\n // TODO(burdon): Should be DXN?\n return createTool('user-function', {\n name: fn.name,\n description: fn.description,\n schema: Type.toEffectSchema(fn.inputSchema),\n execute: async (input) => {\n log.info('execute function tool', { name: fn.name, url, input });\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(input),\n });\n\n return ToolResult.Success(await response.text());\n },\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// ISSUE(burdon): tools\n// @ts-ignore\n\nimport { Schema } from 'effect';\nimport jsonpointer from 'jsonpointer';\nimport { type OpenAPIV2, type OpenAPIV3_1 } from 'openapi-types';\n\nimport { type ExecutableTool, ToolResult, createRawTool } from '@dxos/ai';\nimport { Type } from '@dxos/echo';\nimport { normalizeSchema } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { deepMapValues } from '@dxos/util';\n\nimport type { ApiAuthorization, ServiceType } from '../types';\n\nexport type CreateToolsFromApiOptions = {\n authorization?: ApiAuthorization;\n instructions?: string;\n};\n\nexport const createToolsFromService = async (service: ServiceType): Promise<ExecutableTool[]> => {\n invariant(service.interfaces?.length === 1 && service.interfaces[0].kind === 'api');\n const iface = service.interfaces[0];\n invariant(iface.schemaUrl);\n invariant(iface.schemaUrl);\n return createToolsFromApi(iface.schemaUrl, { authorization: iface.authorization });\n};\n\nexport const createToolsFromApi = async (\n url: string,\n options?: CreateToolsFromApiOptions,\n): Promise<ExecutableTool[]> => {\n const res = await fetch(url);\n const spec = (await res.json()) as OpenAPIV2.Document;\n log('spec', { spec });\n\n const tools: ExecutableTool[] = [];\n for (const [path, pathItem] of Object.entries(spec.paths)) {\n if (typeof pathItem !== 'object') {\n continue;\n }\n\n const { ...methods } = pathItem;\n for (const [method, m] of Object.entries(methods)) {\n const methodItem: OpenAPIV2.OperationObject = m as OpenAPIV2.OperationObject;\n log('methodItem', { path, method, methodItem });\n\n const parametersResolved: OpenAPIV2.ParameterObject[] =\n methodItem.parameters?.map((parameter: any) => {\n const resolved = resolveJsonSchema(parameter, spec);\n return resolved;\n }) ?? [];\n\n const inputSchema: Type.JsonSchema = {\n type: 'object',\n properties: {},\n };\n\n const endpointParameters: OpenAPIV2.ParameterObject[] = [];\n for (const parameter of parametersResolved) {\n log('parameter', { parameter });\n\n if (\n options?.authorization?.type === 'api-key' &&\n options.authorization.placement.type === 'query' &&\n parameter.in === 'query' &&\n parameter.name === options.authorization.placement.name\n ) {\n continue;\n }\n\n endpointParameters.push(parameter);\n\n if (parameter.schema) {\n inputSchema.properties![parameter.name] = normalizeSchema(parameter.schema);\n } else if (typeof parameter.type === 'string') {\n const { name, in: _in, required, ...schema } = parameter;\n inputSchema.properties![name] = normalizeSchema(schema);\n if (required) {\n inputSchema.required ??= [];\n inputSchema.required.push(name);\n }\n }\n }\n\n log('inputSchema', { inputSchema });\n Schema.validateSync(Type.JsonSchema)(inputSchema);\n\n const description = methodItem.description ?? methodItem.summary;\n if (!description) {\n log.warn('no description', { path, method });\n continue;\n }\n\n const endpoint: EndpointDescriptor = {\n document: spec,\n path,\n method,\n parameters: endpointParameters,\n authorization: options?.authorization,\n };\n\n tools.push(\n // TODO(burdon): Namespace?\n createRawTool('openapi', {\n name: getToolName(path, method, methodItem),\n description: options?.instructions ? `${options.instructions}\\n\\n${description}` : description,\n parameters: inputSchema,\n execute: async (input) => {\n const response = await callApiEndpoint(endpoint, input);\n return ToolResult.Success(response);\n },\n }),\n );\n }\n }\n\n return tools;\n};\n\nconst getToolName = (path: string, method: string, methodItem: OpenAPIV2.OperationObject) => {\n if (methodItem.operationId) {\n return methodItem.operationId;\n }\n\n // Generate a name from the path and method.\n let name = `${method.toLowerCase()}_${path.replaceAll(/[{}/]/g, '_')}`;\n while (name.length > MAX_TOOL_NAME_LENGTH) {\n const lengthBefore = name.length;\n\n for (const word of GENERIC_WORDS) {\n if (name.includes(word)) {\n name = name.replace(word, '');\n break;\n }\n }\n name = name.replaceAll('__', '_').replace(/_$/, '');\n\n const lengthAfter = name.length;\n if (lengthBefore === lengthAfter) {\n break;\n }\n }\n name = name.replaceAll('__', '_').replace(/_$/, '').replace(/^_/, '');\n\n return name.slice(0, MAX_TOOL_NAME_LENGTH);\n};\n\nconst MAX_TOOL_NAME_LENGTH = 64;\nconst GENERIC_WORDS = [\n 'services',\n 'service',\n 'api',\n 'rest',\n 'endpoint',\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'head',\n 'options',\n 'trace',\n 'service',\n 'api',\n 'endpoint',\n];\n\ntype EndpointDescriptor = {\n document: OpenAPIV3_1.Document | OpenAPIV2.Document;\n path: string;\n method: string;\n parameters: OpenAPIV2.ParameterObject[];\n authorization?: ApiAuthorization;\n};\n\nconst callApiEndpoint = async (endpoint: EndpointDescriptor, input: any) => {\n log.info('endpoint', { method: endpoint.method, name: endpoint.path, input });\n\n let url = getEndpointUrl(endpoint);\n const request: RequestInit = {\n method: endpoint.method,\n headers: {},\n };\n const query = new URLSearchParams();\n let body: any;\n for (const parameter of endpoint.parameters) {\n if (input[parameter.name] === undefined) {\n continue;\n }\n\n switch (parameter.in) {\n case 'header': {\n if (parameter.example) {\n (request.headers as any)[parameter.name] = parameter.default;\n }\n break;\n }\n case 'path': {\n url = url.replace(`{${parameter.name}}`, encodeURIComponent(input[parameter.name]));\n break;\n }\n case 'body': {\n const value = input[parameter.name];\n\n // Client-side validation\n const effectSchema = Type.toEffectSchema(parameter.schema);\n Schema.validateSync(effectSchema)(value);\n\n if (body) {\n throw new Error(`Duplicate body parameter: ${parameter.name}`);\n }\n body = value;\n break;\n }\n case 'query': {\n query.set(parameter.name, input[parameter.name]);\n break;\n }\n }\n }\n\n if (\n (endpoint.authorization?.type === 'api-key' && endpoint.authorization.placement.type === 'authorization-header') ||\n endpoint.authorization?.type === 'oauth'\n ) {\n (request.headers as any).Authorization = await resolveAuthorization(endpoint.authorization);\n } else if (endpoint.authorization?.type === 'api-key' && endpoint.authorization.placement.type === 'query') {\n query.set(endpoint.authorization.placement.name, endpoint.authorization.key);\n }\n\n if (query.size > 0) {\n url += `?${query.toString()}`;\n }\n\n if (body) {\n request.body = JSON.stringify(body);\n (request.headers as any)['Content-Type'] = 'application/json';\n }\n\n log.info('request', { url, request });\n const response = await fetch(url, request);\n\n log.info('response', { ok: response.ok, status: response.status, statusText: response.statusText });\n\n if (response.ok) {\n const contentType = response.headers.get('Content-Type');\n if (contentType?.includes('application/json')) {\n return await response.json();\n } else {\n return await response.text();\n }\n } else {\n if (response.headers.get('Content-Type')?.includes('application/json')) {\n const responseBody = await response.text();\n let error: any;\n try {\n error = JSON.parse(responseBody);\n } catch {\n error = responseBody;\n }\n log.error('error', { error });\n throw new Error(error.message);\n } else {\n const error = await response.text();\n log.error('error', { error });\n throw new Error(error);\n }\n }\n};\n\nconst getEndpointUrl = (endpoint: EndpointDescriptor) => {\n let url = '';\n if (isV3_1(endpoint.document) && endpoint.document.servers && endpoint.document.servers.length > 0) {\n url = endpoint.document.servers[0].url;\n } else {\n invariant(!isV3_1(endpoint.document));\n url = `${endpoint.document.schemes?.[0] ?? 'https'}://${endpoint.document.host}`;\n }\n\n if (!isV3_1(endpoint.document) && endpoint.document.basePath) {\n url += endpoint.document.basePath;\n }\n\n url += endpoint.path;\n\n return url;\n};\n\nexport const resolveAuthorization = async (authorization: ApiAuthorization): Promise<string> => {\n switch (authorization.type) {\n case 'api-key': {\n invariant(authorization.placement.type === 'authorization-header');\n return `Bearer ${authorization.key}`;\n }\n case 'oauth': {\n const response = await fetch(authorization.tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: `grant_type=${authorization.grantType}&client_id=${authorization.clientId}&client_secret=${authorization.clientSecret}`,\n });\n const data = await response.json();\n return `Bearer ${data.access_token}`;\n }\n default: {\n throw new Error(`Unknown authorization type: ${(authorization as any).type}`);\n }\n }\n};\n\n/**\n * Resolves all $ref properties in a JSON schema.\n * Doesn't assume the structure of the schema.\n * The function looks from $ref properties in the schema and resolves them to their values in the base object.\n */\nconst resolveJsonSchema = (schema: any, base: any) => {\n return deepMapValues(schema, (value, recurse) => {\n if (typeof value === 'object' && value !== null && '$ref' in value && typeof value.$ref === 'string') {\n if (value.$ref.startsWith('#')) {\n const resolved = jsonpointer.get(base, value.$ref.slice(1));\n if (resolved) {\n return recurse(resolved);\n } else {\n log.warn('unresolved', { ref: value.$ref, base });\n }\n }\n }\n return recurse(value);\n });\n};\n\nconst isV3_1 = (document: OpenAPIV3_1.Document | OpenAPIV2.Document): document is OpenAPIV3_1.Document => {\n return (document as any).openapi === '3.0.1';\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { Result, 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 { DXN, Obj, Ref } from '@dxos/echo';\nimport { log } from '@dxos/log';\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, useTranslation } from '@dxos/react-ui';\nimport { ChatEditor, type ChatEditorController, type ChatEditorProps, references } from '@dxos/react-ui-chat';\nimport { type ScrollController } from '@dxos/react-ui-components';\nimport { mx } from '@dxos/react-ui-theme';\nimport { DataType } from '@dxos/schema';\nimport { isNotFalsy } from '@dxos/util';\n\nimport { type AiChatProcessor, useBlueprintHandlers, useReferencesProvider } from '../../hooks';\nimport { meta } from '../../meta';\nimport { type Assistant } from '../../types';\nimport {\n ChatActions,\n type ChatActionsProps,\n ChatOptions,\n ChatPresets,\n type ChatPresetsProps,\n ChatReferences,\n type ChatReferencesProps,\n ChatStatusIndicator,\n} from '../ChatPrompt';\nimport { ChatThread as NativeChatThread, type ChatThreadProps as NativeChatThreadProps } from '../ChatThread';\n\nimport { type ChatEvent } from './events';\n\n// TODO(burdon): Factor out.\nconst Endcap = ({ children }: PropsWithChildren) => {\n return (\n <div className='grid w-[var(--rail-action)] h-[var(--rail-action)] items-center justify-center'>{children}</div>\n );\n};\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\n// TODO(burdon): Inject via effect layer.\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\n// NOTE: Do not export.\nconst [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\n const messages = useMemo(() => {\n const queueMessages = queue?.objects?.filter(Obj.instanceOf(DataType.Message)) ?? [];\n return Result.match(pending, {\n onInitial: () => queueMessages,\n onSuccess: (pending) => Array.dedupeWith([...queueMessages, ...pending.value], (a, b) => a.id === b.id),\n onFailure: () => queueMessages,\n });\n }, [queue?.objects, pending]);\n\n // TODO(burdon): Replace with tool to select artifact.\n // const { dispatchPromise: dispatch } = useIntentDispatcher();\n // useEffect(() => {\n // if (!processor?.streaming.value && queue?.objects) {\n // const message = queue.objects[queue.objects.length - 1];\n // if (dispatch && space && chat && message) {\n // void dispatch(\n // createIntent(CollaborationActions.InsertContent, {\n // target: artifact,\n // object: Ref.fromDXN(new DXN(DXN.kind.QUEUE, [...chat.queue.dxn.parts, message.id])),\n // label: 'View proposal',\n // }),\n // );\n // }\n // }\n // }, [queue, processor?.streaming.value]);\n\n // Events.\n const event = useMemo(() => new Event<ChatEvent>(), []);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'toggle-debug': {\n setDebug((current) => {\n const debug = !current;\n log.info('toggle-debug', { debug });\n // log.config({ filter: debug ? 'assistant:debug' : 'info' });\n return debug;\n });\n break;\n }\n\n case 'submit': {\n if (!streaming) {\n void processor.request(event.text);\n }\n break;\n }\n\n case 'cancel': {\n void processor.cancel();\n break;\n }\n\n default: {\n onEvent?.(event);\n }\n }\n });\n }, [event, onEvent, processor, streaming]);\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 processor={processor}\n messages={messages}\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// Thread\n//\n\ntype ChatThreadProps = Omit<NativeChatThreadProps, 'identity' | 'space' | 'messages' | 'tools' | 'onEvent'>;\n\nconst ChatThread = (props: ChatThreadProps) => {\n const { debug, event, space, messages } = useChatContext(ChatThread.displayName);\n const identity = useIdentity();\n\n const scrollerRef = useRef<ScrollController>(null);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'submit':\n case 'scroll-to-bottom':\n scrollerRef.current?.scrollToBottom('smooth');\n break;\n }\n });\n }, [event]);\n\n if (!identity) {\n return null;\n }\n\n return (\n <NativeChatThread\n {...props}\n ref={scrollerRef}\n debug={debug}\n identity={identity}\n space={space}\n messages={messages}\n onEvent={(ev) => event.emit(ev)}\n />\n );\n};\n\nChatThread.displayName = 'Chat.Thread';\n\n//\n// Prompt\n//\n\ntype ChatPromptProps = ThemedClassName<\n Pick<ChatEditorProps, 'placeholder'> &\n Omit<ChatPresetsProps, 'onChange'> & {\n expandable?: boolean;\n online?: boolean;\n onChangeOnline?: (online: boolean) => void;\n onChangePreset?: ChatPresetsProps['onChange'];\n }\n>;\n\nconst ChatPrompt = ({\n classNames,\n placeholder,\n expandable,\n online,\n presets,\n preset,\n onChangePreset,\n onChangeOnline,\n}: ChatPromptProps) => {\n const { t } = useTranslation(meta.id);\n const { space, event, processor } = useChatContext(ChatPrompt.displayName);\n const streaming = useRxValue(processor.streaming);\n const error = useRxValue(processor.error).pipe(Option.getOrUndefined);\n\n const [active, setActive] = useState(false);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'record-start':\n setActive(true);\n break;\n case 'record-stop':\n setActive(false);\n break;\n }\n });\n }, [event]);\n\n const editorRef = useRef<ChatEditorController>(null);\n\n // TODO(burdon): Configure capability in TranscriptionPlugin.\n const { recording } = useVoiceInput({\n active,\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 (!streaming) {\n event.emit({ type: 'submit', text });\n return true;\n }\n },\n [streaming, event],\n );\n\n const handleEvent = useCallback<NonNullable<ChatActionsProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n const handleUpdateReferences = useCallback<NonNullable<ChatReferencesProps['onUpdate']>>((dxns) => {\n log.info('update', { dxns });\n void processor.context.bind({ objects: dxns.map((dxn) => Ref.fromDXN(DXN.parse(dxn))) });\n }, []);\n\n const { onUpdateBlueprint } = useBlueprintHandlers({\n space,\n context: processor.context,\n blueprintRegistry: processor.blueprintRegistry,\n });\n\n return (\n <div\n className={mx(\n 'is-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] grid-rows-[min-content_min-content_min-content]',\n classNames,\n )}\n >\n <Endcap>\n <ChatStatusIndicator preset={preset} error={error} processing={streaming} />\n </Endcap>\n\n <ChatEditor\n ref={editorRef}\n autoFocus\n lineWrapping\n classNames='col-span-2 pis-1 pbs-2'\n placeholder={placeholder ?? t('prompt placeholder')}\n extensions={extensions}\n onSubmit={handleSubmit}\n />\n\n <div />\n <ChatReferences\n classNames='col-span-2 flex pis-1 items-center'\n space={space}\n context={processor.context}\n onUpdate={handleUpdateReferences}\n />\n\n <ChatOptions\n blueprintRegistry={processor.blueprintRegistry}\n context={processor.context}\n onUpdateBlueprint={onUpdateBlueprint}\n />\n\n <ChatActions\n classNames='col-span-2'\n microphone={true}\n recording={recording}\n processing={streaming}\n onEvent={handleEvent}\n >\n <>\n <div className='grow' />\n {presets && <ChatPresets preset={preset} presets={presets} onChange={onChangePreset} />}\n {online !== undefined && (\n <Input.Root>\n <Input.Switch classNames='mis-2 mie-2' checked={online} onCheckedChange={onChangeOnline} />\n </Input.Root>\n )}\n </>\n </ChatActions>\n </div>\n );\n};\n\nChatPrompt.displayName = 'Chat.Prompt';\n\n//\n// Chat\n//\n\nexport const Chat = {\n Root: ChatRoot,\n Thread: ChatThread,\n Prompt: ChatPrompt,\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 {(processing && (\n <IconButton\n disabled={!processing}\n classNames='px-1.5'\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 <IconButton\n disabled\n classNames='px-1.5'\n variant='ghost'\n size={5}\n icon='ph--arrow-down--regular'\n iconOnly\n label={t('button scroll down')}\n onClick={() => onEvent?.({ type: 'scroll-to-bottom' })}\n />\n )}\n\n {microphone && (\n <IconButton\n disabled={!processing}\n classNames={mx('px-1.5', 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, { useMemo } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { DropdownMenu, Icon, IconButton, useTranslation } from '@dxos/react-ui';\n\nimport { useBlueprints } from '../../hooks';\nimport { meta } from '../../meta';\n\nexport type ChatOptionsProps = {\n context?: AiContextBinder;\n blueprintRegistry?: Blueprint.Registry;\n onUpdateBlueprint?: (key: string, isActive: boolean) => void;\n};\n\n/**\n * Manages the runtime context for the chat.\n */\n// TODO(burdon): Refactor this as a Dialog (and move the object selector here also).\nexport const ChatOptions = ({ context, blueprintRegistry, onUpdateBlueprint }: ChatOptionsProps) => {\n const { t } = useTranslation(meta.id);\n\n // TODO(burdon): Possibly constrain query as registry grows.\n const blueprints = useMemo(() => blueprintRegistry?.query() ?? [], [blueprintRegistry]);\n\n const activeBlueprints = useBlueprints({ context });\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton icon='ph--plus--regular' variant='ghost' size={5} iconOnly label={t('button add blueprint')} />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content side='left'>\n <DropdownMenu.Viewport>\n {blueprints.map((blueprint) => (\n <DropdownMenu.CheckboxItem\n key={blueprint.key}\n checked={activeBlueprints?.get(blueprint.key) !== undefined}\n onCheckedChange={(checked) => onUpdateBlueprint?.(blueprint.key, !!checked)}\n classNames='gap-2'\n >\n <div className='flex-1 min-is-0'>{blueprint.name}</div>\n <DropdownMenu.ItemIndicator asChild>\n <Icon icon='ph--check--regular' size={4} />\n </DropdownMenu.ItemIndicator>\n </DropdownMenu.CheckboxItem>\n ))}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.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.Content>\n </Select.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { type ThemedClassName, useAsyncState, useTranslation } from '@dxos/react-ui';\nimport { TagPicker, type TagPickerItemData, type TagPickerOptions } from '@dxos/react-ui-tag-picker';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nexport type ChatReferencesProps = ThemedClassName<{\n space: Space;\n context: AiContextBinder;\n onUpdate?: (dxns: string[]) => void;\n}>;\n\nexport const ChatReferences = ({ classNames, space, context, onUpdate }: ChatReferencesProps) => {\n const { t } = useTranslation(meta.id);\n\n const [items] = useAsyncState<TagPickerItemData[]>(async () => {\n const objects = await Ref.Array.loadAll(context.objects.value ?? []);\n return objects\n .filter(isNonNullable)\n .map((obj) => ({ id: Obj.getDXN(obj).toString(), label: Obj.getLabel(obj) ?? Obj.getTypename(obj) ?? obj.id }));\n }, [context]);\n\n const handleSearch = useCallback<NonNullable<TagPickerOptions['onSearch']>>(\n (text, dxns) => {\n // TODO(burdon): Filter by Item tag (e.g., exclude \"contacts\") and Query by object label.\n // TODO(burdon): Change to Filter.text().\n const objects = space.db.query(Filter.everything()).runSync();\n return objects\n .map(({ object }) => ({ id: Obj.getDXN(object).toString(), label: Obj.getLabel(object) ?? '' }))\n .filter(({ id, label }) => !dxns.includes(id) && label.toLocaleLowerCase().includes(text.toLocaleLowerCase()));\n },\n [space],\n );\n\n return (\n <TagPicker\n classNames={mx('h-[1.75rem] text-sm', classNames)}\n mode='multi-select'\n placeholder={t('context objects placeholder')}\n items={items}\n onSearch={handleSearch}\n onUpdate={onUpdate}\n />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { Icon, Tooltip, useTimeout } from '@dxos/react-ui';\nimport { Spinner } from '@dxos/react-ui-sfx';\nimport { errorText } from '@dxos/react-ui-theme';\n\nexport type ChatStatusIndicatorProps = {\n preset?: string;\n error?: Error;\n processing?: boolean;\n};\n\nexport const ChatStatusIndicator = ({ preset, error, processing }: ChatStatusIndicatorProps) => {\n const [init, setInit] = useState(false);\n useEffect(() => {\n setInit(false);\n }, [preset]);\n useTimeout(\n async () => {\n setInit(true);\n },\n 1_500,\n [preset],\n );\n\n if (error) {\n return (\n <Tooltip.Trigger content={error.message} delayDuration={0}>\n <Icon icon='ph--warning-circle--regular' classNames={errorText} size={5} />\n </Tooltip.Trigger>\n );\n }\n\n return <Spinner state={!init ? 'flash' : processing ? 'spin' : 'pulse'} />;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type CSSProperties, forwardRef, useMemo } from 'react';\n\nimport { PublicKey } from '@dxos/keys';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { ScrollContainer, type ScrollController } 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 { ChatMessage, type ChatMessageProps } from './ChatMessage';\nimport { messageReducer } from './reducer';\n\nexport type ChatThreadProps = ThemedClassName<\n {\n identity?: Identity;\n messages?: DataType.Message[];\n collapse?: boolean;\n } & Pick<ChatMessageProps, 'debug' | 'space' | 'tools' | 'onEvent'>\n>;\n\nexport const ChatThread = forwardRef<ScrollController, ChatThreadProps>(\n ({ classNames, identity, messages, collapse = true, ...props }, forwardedRef) => {\n const userHue = useMemo(() => {\n return identity?.profile?.data?.hue || keyToFallback(identity?.identityKey ?? PublicKey.random()).hue;\n }, [identity]);\n\n // TODO(dmaretskyi): This needs to be a separate type: `id` is not a valid ObjectId, this needs to accommodate messageId for deletion.\n const { messages: filteredMessages = [] } = useMemo(() => {\n if (collapse) {\n return (messages ?? []).reduce<{ messages: DataType.Message[]; current?: DataType.Message }>(messageReducer, {\n messages: [],\n });\n } else {\n return { messages: messages ?? [] };\n }\n }, [messages, collapse]);\n\n return (\n <ScrollContainer ref={forwardedRef} classNames={classNames} fade>\n <div\n role='none'\n className={mx('flex flex-col gap-2', filteredMessages.length > 0 && 'pbs-4 pbe-4')}\n style={{ '--user-fill': `var(--dx-${userHue}Fill)` } as CSSProperties}\n >\n {filteredMessages.map((message) => (\n <ChatMessage key={message.id} message={message} {...props} />\n ))}\n </div>\n </ScrollContainer>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, Fragment, type PropsWithChildren } from 'react';\n\nimport { type Tool } from '@dxos/ai';\nimport { ErrorBoundary, Surface } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, DXN_ECHO_REGEXP } from '@dxos/keys';\nimport { type Space } from '@dxos/react-client/echo';\nimport { Button, IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport {\n MarkdownViewer,\n ToggleContainer as NativeToggleContainer,\n type ToggleContainerProps,\n} from '@dxos/react-ui-components';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type ContentBlock, type DataType } from '@dxos/schema';\nimport { safeParseJson } from '@dxos/util';\n\nimport { meta } from '../../meta';\nimport { type ChatEvent } from '../Chat';\nimport { Toolbox } from '../Toolbox';\n\nimport { ObjectLink } from './Link';\nimport { Json, ToolBlock, isToolMessage } from './ToolBlock';\n\nconst panelClasses = 'flex flex-col is-full bg-activeSurface rounded-sm';\nconst marginClasses = 'pie-4 pis-4';\nconst paddingClasses = 'pis-2 pie-2 pbs-0.5 pbe-0.5';\n\nexport type ChatMessageProps = ThemedClassName<{\n debug?: boolean;\n space?: Space;\n message: DataType.Message;\n tools?: Tool[];\n onEvent?: (event: ChatEvent) => void;\n onDelete?: () => void;\n}>;\n\nexport const ChatMessage = ({ classNames, debug, space, message, tools, onEvent, onDelete }: ChatMessageProps) => {\n const { t } = useTranslation(meta.id);\n const {\n sender: { role },\n blocks,\n } = message;\n\n // TODO(burdon): Consolidate tools upstream?\n if (isToolMessage(message)) {\n return (\n <MessageItem classNames={mx(classNames, 'animate-[fadeIn_0.5s]')}>\n <ToolBlock classNames={panelClasses} message={message} tools={tools} />\n </MessageItem>\n );\n }\n\n return (\n <>\n {debug && (\n <div className={mx('flex justify-end text-subdued', marginClasses)}>\n <pre className='text-xs'>{JSON.stringify({ created: message.created })}</pre>\n </div>\n )}\n\n {blocks.map((block, idx) => {\n // TODO(burdon): Filter empty messages.\n if (block._tag === 'text' && block.text.replaceAll(/\\s+/g, '').length === 0) {\n return null;\n }\n\n const Component: ContentBlockComponent = components[block._tag] ?? components.default!;\n if (!Component) {\n return null;\n }\n\n return (\n <Fragment key={idx}>\n <MessageItem classNames={classNames} user={block._tag === 'text' && role === 'user'}>\n <ErrorBoundary data={block}>\n <Component space={space} block={block} onEvent={onEvent} />\n </ErrorBoundary>\n </MessageItem>\n {debug && (\n <div className={mx('flex justify-end text-subdued', marginClasses)}>\n <pre className='text-xs'>{JSON.stringify({ block: block._tag })}</pre>\n </div>\n )}\n </Fragment>\n );\n })}\n\n {onDelete && (\n <div className={mx('flex justify-end pbs-2 pbe-2 opacity-50 hover:opacity-100', marginClasses)}>\n <IconButton\n classNames='animate-[fadeIn_0.5s]'\n icon='ph--trash--regular'\n iconOnly\n label={t('button delete message')}\n onClick={() => onDelete()}\n />\n </div>\n )}\n </>\n );\n};\n\ntype ContentBlockProps = {\n space?: Space;\n block: ContentBlock.Any;\n onEvent?: (event: ChatEvent) => void;\n};\n\ntype ContentBlockComponent = FC<ContentBlockProps>;\n\n/**\n * Components for rendering content blocks.\n */\nconst components: Partial<Record<ContentBlock.Any['_tag'] | 'default', ContentBlockComponent>> = {\n //\n // Text\n //\n ['text' as const]: ({ space, block }) => {\n invariant(block._tag === 'text');\n return (\n <MarkdownViewer\n content={preprocessTextContent(block.text)}\n components={{\n a: ({ node: { properties }, children, href, ...props }) => {\n if (space && typeof properties?.href === 'string' && properties?.href?.startsWith('dxn')) {\n try {\n // TODO(burdon): Check valid length (since serialized).\n const dxn = DXN.parse(properties.href);\n return <ObjectLink space={space} dxn={dxn} />;\n } catch {}\n }\n\n // TODO(burdon): Can we revert to the default handler?\n return (\n <a\n href={href}\n className='text-primary-500 hover:text-primary-500' // TODO(burdon): Token.\n target='_blank'\n rel='noopener noreferrer'\n {...props}\n >\n {children}\n </a>\n );\n },\n }}\n />\n );\n },\n\n //\n // Suggest\n //\n ['suggest' as const]: ({ block, onEvent }) => {\n const { t } = useTranslation(meta.id);\n invariant(block._tag === 'suggest');\n return (\n <IconButton\n icon='ph--lightning--regular'\n label={block.text}\n title={t('button suggest')}\n onClick={() => onEvent?.({ type: 'submit', text: block.text })}\n />\n );\n },\n\n //\n // Select\n //\n ['select' as const]: ({ block, onEvent }) => {\n const { t } = useTranslation(meta.id);\n invariant(block._tag === 'select');\n return (\n <div className='flex flex-wrap gap-1'>\n {block.options.map((option, idx) => (\n <Button\n classNames={'animate-[fadeIn_0.5s] rounded-sm text-sm'}\n key={idx}\n onClick={() => onEvent?.({ type: 'submit', text: option })}\n title={t('button select option')}\n >\n {option}\n </Button>\n ))}\n </div>\n );\n },\n\n //\n // Toolkit\n //\n ['toolkit' as const]: ({ block }) => {\n invariant(block._tag === 'toolkit');\n return (\n <ToggleContainer title='Toolbox' classNames={panelClasses} defaultOpen>\n <Toolbox classNames={marginClasses} />\n </ToggleContainer>\n );\n },\n\n //\n // JSON\n //\n ['json' as const]: ({ block, onEvent }) => {\n invariant(block._tag === 'json');\n\n // TODO(burdon): Disposition is deprecated.\n switch (block.disposition) {\n case 'graph': {\n return (\n <div className='flex flex-wrap gap-1'>\n <Surface\n role='card'\n data={{ subject: JSON.parse(block.data ?? '{}') }}\n limit={1}\n fallback={<div className='font-mono text-xs text-pre'>{block.data}</div>}\n />\n {onEvent && (\n <IconButton\n icon='ph--plus--regular'\n label='Add to graph'\n onClick={() => onEvent?.({ type: 'add', object: JSON.parse(block.data ?? '{}') })}\n />\n )}\n </div>\n );\n }\n\n default: {\n return (\n <ToggleContainer title={block.disposition ?? block._tag}>\n <Json data={safeParseJson(block.data ?? block)} />\n </ToggleContainer>\n );\n }\n }\n },\n\n //\n // Fallback\n //\n default: ({ block }) => {\n return (\n <ToggleContainer title={block._tag}>\n <Json data={block} />\n </ToggleContainer>\n );\n },\n};\n\n/**\n * Wrapper for each message.\n */\nconst MessageItem = ({ classNames, children, user }: ThemedClassName<PropsWithChildren<{ user?: boolean }>>) => {\n if (!children) {\n return null;\n }\n\n return (\n <div role='list-item' className={mx('flex is-full', user && 'justify-end', marginClasses, classNames)}>\n <div className={mx(user ? ['rounded-sm', 'bg-[--user-fill] text-accentSurfaceText', paddingClasses] : 'is-full')}>\n {children}\n </div>\n </div>\n );\n};\n\nconst ToggleContainer = (props: ToggleContainerProps) => {\n return <NativeToggleContainer {...props} classNames={mx(panelClasses, props.classNames)} />;\n};\n\nexport const renderObjectLink = (obj: Obj.Any) => `[${Obj.getLabel(obj)}](${Obj.getDXN(obj).toString()})`;\n\n// TODO(burdon): Move to parser.\nconst preprocessTextContent = (content: string) =>\n content.replaceAll(new RegExp(DXN_ECHO_REGEXP, 'g'), (_, dxn) => `<${dxn}>`);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Space } from '@dxos/client/echo';\nimport { Obj, Ref } from '@dxos/echo';\nimport { type DXN } from '@dxos/keys';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useResolvedRef } from '../../hooks';\n\nexport type ObjectLinkProps = {\n space: Space;\n dxn: DXN;\n};\n\n// TODO(burdon): Factor out.\nexport const ObjectLink = ({ space, dxn }: ObjectLinkProps) => {\n const object = useResolvedRef(space, Ref.fromDXN(dxn));\n const title = Obj.getLabel(object) ?? object?.id ?? dxn.toString();\n\n return (\n <a\n // href={dxn.toString()}\n title={title}\n className={mx(\n // TODO(burdon): Use style for tags.\n 'inline-flex items-center max-w-[16rem] px-1.5 overflow-hidden',\n 'border border-separator rounded whitespace-nowrap text-ellipsis text-primary-500 hover:text-primary-500 hover:border-primary-500 cursor-pointer',\n )}\n target='_blank'\n rel='noopener noreferrer'\n >\n <span className='truncate'>{title}</span>\n </a>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { type AgentStatus, type Tool } from '@dxos/ai';\nimport { type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { NumericTabs, StatusRoll, ToggleContainer } from '@dxos/react-ui-components';\nimport { type JsonProps, Json as NativeJson } from '@dxos/react-ui-syntax-highlighter';\nimport { type DataType } from '@dxos/schema';\nimport { isNonNullable, isNotFalsy } 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\nconst getToolName = (tool: Tool) => {\n return tool.namespace && tool.function ? `${tool.namespace}:${tool.function}` : tool.name.split('_').pop();\n};\n\nexport type ToolBlockProps = ThemedClassName<{\n message: DataType.Message;\n tools?: Tool[];\n}>;\n\nexport const ToolBlock: FC<ToolBlockProps> = ({ classNames, message, tools }) => {\n const { t } = useTranslation(meta.id);\n const { blocks = [] } = message;\n\n const getToolCaption = (tool?: Tool, status?: AgentStatus) => {\n if (!tool) {\n return t('calling tool label');\n }\n\n return status?.message ?? tool.caption ?? [t('calling label') + getToolName(tool)].join(' ');\n };\n\n let request: { tool: Tool | undefined; block: any } | undefined;\n const toolBlocks = blocks.filter((block) => block._tag === 'toolCall' || block._tag === 'toolResult');\n const items = toolBlocks\n .map((block) => {\n switch (block._tag) {\n case 'toolCall': {\n // TODO(burdon): Skip these updates?\n if (block.pending && request?.block.toolCallId === block.toolCallId) {\n return null;\n }\n\n request = { tool: tools?.find((tool) => tool.name === block.name), block };\n return {\n title: getToolCaption(request.tool, request.block.status),\n block,\n };\n }\n\n case 'toolResult': {\n if (!request || block.error) {\n return {\n title: t('error label'),\n block,\n };\n }\n\n return {\n title: getToolCaption(request.tool, request.block.status),\n block,\n };\n }\n\n default: {\n request = undefined;\n return {\n title: t('error label'),\n block,\n };\n }\n }\n })\n .filter(isNonNullable);\n\n return <ToolContainer classNames={classNames} items={items} />;\n};\n\nexport const ToolContainer: FC<ThemedClassName<{ items: { title: string; block: any }[] }>> = ({\n classNames,\n items,\n}) => {\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 if (index === selected) {\n setOpen(false);\n } else {\n setSelected(index);\n }\n };\n\n const title = useMemo(() => {\n const lines = items.map((item) => item.title).filter(isNotFalsy);\n return <StatusRoll key='status-roll' lines={lines} duration={1_000} autoAdvance />;\n }, [items]);\n\n return (\n <ToggleContainer classNames={['flex flex-col', classNames]} title={title} open={open} onChangeOpen={setOpen}>\n <div className='w-full grid grid-cols-[32px_1fr]'>\n <NumericTabs ref={tabsRef} length={items.length} selected={selected} onSelect={handleSelect} />\n <Json data={items[selected].block} />\n </div>\n </ToggleContainer>\n );\n};\n\nexport const Json = ({ data }: Pick<JsonProps, 'data'>) => (\n <NativeJson data={data} classNames='!p-1 text-xs bg-transparent' />\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type DataType } from '@dxos/schema';\n\n// TODO(burdon): Move to util?\ntype Reducer<R, I> = (acc: R, value: I) => R;\n\n/**\n * Reducer that collapses related message blocks into single messages.\n * For example, combines tool request/response pairs into a single message.\n */\nexport const messageReducer: Reducer<{ messages: DataType.Message[]; current?: DataType.Message }, DataType.Message> = (\n { current, messages },\n message,\n) => {\n let i = 0;\n for (const block of message.blocks) {\n switch (block._tag) {\n case 'toolCall':\n case 'toolResult': {\n if (current) {\n current.blocks.push(block);\n } else {\n current = {\n ...message,\n id: [message.id, i].join('_'),\n blocks: [block],\n };\n messages.push(current);\n }\n break;\n }\n\n case 'text':\n default: {\n current = undefined;\n messages.push({\n ...message,\n id: [message.id, i].join('_'),\n blocks: [block],\n });\n break;\n }\n }\n\n i++;\n }\n\n return { current, messages };\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", "context", "active", "setActive", "useState", "Map", "useSignalEffect", "refs", "value", "t", "setTimeout", "Ref", "Array", "loadAll", "filter", "isNonNullable", "map", "blueprint", "key", "clearTimeout", "useBlueprintHandlers", "space", "blueprintRegistry", "onUpdateBlueprint", "useCallback", "checked", "objects", "db", "query", "Filter", "type", "run", "storedBlueprint", "find", "getByKey", "add", "Obj", "clone", "bind", "make", "unbind", "RegistryContext", "useContext", "useMemo", "useIntentDispatcher", "AiConversation", "log", "fullyQualifiedId", "Registry", "Result", "Rx", "Effect", "Option", "Stream", "pipe", "AiService", "DEFAULT_EDGE_MODEL", "AiSession", "ArtifactDiffResolver", "createSystemPrompt", "Context", "Obj", "runAndForwardErrors", "log", "Filter", "getVersion", "DataType", "AiServiceOverloadedError", "Error", "code", "defaultOptions", "model", "DEFAULT_EDGE_MODEL", "AiChatProcessor", "error", "_observableRegistry", "_session", "_streaming", "streaming", "_pending", "messages", "_services", "_conversation", "_options", "Rx", "make", "Option", "none", "get", "pipe", "map", "session", "Stream", "fromQueue", "blockQueue", "getOrElse", "scan", "acc", "blockOption", "flatMap", "block", "match", "onNone", "onSome", "message", "blocks", "filter", "b", "pending", "some", "Obj", "DataType", "Message", "created", "Date", "toISOString", "sender", "role", "Result", "isSome", "value", "messageQueue", "onInitial", "onSuccess", "onFailure", "_artifactDiffResolver", "resolve", "artifacts", "space", "extensions", "Map", "versions", "Promise", "all", "artifact", "objects", "object", "db", "query", "Filter", "ids", "id", "run", "set", "version", "getVersion", "diff", "JSON", "stringify", "observableRegistry", "Registry", "system", "capabilities", "modelRegistry", "getCapabilities", "createSystemPrompt", "context", "conversation", "blueprintRegistry", "request", "ctx", "Context", "default", "AiSession", "onDispose", "log", "info", "isDisposed", "disposed", "s", "runAndForwardErrors", "prompt", "Effect", "provide", "AiService", "provideService", "ArtifactDiffResolver", "tapErrorCause", "cause", "void", "err", "catch", "Error", "includes", "AiServiceOverloadedError", "cancel", "Schema", "ModelProviders", "ModelProvider", "Schema", "Literal", "createModelLabel", "model", "parts", "split", "length", "AiServicePresets", "provider", "map", "i", "id", "label", "AiToolkit", "Layer", "useMemo", "Capabilities", "useCapabilities", "makeToolExecutionServiceFromFunctions", "makeToolResolverFromFunctions", "ComputeEventLogger", "CredentialsService", "DatabaseService", "LocalFunctionExecutionService", "QueueService", "RemoteFunctionExecutionService", "TracingService", "lazy", "AiService", "lazy", "AppGraphBuilder", "BlueprintDefinition", "EdgeModelResolver", "IntentResolver", "ReactSurface", "Settings", "Toolkit", "useChatServices", "space", "serviceLayer", "useCapabilities", "AssistantCapabilities", "AiServiceLayer", "at", "Layer", "die", "functions", "Capabilities", "Functions", "toolkits", "Toolkit", "handlers", "ToolkitHandler", "useMemo", "allFunctions", "flat", "toolkit", "AiToolkit", "merge", "handlersLayer", "mergeAll", "empty", "makeToolResolverFromFunctions", "makeToolExecutionServiceFromFunctions", "CredentialsService", "layerFromDatabase", "ComputeEventLogger", "layerFromTracing", "pipe", "provideMerge", "DatabaseService", "layer", "db", "notAvailable", "QueueService", "queues", "TracingService", "layerNoop", "LocalFunctionExecutionService", "RemoteFunctionExecutionService", "mockLayer", "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", "handleChangePreset", "useCallback", "find", "onChangePreset", "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", "useMemo", "useSyncExternalStore", "useResolvedRef", "space", "ref", "subscribe", "getSnapshot", "useMemo", "resolver", "db", "graph", "createRefResolver", "currentCallback", "undefined", "cb", "resolveSync", "dxn", "toString", "useSyncExternalStore", "useChatProcessor", "space", "chat", "preset", "services", "blueprintRegistry", "settings", "observableRegistry", "useContext", "RegistryContext", "dispatchPromise", "dispatch", "useIntentDispatcher", "chatId", "useMemo", "fullyQualifiedId", "undefined", "extensions", "pivotId", "conversation", "queue", "target", "AiConversation", "processor", "log", "model", "AiChatProcessor", "Stable", "Object", "freeze", "array", "object", "React", "Fragment", "useEffect", "useState", "FunctionType", "log", "Filter", "useQuery", "useTranslation", "mx", "ToolResult", "createTool", "Type", "getInvocationUrl", "getUserFunctionUrlInMetadata", "log", "getMeta", "Schema", "jsonpointer", "ToolResult", "createRawTool", "Type", "normalizeSchema", "invariant", "log", "deepMapValues", "createToolsFromService", "service", "interfaces", "length", "kind", "iface", "schemaUrl", "createToolsFromApi", "authorization", "url", "options", "res", "fetch", "spec", "json", "tools", "path", "pathItem", "Object", "entries", "paths", "methods", "method", "m", "methodItem", "parametersResolved", "parameters", "map", "parameter", "resolved", "resolveJsonSchema", "inputSchema", "type", "properties", "endpointParameters", "placement", "in", "name", "push", "schema", "_in", "required", "validateSync", "JsonSchema", "description", "summary", "warn", "endpoint", "document", "getToolName", "instructions", "execute", "input", "response", "callApiEndpoint", "Success", "operationId", "toLowerCase", "replaceAll", "MAX_TOOL_NAME_LENGTH", "lengthBefore", "word", "GENERIC_WORDS", "includes", "replace", "lengthAfter", "slice", "info", "getEndpointUrl", "request", "headers", "query", "URLSearchParams", "body", "undefined", "example", "default", "encodeURIComponent", "value", "effectSchema", "toEffectSchema", "Error", "set", "Authorization", "resolveAuthorization", "key", "size", "toString", "JSON", "stringify", "ok", "status", "statusText", "contentType", "get", "text", "responseBody", "error", "parse", "message", "isV3_1", "servers", "schemes", "host", "basePath", "tokenUrl", "grantType", "clientId", "clientSecret", "data", "access_token", "base", "recurse", "$ref", "startsWith", "ref", "openapi", "Toolbox", "classNames", "functions", "services", "blueprints", "activeBlueprints", "t", "useTranslation", "meta", "id", "div", "className", "mx", "length", "Section", "title", "items", "map", "target", "name", "description", "subitems", "tools", "toolId", "safeToolId", "service", "serviceId", "striped", "stripeClassNames", "gridClassNames", "subGridClassNames", "h1", "i", "Fragment", "key", "ToolboxContainer", "space", "processor", "useQuery", "Filter", "type", "ServiceType", "serviceTools", "setServiceTools", "useState", "useEffect", "log", "queueMicrotask", "Promise", "all", "createToolsFromService", "FunctionType", "context", "value", "split", "pop", "Prec", "keymap", "Result", "useRxValue", "createContext", "Array", "Option", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Event", "DXN", "Obj", "Ref", "log", "useVoiceInput", "getSpace", "useQueue", "useIdentity", "Input", "useTranslation", "ChatEditor", "references", "mx", "DataType", "isNotFalsy", "React", "IconButton", "useTranslation", "mx", "ChatActions", "classNames", "children", "microphone", "recording", "processing", "onEvent", "t", "useTranslation", "meta", "id", "React", "div", "className", "mx", "IconButton", "disabled", "variant", "size", "icon", "iconOnly", "label", "onClick", "type", "noTooltip", "onMouseDown", "onMouseUp", "onTouchStart", "onTouchEnd", "React", "useMemo", "DropdownMenu", "Icon", "IconButton", "useTranslation", "ChatOptions", "context", "blueprintRegistry", "onUpdateBlueprint", "t", "useTranslation", "meta", "id", "blueprints", "useMemo", "query", "activeBlueprints", "useBlueprints", "React", "DropdownMenu", "Root", "Trigger", "asChild", "IconButton", "icon", "variant", "size", "iconOnly", "label", "Portal", "Content", "side", "Viewport", "map", "blueprint", "CheckboxItem", "key", "checked", "get", "undefined", "onCheckedChange", "classNames", "div", "className", "name", "ItemIndicator", "Icon", "Arrow", "React", "Select", "ChatPresets", "presets", "preset", "onChange", "React", "Select", "Root", "value", "onValueChange", "TriggerButton", "classNames", "Content", "map", "id", "label", "Option", "key", "React", "useCallback", "Filter", "Obj", "Ref", "useAsyncState", "useTranslation", "TagPicker", "mx", "isNonNullable", "ChatReferences", "classNames", "space", "context", "onUpdate", "t", "useTranslation", "meta", "id", "items", "useAsyncState", "objects", "Ref", "Array", "loadAll", "value", "filter", "isNonNullable", "map", "obj", "Obj", "getDXN", "toString", "label", "getLabel", "getTypename", "handleSearch", "useCallback", "text", "dxns", "db", "query", "Filter", "everything", "runSync", "object", "includes", "toLocaleLowerCase", "React", "TagPicker", "mx", "mode", "placeholder", "onSearch", "React", "useEffect", "useState", "Icon", "Tooltip", "useTimeout", "Spinner", "errorText", "ChatStatusIndicator", "preset", "error", "processing", "init", "setInit", "useState", "useEffect", "useTimeout", "React", "Tooltip", "Trigger", "content", "message", "delayDuration", "Icon", "icon", "classNames", "errorText", "size", "Spinner", "state", "React", "forwardRef", "useMemo", "PublicKey", "ScrollContainer", "mx", "keyToFallback", "React", "Fragment", "ErrorBoundary", "Surface", "Obj", "invariant", "DXN", "DXN_ECHO_REGEXP", "Button", "IconButton", "useTranslation", "MarkdownViewer", "ToggleContainer", "NativeToggleContainer", "mx", "safeParseJson", "React", "Obj", "Ref", "mx", "ObjectLink", "space", "dxn", "object", "useResolvedRef", "Ref", "fromDXN", "title", "Obj", "getLabel", "id", "toString", "React", "a", "className", "mx", "target", "rel", "span", "React", "useEffect", "useMemo", "useRef", "useState", "useTranslation", "NumericTabs", "StatusRoll", "ToggleContainer", "Json", "NativeJson", "isNonNullable", "isNotFalsy", "isToolMessage", "message", "blocks", "some", "block", "_tag", "getToolName", "tool", "namespace", "function", "name", "split", "pop", "ToolBlock", "classNames", "tools", "t", "useTranslation", "meta", "id", "getToolCaption", "status", "caption", "join", "request", "toolBlocks", "filter", "items", "map", "pending", "toolCallId", "find", "title", "error", "undefined", "isNonNullable", "React", "ToolContainer", "tabsRef", "useRef", "selected", "setSelected", "useState", "open", "setOpen", "useEffect", "current", "focus", "handleSelect", "index", "useMemo", "lines", "item", "isNotFalsy", "StatusRoll", "key", "duration", "autoAdvance", "ToggleContainer", "onChangeOpen", "div", "className", "NumericTabs", "ref", "length", "onSelect", "Json", "data", "NativeJson", "panelClasses", "marginClasses", "paddingClasses", "ChatMessage", "classNames", "debug", "space", "message", "tools", "onEvent", "onDelete", "t", "useTranslation", "meta", "id", "sender", "role", "blocks", "isToolMessage", "React", "MessageItem", "mx", "ToolBlock", "div", "className", "pre", "JSON", "stringify", "created", "map", "block", "idx", "_tag", "text", "replaceAll", "length", "Component", "components", "default", "Fragment", "key", "user", "ErrorBoundary", "data", "IconButton", "icon", "iconOnly", "label", "onClick", "invariant", "MarkdownViewer", "content", "preprocessTextContent", "a", "node", "properties", "children", "href", "props", "startsWith", "dxn", "DXN", "parse", "ObjectLink", "target", "rel", "title", "type", "options", "option", "Button", "ToggleContainer", "defaultOpen", "Toolbox", "disposition", "Surface", "subject", "limit", "fallback", "object", "Json", "safeParseJson", "NativeToggleContainer", "preprocessTextContent", "content", "replaceAll", "RegExp", "DXN_ECHO_REGEXP", "_", "dxn", "messageReducer", "current", "messages", "message", "i", "block", "blocks", "_tag", "push", "id", "join", "undefined", "ChatThread", "forwardRef", "classNames", "identity", "messages", "collapse", "props", "forwardedRef", "userHue", "useMemo", "profile", "data", "hue", "keyToFallback", "identityKey", "PublicKey", "random", "filteredMessages", "reduce", "messageReducer", "React", "ScrollContainer", "ref", "fade", "div", "role", "className", "mx", "length", "style", "map", "message", "ChatMessage", "key", "id", "Endcap", "children", "React", "div", "className", "ChatContextProvider", "useChatContext", "createContext", "ChatRoot", "classNames", "chat", "processor", "onEvent", "props", "debug", "setDebug", "useState", "space", "getSpace", "queue", "useQueue", "dxn", "pending", "useRxValue", "messages", "streaming", "useMemo", "queueMessages", "objects", "filter", "Obj", "instanceOf", "DataType", "Message", "Result", "match", "onInitial", "onSuccess", "Array", "dedupeWith", "value", "a", "b", "id", "onFailure", "event", "Event", "useEffect", "on", "type", "current", "log", "info", "request", "text", "cancel", "role", "mx", "displayName", "ChatThread", "identity", "useIdentity", "scrollerRef", "useRef", "scrollToBottom", "NativeChatThread", "ref", "ev", "emit", "ChatPrompt", "placeholder", "expandable", "online", "presets", "preset", "onChangePreset", "onChangeOnline", "t", "useTranslation", "meta", "error", "pipe", "Option", "getOrUndefined", "active", "setActive", "editorRef", "recording", "useVoiceInput", "onUpdate", "setText", "focus", "referencesProvider", "useReferencesProvider", "extensions", "references", "provider", "Prec", "highest", "keymap", "of", "key", "preventDefault", "run", "isNotFalsy", "handleSubmit", "useCallback", "handleEvent", "handleUpdateReferences", "dxns", "context", "bind", "map", "Ref", "fromDXN", "DXN", "parse", "onUpdateBlueprint", "useBlueprintHandlers", "blueprintRegistry", "ChatStatusIndicator", "processing", "ChatEditor", "autoFocus", "lineWrapping", "onSubmit", "ChatReferences", "ChatOptions", "ChatActions", "microphone", "ChatPresets", "onChange", "undefined", "Input", "Root", "Switch", "checked", "onCheckedChange", "Chat", "Thread", "Prompt"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
meta
|
|
4
|
+
} from "./chunk-KOC6ESG7.mjs";
|
|
5
|
+
import {
|
|
6
|
+
__export
|
|
7
|
+
} from "./chunk-HSLMI22Q.mjs";
|
|
8
|
+
|
|
9
|
+
// src/types/Assistant.ts
|
|
10
|
+
var Assistant_exports = {};
|
|
11
|
+
__export(Assistant_exports, {
|
|
12
|
+
Chat: () => Chat,
|
|
13
|
+
CompanionTo: () => CompanionTo,
|
|
14
|
+
Settings: () => Settings
|
|
15
|
+
});
|
|
16
|
+
import { Schema } from "effect";
|
|
17
|
+
import { Queue } from "@dxos/client/echo";
|
|
18
|
+
import { Type } from "@dxos/echo";
|
|
19
|
+
import { LabelAnnotation } from "@dxos/echo-schema";
|
|
20
|
+
|
|
21
|
+
// src/types/defs.ts
|
|
22
|
+
var LLM_PROVIDERS = [
|
|
23
|
+
"edge",
|
|
24
|
+
"ollama",
|
|
25
|
+
"lmstudio"
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
// src/types/Assistant.ts
|
|
29
|
+
var Chat = Schema.Struct({
|
|
30
|
+
id: Type.ObjectId,
|
|
31
|
+
name: Schema.optional(Schema.String),
|
|
32
|
+
queue: Type.Ref(Queue)
|
|
33
|
+
}).pipe(Type.Obj({
|
|
34
|
+
typename: "dxos.org/type/assistant/Chat",
|
|
35
|
+
version: "0.2.0"
|
|
36
|
+
}), LabelAnnotation.set([
|
|
37
|
+
"name"
|
|
38
|
+
]));
|
|
39
|
+
var CompanionTo = Schema.Struct({
|
|
40
|
+
id: Type.ObjectId
|
|
41
|
+
}).pipe(Type.Relation({
|
|
42
|
+
typename: "dxos.org/relation/assistant/CompanionTo",
|
|
43
|
+
version: "0.1.0",
|
|
44
|
+
source: Chat,
|
|
45
|
+
target: Type.Expando
|
|
46
|
+
}));
|
|
47
|
+
var Settings = Schema.mutable(Schema.Struct({
|
|
48
|
+
llmProvider: Schema.optional(Schema.Literal(...LLM_PROVIDERS)),
|
|
49
|
+
edgeModel: Schema.optional(Schema.String),
|
|
50
|
+
ollamaModel: Schema.optional(Schema.String),
|
|
51
|
+
lmstudioModel: Schema.optional(Schema.String),
|
|
52
|
+
customPrompts: Schema.optional(Schema.Boolean)
|
|
53
|
+
}));
|
|
54
|
+
|
|
55
|
+
// src/types/AssistantAction.ts
|
|
56
|
+
var AssistantAction_exports = {};
|
|
57
|
+
__export(AssistantAction_exports, {
|
|
58
|
+
BlueprintForm: () => BlueprintForm,
|
|
59
|
+
CreateBlueprint: () => CreateBlueprint,
|
|
60
|
+
CreateChat: () => CreateChat,
|
|
61
|
+
CreateSequence: () => CreateSequence,
|
|
62
|
+
OnSpaceCreated: () => OnSpaceCreated
|
|
63
|
+
});
|
|
64
|
+
import { Schema as Schema2 } from "effect";
|
|
65
|
+
import { Blueprint } from "@dxos/blueprints";
|
|
66
|
+
import { SpaceSchema } from "@dxos/client/echo";
|
|
67
|
+
import { Sequence } from "@dxos/conductor";
|
|
68
|
+
import { DataType } from "@dxos/schema";
|
|
69
|
+
var OnSpaceCreated = class extends Schema2.TaggedClass()(`${meta.id}/on-space-created`, {
|
|
70
|
+
input: Schema2.Struct({
|
|
71
|
+
space: SpaceSchema,
|
|
72
|
+
rootCollection: DataType.Collection
|
|
73
|
+
}),
|
|
74
|
+
output: Schema2.Void
|
|
75
|
+
}) {
|
|
76
|
+
};
|
|
77
|
+
var CreateChat = class extends Schema2.TaggedClass()(`${meta.id}/action/create-chat`, {
|
|
78
|
+
input: Schema2.Struct({
|
|
79
|
+
space: SpaceSchema,
|
|
80
|
+
name: Schema2.optional(Schema2.String)
|
|
81
|
+
}),
|
|
82
|
+
output: Schema2.Struct({
|
|
83
|
+
object: Chat
|
|
84
|
+
})
|
|
85
|
+
}) {
|
|
86
|
+
};
|
|
87
|
+
var BlueprintForm = Schema2.Struct({
|
|
88
|
+
key: Schema2.String,
|
|
89
|
+
name: Schema2.String,
|
|
90
|
+
description: Schema2.optional(Schema2.String)
|
|
91
|
+
});
|
|
92
|
+
var CreateBlueprint = class extends Schema2.TaggedClass()(`${meta.id}/action/create-blueprint`, {
|
|
93
|
+
input: BlueprintForm,
|
|
94
|
+
output: Schema2.Struct({
|
|
95
|
+
object: Blueprint.Blueprint
|
|
96
|
+
})
|
|
97
|
+
}) {
|
|
98
|
+
};
|
|
99
|
+
var CreateSequence = class extends Schema2.TaggedClass()(`${meta.id}/action/create-sequence`, {
|
|
100
|
+
input: Schema2.Struct({
|
|
101
|
+
name: Schema2.optional(Schema2.String)
|
|
102
|
+
}),
|
|
103
|
+
output: Schema2.Struct({
|
|
104
|
+
object: Sequence
|
|
105
|
+
})
|
|
106
|
+
}) {
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
// src/types/service.ts
|
|
110
|
+
import { Schema as Schema3 } from "effect";
|
|
111
|
+
import { ComputeGraph } from "@dxos/conductor";
|
|
112
|
+
import { Type as Type2 } from "@dxos/echo";
|
|
113
|
+
import { TypedObject } from "@dxos/echo-schema";
|
|
114
|
+
import { FunctionType } from "@dxos/functions";
|
|
115
|
+
var ApiAuthorizationKey = Schema3.Struct({
|
|
116
|
+
type: Schema3.Literal("api-key"),
|
|
117
|
+
key: Schema3.String,
|
|
118
|
+
placement: Schema3.Union(Schema3.Struct({
|
|
119
|
+
type: Schema3.Literal("authorization-header")
|
|
120
|
+
}), Schema3.Struct({
|
|
121
|
+
type: Schema3.Literal("query"),
|
|
122
|
+
name: Schema3.String
|
|
123
|
+
}))
|
|
124
|
+
});
|
|
125
|
+
var ApiAuthorizationOauth = Schema3.Struct({
|
|
126
|
+
type: Schema3.Literal("oauth"),
|
|
127
|
+
clientId: Schema3.String,
|
|
128
|
+
clientSecret: Schema3.String,
|
|
129
|
+
tokenUrl: Schema3.String,
|
|
130
|
+
grantType: Schema3.String
|
|
131
|
+
});
|
|
132
|
+
var ApiAuthorization = Schema3.Union(ApiAuthorizationKey, ApiAuthorizationOauth);
|
|
133
|
+
var ServiceInterfaceFunction = Schema3.Struct({
|
|
134
|
+
kind: Schema3.Literal("function"),
|
|
135
|
+
fn: Type2.Ref(FunctionType)
|
|
136
|
+
});
|
|
137
|
+
var ServiceInterfaceWorkflow = Schema3.Struct({
|
|
138
|
+
kind: Schema3.Literal("workflow"),
|
|
139
|
+
workflow: Type2.Ref(ComputeGraph)
|
|
140
|
+
});
|
|
141
|
+
var ServiceInterfaceApi = Schema3.Struct({
|
|
142
|
+
kind: Schema3.Literal("api"),
|
|
143
|
+
/**
|
|
144
|
+
* URL to fetch the openapi schema.
|
|
145
|
+
*/
|
|
146
|
+
schemaUrl: Schema3.optional(Schema3.String),
|
|
147
|
+
/**
|
|
148
|
+
* Inlined openapi schema.
|
|
149
|
+
*/
|
|
150
|
+
schema: Schema3.optional(Schema3.Any),
|
|
151
|
+
/**
|
|
152
|
+
* Authorization configuration if required.
|
|
153
|
+
*/
|
|
154
|
+
authorization: Schema3.optional(ApiAuthorization)
|
|
155
|
+
});
|
|
156
|
+
var ServiceInterface = Schema3.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);
|
|
157
|
+
var ServiceType = class extends TypedObject({
|
|
158
|
+
typename: "dxos.org/type/ServiceType",
|
|
159
|
+
version: "0.1.0"
|
|
160
|
+
})({
|
|
161
|
+
serviceId: Schema3.String,
|
|
162
|
+
name: Schema3.optional(Schema3.String),
|
|
163
|
+
description: Schema3.optional(Schema3.String),
|
|
164
|
+
category: Schema3.optional(Schema3.String),
|
|
165
|
+
enabled: Schema3.optional(Schema3.Boolean),
|
|
166
|
+
/**
|
|
167
|
+
* Entries exposed: functions, workflows, and APIs.
|
|
168
|
+
*/
|
|
169
|
+
interfaces: Schema3.optional(Schema3.Array(ServiceInterface))
|
|
170
|
+
}) {
|
|
171
|
+
};
|
|
172
|
+
var categoryIcons = {
|
|
173
|
+
finance: "ph--bank--regular",
|
|
174
|
+
health: "ph--heart--regular",
|
|
175
|
+
geolocation: "ph--globe-simple--regular",
|
|
176
|
+
education: "ph--books--regular",
|
|
177
|
+
entertainment: "ph--music-notes--regular",
|
|
178
|
+
shopping: "ph--shopping-cart--regular",
|
|
179
|
+
travel: "ph--airplane-takeoff--regular",
|
|
180
|
+
utilities: "ph--lightning--regular",
|
|
181
|
+
weather: "ph--cloud-rain--regular"
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
export {
|
|
185
|
+
LLM_PROVIDERS,
|
|
186
|
+
Assistant_exports,
|
|
187
|
+
AssistantAction_exports,
|
|
188
|
+
ApiAuthorization,
|
|
189
|
+
ServiceType,
|
|
190
|
+
categoryIcons
|
|
191
|
+
};
|
|
192
|
+
//# sourceMappingURL=chunk-F7RXCX5Y.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types/Assistant.ts", "../../../src/types/defs.ts", "../../../src/types/AssistantAction.ts", "../../../src/types/service.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Queue } from '@dxos/client/echo';\nimport { Type } from '@dxos/echo';\nimport { LabelAnnotation } from '@dxos/echo-schema';\n\nimport { LLM_PROVIDERS } from './defs';\n\n/**\n * AI chat.\n */\nexport const Chat = Schema.Struct({\n id: Type.ObjectId,\n name: Schema.optional(Schema.String),\n queue: Type.Ref(Queue),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/assistant/Chat',\n version: '0.2.0',\n }),\n LabelAnnotation.set(['name']),\n);\n\nexport interface Chat extends Schema.Schema.Type<typeof Chat> {}\n\n/**\n * Relation between a Chat and companion objects (e.g., artifacts).\n */\nexport const CompanionTo = Schema.Struct({\n id: Type.ObjectId,\n}).pipe(\n Type.Relation({\n typename: 'dxos.org/relation/assistant/CompanionTo',\n version: '0.1.0',\n source: Chat,\n target: Type.Expando,\n }),\n);\n\nexport interface CompanionTo extends Schema.Schema.Type<typeof CompanionTo> {}\n\n/**\n * Plugin settings.\n */\nexport const Settings = Schema.mutable(\n Schema.Struct({\n llmProvider: Schema.optional(Schema.Literal(...LLM_PROVIDERS)),\n edgeModel: Schema.optional(Schema.String),\n ollamaModel: Schema.optional(Schema.String),\n lmstudioModel: Schema.optional(Schema.String),\n customPrompts: Schema.optional(Schema.Boolean),\n }),\n);\n\nexport type Settings = Schema.Schema.Type<typeof Settings>;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport const LLM_PROVIDERS = ['edge', 'ollama', 'lmstudio'] as const;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Blueprint } from '@dxos/blueprints';\nimport { SpaceSchema } from '@dxos/client/echo';\nimport { Sequence } from '@dxos/conductor';\nimport { DataType } from '@dxos/schema';\n\nimport { meta } from '../meta';\n\nimport { Chat } from './Assistant';\n\nexport class OnSpaceCreated extends Schema.TaggedClass<OnSpaceCreated>()(`${meta.id}/on-space-created`, {\n input: Schema.Struct({\n space: SpaceSchema,\n rootCollection: DataType.Collection,\n }),\n output: Schema.Void,\n}) {}\n\nexport class CreateChat extends Schema.TaggedClass<CreateChat>()(`${meta.id}/action/create-chat`, {\n input: Schema.Struct({\n space: SpaceSchema,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Chat,\n }),\n}) {}\n\nexport const BlueprintForm = Schema.Struct({\n key: Schema.String,\n name: Schema.String,\n description: Schema.optional(Schema.String),\n});\n\nexport class CreateBlueprint extends Schema.TaggedClass<CreateBlueprint>()(`${meta.id}/action/create-blueprint`, {\n input: BlueprintForm,\n output: Schema.Struct({\n object: Blueprint.Blueprint,\n }),\n}) {}\n\nexport class CreateSequence extends Schema.TaggedClass<CreateSequence>()(`${meta.id}/action/create-sequence`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Sequence,\n }),\n}) {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport { TypedObject } from '@dxos/echo-schema';\nimport { FunctionType } from '@dxos/functions';\n\nconst ApiAuthorizationKey = Schema.Struct({\n type: Schema.Literal('api-key'),\n key: Schema.String,\n placement: Schema.Union(\n Schema.Struct({\n type: Schema.Literal('authorization-header'),\n }),\n Schema.Struct({\n type: Schema.Literal('query'),\n name: Schema.String,\n }),\n ),\n});\n\nconst ApiAuthorizationOauth = Schema.Struct({\n type: Schema.Literal('oauth'),\n clientId: Schema.String,\n clientSecret: Schema.String,\n tokenUrl: Schema.String,\n grantType: Schema.String,\n});\n\nexport const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);\nexport type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;\n\nconst ServiceInterfaceFunction = Schema.Struct({\n kind: Schema.Literal('function'),\n fn: Type.Ref(FunctionType),\n});\n\nconst ServiceInterfaceWorkflow = Schema.Struct({\n kind: Schema.Literal('workflow'),\n workflow: Type.Ref(ComputeGraph),\n});\n\nconst ServiceInterfaceApi = Schema.Struct({\n kind: Schema.Literal('api'),\n\n /**\n * URL to fetch the openapi schema.\n */\n schemaUrl: Schema.optional(Schema.String),\n\n /**\n * Inlined openapi schema.\n */\n schema: Schema.optional(Schema.Any),\n\n /**\n * Authorization configuration if required.\n */\n authorization: Schema.optional(ApiAuthorization),\n});\n\nconst ServiceInterface = Schema.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);\nexport type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;\n\nexport class ServiceType extends TypedObject({\n typename: 'dxos.org/type/ServiceType',\n version: '0.1.0',\n})({\n serviceId: Schema.String,\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n category: Schema.optional(Schema.String),\n enabled: Schema.optional(Schema.Boolean),\n\n /**\n * Entries exposed: functions, workflows, and APIs.\n */\n interfaces: Schema.optional(Schema.Array(ServiceInterface)),\n}) {}\n\n//\n// Service Registry\n//\n\nexport type ServiceQuery = {\n name?: string;\n category?: string;\n};\n\nexport interface BaseServiceRegistry {\n queryServices(query?: ServiceQuery): Promise<ServiceType[]>;\n}\n\nexport const categoryIcons: Record<string, string> = {\n finance: 'ph--bank--regular',\n health: 'ph--heart--regular',\n geolocation: 'ph--globe-simple--regular',\n education: 'ph--books--regular',\n entertainment: 'ph--music-notes--regular',\n shopping: 'ph--shopping-cart--regular',\n travel: 'ph--airplane-takeoff--regular',\n utilities: 'ph--lightning--regular',\n weather: 'ph--cloud-rain--regular',\n} as const;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Schema", "Queue", "Type", "LabelAnnotation", "LLM_PROVIDERS", "Chat", "Schema", "Struct", "id", "Type", "ObjectId", "name", "optional", "String", "queue", "Ref", "Queue", "pipe", "Obj", "typename", "version", "LabelAnnotation", "set", "CompanionTo", "Relation", "source", "target", "Expando", "Settings", "mutable", "llmProvider", "Literal", "LLM_PROVIDERS", "edgeModel", "ollamaModel", "lmstudioModel", "customPrompts", "Boolean", "Schema", "Blueprint", "SpaceSchema", "Sequence", "DataType", "OnSpaceCreated", "Schema", "TaggedClass", "meta", "id", "input", "Struct", "space", "SpaceSchema", "rootCollection", "DataType", "Collection", "output", "Void", "CreateChat", "name", "optional", "String", "object", "Chat", "BlueprintForm", "key", "description", "CreateBlueprint", "Blueprint", "CreateSequence", "Sequence", "Schema", "ComputeGraph", "Type", "TypedObject", "FunctionType", "ApiAuthorizationKey", "Schema", "Struct", "type", "Literal", "key", "String", "placement", "Union", "name", "ApiAuthorizationOauth", "clientId", "clientSecret", "tokenUrl", "grantType", "ApiAuthorization", "ServiceInterfaceFunction", "kind", "fn", "Type", "Ref", "FunctionType", "ServiceInterfaceWorkflow", "workflow", "ComputeGraph", "ServiceInterfaceApi", "schemaUrl", "optional", "schema", "Any", "authorization", "ServiceInterface", "ServiceType", "TypedObject", "typename", "version", "serviceId", "description", "category", "enabled", "Boolean", "interfaces", "Array", "categoryIcons", "finance", "health", "geolocation", "education", "entertainment", "shopping", "travel", "utilities", "weather"]
|
|
7
|
+
}
|