@dxos/plugin-assistant 0.8.3 → 0.8.4-main.1f223c7
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-QQHVOTSI.mjs → BlueprintContainer-BFNN6K46.mjs} +11 -10
- package/dist/lib/browser/BlueprintContainer-BFNN6K46.mjs.map +7 -0
- package/dist/lib/browser/ChatCompanion-DOVN34C7.mjs +126 -0
- package/dist/lib/browser/ChatCompanion-DOVN34C7.mjs.map +7 -0
- package/dist/lib/browser/ChatContainer-XIVJTCC2.mjs +75 -0
- package/dist/lib/browser/ChatContainer-XIVJTCC2.mjs.map +7 -0
- package/dist/lib/browser/ChatDialog-EJJMK3WL.mjs +88 -0
- package/dist/lib/browser/ChatDialog-EJJMK3WL.mjs.map +7 -0
- package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs +150 -0
- package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs.map +7 -0
- package/dist/lib/browser/ai-service-YC2EQPHA.mjs +22 -0
- package/dist/lib/browser/ai-service-YC2EQPHA.mjs.map +7 -0
- package/dist/lib/browser/app-graph-builder-3C43MLCD.mjs +153 -0
- package/dist/lib/browser/app-graph-builder-3C43MLCD.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-VHFSRTEJ.mjs +12 -0
- package/dist/lib/browser/blueprint-definition-VHFSRTEJ.mjs.map +7 -0
- package/dist/lib/browser/chunk-C4Q2RYQM.mjs +1974 -0
- package/dist/lib/browser/chunk-C4Q2RYQM.mjs.map +7 -0
- package/dist/lib/browser/chunk-EZUSNS2J.mjs +19 -0
- package/dist/lib/browser/chunk-EZUSNS2J.mjs.map +7 -0
- package/dist/lib/browser/chunk-GLWD66TA.mjs +161 -0
- package/dist/lib/browser/chunk-GLWD66TA.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-XOZ7YMO3.mjs → chunk-O4LUJEDV.mjs} +3 -3
- package/dist/lib/browser/{chunk-XOZ7YMO3.mjs.map → chunk-O4LUJEDV.mjs.map} +1 -1
- package/dist/lib/browser/chunk-PQI3MGDN.mjs +169 -0
- package/dist/lib/browser/chunk-PQI3MGDN.mjs.map +7 -0
- package/dist/lib/browser/chunk-QD4UUISH.mjs +299 -0
- package/dist/lib/browser/chunk-QD4UUISH.mjs.map +7 -0
- package/dist/lib/browser/chunk-R6LRGW3I.mjs +216 -0
- package/dist/lib/browser/chunk-R6LRGW3I.mjs.map +7 -0
- package/dist/lib/browser/chunk-SMIVXXAI.mjs +202 -0
- package/dist/lib/browser/chunk-SMIVXXAI.mjs.map +7 -0
- package/dist/lib/browser/compute-runtime-X6IREJN3.mjs +155 -0
- package/dist/lib/browser/compute-runtime-X6IREJN3.mjs.map +7 -0
- package/dist/lib/browser/edge-model-resolver-JNEB355N.mjs +22 -0
- package/dist/lib/browser/edge-model-resolver-JNEB355N.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +195 -128
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/intent-resolver-I6M3ZDAS.mjs +112 -0
- package/dist/lib/browser/intent-resolver-I6M3ZDAS.mjs.map +7 -0
- package/dist/lib/browser/local-model-resolver-EUXSRZ7X.mjs +21 -0
- package/dist/lib/browser/local-model-resolver-EUXSRZ7X.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-surface-E4NAGB6R.mjs +109 -0
- package/dist/lib/browser/react-surface-E4NAGB6R.mjs.map +7 -0
- package/dist/lib/browser/{settings-XRHXVWGB.mjs → settings-36V3VUMW.mjs} +7 -6
- package/dist/lib/browser/settings-36V3VUMW.mjs.map +7 -0
- package/dist/lib/browser/state-AINRYS5W.mjs +21 -0
- package/dist/lib/browser/state-AINRYS5W.mjs.map +7 -0
- package/dist/lib/browser/toolkit-MPUS3U64.mjs +191 -0
- package/dist/lib/browser/toolkit-MPUS3U64.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +7 -20
- package/dist/lib/node-esm/{TemplateContainer-SOEWY2ZN.mjs → BlueprintContainer-X4MRBKDR.mjs} +11 -10
- package/dist/lib/node-esm/BlueprintContainer-X4MRBKDR.mjs.map +7 -0
- package/dist/lib/node-esm/ChatCompanion-ICWYVPRD.mjs +127 -0
- package/dist/lib/node-esm/ChatCompanion-ICWYVPRD.mjs.map +7 -0
- package/dist/lib/node-esm/ChatContainer-LMMMQD4K.mjs +76 -0
- package/dist/lib/node-esm/ChatContainer-LMMMQD4K.mjs.map +7 -0
- package/dist/lib/node-esm/ChatDialog-UUE3F7BT.mjs +89 -0
- package/dist/lib/node-esm/ChatDialog-UUE3F7BT.mjs.map +7 -0
- package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs +151 -0
- package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs.map +7 -0
- package/dist/lib/node-esm/ai-service-XUMZVFCK.mjs +23 -0
- package/dist/lib/node-esm/ai-service-XUMZVFCK.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-builder-NM3JDLQ2.mjs +154 -0
- package/dist/lib/node-esm/app-graph-builder-NM3JDLQ2.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-4E6XTLVN.mjs +13 -0
- package/dist/lib/node-esm/blueprint-definition-4E6XTLVN.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-4WLFSXZG.mjs +170 -0
- package/dist/lib/node-esm/chunk-4WLFSXZG.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-7YOGZI66.mjs +203 -0
- package/dist/lib/node-esm/chunk-7YOGZI66.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-LVTG5JTW.mjs +217 -0
- package/dist/lib/node-esm/chunk-LVTG5JTW.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-QG2KT3AT.mjs +163 -0
- package/dist/lib/node-esm/chunk-QG2KT3AT.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-V44ZG7CU.mjs +1975 -0
- package/dist/lib/node-esm/chunk-V44ZG7CU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-BB2TAT4P.mjs → chunk-VFY2JG62.mjs} +3 -3
- package/dist/lib/node-esm/{chunk-BB2TAT4P.mjs.map → chunk-VFY2JG62.mjs.map} +1 -1
- package/dist/lib/node-esm/chunk-XD4CDA4R.mjs +20 -0
- package/dist/lib/node-esm/chunk-XD4CDA4R.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-YU62ZWJN.mjs +300 -0
- package/dist/lib/node-esm/chunk-YU62ZWJN.mjs.map +7 -0
- package/dist/lib/node-esm/compute-runtime-NRHLLTSC.mjs +156 -0
- package/dist/lib/node-esm/compute-runtime-NRHLLTSC.mjs.map +7 -0
- package/dist/lib/node-esm/edge-model-resolver-UE5TLLJZ.mjs +23 -0
- package/dist/lib/node-esm/edge-model-resolver-UE5TLLJZ.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +195 -128
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/intent-resolver-VIINHFMT.mjs +113 -0
- package/dist/lib/node-esm/intent-resolver-VIINHFMT.mjs.map +7 -0
- package/dist/lib/node-esm/local-model-resolver-JBEFVVZA.mjs +22 -0
- package/dist/lib/node-esm/local-model-resolver-JBEFVVZA.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-surface-5WQLRTCH.mjs +110 -0
- package/dist/lib/node-esm/react-surface-5WQLRTCH.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-5IAY6BT4.mjs → settings-7ZCZ6AS5.mjs} +7 -6
- package/dist/lib/node-esm/settings-7ZCZ6AS5.mjs.map +7 -0
- package/dist/lib/node-esm/state-EQS5KP6M.mjs +22 -0
- package/dist/lib/node-esm/state-EQS5KP6M.mjs.map +7 -0
- package/dist/lib/node-esm/toolkit-PKVYDZ4H.mjs +192 -0
- package/dist/lib/node-esm/toolkit-PKVYDZ4H.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +7 -20
- 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 +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +7 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/capabilities.d.ts +29 -3
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/compute-runtime.d.ts +5 -0
- package/dist/types/src/capabilities/compute-runtime.d.ts.map +1 -0
- package/dist/types/src/capabilities/edge-model-resolver.d.ts +4 -0
- package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +12 -5
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/local-model-resolver.d.ts +10 -0
- package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/capabilities/state.d.ts +4 -0
- package/dist/types/src/capabilities/state.d.ts.map +1 -0
- package/dist/types/src/capabilities/toolkit.d.ts +4 -0
- package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
- package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts +2 -2
- package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
- package/dist/types/src/components/BlueprintContainer.d.ts +5 -6
- package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -1
- package/dist/types/src/components/Chat/Chat.d.ts +50 -0
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -0
- package/dist/types/src/components/Chat/events.d.ts +35 -0
- package/dist/types/src/components/Chat/events.d.ts.map +1 -0
- package/dist/types/src/components/Chat/index.d.ts +3 -0
- package/dist/types/src/components/Chat/index.d.ts.map +1 -0
- package/dist/types/src/components/ChatCompanion.d.ts +13 -0
- package/dist/types/src/components/ChatCompanion.d.ts.map +1 -0
- package/dist/types/src/components/ChatContainer.d.ts +7 -7
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/ChatDialog.d.ts +8 -0
- package/dist/types/src/components/ChatDialog.d.ts.map +1 -0
- package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +7 -0
- package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -0
- package/dist/types/src/components/ChatProgress/index.d.ts +2 -0
- package/dist/types/src/components/ChatProgress/index.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +11 -0
- package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +20 -0
- package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts +11 -0
- package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +10 -0
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +10 -0
- package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -0
- package/dist/types/src/components/ChatPrompt/index.d.ts +6 -0
- package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/ChatThread.d.ts +22 -0
- package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +282 -0
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -0
- 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/index.d.ts +2 -0
- package/dist/types/src/components/ChatThread/index.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/reducers.d.ts +40 -0
- package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/registry.d.ts +11 -0
- package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/sync.d.ts +36 -0
- package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/sync.test.d.ts +2 -0
- package/dist/types/src/components/ChatThread/sync.test.d.ts.map +1 -0
- package/dist/types/src/components/PromptSettings.d.ts +2 -2
- package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
- package/dist/types/src/components/SequenceContainer.d.ts +8 -0
- package/dist/types/src/components/SequenceContainer.d.ts.map +1 -0
- package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +13 -0
- package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -0
- package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +267 -0
- package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -0
- package/dist/types/src/components/SequenceEditor/index.d.ts +2 -0
- package/dist/types/src/components/SequenceEditor/index.d.ts.map +1 -0
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +4 -8
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +261 -6
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +5 -4
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +259 -2
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts +12 -0
- package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +1 -0
- package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +19 -0
- package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -0
- package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts +2 -0
- package/dist/types/src/components/ToolBlock/ToolBlockWidget.d.ts.map +1 -0
- package/dist/types/src/components/ToolBlock/index.d.ts +3 -0
- package/dist/types/src/components/ToolBlock/index.d.ts.map +1 -0
- package/dist/types/src/components/Toolbar/Toolbar.d.ts +5 -0
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -0
- package/dist/types/src/components/Toolbar/index.d.ts +2 -0
- package/dist/types/src/components/Toolbar/index.d.ts.map +1 -0
- package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +11 -0
- package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +1 -0
- package/dist/types/src/components/Toolbox/Toolbox.d.ts +10 -8
- package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +262 -4
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +9 -12
- 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/execution-graph/execution-graph.d.ts +21 -0
- package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -0
- package/dist/types/src/execution-graph/index.d.ts +2 -0
- package/dist/types/src/execution-graph/index.d.ts.map +1 -0
- 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/index.d.ts +11 -5
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts +24 -0
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -0
- package/dist/types/src/hooks/useChatProcessor.d.ts +12 -13
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatServices.d.ts +13 -0
- package/dist/types/src/hooks/useChatServices.d.ts.map +1 -0
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +8 -0
- package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -0
- package/dist/types/src/hooks/useContextBinder.d.ts +4 -0
- package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -0
- package/dist/types/src/hooks/useContextObjects.d.ts +15 -0
- package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -0
- package/dist/types/src/hooks/useExecutionGraph.d.ts +6 -0
- package/dist/types/src/hooks/useExecutionGraph.d.ts.map +1 -0
- package/dist/types/src/hooks/useFlush.d.ts +6 -0
- package/dist/types/src/hooks/useFlush.d.ts.map +1 -0
- package/dist/types/src/hooks/useItemTypes.d.ts +4 -0
- package/dist/types/src/hooks/useItemTypes.d.ts.map +1 -0
- 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 +7 -0
- package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -0
- package/dist/types/src/processor/index.d.ts +3 -0
- package/dist/types/src/processor/index.d.ts.map +1 -0
- package/dist/types/src/processor/presets.d.ts +13 -0
- package/dist/types/src/processor/presets.d.ts.map +1 -0
- package/dist/types/src/processor/processor.d.ts +73 -0
- package/dist/types/src/processor/processor.d.ts.map +1 -0
- package/dist/types/src/processor/processor.test.d.ts.map +1 -0
- package/dist/types/src/queue-logger.d.ts +5 -5
- package/dist/types/src/queue-logger.d.ts.map +1 -1
- package/dist/types/src/stories/Chat.stories.d.ts +30 -0
- package/dist/types/src/stories/Chat.stories.d.ts.map +1 -0
- package/dist/types/src/stories/components/BlueprintContainer.d.ts +4 -0
- package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/ChatContainer.d.ts +4 -0
- package/dist/types/src/stories/components/ChatContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/ChessContainer.d.ts +4 -0
- package/dist/types/src/stories/components/ChessContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/CommentsContainer.d.ts +4 -0
- package/dist/types/src/stories/components/CommentsContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/DebugCard.d.ts +8 -0
- package/dist/types/src/stories/components/DebugCard.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/InvocationsContainer.d.ts +4 -0
- package/dist/types/src/stories/components/InvocationsContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/LoggingContainer.d.ts +7 -0
- package/dist/types/src/stories/components/LoggingContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/MessageContainer.d.ts +4 -0
- package/dist/types/src/stories/components/MessageContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/PromptContainer.d.ts +6 -0
- package/dist/types/src/stories/components/PromptContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/ResearchInputStack.d.ts +4 -0
- package/dist/types/src/stories/components/ResearchInputStack.d.ts.map +1 -0
- package/dist/types/src/stories/components/ResearchOutputStack.d.ts +4 -0
- package/dist/types/src/stories/components/ResearchOutputStack.d.ts.map +1 -0
- package/dist/types/src/stories/components/TasksContainer.d.ts +4 -0
- package/dist/types/src/stories/components/TasksContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/TokenManagerContainer.d.ts +3 -0
- package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/TriggersContainer.d.ts +14 -0
- package/dist/types/src/stories/components/TriggersContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/index.d.ts +16 -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/testing/data.d.ts +9 -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/schema.d.ts +7 -0
- package/dist/types/src/stories/testing/schema.d.ts.map +1 -0
- package/dist/types/src/stories/testing/testing.d.ts +48 -0
- package/dist/types/src/stories/testing/testing.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +3 -1
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-data.d.ts +14 -0
- package/dist/types/src/testing/test-data.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-generator.d.ts +7 -0
- package/dist/types/src/testing/test-generator.d.ts.map +1 -0
- package/dist/types/src/testing/test-sequence.d.ts +4 -0
- package/dist/types/src/testing/test-sequence.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +84 -113
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Assistant.d.ts +42 -0
- package/dist/types/src/types/Assistant.d.ts.map +1 -0
- package/dist/types/src/types/AssistantAction.d.ts +107 -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 -3
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/service.d.ts +9 -6
- package/dist/types/src/types/service.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +111 -81
- package/src/AssistantPlugin.tsx +87 -43
- package/src/capabilities/ai-service.ts +28 -0
- package/src/capabilities/app-graph-builder.ts +58 -144
- package/src/capabilities/blueprint-definition.ts +58 -0
- package/src/capabilities/capabilities.ts +61 -5
- package/src/capabilities/compute-runtime.ts +124 -0
- package/src/capabilities/edge-model-resolver.ts +27 -0
- package/src/capabilities/index.ts +8 -1
- package/src/capabilities/intent-resolver.ts +67 -18
- package/src/capabilities/local-model-resolver.ts +32 -0
- package/src/capabilities/react-surface.tsx +40 -86
- package/src/capabilities/settings.ts +3 -3
- package/src/capabilities/state.ts +20 -0
- package/src/capabilities/toolkit.ts +163 -0
- package/src/components/AssistantSettings/AssistantSettings.tsx +86 -79
- package/src/components/BlueprintContainer.tsx +9 -133
- package/src/components/Chat/Chat.tsx +389 -0
- package/src/components/Chat/events.ts +57 -0
- package/src/components/Chat/index.ts +7 -0
- package/src/components/ChatCompanion.tsx +111 -0
- package/src/components/ChatContainer.tsx +33 -21
- package/src/components/ChatDialog.tsx +68 -0
- package/src/components/ChatProgress/ChatProgress.tsx +68 -0
- package/src/components/{AmbientDialog → ChatProgress}/index.ts +1 -1
- package/src/components/ChatPrompt/ChatActions.tsx +57 -0
- package/src/components/ChatPrompt/ChatOptions.tsx +233 -0
- package/src/components/ChatPrompt/ChatPresets.tsx +29 -0
- package/src/components/ChatPrompt/ChatReferences.tsx +48 -0
- package/src/components/ChatPrompt/ChatStatusIndicator.tsx +42 -0
- package/src/components/ChatPrompt/index.ts +9 -0
- package/src/components/ChatThread/ChatThread.stories.tsx +130 -0
- package/src/components/ChatThread/ChatThread.tsx +93 -0
- package/src/components/ChatThread/Link.tsx +26 -0
- package/src/components/ChatThread/index.ts +5 -0
- package/src/components/ChatThread/reducers.ts +151 -0
- package/src/components/ChatThread/registry.tsx +189 -0
- package/src/components/ChatThread/sync.test.ts +81 -0
- package/src/components/ChatThread/sync.ts +113 -0
- package/src/components/PromptSettings.tsx +44 -45
- package/src/components/SequenceContainer.tsx +131 -0
- package/src/components/SequenceEditor/SequenceEditor.stories.tsx +33 -0
- package/src/components/{BlueprintEditor/BlueprintEditor.tsx → SequenceEditor/SequenceEditor.tsx} +8 -8
- package/src/components/SequenceEditor/index.ts +5 -0
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +45 -37
- package/src/components/TemplateEditor/TemplateEditor.tsx +28 -46
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +26 -19
- package/src/components/TemplateEditor/TemplateForm.tsx +52 -57
- package/src/components/TemplateEditor/handlebars-extension.ts +165 -0
- package/src/components/ToolBlock/ToolBlock.tsx +152 -0
- package/src/components/ToolBlock/ToolBlockWidget.tsx +5 -0
- package/src/components/ToolBlock/index.ts +6 -0
- package/src/components/Toolbar/Toolbar.tsx +21 -0
- package/src/{experimental/transcription → components/Toolbar}/index.ts +2 -0
- package/src/components/Toolbar/useChatToolbarActions.ts +126 -0
- package/src/components/Toolbox/Toolbox.stories.tsx +12 -19
- package/src/components/Toolbox/Toolbox.tsx +53 -27
- package/src/components/index.ts +6 -8
- package/src/events.ts +3 -3
- package/src/execution-graph/execution-graph.ts +211 -0
- package/src/execution-graph/index.ts +5 -0
- package/src/functions/analysis.ts +20 -0
- package/src/functions/index.ts +7 -0
- package/src/functions/list.ts +46 -0
- package/src/functions/load.ts +42 -0
- package/src/hooks/index.ts +11 -6
- package/src/hooks/useBlueprintRegistry.ts +80 -0
- package/src/hooks/useChatProcessor.ts +66 -0
- package/src/hooks/useChatServices.ts +48 -0
- package/src/hooks/useComputeRuntimeCallback.ts +25 -0
- package/src/hooks/useContextBinder.ts +18 -0
- package/src/hooks/useContextObjects.ts +58 -0
- package/src/hooks/useExecutionGraph.ts +20 -0
- package/src/hooks/useFlush.ts +35 -0
- package/src/hooks/useItemTypes.ts +37 -0
- package/src/hooks/useOnline.ts +10 -0
- package/src/hooks/usePresets.ts +44 -0
- package/src/hooks/{useContextProvider.ts → useReferencesProvider.ts} +22 -20
- package/src/meta.ts +1 -1
- package/src/processor/index.ts +6 -0
- package/src/processor/presets.ts +60 -0
- package/src/processor/processor.test.ts +77 -0
- package/src/processor/processor.ts +302 -0
- package/src/queue-logger.ts +16 -16
- package/src/stories/Chat.stories.tsx +657 -0
- package/src/stories/components/BlueprintContainer.tsx +34 -0
- package/src/stories/components/ChatContainer.tsx +74 -0
- package/src/stories/components/ChessContainer.tsx +17 -0
- package/src/stories/components/CommentsContainer.tsx +25 -0
- package/src/stories/components/DebugCard.tsx +61 -0
- package/src/stories/components/GraphContainer.tsx +119 -0
- package/src/stories/components/InvocationsContainer.tsx +17 -0
- package/src/stories/components/LoggingContainer.tsx +33 -0
- package/src/stories/components/MessageContainer.tsx +22 -0
- package/src/stories/components/PromptContainer.tsx +52 -0
- package/src/stories/components/ResearchInputStack.tsx +30 -0
- package/src/stories/components/ResearchOutputStack.tsx +29 -0
- package/src/stories/components/TasksContainer.tsx +49 -0
- package/src/stories/components/TokenManagerContainer.tsx +14 -0
- package/src/stories/components/TriggersContainer.tsx +75 -0
- package/src/stories/components/index.ts +20 -0
- package/src/stories/components/types.ts +11 -0
- package/src/stories/{test-data.ts → testing/data.ts} +23 -9
- package/src/stories/testing/index.ts +6 -0
- package/src/stories/testing/schema.ts +17 -0
- package/src/stories/testing/testing.tsx +279 -0
- package/src/testing/index.ts +3 -1
- package/src/testing/test-data.ts +245 -0
- package/src/testing/test-functions.ts +9 -4
- package/src/testing/test-generator.ts +257 -0
- package/src/testing/test-sequence.ts +26 -0
- package/src/translations.ts +58 -28
- package/src/types/Assistant.ts +61 -0
- package/src/types/AssistantAction.ts +62 -0
- package/src/types/defs.ts +5 -0
- package/src/types/index.ts +4 -3
- package/src/vite-env.d.ts +30 -0
- package/dist/lib/browser/AssistantDialog-MQOOR364.mjs +0 -47
- package/dist/lib/browser/AssistantDialog-MQOOR364.mjs.map +0 -7
- package/dist/lib/browser/BlueprintContainer-AT5Y7EXG.mjs +0 -321
- package/dist/lib/browser/BlueprintContainer-AT5Y7EXG.mjs.map +0 -7
- package/dist/lib/browser/ChatContainer-C2NEAS3A.mjs +0 -40
- package/dist/lib/browser/ChatContainer-C2NEAS3A.mjs.map +0 -7
- package/dist/lib/browser/TemplateContainer-QQHVOTSI.mjs.map +0 -7
- package/dist/lib/browser/ai-client-MK2ZZII2.mjs +0 -39
- package/dist/lib/browser/ai-client-MK2ZZII2.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-E4H5DCOJ.mjs +0 -225
- package/dist/lib/browser/app-graph-builder-E4H5DCOJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-AAOKC2JN.mjs +0 -208
- package/dist/lib/browser/chunk-AAOKC2JN.mjs.map +0 -7
- package/dist/lib/browser/chunk-BI6AHRNJ.mjs +0 -157
- package/dist/lib/browser/chunk-BI6AHRNJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-JO4W3MF7.mjs +0 -2101
- package/dist/lib/browser/chunk-JO4W3MF7.mjs.map +0 -7
- package/dist/lib/browser/chunk-JQFUME3B.mjs +0 -87
- package/dist/lib/browser/chunk-JQFUME3B.mjs.map +0 -7
- package/dist/lib/browser/chunk-MEGMOFJB.mjs +0 -16
- package/dist/lib/browser/chunk-MEGMOFJB.mjs.map +0 -7
- package/dist/lib/browser/chunk-Q6UZ4F3H.mjs +0 -96
- package/dist/lib/browser/chunk-Q6UZ4F3H.mjs.map +0 -7
- package/dist/lib/browser/chunk-UE3IZ4PN.mjs +0 -15
- package/dist/lib/browser/chunk-UE3IZ4PN.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-3UICTGPM.mjs +0 -43
- package/dist/lib/browser/intent-resolver-3UICTGPM.mjs.map +0 -7
- package/dist/lib/browser/react-surface-LXCNUSZN.mjs +0 -159
- package/dist/lib/browser/react-surface-LXCNUSZN.mjs.map +0 -7
- package/dist/lib/browser/settings-XRHXVWGB.mjs.map +0 -7
- package/dist/lib/node/AssistantDialog-AN4Z6YUV.cjs +0 -73
- package/dist/lib/node/AssistantDialog-AN4Z6YUV.cjs.map +0 -7
- package/dist/lib/node/BlueprintContainer-NOWLDYCZ.cjs +0 -344
- package/dist/lib/node/BlueprintContainer-NOWLDYCZ.cjs.map +0 -7
- package/dist/lib/node/ChatContainer-VKYBQHUB.cjs +0 -68
- package/dist/lib/node/ChatContainer-VKYBQHUB.cjs.map +0 -7
- package/dist/lib/node/TemplateContainer-JZF2DCCG.cjs +0 -58
- package/dist/lib/node/TemplateContainer-JZF2DCCG.cjs.map +0 -7
- package/dist/lib/node/ai-client-7HNSMUMT.cjs +0 -53
- package/dist/lib/node/ai-client-7HNSMUMT.cjs.map +0 -7
- package/dist/lib/node/app-graph-builder-PPR5B5KU.cjs +0 -235
- package/dist/lib/node/app-graph-builder-PPR5B5KU.cjs.map +0 -7
- package/dist/lib/node/chunk-4EEWTDQK.cjs +0 -117
- package/dist/lib/node/chunk-4EEWTDQK.cjs.map +0 -7
- package/dist/lib/node/chunk-FUAGEO7Q.cjs +0 -52
- package/dist/lib/node/chunk-FUAGEO7Q.cjs.map +0 -7
- package/dist/lib/node/chunk-HRNIUYVQ.cjs +0 -128
- package/dist/lib/node/chunk-HRNIUYVQ.cjs.map +0 -7
- package/dist/lib/node/chunk-IKZBMHSW.cjs +0 -184
- package/dist/lib/node/chunk-IKZBMHSW.cjs.map +0 -7
- package/dist/lib/node/chunk-LMDJEGZ2.cjs +0 -233
- package/dist/lib/node/chunk-LMDJEGZ2.cjs.map +0 -7
- package/dist/lib/node/chunk-NIDICM57.cjs +0 -2080
- package/dist/lib/node/chunk-NIDICM57.cjs.map +0 -7
- package/dist/lib/node/chunk-P74TWGMG.cjs +0 -44
- package/dist/lib/node/chunk-P74TWGMG.cjs.map +0 -7
- package/dist/lib/node/chunk-QGPWY6GW.cjs +0 -34
- package/dist/lib/node/chunk-QGPWY6GW.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -289
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-QSWGTKON.cjs +0 -58
- package/dist/lib/node/intent-resolver-QSWGTKON.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/react-surface-D3NBYRZ6.cjs +0 -172
- package/dist/lib/node/react-surface-D3NBYRZ6.cjs.map +0 -7
- package/dist/lib/node/settings-2JXLKYGE.cjs +0 -36
- package/dist/lib/node/settings-2JXLKYGE.cjs.map +0 -7
- package/dist/lib/node/types/index.cjs +0 -54
- package/dist/lib/node/types/index.cjs.map +0 -7
- package/dist/lib/node-esm/AssistantDialog-6WEMLUPU.mjs +0 -48
- package/dist/lib/node-esm/AssistantDialog-6WEMLUPU.mjs.map +0 -7
- package/dist/lib/node-esm/BlueprintContainer-STOJAVML.mjs +0 -322
- package/dist/lib/node-esm/BlueprintContainer-STOJAVML.mjs.map +0 -7
- package/dist/lib/node-esm/ChatContainer-3MVBTUJN.mjs +0 -41
- package/dist/lib/node-esm/ChatContainer-3MVBTUJN.mjs.map +0 -7
- package/dist/lib/node-esm/TemplateContainer-SOEWY2ZN.mjs.map +0 -7
- package/dist/lib/node-esm/ai-client-XGZBJ6BE.mjs +0 -40
- package/dist/lib/node-esm/ai-client-XGZBJ6BE.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-3SY5MBIK.mjs +0 -226
- package/dist/lib/node-esm/app-graph-builder-3SY5MBIK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-34EX6E5Q.mjs +0 -18
- package/dist/lib/node-esm/chunk-34EX6E5Q.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3UEZLJ2V.mjs +0 -16
- package/dist/lib/node-esm/chunk-3UEZLJ2V.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CDAILLCU.mjs +0 -98
- package/dist/lib/node-esm/chunk-CDAILLCU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-J6UXXZGJ.mjs +0 -209
- package/dist/lib/node-esm/chunk-J6UXXZGJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OD574YIU.mjs +0 -2102
- package/dist/lib/node-esm/chunk-OD574YIU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OYN6HLXZ.mjs +0 -88
- package/dist/lib/node-esm/chunk-OYN6HLXZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UCOFKNKN.mjs +0 -158
- package/dist/lib/node-esm/chunk-UCOFKNKN.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-E6MXTYAU.mjs +0 -44
- package/dist/lib/node-esm/intent-resolver-E6MXTYAU.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-7HA5EDWY.mjs +0 -160
- package/dist/lib/node-esm/react-surface-7HA5EDWY.mjs.map +0 -7
- package/dist/lib/node-esm/settings-5IAY6BT4.mjs.map +0 -7
- package/dist/types/src/capabilities/ai-client.d.ts +0 -5
- package/dist/types/src/capabilities/ai-client.d.ts.map +0 -1
- package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +0 -10
- package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +0 -1
- package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts +0 -8
- package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts.map +0 -1
- package/dist/types/src/components/AmbientDialog/index.d.ts +0 -2
- package/dist/types/src/components/AmbientDialog/index.d.ts.map +0 -1
- package/dist/types/src/components/AssistantDialog.d.ts +0 -7
- package/dist/types/src/components/AssistantDialog.d.ts.map +0 -1
- package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts +0 -13
- package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts.map +0 -1
- package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts +0 -8
- package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts.map +0 -1
- package/dist/types/src/components/BlueprintEditor/index.d.ts +0 -2
- package/dist/types/src/components/BlueprintEditor/index.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/Prompt.d.ts +0 -23
- package/dist/types/src/components/Prompt/Prompt.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/Prompt.stories.d.ts +0 -13
- package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/PromptBar.d.ts +0 -16
- package/dist/types/src/components/Prompt/PromptBar.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/PromptBar.stories.d.ts +0 -9
- package/dist/types/src/components/Prompt/PromptBar.stories.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/autocomplete.d.ts +0 -25
- package/dist/types/src/components/Prompt/autocomplete.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/index.d.ts +0 -3
- package/dist/types/src/components/Prompt/index.d.ts.map +0 -1
- package/dist/types/src/components/Prompt/references.d.ts +0 -30
- package/dist/types/src/components/Prompt/references.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/components/Thread/Thread.d.ts +0 -28
- package/dist/types/src/components/Thread/Thread.d.ts.map +0 -1
- package/dist/types/src/components/Thread/Thread.stories.d.ts +0 -11
- package/dist/types/src/components/Thread/Thread.stories.d.ts.map +0 -1
- package/dist/types/src/components/Thread/ThreadContainer.d.ts +0 -13
- package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +0 -1
- package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +0 -16
- package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/Thread/ThreadMessage.d.ts +0 -16
- package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +0 -1
- package/dist/types/src/components/Thread/ToolInvocations.d.ts +0 -13
- package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +0 -1
- package/dist/types/src/components/Thread/index.d.ts +0 -3
- package/dist/types/src/components/Thread/index.d.ts.map +0 -1
- package/dist/types/src/components/Thread/reducer.d.ts +0 -12
- package/dist/types/src/components/Thread/reducer.d.ts.map +0 -1
- package/dist/types/src/experimental/transcription/index.d.ts +0 -1
- package/dist/types/src/experimental/transcription/index.d.ts.map +0 -1
- package/dist/types/src/hooks/processor.d.ts +0 -72
- package/dist/types/src/hooks/processor.d.ts.map +0 -1
- package/dist/types/src/hooks/processor.test.d.ts.map +0 -1
- package/dist/types/src/hooks/useContextProvider.d.ts +0 -17
- package/dist/types/src/hooks/useContextProvider.d.ts.map +0 -1
- package/dist/types/src/hooks/useMessageQueue.d.ts +0 -42
- package/dist/types/src/hooks/useMessageQueue.d.ts.map +0 -1
- package/dist/types/src/hooks/useServices.d.ts +0 -7
- package/dist/types/src/hooks/useServices.d.ts.map +0 -1
- package/dist/types/src/hooks/useTextInputEvents.d.ts +0 -13
- package/dist/types/src/hooks/useTextInputEvents.d.ts.map +0 -1
- package/dist/types/src/parser/filter-generator.d.ts +0 -4
- package/dist/types/src/parser/filter-generator.d.ts.map +0 -1
- package/dist/types/src/parser/filter-generator.test.d.ts +0 -2
- package/dist/types/src/parser/filter-generator.test.d.ts.map +0 -1
- package/dist/types/src/parser/index.d.ts +0 -4
- package/dist/types/src/parser/index.d.ts.map +0 -1
- package/dist/types/src/parser/query-parser.d.ts +0 -15
- package/dist/types/src/parser/query-parser.d.ts.map +0 -1
- package/dist/types/src/parser/query-parser.test.d.ts +0 -2
- package/dist/types/src/parser/query-parser.test.d.ts.map +0 -1
- package/dist/types/src/parser/types.d.ts +0 -24
- package/dist/types/src/parser/types.d.ts.map +0 -1
- package/dist/types/src/stories/Prompt.stories.d.ts +0 -8
- package/dist/types/src/stories/Prompt.stories.d.ts.map +0 -1
- package/dist/types/src/stories/Query.stories.d.ts +0 -19
- package/dist/types/src/stories/Query.stories.d.ts.map +0 -1
- package/dist/types/src/stories/Research.stories.d.ts +0 -15
- package/dist/types/src/stories/Research.stories.d.ts.map +0 -1
- package/dist/types/src/stories/test-data.d.ts +0 -3
- package/dist/types/src/stories/test-data.d.ts.map +0 -1
- package/dist/types/src/stories/testing.d.ts +0 -12
- package/dist/types/src/stories/testing.d.ts.map +0 -1
- package/dist/types/src/testing/test-blueprint.d.ts +0 -8
- package/dist/types/src/testing/test-blueprint.d.ts.map +0 -1
- package/dist/types/src/tools/function.d.ts +0 -5
- package/dist/types/src/tools/function.d.ts.map +0 -1
- package/dist/types/src/tools/index.d.ts +0 -3
- package/dist/types/src/tools/index.d.ts.map +0 -1
- package/dist/types/src/tools/openapi.d.ts +0 -10
- package/dist/types/src/tools/openapi.d.ts.map +0 -1
- package/dist/types/src/tools/openapi.test.d.ts +0 -2
- package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
- package/dist/types/src/types/chat.d.ts +0 -23
- package/dist/types/src/types/chat.d.ts.map +0 -1
- package/dist/types/src/types/template.d.ts +0 -56
- package/dist/types/src/types/template.d.ts.map +0 -1
- package/dist/types/src/types/types.d.ts +0 -50
- package/dist/types/src/types/types.d.ts.map +0 -1
- package/src/capabilities/ai-client.ts +0 -42
- package/src/components/AmbientDialog/AmbientDialog.stories.tsx +0 -84
- package/src/components/AmbientDialog/AmbientDialog.tsx +0 -117
- package/src/components/AssistantDialog.tsx +0 -37
- package/src/components/BlueprintEditor/BlueprintEditor.stories.tsx +0 -32
- package/src/components/BlueprintEditor/index.ts +0 -5
- package/src/components/Prompt/Prompt.stories.tsx +0 -121
- package/src/components/Prompt/Prompt.tsx +0 -124
- package/src/components/Prompt/PromptBar.stories.tsx +0 -69
- package/src/components/Prompt/PromptBar.tsx +0 -105
- package/src/components/Prompt/autocomplete.ts +0 -218
- package/src/components/Prompt/index.ts +0 -6
- package/src/components/Prompt/references.ts +0 -180
- package/src/components/TemplateContainer.tsx +0 -23
- package/src/components/Thread/Thread.stories.tsx +0 -201
- package/src/components/Thread/Thread.tsx +0 -118
- package/src/components/Thread/ThreadContainer.stories.tsx +0 -283
- package/src/components/Thread/ThreadContainer.tsx +0 -105
- package/src/components/Thread/ThreadMessage.tsx +0 -234
- package/src/components/Thread/ToolInvocations.tsx +0 -106
- package/src/components/Thread/index.ts +0 -6
- package/src/components/Thread/reducer.ts +0 -52
- package/src/hooks/processor.test.ts +0 -15
- package/src/hooks/processor.ts +0 -238
- package/src/hooks/useChatProcessor.tsx +0 -97
- package/src/hooks/useMessageQueue.ts +0 -22
- package/src/hooks/useServices.ts +0 -28
- package/src/hooks/useTextInputEvents.ts +0 -49
- package/src/parser/filter-generator.test.ts +0 -32
- package/src/parser/filter-generator.ts +0 -81
- package/src/parser/index.ts +0 -7
- package/src/parser/query-parser.test.ts +0 -139
- package/src/parser/query-parser.ts +0 -199
- package/src/parser/types.ts +0 -34
- package/src/shims.d.ts +0 -8
- package/src/stories/Prompt.stories.tsx +0 -60
- package/src/stories/Query.stories.tsx +0 -514
- package/src/stories/Research.stories.tsx +0 -482
- package/src/stories/testing.ts +0 -60
- package/src/testing/test-blueprint.ts +0 -58
- package/src/tools/function.ts +0 -46
- package/src/tools/index.ts +0 -6
- package/src/tools/openapi.test.ts +0 -217
- package/src/tools/openapi.ts +0 -338
- package/src/types/chat.ts +0 -32
- package/src/types/template.ts +0 -66
- package/src/types/types.ts +0 -48
- package/src/typings.d.ts +0 -9
- /package/dist/types/src/{hooks → processor}/processor.test.d.ts +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/Prompt/Prompt.tsx", "../../../src/components/Prompt/autocomplete.ts", "../../../src/components/Prompt/references.ts", "../../../src/components/Prompt/PromptBar.tsx", "../../../src/components/Toolbox/Toolbox.tsx", "../../../src/tools/function.ts", "../../../src/tools/openapi.ts", "../../../src/components/Thread/Thread.tsx", "../../../src/components/Thread/ThreadMessage.tsx", "../../../src/components/Thread/ToolInvocations.tsx", "../../../src/components/Thread/reducer.ts", "../../../src/components/Thread/ThreadContainer.tsx", "../../../src/hooks/processor.ts", "../../../src/hooks/useChatProcessor.tsx", "../../../src/hooks/useMessageQueue.ts", "../../../src/hooks/useServices.ts", "../../../src/testing/test-blueprint.ts", "../../../src/testing/test-functions.ts", "../../../src/testing/test-services.ts", "../../../src/hooks/useTextInputEvents.ts", "../../../src/hooks/useContextProvider.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport React, { forwardRef, useImperativeHandle } from 'react';\n\nimport { type ThemedClassName, useThemeContext } from '@dxos/react-ui';\nimport {\n createBasicExtensions,\n createThemeExtensions,\n keymap,\n useTextEditor,\n type BasicExtensionsOptions,\n type UseTextEditorProps,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { autocompleteExtension, type AutocompleteOptions } from './autocomplete';\nimport { promptReferences, type ReferencesProvider } from './references';\n\n// TODO(burdon): Handle object references.\n\nexport interface PromptController {\n focus(): void;\n setText(text: string): void;\n}\n\nexport type PromptProps = ThemedClassName<\n {\n extensions?: Extension;\n references?: ReferencesProvider;\n onOpenChange?: (open: boolean) => void;\n } & AutocompleteOptions &\n Pick<UseTextEditorProps, 'autoFocus'> &\n Pick<BasicExtensionsOptions, 'lineWrapping' | 'placeholder'>\n>;\n\nexport const Prompt = forwardRef<PromptController, PromptProps>(\n (\n {\n classNames,\n extensions,\n references,\n autoFocus,\n lineWrapping = false,\n placeholder,\n onSubmit,\n onSuggest,\n onCancel,\n onOpenChange,\n },\n forwardRef,\n ) => {\n const { themeMode } = useThemeContext();\n const { parentRef, view } = useTextEditor(\n {\n debug: true,\n autoFocus,\n extensions: [\n autocompleteExtension({ onSubmit, onSuggest, onCancel }),\n createBasicExtensions({\n bracketMatching: false,\n lineWrapping,\n placeholder,\n }),\n createThemeExtensions({ themeMode }),\n references ? promptReferences({ provider: references }) : [],\n Prec.highest(\n keymap.of([\n {\n key: 'cmd-ArrowUp',\n preventDefault: true,\n run: () => {\n onOpenChange?.(true);\n return true;\n },\n },\n {\n key: 'cmd-ArrowDown',\n preventDefault: true,\n run: () => {\n onOpenChange?.(false);\n return true;\n },\n },\n ]),\n ),\n extensions,\n ].filter(isNonNullable),\n },\n [themeMode, extensions, onSubmit, onSuggest],\n );\n\n // Expose editor view.\n useImperativeHandle(\n forwardRef,\n () => {\n return {\n focus: () => {\n view?.focus();\n },\n setText: (text: string) => {\n view?.dispatch({\n changes: {\n from: 0,\n to: view.state.doc.length,\n insert: text,\n },\n selection: {\n anchor: text.length,\n head: text.length,\n },\n });\n },\n };\n },\n [view, onSubmit],\n );\n\n return <div ref={parentRef} className={mx('w-full', classNames)} />;\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Prec, type Extension } from '@codemirror/state';\nimport {\n EditorView,\n Decoration,\n ViewPlugin,\n keymap,\n type DecorationSet,\n type ViewUpdate,\n WidgetType,\n} from '@codemirror/view';\n\nexport type AutocompleteOptions = {\n /**\n * Callback triggered when Enter is pressed.\n * @param text The current text in the editor\n * @returns true if the editor should reset the document.\n */\n onSubmit?: (text: string) => boolean | void;\n\n /**\n * Function that returns a list of suggestions based on the current text.\n * @param text The current text before the cursor\n * @returns Array of suggestion strings\n */\n onSuggest?: (text: string) => string[];\n\n /**\n * ESC pressed.\n */\n onCancel?: () => void;\n};\n\n/**\n * Creates an autocomplete extension that shows inline suggestions.\n * Pressing Tab will complete the suggestion.\n */\n// TODO(burdon): Move to react-ui-editor.\nexport const autocompleteExtension = ({ onSubmit, onSuggest, onCancel }: AutocompleteOptions): Extension => {\n const suggest = ViewPlugin.fromClass(\n class {\n _decorations: DecorationSet;\n _currentSuggestion: string | null = null;\n\n constructor(view: EditorView) {\n this._decorations = this.computeDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.selectionSet) {\n this._decorations = this.computeDecorations(update.view);\n }\n }\n\n private computeDecorations(view: EditorView): DecorationSet {\n const text = view.state.doc.toString();\n const suggestions = onSuggest?.(text) ?? [];\n if (!suggestions.length) {\n this._currentSuggestion = null;\n return Decoration.none;\n }\n\n // Get the first suggestion.\n this._currentSuggestion = suggestions[0];\n const suffix = this._currentSuggestion.slice(text.length);\n if (!suffix) {\n return Decoration.none;\n }\n\n // Always show ghost text at the end of the document.\n return Decoration.set([\n Decoration.widget({\n widget: new InlineSuggestionWidget(suffix),\n side: 1,\n }).range(view.state.doc.length),\n ]);\n }\n\n completeSuggestion(view: EditorView): boolean {\n if (!this._currentSuggestion) {\n return false;\n }\n\n const text = view.state.doc.toString();\n const suffix = this._currentSuggestion.slice(text.length);\n if (!suffix) {\n return false;\n }\n\n view.dispatch({\n changes: {\n from: view.state.doc.length,\n insert: suffix,\n },\n selection: {\n anchor: view.state.doc.length + suffix.length,\n },\n });\n\n return true;\n }\n },\n {\n decorations: (v) => v._decorations,\n },\n );\n\n return [\n suggest,\n EditorView.theme({\n '.cm-inline-suggestion': {\n opacity: 0.4,\n },\n }),\n\n Prec.highest(\n keymap.of([\n {\n key: 'Tab',\n preventDefault: true,\n run: (view) => {\n const plugin = view.plugin(suggest);\n return plugin?.completeSuggestion(view) ?? false;\n },\n },\n {\n key: 'ArrowRight',\n preventDefault: true,\n run: (view) => {\n // Only complete if cursor is at the end\n if (view.state.selection.main.head !== view.state.doc.length) {\n return false;\n }\n\n const plugin = view.plugin(suggest);\n return plugin?.completeSuggestion(view) ?? false;\n },\n },\n {\n key: 'Enter',\n preventDefault: true,\n run: (view) => {\n const text = view.state.doc.toString().trim();\n if (text.length > 0 && onSubmit) {\n const reset = onSubmit(text);\n\n // Clear the document after calling onEnter.\n if (reset) {\n view.dispatch({\n changes: {\n from: 0,\n to: view.state.doc.length,\n insert: '',\n },\n });\n }\n }\n\n return true;\n },\n },\n {\n key: 'Shift-Enter',\n preventDefault: true,\n run: (view) => {\n view.dispatch({\n changes: {\n from: view.state.selection.main.head,\n insert: '\\n',\n },\n selection: {\n anchor: view.state.selection.main.head + 1,\n head: view.state.selection.main.head + 1,\n },\n });\n return true;\n },\n },\n {\n key: 'Escape',\n preventDefault: true,\n run: (view) => {\n // Clear the entire document.\n view.dispatch({\n changes: {\n from: 0,\n to: view.state.doc.length,\n insert: '',\n },\n });\n onCancel?.();\n return true;\n },\n },\n ]),\n ),\n ];\n};\n\nclass InlineSuggestionWidget extends WidgetType {\n constructor(private suffix: string) {\n super();\n }\n\n override toDOM(): HTMLSpanElement {\n const span = document.createElement('span');\n span.textContent = this.suffix;\n span.className = 'cm-inline-suggestion';\n return span;\n }\n\n override eq(other: InlineSuggestionWidget): boolean {\n return other.suffix === this.suffix;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { autocompletion, completionKeymap, type CompletionResult } from '@codemirror/autocomplete';\nimport { type Extension, RangeSet } from '@codemirror/state';\nimport {\n Decoration,\n EditorView,\n keymap,\n ViewPlugin,\n WidgetType,\n type DecorationSet,\n type ViewUpdate,\n} from '@codemirror/view';\n\nimport { Mutex } from '@dxos/async';\n\nexport type ReferenceData = {\n uri: string;\n label: string;\n // TODO(dmaretskyi): Consider adding details renderer for when you hover over the reference.\n};\n\nexport interface ReferencesProvider {\n getReferences({ query }: { query: string }): Promise<ReferenceData[]>;\n\n resolveReference({ uri }: { uri: string }): Promise<ReferenceData | null>;\n}\n\nexport type PromptReferencesOptions = {\n provider: ReferencesProvider;\n /**\n * Will prevent the autocomplete from closing when the user blurs the editor.\n * @default false\n */\n debug?: boolean;\n /**\n * @default '@'\n */\n triggerCharacter?: string;\n};\n\n/**\n * Include references into text.\n */\nexport const promptReferences = ({\n provider,\n debug = false,\n triggerCharacter = '@',\n}: PromptReferencesOptions): Extension => {\n if (triggerCharacter.length !== 1) {\n throw new Error('triggerCharacter must be a single character');\n }\n\n const decorationField = ViewPlugin.fromClass(\n class ReferenceView {\n private _mutex = new Mutex();\n\n decorations: DecorationSet = Decoration.set([]);\n\n constructor(view: EditorView) {\n queueMicrotask(async () => {\n const guard = await this._mutex.acquire();\n try {\n this.decorations = await this._computeDecorations(view);\n } finally {\n guard.release();\n }\n });\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged) {\n queueMicrotask(async () => {\n const guard = await this._mutex.acquire();\n try {\n this.decorations = await this._computeDecorations(update.view);\n } finally {\n guard.release();\n }\n });\n }\n }\n\n private async _computeDecorations(view: EditorView): Promise<DecorationSet> {\n const text = view.state.doc.toString();\n const references = text.matchAll(new RegExp(`${triggerCharacter}[a-zA-Z0-9@:]+\\\\s`, 'g'));\n\n const decorations = [];\n for (const match of references) {\n const reference = match[0];\n const uri = reference.slice(1, -1);\n const data = await provider.resolveReference({ uri });\n if (data) {\n decorations.push(\n Decoration.replace({\n widget: new ReferenceWidget(data),\n }).range(match.index!, match.index! + reference.length),\n );\n }\n }\n\n return Decoration.set(decorations);\n }\n },\n {\n decorations: (v) => v.decorations,\n provide: (plugin) => [\n EditorView.atomicRanges.of(\n (view): DecorationSet => view.plugin(decorationField)?.decorations ?? RangeSet.empty,\n ),\n ],\n },\n );\n\n return [\n decorationField,\n\n EditorView.theme({\n '.cm-reference-pill': {\n borderRadius: '0.25rem',\n borderWidth: '1px',\n marginRight: '0.25rem',\n marginLeft: '0.25rem',\n },\n }),\n\n autocompletion({\n activateOnTyping: true,\n override: [\n async (context): Promise<CompletionResult | null> => {\n const match = context.matchBefore(new RegExp(`${triggerCharacter}[a-zA-Z0-9]+`));\n\n if (!match || match?.to === match?.from) {\n return null;\n }\n\n const query = match.text.slice(1);\n const references = await provider.getReferences({ query });\n\n return {\n from: match.from,\n filter: false,\n options: references.map((reference) => ({\n label: reference.label,\n apply: `${triggerCharacter}${reference.uri} `,\n })),\n };\n },\n ],\n closeOnBlur: !debug,\n tooltipClass: () => 'shadow rounded',\n aboveCursor: true,\n }),\n\n keymap.of(completionKeymap),\n ];\n};\n\nclass ReferenceWidget extends WidgetType {\n constructor(private data: ReferenceData) {\n super();\n }\n\n override toDOM(): HTMLSpanElement {\n const span = document.createElement('span');\n span.textContent = `@ ${this.data.label}`;\n span.className = 'cm-reference-pill';\n return span;\n }\n\n override eq(other: ReferenceWidget): boolean {\n return other.data.uri === this.data.uri;\n }\n\n override ignoreEvent(): boolean {\n return true;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { forwardRef, useState } from 'react';\n\nimport { useVoiceInput } from '@dxos/plugin-transcription';\nimport { Icon, IconButton, type ThemedClassName, Tooltip, useForwardedRef, useTranslation } from '@dxos/react-ui';\nimport { Spinner } from '@dxos/react-ui-sfx';\nimport { errorText, mx } from '@dxos/react-ui-theme';\n\nimport { Prompt, type PromptController, type PromptProps } from './Prompt';\nimport { ASSISTANT_PLUGIN } from '../../meta';\n\nexport type PromptBarProps = ThemedClassName<\n Pick<\n PromptProps,\n | 'extensions'\n | 'references'\n | 'placeholder'\n | 'lineWrapping'\n | 'onSubmit'\n | 'onSuggest'\n | 'onCancel'\n | 'onOpenChange'\n > & {\n processing?: boolean;\n error?: Error;\n microphone?: boolean;\n }\n>;\n\nexport const PromptBar = forwardRef<PromptController, PromptBarProps>(\n ({ classNames, placeholder, processing, error, microphone, references, onCancel, ...props }, forwardedRef) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n const promptRef = useForwardedRef<PromptController>(forwardedRef);\n const [active, setActive] = useState(false);\n\n // TODO(burdon): Configure capability in TranscriptionPlugin.\n const { recording } = useVoiceInput({\n active,\n onUpdate: (text) => {\n promptRef.current?.setText(text);\n promptRef.current?.focus();\n },\n });\n\n return (\n <div\n className={mx(\n 'shrink-0 w-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] overflow-hidden',\n classNames,\n )}\n >\n <div className='flex w-[--rail-action] h-[--rail-action] items-center justify-center'>\n {(error && (\n <Tooltip.Trigger content={error.message} delayDuration={0}>\n <Icon icon='ph--warning-circle--regular' classNames={errorText} size={5} />\n </Tooltip.Trigger>\n )) || <Spinner active={processing} />}\n </div>\n <Prompt\n ref={promptRef}\n autoFocus\n classNames='pbs-2'\n lineWrapping={true}\n placeholder={placeholder ?? t('prompt placeholder')}\n references={references}\n onCancel={onCancel}\n {...props}\n />\n {(onCancel || microphone) && (\n <div className='flex w-[--rail-action] h-[--rail-action] items-center justify-center'>\n {processing && onCancel && (\n <IconButton\n classNames='px-1.5'\n variant='ghost'\n size={5}\n icon='ph--x--regular'\n iconOnly\n label={t('cancel processing button')}\n onClick={onCancel}\n />\n )}\n {!processing && microphone && (\n <IconButton\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('microphone button')}\n onMouseDown={() => setActive(true)}\n onMouseUp={() => setActive(false)}\n onTouchStart={() => setActive(true)}\n onTouchEnd={() => setActive(false)}\n />\n )}\n </div>\n )}\n </div>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useState, useEffect, Fragment, type FC } from 'react';\n\nimport { parseToolName, type Tool } from '@dxos/ai';\nimport { Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { type ArtifactDefinition } from '@dxos/artifact';\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 { mx } from '@dxos/react-ui-theme';\n\nimport { createToolsFromService } from '../../tools';\nimport { ServiceType } from '../../types';\n\nexport type ToolboxProps = ThemedClassName<{\n artifacts?: ArtifactDefinition[];\n services?: { service: ServiceType; tools: Tool[] }[];\n functions?: FunctionType[];\n striped?: boolean;\n}>;\n\nexport const Toolbox = ({ classNames, artifacts, functions, services, striped }: ToolboxProps) => {\n return (\n <div className={mx('flex flex-col overflow-y-auto box-content', classNames)}>\n {artifacts && artifacts.length > 0 && (\n <Section\n title='Artifacts'\n items={artifacts.map(({ name, description, tools }) => ({\n name,\n description,\n subitems: tools.map(({ name, description }) => ({ name: `∙ ${parseToolName(name)}`, description })),\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 </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 const ToolboxContainer = ({ classNames, space }: ThemedClassName<{ space?: Space }>) => {\n // Plugin artifacts.\n const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);\n\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 classNames={classNames} artifacts={artifactDefinitions} services={serviceTools} functions={functions} />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createTool, type ExecutableTool, ToolResult } 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 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\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 React, { type CSSProperties, useCallback, useMemo, useRef } from 'react';\n\nimport { type Message } from '@dxos/ai';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useIdentity } 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 { keyToFallback } from '@dxos/util';\n\nimport { ThreadMessage, type ThreadMessageProps } from './ThreadMessage';\nimport { messageReducer } from './reducer';\nimport { PromptBar, type PromptBarProps } from '../Prompt';\nimport type { ReferenceData, ReferencesProvider } from '../Prompt/references';\n\nexport interface ContextProvider {\n query({ query }: { query: string }): Promise<ReferenceData[]>;\n\n resolveMetadata({ uri }: { uri: string }): Promise<ReferenceData | null>;\n}\n\nexport type ThreadProps = ThemedClassName<{\n space?: Space;\n messages?: Message[];\n collapse?: boolean;\n transcription?: boolean;\n onOpenChange?: (open: boolean) => void;\n contextProvider?: ContextProvider;\n}> &\n Pick<PromptBarProps, 'processing' | 'error' | 'onSubmit' | 'onSuggest' | 'onCancel'> &\n Pick<ThreadMessageProps, 'debug' | 'tools' | 'onPrompt' | 'onDelete' | 'onAddToGraph'>;\n\n/**\n * Chat thread component.\n */\nexport const Thread = ({\n classNames,\n space,\n messages,\n collapse = true,\n transcription,\n processing,\n error,\n onSubmit,\n onCancel,\n onOpenChange,\n contextProvider,\n ...props\n}: ThreadProps) => {\n const scroller = useRef<ScrollController>(null);\n\n const identity = useIdentity();\n const fallbackValue = keyToFallback(identity!.identityKey);\n const userHue = identity!.profile?.data?.hue || fallbackValue.hue;\n\n const handleSubmit = useCallback<NonNullable<PromptBarProps['onSubmit']>>(\n (value: string) => {\n onSubmit?.(value);\n scroller.current?.scrollToBottom();\n return true;\n },\n [onSubmit],\n );\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: Message[]; current?: Message }>(messageReducer, {\n messages: [],\n });\n } else {\n return { messages: messages ?? [] };\n }\n }, [messages, collapse]);\n\n const references = useMemo<ReferencesProvider | undefined>(() => {\n if (!contextProvider) {\n return undefined;\n }\n\n return {\n getReferences: async ({ query }: { query: string }) => contextProvider.query({ query }),\n resolveReference: async ({ uri }: { uri: string }) => contextProvider.resolveMetadata({ uri }),\n };\n }, [contextProvider]);\n\n return (\n <div role='none' className={mx('flex flex-col grow overflow-hidden', classNames)}>\n <ScrollContainer ref={scroller} fade>\n <div\n role='none'\n className={mx(filteredMessages.length > 0 && 'pbs-6 pbe-6')}\n style={{ '--user-fill': `var(--dx-${userHue}Fill)` } as CSSProperties}\n >\n {filteredMessages.map((message) => (\n <ThreadMessage key={message.id} classNames='px-4 pbe-4' space={space} message={message} {...props} />\n ))}\n </div>\n </ScrollContainer>\n\n {onSubmit && (\n <PromptBar\n microphone={transcription}\n processing={processing}\n error={error}\n onSubmit={handleSubmit}\n onCancel={onCancel}\n onOpenChange={onOpenChange}\n references={references}\n />\n )}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, type PropsWithChildren } from 'react';\n\nimport { type MessageContentBlock, type Message, type Tool } from '@dxos/ai';\nimport { Surface } from '@dxos/app-framework';\nimport { type Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { type Space } from '@dxos/react-client/echo';\nimport { Button, Icon, IconButton, type ThemedClassName } from '@dxos/react-ui';\nimport {\n MarkdownViewer,\n ToggleContainer as NativeToggleContainer,\n type ToggleContainerProps,\n} from '@dxos/react-ui-components';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/react-ui-theme';\nimport { safeParseJson } from '@dxos/util';\n\nimport { ToolBlock, isToolMessage } from './ToolInvocations';\nimport { ToolboxContainer } from '../Toolbox';\n\nconst panelClassNames = 'flex flex-col w-full px-2 bg-activeSurface rounded-md';\nconst userClassNames = 'bg-[--user-fill] text-accentSurfaceText';\n\nconst ToggleContainer = (props: ToggleContainerProps) => {\n return <NativeToggleContainer {...props} classNames={mx(panelClassNames, props.classNames)} />;\n};\n\nconst MessageContainer = ({ children, classNames, user }: ThemedClassName<PropsWithChildren<{ user?: boolean }>>) => {\n if (!children) {\n return null;\n }\n\n return (\n <div role='list-item' className={mx('flex w-full', user && 'justify-end', classNames)}>\n <div className={mx(user ? ['px-2 py-1 rounded-md', userClassNames] : 'w-full')}>{children}</div>\n </div>\n );\n};\n\nexport type ThreadMessageProps = ThemedClassName<{\n space?: Space;\n message: Message;\n debug?: boolean;\n tools?: Tool[];\n onPrompt?: (text: string) => void;\n onDelete?: (id: string) => void;\n onAddToGraph?: (object: Obj.Any) => void;\n}>;\n\nexport const ThreadMessage: FC<ThreadMessageProps> = ({\n classNames,\n space,\n message,\n tools,\n onPrompt,\n onAddToGraph,\n}) => {\n const { role, content = [] } = message;\n\n // TODO(burdon): Restructure types to make check unnecessary.\n if (isToolMessage(message)) {\n return (\n <MessageContainer classNames={mx(classNames, 'animate-[fadeIn_0.5s]')}>\n <ToolBlock space={space} classNames={panelClassNames} message={message} tools={tools} />\n </MessageContainer>\n );\n }\n\n return content.map((block, idx) => {\n // TODO(burdon): Filter empty messages.\n if (block.type === 'text' && block.text.replaceAll(/\\s+/g, '').length === 0) {\n return null;\n }\n\n const Component = components[block.type] ?? components.default;\n\n return (\n <MessageContainer\n key={idx}\n classNames={mx(classNames, 'animate-[fadeIn_0.5s]')}\n user={block.type === 'text' && role === 'user'}\n >\n <Component space={space} block={block} onPrompt={onPrompt} onAddToGraph={onAddToGraph} />\n </MessageContainer>\n );\n });\n};\n\ntype BlockComponent = FC<{\n space?: Space;\n block: MessageContentBlock;\n onPrompt?: (text: string) => void;\n onAddToGraph?: (object: Obj.Any) => void;\n}>;\n\nconst components: Record<string, BlockComponent> = {\n //\n // Text\n //\n ['text' as const]: ({ block }) => {\n invariant(block.type === 'text');\n // const [open, setOpen] = useState(block.disposition === 'cot' && block.pending);\n const title = block.disposition ? titles[block.disposition] : undefined;\n if (!title) {\n return <MarkdownViewer classNames='[&>p]:animate-[fadeIn_0.5s]' content={block.text} />;\n }\n\n // TOOD(burdon): Store last time user opened/closed COT.\n // Autoclose when streaming ends.\n // useEffect(() => {\n // if (block.disposition === 'cot' && !block.pending) {\n // setOpen(false);\n // }\n // }, [block.disposition, block.pending]);\n\n return (\n <ToggleContainer\n // open={open}\n defaultOpen={systemDispositions.includes(block.disposition ?? '') && block.pending}\n title={title}\n icon={\n block.pending ? (\n <Icon icon={'ph--circle-notch--regular'} classNames='text-subdued ml-2 animate-spin' size={4} />\n ) : undefined\n }\n >\n <MarkdownViewer\n content={block.text}\n classNames={['pbe-2', systemDispositions.includes(block.disposition ?? '') && 'text-sm text-subdued']}\n />\n </ToggleContainer>\n );\n },\n\n //\n // JSON\n //\n ['json' as const]: ({ space, block, onPrompt, onAddToGraph }) => {\n invariant(block.type === 'json');\n\n switch (block.disposition) {\n case 'tool_list': {\n return (\n <ToggleContainer title={titles[block.disposition]} defaultOpen={true}>\n <ToolboxContainer space={space} classNames='pbe-2' />\n </ToggleContainer>\n );\n }\n\n case 'suggest': {\n const { text = '' }: { text: string } = safeParseJson(block.json ?? '{}') ?? ({} as any);\n return <IconButton icon='ph--lightning--regular' label={text} onClick={() => onPrompt?.(text)} />;\n }\n\n case 'select': {\n const { options = [] }: { options: string[] } = safeParseJson(block.json ?? '{}') ?? ({} as any);\n return (\n <div className='flex flex-wrap gap-1'>\n {options.map((option, idx) => (\n <Button\n classNames={'animate-[fadeIn_0.5s] rounded-2xl text-sm'}\n key={option}\n onClick={() => onPrompt?.(option)}\n >\n {option}\n </Button>\n ))}\n </div>\n );\n }\n\n case 'graph': {\n return (\n <div className='flex flex-wrap gap-1'>\n <Surface\n role='card'\n data={{ subject: JSON.parse(block.json ?? '{}') }}\n limit={1}\n fallback={<div className='font-mono text-xs text-pre'>{block.json}</div>}\n />\n {onAddToGraph && (\n <IconButton\n icon='ph--plus--regular'\n label='Add to graph'\n onClick={() => onAddToGraph?.(JSON.parse(block.json ?? '{}'))}\n />\n )}\n </div>\n );\n }\n\n default: {\n const title = block.disposition ? titles[block.disposition] : undefined;\n return (\n <ToggleContainer title={title ?? 'JSON'}>\n <Json data={safeParseJson(block.json ?? block)} classNames='!p-1 text-xs' />\n </ToggleContainer>\n );\n }\n }\n },\n\n //\n // Default\n //\n default: ({ block }) => {\n let title = titles[block.type];\n if (block.type === 'tool_use') {\n title = `Tool [${block.name}]`; // TODO(burdon): Get label from tool.\n }\n\n return (\n <ToggleContainer title={title ?? 'JSON'}>\n <Json data={block} classNames='!p-1 text-xs' />\n </ToggleContainer>\n );\n },\n};\n\n// TODO(burdon): Translations.\nconst titles: Record<string, string> = {\n ['cot' as const]: 'Chain of thought',\n ['artifact' as const]: 'Artifact',\n ['tool_use' as const]: 'Tool request',\n ['tool_result' as const]: 'Tool result',\n ['tool_list' as const]: 'Tools',\n ['artifact-update' as const]: 'Artifact(s) changed',\n};\n\nconst systemDispositions: string[] = ['cot', 'artifact-update'];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { type AgentStatus, type Message, type Tool } from '@dxos/ai';\nimport { log } from '@dxos/log';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { NumericTabs, StatusRoll, ToggleContainer } from '@dxos/react-ui-components';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { isNonNullable, isNotFalsy } from '@dxos/util';\n\nimport { type ThreadMessageProps } from './ThreadMessage';\n\nexport const isToolMessage = (message: Message) => {\n return message.content.some((block) => block.type === 'tool_use' || block.type === 'tool_result');\n};\n\nconst getToolName = (tool: Tool) => {\n return tool.namespace && tool.function ? `${tool.namespace}:${tool.function}` : tool.name.split('_').pop();\n};\n\nconst getToolCaption = (tool: Tool | undefined, status: AgentStatus | undefined) => {\n if (!tool) {\n return 'Calling tool...';\n }\n\n return status?.message ?? tool.caption ?? `Calling ${getToolName(tool)}...`;\n};\n\nexport const ToolBlock: FC<ThemedClassName<ThreadMessageProps>> = ({ classNames, message, tools }) => {\n const { content = [] } = message;\n\n let request: { tool: Tool | undefined; block: any } | undefined;\n const blocks = content.filter((block) => block.type === 'tool_use' || block.type === 'tool_result');\n const items = blocks\n .map((block) => {\n switch (block.type) {\n case 'tool_use': {\n // TODO(burdon): Skip these updates?\n if (block.pending && request?.block.id === block.id) {\n return null;\n }\n\n log.info('tool_use', { tool: request?.tool, status: block.currentStatus });\n\n request = { tool: tools?.find((tool) => tool.name === block.name), block };\n return { title: getToolCaption(request.tool, block.currentStatus), block };\n }\n\n case 'tool_result': {\n if (!request) {\n log.warn('unexpected message', { block });\n return { title: 'Error', block };\n }\n\n return { title: `${getToolCaption(request.tool, undefined)} (Success)`, block };\n }\n\n default: {\n request = undefined;\n return { title: 'Error', block };\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='grid grid-cols-[32px_1fr]'>\n <NumericTabs ref={tabsRef} length={items.length} selected={selected} onSelect={handleSelect} />\n <Json data={items[selected].block} classNames='!p-1 text-xs' />\n </div>\n </ToggleContainer>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Message } from '@dxos/ai';\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: Message[]; current?: Message }, Message> = (\n { current, messages },\n message,\n) => {\n let i = 0;\n for (const block of message.content) {\n switch (block.type) {\n case 'tool_use':\n case 'tool_result': {\n if (current) {\n current.content.push(block);\n } else {\n current = {\n id: [message.id, i].join('_'),\n role: message.role,\n content: [block],\n } as any;\n messages.push(current as any);\n }\n break;\n }\n\n case 'text':\n default: {\n current = undefined;\n messages.push({\n id: [message.id, i].join('_'),\n role: message.role,\n content: [block],\n } as any);\n break;\n }\n }\n\n i++;\n }\n\n return { current, messages };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, type FC, useEffect } from 'react';\n\nimport { CollaborationActions, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { type AssociatedArtifact } from '@dxos/artifact';\nimport { DXN, Ref } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { type ThemedClassName } from '@dxos/react-ui';\n\nimport { Thread, type ThreadProps } from './Thread';\nimport { useChatProcessor, useContextProvider, useMessageQueue } from '../../hooks';\nimport { type AIChatType, type AssistantSettingsProps } from '../../types';\n\nexport type ThreadContainerProps = {\n chat?: AIChatType;\n settings?: AssistantSettingsProps;\n part?: 'deck' | 'dialog';\n associatedArtifact?: AssociatedArtifact;\n} & Pick<ThreadProps, 'debug' | 'transcription' | 'onOpenChange' | 'onAddToGraph'>;\n\n// TODO(burdon): Since this only wraps Thread, just separate out hook?\nexport const ThreadContainer: FC<ThemedClassName<ThreadContainerProps>> = ({\n classNames,\n chat,\n settings,\n part,\n associatedArtifact,\n onOpenChange,\n ...props\n}) => {\n const space = getSpace(chat);\n const contextProvider = useContextProvider(space);\n const processor = useChatProcessor({ chat, space, settings, part, associatedArtifact });\n const messageQueue = useMessageQueue(chat);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n // TODO(thure): This will be referentially new on every render, is it causing overreactivity?\n const messages = [...(messageQueue?.objects ?? []), ...processor.messages.value];\n\n // Post last message to document.\n useEffect(() => {\n if (!processor.streaming.value && messageQueue?.objects) {\n const message = messageQueue.objects[messageQueue.objects.length - 1];\n if (space && chat && message && dispatch && associatedArtifact) {\n void dispatch(\n createIntent(CollaborationActions.InsertContent, {\n target: associatedArtifact,\n object: Ref.fromDXN(new DXN(DXN.kind.QUEUE, [...chat.queue.dxn.parts, message.id])),\n label: 'View proposal',\n }),\n );\n }\n }\n }, [messageQueue, associatedArtifact, processor.streaming.value]);\n\n const handleSubmit = useCallback(\n (text: string) => {\n // Don't accept input if still processing.\n if (processor.streaming.value) {\n log.warn('ignoring submit; still processing.');\n return false;\n }\n\n onOpenChange?.(true);\n\n invariant(messageQueue);\n void processor.request(text, {\n history: messageQueue.objects,\n onComplete: (messages) => {\n void messageQueue.append(messages);\n },\n });\n\n return true;\n },\n [processor, messageQueue, onOpenChange],\n );\n\n const handleCancel = useCallback(() => {\n if (processor.streaming.value) {\n void processor.cancel();\n }\n }, [processor]);\n\n return (\n <Thread\n classNames={classNames}\n space={space}\n messages={messages}\n processing={processor.streaming.value}\n error={processor.error.value}\n tools={processor.tools}\n contextProvider={contextProvider}\n onSubmit={handleSubmit}\n onCancel={handleCancel}\n onPrompt={handleSubmit}\n onOpenChange={onOpenChange}\n {...props}\n />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Signal, batch, computed, signal } from '@preact/signals-core';\n\nimport {\n DEFAULT_EDGE_MODEL,\n type ExecutableTool,\n type AiServiceClient,\n type GenerateRequest,\n type Message,\n type MessageContentBlock,\n type ToolUseContentBlock,\n} from '@dxos/ai';\nimport { type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { type ArtifactDefinition } from '@dxos/artifact';\nimport { AISession, type ArtifactDiffResolver } from '@dxos/assistant';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { Filter, getVersion, type Space } from '@dxos/react-client/echo';\n\n// TODO(burdon): Factor out.\ndeclare global {\n interface ToolContextExtensions {\n space?: Space;\n dispatch?: PromiseIntentDispatcher;\n }\n}\n\ntype RequestOptions = {\n history?: Message[];\n onComplete?: (messages: Message[]) => void;\n};\n\nexport type ChatProcessorOptions = Pick<GenerateRequest, 'model' | 'systemPrompt'>;\n\nconst defaultOptions: ChatProcessorOptions = {\n model: DEFAULT_EDGE_MODEL,\n systemPrompt: 'you are a helpful assistant',\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 ChatProcessor {\n /** Pending messages (incl. the current user request). */\n private readonly _pending: Signal<Message[]> = signal([]);\n\n /** Current streaming block (from the AI service). */\n private readonly _block: Signal<MessageContentBlock | undefined> = signal(undefined);\n\n /** Current streaming response. */\n private _session: AISession | undefined;\n\n /**\n * Streaming state.\n * @reactive\n */\n public readonly streaming: Signal<boolean> = computed(() => this._block.value !== undefined);\n\n /**\n * Last error.\n * @reactive\n */\n public readonly error: Signal<Error | undefined> = signal(undefined);\n\n /**\n * Array of Messages (incl. the current message being streamed).\n * @reactive\n */\n public readonly messages: Signal<Message[]> = computed(() => {\n const messages = [...this._pending.value];\n if (this._block.value) {\n const current = messages.pop();\n invariant(current);\n const { content, ...rest } = current;\n const message = { ...rest, content: [...content, this._block.value] };\n messages.push(message);\n }\n\n return messages;\n });\n\n constructor(\n private readonly _ai: AiServiceClient,\n private _tools?: ExecutableTool[],\n private _artifacts?: ArtifactDefinition[],\n private readonly _extensions?: ToolContextExtensions,\n private readonly _options: ChatProcessorOptions = defaultOptions,\n ) {}\n\n get tools() {\n return this._tools;\n }\n\n /**\n * Update tools.\n */\n setTools(tools: ExecutableTool[]): void {\n this._tools = tools;\n }\n\n /**\n * Make GPT request.\n */\n async request(message: string, options: RequestOptions = {}): Promise<Message[]> {\n this._session = new AISession({ operationModel: 'configured' });\n\n // Message complete.\n this._session.message.on((message) => {\n batch(() => {\n this._pending.value = [...this._pending.value, message];\n this._block.value = undefined;\n });\n });\n\n // Streaming update (happens before message complete).\n this._session.update.on((block) => {\n batch(() => {\n this._block.value = block;\n });\n });\n\n this._session.userMessage.on((message) => {\n this._pending.value = [...this._pending.value, message];\n });\n\n this._session.toolStatusReport.on(({ message, status }) => {\n const msg = this._pending.peek().find((m) => m.id === message.id);\n const toolUse = msg?.content.find((block) => block.type === 'tool_use');\n if (!toolUse) {\n return;\n }\n\n const block = msg?.content.find(\n (block): block is ToolUseContentBlock => block.type === 'tool_use' && block.id === toolUse.id,\n );\n if (block) {\n this._pending.value = this._pending.value.map((m) => {\n if (m.id === message.id) {\n return {\n ...m,\n content: m.content.map((b) =>\n b.type === 'tool_use' && b.id === toolUse.id ? { ...b, currentStatus: status } : b,\n ),\n };\n }\n return m;\n });\n } else {\n log.warn('no block for status report');\n }\n });\n\n try {\n const messages = await this._session.run({\n client: this._ai,\n history: options.history ?? [],\n artifacts: this._artifacts ?? [],\n requiredArtifactIds: this._artifacts?.map((artifact) => artifact.id) ?? [],\n tools: this._tools ?? [],\n prompt: message,\n systemPrompt: this._options.systemPrompt,\n extensions: this._extensions,\n artifactDiffResolver: this._artifactDiffResolver,\n generationOptions: {\n model: this._options.model,\n },\n });\n\n log('completed', { messages });\n options.onComplete?.(this._pending.value);\n } catch (err) {\n log.catch(err);\n if (err instanceof Error && err.message.includes('Overloaded')) {\n this.error.value = new AiServiceOverloadedError('AI service overloaded', { cause: err });\n } else {\n this.error.value = new Error('AI service error', { cause: err });\n }\n } finally {\n this._session = undefined;\n }\n\n return this._reset();\n }\n\n /**\n * Cancel pending requests.\n * @returns Pending requests (incl. the request message).\n */\n async cancel(): Promise<Message[]> {\n log.info('cancelling...');\n this._session?.abort();\n return this._reset();\n }\n\n private async _reset(): Promise<Message[]> {\n const messages = this._pending.value;\n batch(() => {\n this._pending.value = [];\n this._block.value = undefined;\n });\n\n return messages;\n }\n\n private _artifactDiffResolver: ArtifactDiffResolver = async (artifacts) => {\n const space = this._extensions?.space;\n if (!space) {\n return new Map();\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 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// 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 { useEffect, useMemo, useState } from 'react';\n\nimport { DEFAULT_EDGE_MODEL, DEFAULT_OLLAMA_MODEL, type ExecutableTool } from '@dxos/ai';\nimport { Capabilities, useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework';\nimport { type AssociatedArtifact, createSystemPrompt } from '@dxos/artifact';\nimport { FunctionType } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { useConfig } from '@dxos/react-client';\nimport { Filter, fullyQualifiedId, type Space, useQuery } from '@dxos/react-client/echo';\nimport { isNonNullable } from '@dxos/util';\n\nimport { AssistantCapabilities } from '../capabilities';\nimport { ChatProcessor, type ChatProcessorOptions } from '../hooks';\nimport { convertFunctionToTool, createToolsFromService } from '../tools';\nimport { type AIChatType, type AssistantSettingsProps, ServiceType } from '../types';\n\ntype UseChatProcessorProps = {\n chat?: AIChatType;\n space?: Space;\n settings?: AssistantSettingsProps;\n part?: 'deck' | 'dialog';\n associatedArtifact?: AssociatedArtifact;\n};\n\n/**\n * Configure and create ChatProcessor.\n */\nexport const useChatProcessor = ({\n chat,\n space,\n settings,\n // part = 'deck',\n part,\n associatedArtifact,\n}: UseChatProcessorProps): ChatProcessor => {\n const aiClient = useCapability(AssistantCapabilities.AiClient);\n const globalTools = useCapabilities(Capabilities.Tools);\n const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n // Services.\n const services = useQuery(space, Filter.type(ServiceType));\n const [serviceTools, setServiceTools] = useState<ExecutableTool[]>([]);\n useEffect(() => {\n log('creating service tools...');\n queueMicrotask(async () => {\n const tools = await Promise.all(services.map((service) => createToolsFromService(service)));\n setServiceTools(tools.flat());\n });\n }, [services]);\n\n // Tools and context.\n const config = useConfig();\n const functions = useQuery(space, Filter.type(FunctionType));\n const chatId = useMemo(() => (chat ? fullyQualifiedId(chat) : undefined), [chat]);\n const [tools, extensions] = useMemo(() => {\n log('creating tools...');\n const tools: ExecutableTool[] = [\n ...globalTools.flat(),\n ...serviceTools,\n ...functions\n .map((fn) => convertFunctionToTool(fn, config.values.runtime?.services?.edge?.url ?? '', space?.id))\n .filter(isNonNullable),\n ];\n const extensions = { space, dispatch, pivotId: chatId, part };\n return [tools, extensions];\n }, [dispatch, globalTools, space, chatId, serviceTools, functions]);\n\n // Prompt.\n const systemPrompt = useMemo(\n () =>\n createSystemPrompt({\n artifacts: artifactDefinitions.map((definition) => `${definition.name}\\n${definition.instructions}`),\n associatedArtifact,\n }),\n [artifactDefinitions, associatedArtifact],\n );\n\n // TODO(burdon): Remove default (let backend decide if not specified).\n const model: ChatProcessorOptions['model'] =\n settings?.llmProvider === 'ollama'\n ? ((settings?.ollamaModel ?? DEFAULT_OLLAMA_MODEL) as ChatProcessorOptions['model'])\n : ((settings?.edgeModel ?? DEFAULT_EDGE_MODEL) as ChatProcessorOptions['model']);\n\n // Create processor.\n // TODO(burdon): Updated on each query update above; should just update current processor.\n const processor = useMemo(() => {\n log('creating processor...', { settings });\n return new ChatProcessor(aiClient.value, tools, artifactDefinitions, extensions, { model, systemPrompt });\n }, [aiClient.value, tools, artifactDefinitions, extensions, model, systemPrompt]);\n\n return processor;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Message } from '@dxos/ai';\nimport { createQueueDXN } from '@dxos/echo-schema';\nimport { getSpace, useQueue } from '@dxos/react-client/echo';\n\nimport { type AIChatType } from '../types';\n\nexport const useMessageQueue = (chat?: AIChatType) => {\n const space = getSpace(chat);\n const queueDxn = useMemo(() => {\n // TODO(dmaretskyi): Chat.queue.dxn should be a valid DXN already.\n const dxn = space && chat?.queue.dxn;\n return dxn ? createQueueDXN(space.id, dxn.parts.at(-1)) : undefined;\n }, [space, chat?.queue.dxn]);\n\n return useQueue<Message>(queueDxn);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\n\nimport { MockServiceRegistry } from '../testing';\nimport { type ServiceType, type ServiceQuery } from '../types';\n\n/**\n * Retrieves matching services from the registry.\n */\nexport const useServices = (space: Space, query?: ServiceQuery): ServiceType[] => {\n const registry = useMemo(() => new MockServiceRegistry(), []);\n const [services, setServices] = useState<ServiceType[]>([]);\n useEffect(() => {\n const t = setTimeout(async () => {\n const services = await registry.queryServices(query);\n setServices(services);\n });\n\n return () => clearTimeout(t);\n }, [query, registry]);\n\n return services;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { ToolRegistry } from '@dxos/ai';\nimport { EXA_API_KEY } from '@dxos/ai/testing';\nimport {\n type BlueprintDefinition,\n BlueprintParser,\n createExaTool,\n createGraphWriterTool,\n createLocalSearchTool,\n} from '@dxos/assistant';\nimport { type Space } from '@dxos/client/echo';\nimport { type DXN } from '@dxos/keys';\nimport { DataTypes } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\n// TODO(dmaretskyi): make db available through services (same as function executor).\n// TODO(burdon): Can tools implement \"aspects\" so that variants can be used rather than an explicit reference?\nexport const createToolRegistry = (space: Space, queueDxn?: DXN): ToolRegistry => {\n return new ToolRegistry(\n [\n createExaTool({ apiKey: EXA_API_KEY }),\n createLocalSearchTool(space.db, queueDxn && space.queues.get(queueDxn)),\n queueDxn &&\n createGraphWriterTool({\n db: space.db,\n queue: space.queues.get(queueDxn),\n schema: DataTypes,\n onDone: async (objects) => {\n const queue = space.queues.get(queueDxn);\n await queue.append(objects);\n },\n }),\n ].filter(isNonNullable),\n );\n};\n\nexport const RESEARCH_BLUEPRINT_DEFINITION: BlueprintDefinition = {\n steps: [\n {\n instructions: 'Research information and entities related to the selected objects.',\n tools: ['search/web_search'],\n },\n {\n instructions:\n 'Based on your research find matching entires that are already in the graph. Do exaustive research.',\n tools: ['search/local_search'],\n },\n {\n instructions: 'Add researched data to the graph. Make connections to existing objects.',\n tools: ['search/local_search', 'graph/writer'],\n },\n ],\n};\n\nexport const RESEARCH_BLUEPRINT = BlueprintParser.create().parse(RESEARCH_BLUEPRINT_DEFINITION);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { DEFAULT_EDGE_MODEL, type GenerateRequest } from '@dxos/ai';\nimport { createSystemPrompt } from '@dxos/artifact';\n\nexport const createProcessorOptions = (artifacts: string[]): Pick<GenerateRequest, 'model' | 'systemPrompt'> => ({\n model: DEFAULT_EDGE_MODEL,\n systemPrompt: createSystemPrompt({ artifacts }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Obj } from '@dxos/echo';\n\nimport {\n type ApiAuthorization,\n type BaseServiceRegistry,\n type ServiceQuery,\n ServiceType,\n categoryIcons,\n} from '../types';\n\nexport class MockServiceRegistry implements BaseServiceRegistry {\n async queryServices(query?: ServiceQuery): Promise<ServiceType[]> {\n return TEST_SERVICES;\n }\n}\n\n// TODO(burdon): Can we generalize credentials?\n\nconst AMADEUS_AUTH: ApiAuthorization = {\n type: 'oauth',\n clientId: 'BOEnpLd1sMyKjAPGKYeAPFFy60u53QEG',\n clientSecret: 'n4qldSN7usvD57gm',\n tokenUrl: 'https://test.api.amadeus.com/v1/security/oauth2/token',\n grantType: 'client_credentials',\n};\n\nconst VISUAL_CROSSING_CREDENTIALS: ApiAuthorization = {\n type: 'api-key',\n key: 'FDPRVS953KB4GQQLD25GRT975',\n placement: {\n type: 'query',\n name: 'key',\n },\n};\n\n// Registries:\n// - https://apis.guru\n// - https://rapidapi.com\n// - https://github.com/konfig-sdks/openapi-examples\n// - https://publicapis.io/?utm_source=chatgpt.com\n\n// Examples:\n// - https://petstore.swagger.io/v2/swagger.json (testing)\n// - https://lichess.org/api\n// - https://github.com/konfig-sdks/openapi-examples/tree/main/xkcd\n// - https://api.coindesk.com/v1/bpi/currentprice.json\n// - https://www.coingecko.com/en/api/documentation\n\n// TODO(burdon): Support yaml endpoints.\n// - e.g., https://github.com/konfig-sdks/openapi-examples/blob/main/xkcd/openapi.yaml\n\nconst TEST_SERVICES: ServiceType[] = [\n Obj.make(ServiceType, {\n serviceId: 'amadeus.com/service/FlightSearch',\n name: 'Amadeus Flight Search',\n description: 'Search for local and international flights.',\n category: 'travel',\n interfaces: [\n {\n kind: 'api',\n schemaUrl: 'https://api.apis.guru/v2/specs/amadeus.com/amadeus-flight-availabilities-search/1.0.2/swagger.json',\n authorization: AMADEUS_AUTH,\n },\n ],\n }),\n\n Obj.make(ServiceType, {\n serviceId: 'amadeus.com/service/HotelSearch',\n name: 'Amadeus Hotel Search',\n description: 'Search for local and international hotels.',\n category: 'travel',\n interfaces: [\n {\n kind: 'api',\n schemaUrl: 'https://api.apis.guru/v2/specs/amadeus.com/amadeus-hotel-search/3.0.8/swagger.json',\n authorization: AMADEUS_AUTH,\n },\n ],\n }),\n\n Obj.make(ServiceType, {\n serviceId: 'visualcrossing.com/service/Weather',\n name: 'Visual Crossing Weather',\n description: 'Search for global weather forecasts.',\n category: 'weather',\n interfaces: [\n {\n kind: 'api',\n schemaUrl: 'https://api.apis.guru/v2/specs/visualcrossing.com/weather/4.6/openapi.json',\n authorization: VISUAL_CROSSING_CREDENTIALS,\n },\n ],\n }),\n\n // TODO(burdon): Needs auth.\n Obj.make(ServiceType, {\n serviceId: 'abstractapi.com/service/GeoLocation',\n name: 'Abstract GeoLocation',\n description: 'Get the location of any IP address.',\n category: 'geolocation',\n interfaces: [\n {\n kind: 'api',\n schemaUrl: 'https://api.apis.guru/v2/specs/abstractapi.com/geolocation/1.0.0/openapi.json',\n },\n ],\n }),\n\n //\n // Testing\n //\n\n ...Array.from({ length: 20 }, (_, i) =>\n Obj.make(ServiceType, {\n serviceId: `example.com/service/test-${i}`,\n name: `Test ${i}`,\n description: `Test ${i}`,\n category: Object.keys(categoryIcons)[Math.floor(Math.random() * Object.keys(categoryIcons).length)],\n interfaces: [\n {\n kind: 'api',\n schemaUrl: 'https://petstore.swagger.io/v2/swagger.json',\n },\n ],\n }),\n ),\n] as const;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useState, useCallback, type KeyboardEventHandler, type ChangeEventHandler } from 'react';\n\n/**\n * Hook that handles text input events.\n */\n// TODO(burdon): Factor out.\nexport const useTextInputEvents = ({\n onEnter,\n onEscape,\n}: {\n onEnter?: (text: string) => boolean | void;\n onEscape?: () => void;\n}) => {\n const [value, setValue] = useState('');\n\n const onKeyDown = useCallback<KeyboardEventHandler<HTMLInputElement>>(\n (ev) => {\n switch (ev.key) {\n case 'Escape': {\n onEscape?.();\n setValue('');\n break;\n }\n\n case 'Enter': {\n const value = (ev.target as HTMLInputElement).value.trim();\n if (value.length > 0) {\n const reset = onEnter?.(value);\n if (reset) {\n setValue('');\n }\n }\n break;\n }\n }\n },\n [onEnter, onEscape],\n );\n\n const onChange = useCallback<ChangeEventHandler<HTMLInputElement>>((ev) => {\n setValue(ev.target.value);\n }, []);\n\n return [{ value, onKeyDown, onChange }, setValue];\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, type Type } from '@dxos/echo';\n\nexport type ContextProvider = {\n query: (params: { query: string }) => Promise<Array<{ uri: string; label: string }>>;\n resolveMetadata: (params: { uri: string }) => Promise<{ uri: string; label: string }>;\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n\nexport const useContextProvider = (space?: Space): ContextProvider | undefined => {\n const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);\n\n return useMemo<ContextProvider | undefined>((): ContextProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n query: async ({ query }) => {\n const artifactSchemas = artifactDefinitions.map((artifact) => artifact.schema);\n const { objects } = await space.db\n .query(Filter.or(...artifactSchemas.map((schema) => Filter.type(schema as Type.Schema))))\n .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 resolveMetadata: async ({ uri }) => {\n const object = await space.db.query(Filter.ids(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n };\n }, [space, artifactDefinitions]);\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_state", "import_view", "import_react", "import_react_ui", "import_react_ui_theme", "import_ai", "import_echo", "import_functions", "import_log", "import_util", "import_app_framework", "import_invariant", "import_react_ui_components", "import_react_ui_syntax_highlighter", "import_echo_schema", "import_assistant", "import_artifact", "autocompleteExtension", "onSubmit", "onSuggest", "onCancel", "suggest", "ViewPlugin", "fromClass", "view", "_currentSuggestion", "_decorations", "computeDecorations", "update", "docChanged", "selectionSet", "text", "state", "doc", "toString", "suggestions", "length", "Decoration", "none", "suffix", "slice", "set", "widget", "InlineSuggestionWidget", "side", "range", "completeSuggestion", "dispatch", "changes", "from", "insert", "selection", "anchor", "decorations", "v", "EditorView", "theme", "opacity", "Prec", "highest", "keymap", "of", "key", "preventDefault", "run", "plugin", "main", "head", "trim", "reset", "to", "WidgetType", "toDOM", "span", "document", "createElement", "textContent", "className", "eq", "other", "promptReferences", "provider", "debug", "triggerCharacter", "Error", "decorationField", "ReferenceView", "_mutex", "Mutex", "queueMicrotask", "guard", "acquire", "_computeDecorations", "release", "references", "matchAll", "RegExp", "match", "reference", "uri", "data", "resolveReference", "push", "replace", "ReferenceWidget", "index", "provide", "atomicRanges", "RangeSet", "empty", "borderRadius", "borderWidth", "marginRight", "marginLeft", "autocompletion", "activateOnTyping", "override", "context", "matchBefore", "query", "getReferences", "filter", "options", "map", "label", "apply", "closeOnBlur", "tooltipClass", "aboveCursor", "completionKeymap", "ignoreEvent", "Prompt", "forwardRef", "classNames", "extensions", "autoFocus", "lineWrapping", "placeholder", "onOpenChange", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "createBasicExtensions", "bracketMatching", "createThemeExtensions", "isNonNullable", "useImperativeHandle", "focus", "setText", "React", "div", "ref", "mx", "PromptBar", "processing", "error", "microphone", "props", "forwardedRef", "t", "useTranslation", "ASSISTANT_PLUGIN", "promptRef", "useForwardedRef", "active", "setActive", "useState", "recording", "useVoiceInput", "onUpdate", "current", "Tooltip", "Trigger", "content", "message", "delayDuration", "Icon", "icon", "errorText", "size", "Spinner", "IconButton", "variant", "iconOnly", "onClick", "noTooltip", "onMouseDown", "onMouseUp", "onTouchStart", "onTouchEnd", "convertFunctionToTool", "fn", "edgeUrl", "spaceId", "description", "inputSchema", "undefined", "existingFunctionUrl", "getUserFunctionUrlInMetadata", "getMeta", "url", "getInvocationUrl", "createTool", "name", "schema", "Type", "toEffectSchema", "execute", "input", "log", "info", "response", "fetch", "method", "headers", "body", "JSON", "stringify", "ToolResult", "Success", "createToolsFromService", "service", "invariant", "interfaces", "kind", "iface", "schemaUrl", "createToolsFromApi", "authorization", "res", "spec", "json", "tools", "path", "pathItem", "Object", "entries", "paths", "methods", "m", "methodItem", "parametersResolved", "parameters", "parameter", "resolved", "resolveJsonSchema", "type", "properties", "endpointParameters", "placement", "in", "normalizeSchema", "_in", "required", "Schema", "validateSync", "JsonSchema", "summary", "warn", "endpoint", "createRawTool", "getToolName", "instructions", "callApiEndpoint", "operationId", "toLowerCase", "replaceAll", "MAX_TOOL_NAME_LENGTH", "lengthBefore", "word", "GENERIC_WORDS", "includes", "lengthAfter", "getEndpointUrl", "request", "URLSearchParams", "example", "default", "encodeURIComponent", "value", "effectSchema", "Authorization", "resolveAuthorization", "ok", "status", "statusText", "contentType", "get", "responseBody", "parse", "isV3_1", "servers", "schemes", "host", "basePath", "tokenUrl", "grantType", "clientId", "clientSecret", "access_token", "base", "deepMapValues", "recurse", "$ref", "startsWith", "jsonpointer", "openapi", "Toolbox", "artifacts", "functions", "services", "striped", "Section", "title", "items", "subitems", "parseToolName", "serviceId", "stripeClassNames", "gridClassNames", "subGridClassNames", "h1", "i", "Fragment", "ToolboxContainer", "space", "artifactDefinitions", "useCapabilities", "Capabilities", "ArtifactDefinition", "useQuery", "Filter", "ServiceType", "serviceTools", "setServiceTools", "useEffect", "Promise", "all", "FunctionType", "isToolMessage", "some", "block", "tool", "namespace", "function", "split", "pop", "getToolCaption", "caption", "ToolBlock", "blocks", "pending", "id", "currentStatus", "find", "ToolContainer", "tabsRef", "useRef", "selected", "setSelected", "open", "setOpen", "handleSelect", "useMemo", "lines", "item", "isNotFalsy", "StatusRoll", "duration", "autoAdvance", "ToggleContainer", "onChangeOpen", "NumericTabs", "onSelect", "Json", "panelClassNames", "userClassNames", "NativeToggleContainer", "MessageContainer", "children", "user", "role", "ThreadMessage", "onPrompt", "onAddToGraph", "idx", "Component", "components", "disposition", "titles", "MarkdownViewer", "defaultOpen", "systemDispositions", "safeParseJson", "option", "Button", "Surface", "subject", "limit", "fallback", "messageReducer", "messages", "join", "Thread", "collapse", "transcription", "contextProvider", "scroller", "identity", "useIdentity", "fallbackValue", "keyToFallback", "identityKey", "userHue", "profile", "hue", "handleSubmit", "useCallback", "scrollToBottom", "filteredMessages", "reduce", "resolveMetadata", "ScrollContainer", "fade", "style", "defaultOptions", "model", "DEFAULT_EDGE_MODEL", "systemPrompt", "ChatProcessor", "_ai", "_tools", "_artifacts", "_extensions", "_options", "_pending", "signal", "_block", "streaming", "computed", "rest", "_artifactDiffResolver", "Map", "versions", "artifact", "objects", "object", "db", "ids", "version", "getVersion", "diff", "setTools", "_session", "AISession", "operationModel", "on", "batch", "userMessage", "toolStatusReport", "msg", "peek", "toolUse", "b", "client", "history", "requiredArtifactIds", "prompt", "artifactDiffResolver", "generationOptions", "onComplete", "err", "catch", "AiServiceOverloadedError", "cause", "_reset", "cancel", "abort", "code", "useChatProcessor", "chat", "settings", "part", "associatedArtifact", "aiClient", "useCapability", "AssistantCapabilities", "AiClient", "globalTools", "Tools", "dispatchPromise", "useIntentDispatcher", "flat", "config", "useConfig", "chatId", "fullyQualifiedId", "values", "runtime", "edge", "pivotId", "createSystemPrompt", "definition", "llmProvider", "ollamaModel", "DEFAULT_OLLAMA_MODEL", "edgeModel", "processor", "useMessageQueue", "getSpace", "queueDxn", "dxn", "queue", "createQueueDXN", "parts", "at", "useQueue", "RESEARCH_BLUEPRINT_DEFINITION", "steps", "RESEARCH_BLUEPRINT", "BlueprintParser", "create", "AMADEUS_AUTH", "VISUAL_CROSSING_CREDENTIALS", "TEST_SERVICES", "Obj", "make", "category", "Array", "_", "keys", "categoryIcons", "Math", "floor", "random", "stringMatch", "useContextProvider", "artifactSchemas", "or", "getLabel", "getDXN", "first", "ThreadContainer", "messageQueue", "createIntent", "CollaborationActions", "InsertContent", "target", "Ref", "fromDXN", "DXN", "QUEUE", "append", "handleCancel"]
|
|
7
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var chunk_P74TWGMG_exports = {};
|
|
20
|
-
__export(chunk_P74TWGMG_exports, {
|
|
21
|
-
ASSISTANT_DIALOG: () => ASSISTANT_DIALOG,
|
|
22
|
-
ASSISTANT_PLUGIN: () => ASSISTANT_PLUGIN,
|
|
23
|
-
meta: () => meta
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(chunk_P74TWGMG_exports);
|
|
26
|
-
var ASSISTANT_PLUGIN = "dxos.org/plugin/assistant";
|
|
27
|
-
var ASSISTANT_DIALOG = `${ASSISTANT_PLUGIN}/assistant/dialog`;
|
|
28
|
-
var meta = {
|
|
29
|
-
id: ASSISTANT_PLUGIN,
|
|
30
|
-
name: "Assistant",
|
|
31
|
-
description: "The Assistant tab allows you to chat with your spaces inside of Composer.",
|
|
32
|
-
icon: "ph--atom--regular",
|
|
33
|
-
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant",
|
|
34
|
-
tags: [
|
|
35
|
-
"labs"
|
|
36
|
-
]
|
|
37
|
-
};
|
|
38
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
39
|
-
0 && (module.exports = {
|
|
40
|
-
ASSISTANT_DIALOG,
|
|
41
|
-
ASSISTANT_PLUGIN,
|
|
42
|
-
meta
|
|
43
|
-
});
|
|
44
|
-
//# sourceMappingURL=chunk-P74TWGMG.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const ASSISTANT_PLUGIN = 'dxos.org/plugin/assistant';\n\nexport const ASSISTANT_DIALOG = `${ASSISTANT_PLUGIN}/assistant/dialog`;\n\nexport const meta: PluginMeta = {\n id: ASSISTANT_PLUGIN,\n name: 'Assistant',\n description: 'The Assistant tab allows you to chat with your spaces inside of Composer.',\n icon: 'ph--atom--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-assistant',\n tags: ['labs'],\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,mBAAmB;AAEzB,IAAMC,mBAAmB,GAAGD,gBAAAA;AAE5B,IAAME,OAAmB;EAC9BC,IAAIH;EACJI,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;AACT;",
|
|
6
|
-
"names": ["ASSISTANT_PLUGIN", "ASSISTANT_DIALOG", "meta", "id", "name", "description", "icon", "source", "tags"]
|
|
7
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var chunk_QGPWY6GW_exports = {};
|
|
20
|
-
__export(chunk_QGPWY6GW_exports, {
|
|
21
|
-
AssistantCapabilities: () => AssistantCapabilities
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(chunk_QGPWY6GW_exports);
|
|
24
|
-
var import_chunk_P74TWGMG = require("./chunk-P74TWGMG.cjs");
|
|
25
|
-
var import_app_framework = require("@dxos/app-framework");
|
|
26
|
-
(function(AssistantCapabilities2) {
|
|
27
|
-
AssistantCapabilities2.AiClient = (0, import_app_framework.defineCapability)(`${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/capability/ai-client`);
|
|
28
|
-
})(AssistantCapabilities || (AssistantCapabilities = {}));
|
|
29
|
-
var AssistantCapabilities;
|
|
30
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
-
0 && (module.exports = {
|
|
32
|
-
AssistantCapabilities
|
|
33
|
-
});
|
|
34
|
-
//# sourceMappingURL=chunk-QGPWY6GW.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/capabilities.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ReadonlySignal } from '@preact/signals-core';\n\nimport { type AiServiceClient } from '@dxos/ai';\nimport { defineCapability } from '@dxos/app-framework';\n\nimport { ASSISTANT_PLUGIN } from '../meta';\n\n// TODO(burdon): Move to types to import from other plugins?\nexport namespace AssistantCapabilities {\n export const AiClient = defineCapability<ReadonlySignal<AiServiceClient>>(`${ASSISTANT_PLUGIN}/capability/ai-client`);\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAOA,2BAAiC;UAKhBA,wBAAAA;yBACFC,eAAWC,uCAAkD,GAAGC,sCAAAA,uBAAuC;AACtH,GAFiBH,0BAAAA,wBAAAA,CAAAA,EAAAA;;",
|
|
6
|
-
"names": ["AssistantCapabilities", "AiClient", "defineCapability", "ASSISTANT_PLUGIN"]
|
|
7
|
-
}
|