@dxos/plugin-assistant 0.8.4-main.c1de068 → 0.8.4-main.c4373fc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{TemplateContainer-RPJ2LBOB.mjs → BlueprintContainer-TO35YXHT.mjs} +11 -9
- package/dist/lib/browser/BlueprintContainer-TO35YXHT.mjs.map +7 -0
- package/dist/lib/browser/ChatCompanion-ZIKNUUSU.mjs +127 -0
- package/dist/lib/browser/ChatCompanion-ZIKNUUSU.mjs.map +7 -0
- package/dist/lib/browser/{ChatContainer-M3IHQLRS.mjs → ChatContainer-MA5BVDGH.mjs} +33 -14
- package/dist/lib/browser/ChatContainer-MA5BVDGH.mjs.map +7 -0
- package/dist/lib/browser/{ChatDialog-X6VN6QZI.mjs → ChatDialog-7OXLIWZI.mjs} +26 -12
- package/dist/lib/browser/ChatDialog-7OXLIWZI.mjs.map +7 -0
- package/dist/lib/browser/{SequenceContainer-3UDVKWPA.mjs → SequenceContainer-2FEWMQGW.mjs} +7 -19
- package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs.map +7 -0
- package/dist/lib/browser/ai-service-ERTZBTP3.mjs +19 -0
- package/dist/lib/browser/ai-service-ERTZBTP3.mjs.map +7 -0
- package/dist/lib/browser/app-graph-builder-VKFRYY2N.mjs +154 -0
- package/dist/lib/browser/app-graph-builder-VKFRYY2N.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-NSJARW5U.mjs +12 -0
- package/dist/lib/browser/blueprint-definition-NSJARW5U.mjs.map +7 -0
- package/dist/lib/browser/chunk-2CE2KPKZ.mjs +175 -0
- package/dist/lib/browser/chunk-2CE2KPKZ.mjs.map +7 -0
- package/dist/lib/browser/chunk-43I2LR6O.mjs +216 -0
- package/dist/lib/browser/chunk-43I2LR6O.mjs.map +7 -0
- package/dist/lib/browser/chunk-5EGXHCAZ.mjs +16 -0
- package/dist/lib/browser/chunk-5EGXHCAZ.mjs.map +7 -0
- package/dist/lib/browser/chunk-5RICKAMN.mjs +18 -0
- package/dist/lib/browser/chunk-5RICKAMN.mjs.map +7 -0
- package/dist/lib/browser/chunk-B2RCJXEO.mjs +202 -0
- package/dist/lib/browser/chunk-B2RCJXEO.mjs.map +7 -0
- package/dist/lib/browser/chunk-BRJMNZOS.mjs +169 -0
- package/dist/lib/browser/chunk-BRJMNZOS.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-P5P7QXBS.mjs +296 -0
- package/dist/lib/browser/chunk-P5P7QXBS.mjs.map +7 -0
- package/dist/lib/browser/chunk-UDH4MR7H.mjs +1744 -0
- package/dist/lib/browser/chunk-UDH4MR7H.mjs.map +7 -0
- package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs +18 -0
- package/dist/lib/browser/edge-model-resolver-O6OFYIO2.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +161 -68
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/intent-resolver-5LB25ZRN.mjs +112 -0
- package/dist/lib/browser/intent-resolver-5LB25ZRN.mjs.map +7 -0
- package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs +17 -0
- package/dist/lib/browser/local-model-resolver-GO6ZEMLL.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-surface-WQZXU624.mjs +107 -0
- package/dist/lib/browser/react-surface-WQZXU624.mjs.map +7 -0
- package/dist/lib/browser/{settings-2DGP3UTS.mjs → settings-4B2NA4CE.mjs} +8 -7
- package/dist/lib/{node-esm/settings-47RYZOU4.mjs.map → browser/settings-4B2NA4CE.mjs.map} +1 -1
- package/dist/lib/browser/state-LXTS54DI.mjs +21 -0
- package/dist/lib/browser/state-LXTS54DI.mjs.map +7 -0
- package/dist/lib/browser/toolkit-NQ2GXCF5.mjs +199 -0
- package/dist/lib/browser/toolkit-NQ2GXCF5.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +7 -4
- package/dist/lib/node-esm/{TemplateContainer-A3NAQCZE.mjs → BlueprintContainer-J664LTU3.mjs} +11 -9
- package/dist/lib/node-esm/BlueprintContainer-J664LTU3.mjs.map +7 -0
- package/dist/lib/node-esm/ChatCompanion-YDXJIVCF.mjs +128 -0
- package/dist/lib/node-esm/ChatCompanion-YDXJIVCF.mjs.map +7 -0
- package/dist/lib/node-esm/{ChatContainer-VZT74PO2.mjs → ChatContainer-WLTOQLHH.mjs} +33 -14
- package/dist/lib/node-esm/ChatContainer-WLTOQLHH.mjs.map +7 -0
- package/dist/lib/node-esm/{ChatDialog-RJ6FDX4Q.mjs → ChatDialog-ADKF62SY.mjs} +26 -12
- package/dist/lib/node-esm/ChatDialog-ADKF62SY.mjs.map +7 -0
- package/dist/lib/node-esm/{SequenceContainer-RQQH5XOC.mjs → SequenceContainer-PGGJUQ46.mjs} +7 -19
- package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs.map +7 -0
- package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs +20 -0
- package/dist/lib/node-esm/ai-service-MUYLV3NT.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-builder-K6AYO4YM.mjs +155 -0
- package/dist/lib/node-esm/app-graph-builder-K6AYO4YM.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-WD2IVMAI.mjs +13 -0
- package/dist/lib/node-esm/blueprint-definition-WD2IVMAI.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-73ABYRYX.mjs +20 -0
- package/dist/lib/node-esm/chunk-73ABYRYX.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-DBDKOC3I.mjs +203 -0
- package/dist/lib/node-esm/chunk-DBDKOC3I.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-DSE2IILK.mjs +217 -0
- package/dist/lib/node-esm/chunk-DSE2IILK.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-I7BZMIAG.mjs +170 -0
- package/dist/lib/node-esm/chunk-I7BZMIAG.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-TBQOICXZ.mjs +297 -0
- package/dist/lib/node-esm/chunk-TBQOICXZ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-U2NYUS2N.mjs +177 -0
- package/dist/lib/node-esm/chunk-U2NYUS2N.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-UPPSDTOJ.mjs +1745 -0
- package/dist/lib/node-esm/chunk-UPPSDTOJ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs +17 -0
- package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs.map +7 -0
- package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs +19 -0
- package/dist/lib/node-esm/edge-model-resolver-2ARXDOYS.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +161 -68
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/intent-resolver-I64MNI4C.mjs +113 -0
- package/dist/lib/node-esm/intent-resolver-I64MNI4C.mjs.map +7 -0
- package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs +18 -0
- package/dist/lib/node-esm/local-model-resolver-WOQ2D2R2.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-surface-TVVVRIR3.mjs +108 -0
- package/dist/lib/node-esm/react-surface-TVVVRIR3.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-47RYZOU4.mjs → settings-7Y3CRASE.mjs} +8 -7
- package/dist/lib/{browser/settings-2DGP3UTS.mjs.map → node-esm/settings-7Y3CRASE.mjs.map} +1 -1
- package/dist/lib/node-esm/state-BO6GUFLB.mjs +22 -0
- package/dist/lib/node-esm/state-BO6GUFLB.mjs.map +7 -0
- package/dist/lib/node-esm/toolkit-V57PRJNG.mjs +200 -0
- package/dist/lib/node-esm/toolkit-V57PRJNG.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +7 -4
- package/dist/types/src/AssistantPlugin.d.ts +1 -1
- package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/ai-service.d.ts +4 -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 +11 -0
- package/dist/types/src/capabilities/capabilities.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 +11 -3
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- 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.map +1 -1
- package/dist/types/src/components/BlueprintContainer.d.ts +8 -0
- package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -0
- package/dist/types/src/components/Chat/Chat.d.ts +20 -17
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
- package/dist/types/src/components/Chat/events.d.ts +5 -0
- package/dist/types/src/components/Chat/events.d.ts.map +1 -1
- 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 +4 -4
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
- package/dist/types/src/components/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.map +1 -1
- 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.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +4 -5
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +6 -4
- package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/index.d.ts +1 -1
- package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.d.ts +10 -7
- package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +115 -75
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/Link.d.ts +9 -0
- package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/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.map +1 -1
- package/dist/types/src/components/SequenceContainer.d.ts.map +1 -1
- package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +1 -1
- package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -1
- package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +264 -3
- package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -6
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +262 -7
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +3 -2
- 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 +4 -9
- package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +262 -5
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +5 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/functions/analysis.d.ts +5 -0
- package/dist/types/src/functions/analysis.d.ts.map +1 -0
- package/dist/types/src/functions/index.d.ts +4 -0
- package/dist/types/src/functions/index.d.ts.map +1 -0
- package/dist/types/src/functions/list.d.ts +10 -0
- package/dist/types/src/functions/list.d.ts.map +1 -0
- package/dist/types/src/functions/load.d.ts +8 -0
- package/dist/types/src/functions/load.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +7 -3
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts +25 -0
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -0
- package/dist/types/src/hooks/useChatProcessor.d.ts +8 -21
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatServices.d.ts +5 -6
- package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
- 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/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.map +1 -1
- package/dist/types/src/meta.d.ts +1 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/processor/index.d.ts +3 -0
- package/dist/types/src/processor/index.d.ts.map +1 -0
- package/dist/types/src/{hooks → processor}/presets.d.ts +3 -3
- package/dist/types/src/processor/presets.d.ts.map +1 -0
- package/dist/types/src/processor/processor.d.ts +74 -0
- package/dist/types/src/processor/processor.d.ts.map +1 -0
- package/dist/types/src/processor/processor.test.d.ts +2 -0
- package/dist/types/src/processor/processor.test.d.ts.map +1 -0
- package/dist/types/src/stories/Chat.stories.d.ts +29 -246
- package/dist/types/src/stories/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/stories/QueryEditor.stories.d.ts +7 -0
- package/dist/types/src/stories/QueryEditor.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/ExecutionGraphContainer.d.ts +7 -0
- package/dist/types/src/stories/components/ExecutionGraphContainer.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/MessageContainer.d.ts +4 -0
- package/dist/types/src/stories/components/MessageContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/ProjectContainer.d.ts +4 -0
- package/dist/types/src/stories/components/ProjectContainer.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/ScriptContainer.d.ts +4 -0
- package/dist/types/src/stories/components/ScriptContainer.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 +3 -0
- package/dist/types/src/stories/components/TriggersContainer.d.ts.map +1 -0
- package/dist/types/src/stories/components/index.d.ts +18 -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 +51 -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 +0 -4
- package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +29 -22
- 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 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/service.d.ts +15 -12
- package/dist/types/src/types/service.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +113 -92
- package/src/AssistantPlugin.tsx +151 -82
- package/src/capabilities/ai-service.ts +27 -0
- package/src/capabilities/app-graph-builder.ts +47 -137
- package/src/capabilities/blueprint-definition.ts +64 -0
- package/src/capabilities/capabilities.ts +18 -0
- package/src/capabilities/edge-model-resolver.ts +25 -0
- package/src/capabilities/index.ts +9 -0
- package/src/capabilities/intent-resolver.ts +51 -15
- package/src/capabilities/local-model-resolver.ts +30 -0
- package/src/capabilities/react-surface.tsx +17 -64
- package/src/capabilities/state.ts +20 -0
- package/src/capabilities/toolkit.ts +168 -0
- package/src/components/AssistantSettings/AssistantSettings.tsx +83 -76
- package/src/components/BlueprintContainer.tsx +24 -0
- package/src/components/Chat/Chat.tsx +180 -176
- package/src/components/Chat/events.ts +7 -0
- package/src/components/ChatCompanion.tsx +114 -0
- package/src/components/ChatContainer.tsx +19 -13
- package/src/components/ChatDialog.tsx +18 -14
- package/src/components/ChatProgress/ChatProgress.tsx +67 -0
- package/src/components/ChatProgress/index.ts +5 -0
- package/src/components/ChatPrompt/ChatActions.tsx +10 -24
- package/src/components/ChatPrompt/ChatOptions.tsx +225 -0
- package/src/components/ChatPrompt/ChatPresets.tsx +1 -0
- package/src/components/ChatPrompt/ChatReferences.tsx +31 -36
- package/src/components/ChatPrompt/ChatStatusIndicator.tsx +25 -22
- package/src/components/ChatPrompt/index.ts +1 -1
- package/src/components/ChatThread/ChatThread.stories.tsx +98 -112
- package/src/components/ChatThread/ChatThread.tsx +65 -29
- package/src/components/ChatThread/Link.tsx +26 -0
- package/src/components/ChatThread/reducers.ts +151 -0
- package/src/components/ChatThread/registry.tsx +184 -0
- package/src/components/ChatThread/sync.test.ts +81 -0
- package/src/components/ChatThread/sync.ts +113 -0
- package/src/components/PromptSettings.tsx +1 -0
- package/src/components/SequenceContainer.tsx +29 -30
- package/src/components/SequenceEditor/SequenceEditor.stories.tsx +11 -8
- package/src/components/SequenceEditor/SequenceEditor.tsx +3 -3
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +28 -17
- package/src/components/TemplateEditor/TemplateEditor.tsx +21 -52
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +18 -13
- package/src/components/TemplateEditor/TemplateForm.tsx +7 -4
- 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/components/Toolbar/index.ts +5 -0
- package/src/components/Toolbar/useChatToolbarActions.ts +126 -0
- package/src/components/Toolbox/Toolbox.stories.tsx +13 -22
- package/src/components/Toolbox/Toolbox.tsx +21 -51
- package/src/components/index.ts +4 -5
- package/src/events.ts +2 -2
- package/src/functions/analysis.ts +22 -0
- package/src/functions/index.ts +7 -0
- package/src/functions/list.ts +48 -0
- package/src/functions/load.ts +46 -0
- package/src/hooks/index.ts +7 -4
- package/src/hooks/useBlueprintRegistry.ts +94 -0
- package/src/hooks/useChatProcessor.ts +21 -98
- package/src/hooks/useChatServices.ts +29 -71
- package/src/hooks/useContextBinder.ts +18 -0
- package/src/hooks/useContextObjects.ts +58 -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/useReferencesProvider.ts +11 -9
- package/src/meta.ts +4 -6
- package/src/processor/index.ts +6 -0
- package/src/{hooks → processor}/presets.ts +15 -7
- package/src/processor/processor.test.ts +81 -0
- package/src/processor/processor.ts +303 -0
- package/src/queue-logger.ts +10 -10
- package/src/stories/Chat.stories.tsx +818 -314
- package/src/stories/QueryEditor.stories.tsx +114 -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/ExecutionGraphContainer.tsx +30 -0
- package/src/stories/components/GraphContainer.tsx +106 -0
- package/src/stories/components/InvocationsContainer.tsx +17 -0
- package/src/stories/components/MessageContainer.tsx +22 -0
- package/src/stories/components/ProjectContainer.tsx +17 -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/ScriptContainer.tsx +28 -0
- package/src/stories/components/TasksContainer.tsx +47 -0
- package/src/stories/components/TokenManagerContainer.tsx +14 -0
- package/src/stories/components/TriggersContainer.tsx +12 -0
- package/src/stories/components/index.ts +22 -0
- package/src/stories/components/types.ts +11 -0
- package/src/stories/testing/data.ts +135 -0
- package/src/stories/testing/index.ts +6 -0
- package/src/stories/testing/schema.ts +17 -0
- package/src/stories/testing/testing.tsx +291 -0
- package/src/testing/index.ts +3 -1
- package/src/testing/test-data.ts +248 -0
- package/src/testing/test-functions.ts +8 -3
- package/src/testing/test-generator.ts +261 -0
- package/src/testing/test-sequence.ts +2 -27
- package/src/translations.ts +32 -22
- 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 -1
- package/src/types/service.ts +2 -2
- package/src/vite-env.d.ts +30 -0
- package/dist/lib/browser/ChatContainer-M3IHQLRS.mjs.map +0 -7
- package/dist/lib/browser/ChatDialog-X6VN6QZI.mjs.map +0 -7
- package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs.map +0 -7
- package/dist/lib/browser/TemplateContainer-RPJ2LBOB.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-JTXBKE7O.mjs +0 -223
- package/dist/lib/browser/app-graph-builder-JTXBKE7O.mjs.map +0 -7
- package/dist/lib/browser/chunk-AEAEKWOC.mjs +0 -98
- package/dist/lib/browser/chunk-AEAEKWOC.mjs.map +0 -7
- package/dist/lib/browser/chunk-EQDW6BYQ.mjs +0 -108
- package/dist/lib/browser/chunk-EQDW6BYQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-FDCJSQYF.mjs +0 -40
- package/dist/lib/browser/chunk-FDCJSQYF.mjs.map +0 -7
- package/dist/lib/browser/chunk-JQBVLTM5.mjs +0 -158
- package/dist/lib/browser/chunk-JQBVLTM5.mjs.map +0 -7
- package/dist/lib/browser/chunk-OWY4CUQY.mjs +0 -2245
- package/dist/lib/browser/chunk-OWY4CUQY.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs +0 -60
- package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs.map +0 -7
- package/dist/lib/browser/react-surface-66VY37YQ.mjs +0 -150
- package/dist/lib/browser/react-surface-66VY37YQ.mjs.map +0 -7
- package/dist/lib/node-esm/ChatContainer-VZT74PO2.mjs.map +0 -7
- package/dist/lib/node-esm/ChatDialog-RJ6FDX4Q.mjs.map +0 -7
- package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs.map +0 -7
- package/dist/lib/node-esm/TemplateContainer-A3NAQCZE.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-OWSOXFTD.mjs +0 -224
- package/dist/lib/node-esm/app-graph-builder-OWSOXFTD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2XL6MNPE.mjs +0 -99
- package/dist/lib/node-esm/chunk-2XL6MNPE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BISJDTBK.mjs +0 -159
- package/dist/lib/node-esm/chunk-BISJDTBK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-E33DNNDW.mjs +0 -109
- package/dist/lib/node-esm/chunk-E33DNNDW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QN2H2EHV.mjs +0 -41
- package/dist/lib/node-esm/chunk-QN2H2EHV.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SENTQAEO.mjs +0 -2246
- package/dist/lib/node-esm/chunk-SENTQAEO.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs +0 -61
- package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs +0 -151
- package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs.map +0 -7
- package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +0 -9
- package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +0 -1
- package/dist/types/src/components/ChatThread/ChatMessage.d.ts +0 -17
- package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +0 -1
- package/dist/types/src/components/ChatThread/ToolBlock.d.ts +0 -19
- package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +0 -1
- package/dist/types/src/components/ChatThread/reducer.d.ts +0 -12
- package/dist/types/src/components/ChatThread/reducer.d.ts.map +0 -1
- package/dist/types/src/components/TemplateContainer.d.ts +0 -8
- package/dist/types/src/components/TemplateContainer.d.ts.map +0 -1
- package/dist/types/src/hooks/chat-processor.d.ts +0 -86
- package/dist/types/src/hooks/chat-processor.d.ts.map +0 -1
- package/dist/types/src/hooks/chat-processor.test.d.ts +0 -2
- package/dist/types/src/hooks/chat-processor.test.d.ts.map +0 -1
- package/dist/types/src/hooks/presets.d.ts.map +0 -1
- package/dist/types/src/hooks/useBlueprints.d.ts +0 -9
- package/dist/types/src/hooks/useBlueprints.d.ts.map +0 -1
- package/dist/types/src/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/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/schema.d.ts +0 -88
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/components/ChatPrompt/ChatOptionsMenu.tsx +0 -52
- package/src/components/ChatThread/ChatMessage.tsx +0 -268
- package/src/components/ChatThread/ToolBlock.tsx +0 -121
- package/src/components/ChatThread/reducer.ts +0 -52
- package/src/components/TemplateContainer.tsx +0 -24
- package/src/hooks/chat-processor.test.ts +0 -16
- package/src/hooks/chat-processor.ts +0 -314
- package/src/hooks/useBlueprints.ts +0 -57
- 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/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/schema.ts +0 -95
- package/src/typings.d.ts +0 -9
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AssistantAction_exports,
|
|
3
|
+
Assistant_exports
|
|
4
|
+
} from "./chunk-B2RCJXEO.mjs";
|
|
5
|
+
import {
|
|
6
|
+
AssistantCapabilities
|
|
7
|
+
} from "./chunk-5EGXHCAZ.mjs";
|
|
8
|
+
import {
|
|
9
|
+
ASSISTANT_DIALOG,
|
|
10
|
+
meta
|
|
11
|
+
} from "./chunk-5RICKAMN.mjs";
|
|
12
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
13
|
+
|
|
14
|
+
// src/capabilities/app-graph-builder.ts
|
|
15
|
+
import { Rx } from "@effect-rx/rx-react";
|
|
16
|
+
import * as Function from "effect/Function";
|
|
17
|
+
import * as Option from "effect/Option";
|
|
18
|
+
import { Capabilities, LayoutAction, contributes, createIntent } from "@dxos/app-framework";
|
|
19
|
+
import { Sequence } from "@dxos/conductor";
|
|
20
|
+
import { Obj } from "@dxos/echo";
|
|
21
|
+
import { invariant } from "@dxos/invariant";
|
|
22
|
+
import { ClientCapabilities } from "@dxos/plugin-client";
|
|
23
|
+
import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
|
|
24
|
+
import { ROOT_ID, createExtension, rxFromSignal } from "@dxos/plugin-graph";
|
|
25
|
+
import { getActiveSpace } from "@dxos/plugin-space";
|
|
26
|
+
import { SpaceAction } from "@dxos/plugin-space/types";
|
|
27
|
+
import { Query, fullyQualifiedId } from "@dxos/react-client/echo";
|
|
28
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/capabilities/app-graph-builder.ts";
|
|
29
|
+
var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphBuilder, [
|
|
30
|
+
createExtension({
|
|
31
|
+
id: `${meta.id}/assistant`,
|
|
32
|
+
actions: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
|
|
33
|
+
{
|
|
34
|
+
id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,
|
|
35
|
+
data: async () => {
|
|
36
|
+
const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
|
|
37
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
38
|
+
const space = getActiveSpace(context) ?? client.spaces.default;
|
|
39
|
+
const chat = await getOrCreateChat(dispatch, space);
|
|
40
|
+
if (!chat) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
await dispatch(createIntent(LayoutAction.UpdateDialog, {
|
|
44
|
+
part: "dialog",
|
|
45
|
+
subject: ASSISTANT_DIALOG,
|
|
46
|
+
options: {
|
|
47
|
+
state: true,
|
|
48
|
+
blockAlign: "end",
|
|
49
|
+
props: {
|
|
50
|
+
chat
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
54
|
+
},
|
|
55
|
+
properties: {
|
|
56
|
+
label: [
|
|
57
|
+
"open assistant label",
|
|
58
|
+
{
|
|
59
|
+
ns: meta.id
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
icon: "ph--sparkle--regular",
|
|
63
|
+
disposition: "pin-end",
|
|
64
|
+
position: "hoist",
|
|
65
|
+
keyBinding: {
|
|
66
|
+
macos: "shift+meta+k",
|
|
67
|
+
windows: "shift+ctrl+k"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
]), Option.getOrElse(() => [])))
|
|
72
|
+
}),
|
|
73
|
+
createExtension({
|
|
74
|
+
id: `${meta.id}/companion-chat`,
|
|
75
|
+
connector: (node) => {
|
|
76
|
+
return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.isObject(node2.data) ? Option.some(node2.data) : Option.none()), Option.map((object) => {
|
|
77
|
+
const currentChat = get(rxFromSignal(() => context.getCapability(AssistantCapabilities.State).currentChat[fullyQualifiedId(object)]));
|
|
78
|
+
return [
|
|
79
|
+
{
|
|
80
|
+
id: [
|
|
81
|
+
fullyQualifiedId(object),
|
|
82
|
+
"assistant-chat"
|
|
83
|
+
].join(ATTENDABLE_PATH_SEPARATOR),
|
|
84
|
+
type: PLANK_COMPANION_TYPE,
|
|
85
|
+
data: currentChat ?? "assistant-chat",
|
|
86
|
+
properties: {
|
|
87
|
+
label: [
|
|
88
|
+
"assistant chat label",
|
|
89
|
+
{
|
|
90
|
+
ns: meta.id
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
icon: "ph--sparkle--regular",
|
|
94
|
+
position: "hoist",
|
|
95
|
+
disposition: "hidden"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
];
|
|
99
|
+
}), Option.getOrElse(() => [])));
|
|
100
|
+
}
|
|
101
|
+
}),
|
|
102
|
+
createExtension({
|
|
103
|
+
id: `${meta.id}/sequence-logs`,
|
|
104
|
+
connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(Sequence, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
|
|
105
|
+
{
|
|
106
|
+
id: [
|
|
107
|
+
node2.id,
|
|
108
|
+
"logs"
|
|
109
|
+
].join(ATTENDABLE_PATH_SEPARATOR),
|
|
110
|
+
type: PLANK_COMPANION_TYPE,
|
|
111
|
+
data: "logs",
|
|
112
|
+
properties: {
|
|
113
|
+
label: [
|
|
114
|
+
"sequence logs label",
|
|
115
|
+
{
|
|
116
|
+
ns: meta.id
|
|
117
|
+
}
|
|
118
|
+
],
|
|
119
|
+
icon: "ph--clock-countdown--regular",
|
|
120
|
+
disposition: "hidden"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
]), Option.getOrElse(() => [])))
|
|
124
|
+
})
|
|
125
|
+
]));
|
|
126
|
+
var getOrCreateChat = async (dispatch, space) => {
|
|
127
|
+
const { objects: allChats } = await space.db.query(Query.type(Assistant_exports.Chat)).run();
|
|
128
|
+
const { objects: relatedChats } = await space.db.query(Query.type(Assistant_exports.Chat).sourceOf(Assistant_exports.CompanionTo).source()).run();
|
|
129
|
+
const chats = allChats.filter((chat) => !relatedChats.includes(chat));
|
|
130
|
+
if (chats.length > 0) {
|
|
131
|
+
return chats.at(-1);
|
|
132
|
+
}
|
|
133
|
+
const { data } = await dispatch(createIntent(AssistantAction_exports.CreateChat, {
|
|
134
|
+
space
|
|
135
|
+
}));
|
|
136
|
+
invariant(Obj.instanceOf(Assistant_exports.Chat, data?.object), void 0, {
|
|
137
|
+
F: __dxlog_file,
|
|
138
|
+
L: 160,
|
|
139
|
+
S: void 0,
|
|
140
|
+
A: [
|
|
141
|
+
"Obj.instanceOf(Assistant.Chat, data?.object)",
|
|
142
|
+
""
|
|
143
|
+
]
|
|
144
|
+
});
|
|
145
|
+
await dispatch(createIntent(SpaceAction.AddObject, {
|
|
146
|
+
target: space,
|
|
147
|
+
object: data.object
|
|
148
|
+
}));
|
|
149
|
+
return data.object;
|
|
150
|
+
};
|
|
151
|
+
export {
|
|
152
|
+
app_graph_builder_default as default
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=app-graph-builder-VKFRYY2N.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\n\nimport {\n Capabilities,\n LayoutAction,\n type PluginContext,\n type PromiseIntentDispatcher,\n contributes,\n createIntent,\n} from '@dxos/app-framework';\nimport { Sequence } from '@dxos/conductor';\nimport { Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { ROOT_ID, createExtension, rxFromSignal } from '@dxos/plugin-graph';\nimport { getActiveSpace } from '@dxos/plugin-space';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { Query, type Space, fullyQualifiedId } from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, meta } from '../meta';\nimport { Assistant, AssistantAction } from '../types';\n\nimport { AssistantCapabilities } from './capabilities';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/assistant`,\n actions: (node) =>\n Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n const chat = await getOrCreateChat(dispatch, space);\n if (!chat) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: ASSISTANT_DIALOG,\n options: {\n state: true,\n blockAlign: 'end',\n props: {\n chat,\n },\n },\n }),\n );\n },\n properties: {\n label: ['open assistant label', { ns: meta.id }],\n icon: 'ph--sparkle--regular',\n disposition: 'pin-end',\n position: 'hoist',\n keyBinding: {\n macos: 'shift+meta+k',\n windows: 'shift+ctrl+k',\n },\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${meta.id}/companion-chat`,\n connector: (node) => {\n return Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node.data) : Option.none())),\n Option.map((object) => {\n const currentChat = get(\n rxFromSignal(\n () => context.getCapability(AssistantCapabilities.State).currentChat[fullyQualifiedId(object)],\n ),\n );\n\n return [\n {\n id: [fullyQualifiedId(object), 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: currentChat ?? 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: meta.id }],\n icon: 'ph--sparkle--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n createExtension({\n id: `${meta.id}/sequence-logs`,\n connector: (node) =>\n Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(Sequence, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'logs'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'logs',\n properties: {\n label: ['sequence logs label', { ns: meta.id }],\n icon: 'ph--clock-countdown--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (\n dispatch: PromiseIntentDispatcher,\n space: Space,\n): Promise<Assistant.Chat | undefined> => {\n // TODO(wittjosiah): This should be possible with a single query.\n const { objects: allChats } = await space.db.query(Query.type(Assistant.Chat)).run();\n const { objects: relatedChats } = await space.db\n .query(Query.type(Assistant.Chat).sourceOf(Assistant.CompanionTo).source())\n .run();\n\n const chats = allChats.filter((chat) => !relatedChats.includes(chat));\n if (chats.length > 0) {\n return chats.at(-1);\n }\n\n const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { space }));\n invariant(Obj.instanceOf(Assistant.Chat, data?.object));\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Rx", "Function", "Option", "Capabilities", "LayoutAction", "contributes", "createIntent", "Sequence", "Obj", "invariant", "ClientCapabilities", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "ROOT_ID", "createExtension", "rxFromSignal", "getActiveSpace", "SpaceAction", "Query", "fullyQualifiedId", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "actions", "node", "Rx", "make", "get", "pipe", "flatMap", "ROOT_ID", "some", "none", "map", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "space", "getActiveSpace", "spaces", "default", "chat", "getOrCreateChat", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "getOrElse", "connector", "Obj", "isObject", "object", "currentChat", "rxFromSignal", "AssistantCapabilities", "State", "fullyQualifiedId", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "PLANK_COMPANION_TYPE", "instanceOf", "Sequence", "objects", "allChats", "db", "query", "Query", "Assistant", "Chat", "run", "relatedChats", "sourceOf", "CompanionTo", "source", "chats", "filter", "includes", "length", "at", "AssistantAction", "CreateChat", "invariant", "SpaceAction", "AddObject", "target"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BLUEPRINT_KEY,
|
|
3
|
+
blueprint_definition_default,
|
|
4
|
+
createBlueprint
|
|
5
|
+
} from "./chunk-2CE2KPKZ.mjs";
|
|
6
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
7
|
+
export {
|
|
8
|
+
BLUEPRINT_KEY,
|
|
9
|
+
createBlueprint,
|
|
10
|
+
blueprint_definition_default as default
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=blueprint-definition-NSJARW5U.mjs.map
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
// src/capabilities/blueprint-definition.ts
|
|
2
|
+
import { Capabilities, contributes } from "@dxos/app-framework";
|
|
3
|
+
import { templates } from "@dxos/assistant";
|
|
4
|
+
import { DISCORD_BLUEPRINT, LINEAR_BLUEPRINT, RESEARCH_BLUEPRINT, WEB_SEARCH_BLUEPRINT, agent, createResearchNote, entityExtraction, fetchDiscordMessages, research, syncLinearIssues } from "@dxos/assistant-testing";
|
|
5
|
+
import { Blueprint } from "@dxos/blueprints";
|
|
6
|
+
|
|
7
|
+
// src/functions/analysis.ts
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import * as Schema from "effect/Schema";
|
|
10
|
+
import { defineFunction } from "@dxos/functions";
|
|
11
|
+
import { log } from "@dxos/log";
|
|
12
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/functions/analysis.ts";
|
|
13
|
+
var analysis_default = defineFunction({
|
|
14
|
+
key: "dxos.org/function/assistant-analysis",
|
|
15
|
+
name: "Assistant analysis",
|
|
16
|
+
description: "Enter analysis analysis mode.",
|
|
17
|
+
inputSchema: Schema.Struct({
|
|
18
|
+
enable: Schema.Boolean.annotations({
|
|
19
|
+
description: "Enable or disable analysis mode."
|
|
20
|
+
})
|
|
21
|
+
}),
|
|
22
|
+
outputSchema: Schema.Void,
|
|
23
|
+
handler: Effect.fn(function* ({ context, data: { enable } }) {
|
|
24
|
+
log.info("analysis mode", {
|
|
25
|
+
space: context.space?.id,
|
|
26
|
+
enable
|
|
27
|
+
}, {
|
|
28
|
+
F: __dxlog_file,
|
|
29
|
+
L: 20,
|
|
30
|
+
S: this,
|
|
31
|
+
C: (f, a) => f(...a)
|
|
32
|
+
});
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// src/functions/list.ts
|
|
37
|
+
import * as Effect2 from "effect/Effect";
|
|
38
|
+
import * as Schema2 from "effect/Schema";
|
|
39
|
+
import { Filter, Obj, Query } from "@dxos/echo";
|
|
40
|
+
import { DatabaseService, defineFunction as defineFunction2 } from "@dxos/functions";
|
|
41
|
+
import { trim } from "@dxos/util";
|
|
42
|
+
var list_default = defineFunction2({
|
|
43
|
+
key: "dxos.org/function/assistant/list",
|
|
44
|
+
name: "Assistant list",
|
|
45
|
+
description: (
|
|
46
|
+
// TODO(wittjosiah): Find a better way to prompt for looking up typenames before querying with them.
|
|
47
|
+
trim`
|
|
48
|
+
Lists the objects of the given type.
|
|
49
|
+
Check the list-schemas tool for available types before calling this function.
|
|
50
|
+
`
|
|
51
|
+
),
|
|
52
|
+
inputSchema: Schema2.Struct({
|
|
53
|
+
typename: Schema2.String.annotations({
|
|
54
|
+
description: "The typename of the objects to list."
|
|
55
|
+
})
|
|
56
|
+
}),
|
|
57
|
+
outputSchema: Schema2.Struct({
|
|
58
|
+
results: Schema2.Array(Schema2.Struct({
|
|
59
|
+
dxn: Schema2.String.annotations({
|
|
60
|
+
description: "The DXN of the object."
|
|
61
|
+
}),
|
|
62
|
+
label: Schema2.optional(Schema2.String.annotations({
|
|
63
|
+
description: "The label of the object."
|
|
64
|
+
}))
|
|
65
|
+
}))
|
|
66
|
+
}),
|
|
67
|
+
handler: Effect2.fn(function* ({ data: { typename } }) {
|
|
68
|
+
const [schema] = yield* DatabaseService.runSchemaQuery({
|
|
69
|
+
typename
|
|
70
|
+
});
|
|
71
|
+
const filter = schema ? Filter.type(schema) : Filter.typename(typename);
|
|
72
|
+
const { objects } = yield* DatabaseService.runQuery(Query.select(filter));
|
|
73
|
+
const results = objects.map((object) => ({
|
|
74
|
+
dxn: Obj.getDXN(object).toString(),
|
|
75
|
+
label: Obj.getLabel(object)
|
|
76
|
+
}));
|
|
77
|
+
return {
|
|
78
|
+
results
|
|
79
|
+
};
|
|
80
|
+
})
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// src/functions/load.ts
|
|
84
|
+
import * as Effect3 from "effect/Effect";
|
|
85
|
+
import * as Function from "effect/Function";
|
|
86
|
+
import * as Option from "effect/Option";
|
|
87
|
+
import * as Schema3 from "effect/Schema";
|
|
88
|
+
import { ArtifactId } from "@dxos/assistant";
|
|
89
|
+
import { Obj as Obj2 } from "@dxos/echo";
|
|
90
|
+
import { DatabaseService as DatabaseService2, defineFunction as defineFunction3 } from "@dxos/functions";
|
|
91
|
+
var load_default = defineFunction3({
|
|
92
|
+
key: "dxos.org/function/assistant/load",
|
|
93
|
+
name: "Assistant load",
|
|
94
|
+
description: "Loads the object.",
|
|
95
|
+
inputSchema: Schema3.Struct({
|
|
96
|
+
id: ArtifactId.annotations({
|
|
97
|
+
description: "The ID of the object."
|
|
98
|
+
}),
|
|
99
|
+
typename: Schema3.String.annotations({
|
|
100
|
+
description: "The typename of the object."
|
|
101
|
+
})
|
|
102
|
+
}),
|
|
103
|
+
outputSchema: Schema3.Struct({
|
|
104
|
+
// TODO(wittjosiah): Type.Obj.Any | Type.Relation.Any
|
|
105
|
+
object: Schema3.Any
|
|
106
|
+
}),
|
|
107
|
+
handler: Effect3.fn(function* ({ data: { id, typename } }) {
|
|
108
|
+
const object = yield* DatabaseService2.resolve(ArtifactId.toDXN(id));
|
|
109
|
+
return yield* Function.pipe(Option.fromNullable(object), Option.flatMap((object2) => Obj2.getTypename(object2) === typename ? Option.some(object2) : Option.none()), Option.match({
|
|
110
|
+
onNone: () => Effect3.fail("Object not found."),
|
|
111
|
+
onSome: (object2) => {
|
|
112
|
+
return Effect3.succeed({
|
|
113
|
+
object: object2
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}));
|
|
117
|
+
})
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// src/capabilities/blueprint-definition.ts
|
|
121
|
+
var functions = [
|
|
122
|
+
analysis_default,
|
|
123
|
+
list_default,
|
|
124
|
+
load_default
|
|
125
|
+
];
|
|
126
|
+
var tools = [
|
|
127
|
+
"add-to-context",
|
|
128
|
+
// TODO(wittjosiah): Factor out to an ECHO blueprint.
|
|
129
|
+
"get-schemas",
|
|
130
|
+
"add-schema",
|
|
131
|
+
"create-record",
|
|
132
|
+
// TODO(wittjosiah): Factor out to a generic app-framework blueprint.
|
|
133
|
+
"open-item"
|
|
134
|
+
];
|
|
135
|
+
var BLUEPRINT_KEY = "dxos.org/blueprint/assistant";
|
|
136
|
+
var createBlueprint = () => Blueprint.make({
|
|
137
|
+
key: BLUEPRINT_KEY,
|
|
138
|
+
name: "Assistant",
|
|
139
|
+
tools: Blueprint.toolDefinitions({
|
|
140
|
+
functions,
|
|
141
|
+
tools
|
|
142
|
+
}),
|
|
143
|
+
instructions: templates.system
|
|
144
|
+
});
|
|
145
|
+
var blueprint = createBlueprint();
|
|
146
|
+
var blueprint_definition_default = (() => [
|
|
147
|
+
contributes(Capabilities.Functions, functions),
|
|
148
|
+
contributes(Capabilities.Functions, [
|
|
149
|
+
agent
|
|
150
|
+
]),
|
|
151
|
+
contributes(Capabilities.Functions, [
|
|
152
|
+
research,
|
|
153
|
+
createResearchNote,
|
|
154
|
+
entityExtraction
|
|
155
|
+
]),
|
|
156
|
+
contributes(Capabilities.BlueprintDefinition, blueprint),
|
|
157
|
+
contributes(Capabilities.BlueprintDefinition, RESEARCH_BLUEPRINT),
|
|
158
|
+
// TODO(burdon): Move out of assistant.
|
|
159
|
+
contributes(Capabilities.Functions, [
|
|
160
|
+
syncLinearIssues
|
|
161
|
+
]),
|
|
162
|
+
contributes(Capabilities.Functions, [
|
|
163
|
+
fetchDiscordMessages
|
|
164
|
+
]),
|
|
165
|
+
contributes(Capabilities.BlueprintDefinition, LINEAR_BLUEPRINT),
|
|
166
|
+
contributes(Capabilities.BlueprintDefinition, DISCORD_BLUEPRINT),
|
|
167
|
+
contributes(Capabilities.BlueprintDefinition, WEB_SEARCH_BLUEPRINT)
|
|
168
|
+
]);
|
|
169
|
+
|
|
170
|
+
export {
|
|
171
|
+
BLUEPRINT_KEY,
|
|
172
|
+
createBlueprint,
|
|
173
|
+
blueprint_definition_default
|
|
174
|
+
};
|
|
175
|
+
//# sourceMappingURL=chunk-2CE2KPKZ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/blueprint-definition.ts", "../../../src/functions/analysis.ts", "../../../src/functions/list.ts", "../../../src/functions/load.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, type Capability, contributes } from '@dxos/app-framework';\nimport { templates } from '@dxos/assistant';\nimport {\n DISCORD_BLUEPRINT,\n LINEAR_BLUEPRINT,\n RESEARCH_BLUEPRINT,\n WEB_SEARCH_BLUEPRINT,\n agent,\n createResearchNote,\n entityExtraction,\n fetchDiscordMessages,\n research,\n syncLinearIssues,\n} from '@dxos/assistant-testing';\nimport { Blueprint } from '@dxos/blueprints';\nimport { type FunctionDefinition } from '@dxos/functions';\n\nimport { analysis, list, load } from '../functions';\n\nconst functions: FunctionDefinition[] = [analysis, list, load];\nconst tools = [\n 'add-to-context',\n // TODO(wittjosiah): Factor out to an ECHO blueprint.\n 'get-schemas',\n 'add-schema',\n 'create-record',\n // TODO(wittjosiah): Factor out to a generic app-framework blueprint.\n 'open-item',\n // TODO(burdon): Anthropic only.\n // https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/text-editor-tool#example-str-replace-command\n // AI_TOOL_NOT_FOUND: str_replace_based_edit_tool\n // 'str_replace_based_edit_tool',\n];\n\nexport const BLUEPRINT_KEY = 'dxos.org/blueprint/assistant';\n\nexport const createBlueprint = (): Blueprint.Blueprint =>\n Blueprint.make({\n key: BLUEPRINT_KEY,\n name: 'Assistant',\n tools: Blueprint.toolDefinitions({ functions, tools }),\n instructions: templates.system,\n });\n\nconst blueprint = createBlueprint();\n\n// TODO(dmaretskyi): Consider splitting into multiple modules.\nexport default (): Capability<any>[] => [\n contributes(Capabilities.Functions, functions),\n contributes(Capabilities.Functions, [agent]),\n contributes(Capabilities.Functions, [research, createResearchNote, entityExtraction]),\n contributes(Capabilities.BlueprintDefinition, blueprint),\n contributes(Capabilities.BlueprintDefinition, RESEARCH_BLUEPRINT),\n // TODO(burdon): Move out of assistant.\n contributes(Capabilities.Functions, [syncLinearIssues]),\n contributes(Capabilities.Functions, [fetchDiscordMessages]),\n contributes(Capabilities.BlueprintDefinition, LINEAR_BLUEPRINT),\n contributes(Capabilities.BlueprintDefinition, DISCORD_BLUEPRINT),\n contributes(Capabilities.BlueprintDefinition, WEB_SEARCH_BLUEPRINT),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { defineFunction } from '@dxos/functions';\nimport { log } from '@dxos/log';\n\nexport default defineFunction({\n key: 'dxos.org/function/assistant-analysis',\n name: 'Assistant analysis',\n description: 'Enter analysis analysis mode.',\n inputSchema: Schema.Struct({\n enable: Schema.Boolean.annotations({ description: 'Enable or disable analysis mode.' }),\n }),\n outputSchema: Schema.Void,\n handler: Effect.fn(function* ({ context, data: { enable } }) {\n log.info('analysis mode', { space: context.space?.id, enable });\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\n// TODO(burdon): Factor out to space plugin.\nexport default defineFunction({\n key: 'dxos.org/function/assistant/list',\n name: 'Assistant list',\n description:\n // TODO(wittjosiah): Find a better way to prompt for looking up typenames before querying with them.\n trim`\n Lists the objects of the given type.\n Check the list-schemas tool for available types before calling this function.\n `,\n inputSchema: Schema.Struct({\n typename: Schema.String.annotations({\n description: 'The typename of the objects to list.',\n }),\n }),\n outputSchema: Schema.Struct({\n results: Schema.Array(\n Schema.Struct({\n dxn: Schema.String.annotations({ description: 'The DXN of the object.' }),\n label: Schema.optional(Schema.String.annotations({ description: 'The label of the object.' })),\n }),\n ),\n }),\n handler: Effect.fn(function* ({ data: { typename } }) {\n // TODO(wittjosiah): Typename query is not working for dynamic schemas.\n const [schema] = yield* DatabaseService.runSchemaQuery({ typename });\n const filter = schema ? Filter.type(schema) : Filter.typename(typename);\n\n const { objects } = yield* DatabaseService.runQuery(Query.select(filter));\n const results = objects.map((object) => ({\n dxn: Obj.getDXN(object).toString(),\n label: Obj.getLabel(object),\n }));\n\n return { results };\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\n\n// TODO(burdon): Common error handling.\n// TODO(burdon): Factor out to space plugin.\nexport default defineFunction({\n key: 'dxos.org/function/assistant/load',\n name: 'Assistant load',\n description: 'Loads the object.',\n inputSchema: Schema.Struct({\n id: ArtifactId.annotations({\n description: 'The ID of the object.',\n }),\n typename: Schema.String.annotations({\n description: 'The typename of the object.',\n }),\n }),\n outputSchema: Schema.Struct({\n // TODO(wittjosiah): Type.Obj.Any | Type.Relation.Any\n object: Schema.Any,\n }),\n handler: Effect.fn(function* ({ data: { id, typename } }) {\n const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id));\n return yield* Function.pipe(\n Option.fromNullable(object),\n Option.flatMap((object) => (Obj.getTypename(object) === typename ? Option.some(object) : Option.none())),\n Option.match({\n onNone: () => Effect.fail('Object not found.'),\n onSome: (object) => {\n // log.info('object', { object });\n return Effect.succeed({ object });\n },\n }),\n );\n }),\n});\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,cAA+BC,mBAAmB;AAC3D,SAASC,iBAAiB;AAC1B,SACEC,mBACAC,kBACAC,oBACAC,sBACAC,OACAC,oBACAC,kBACAC,sBACAC,UACAC,wBACK;AACP,SAASC,iBAAiB;;;ACd1B,YAAYC,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,sBAAsB;AAC/B,SAASC,WAAW;;AAEpB,IAAA,mBAAeD,eAAe;EAC5BE,KAAK;EACLC,MAAM;EACNC,aAAa;EACbC,aAAoBC,cAAO;IACzBC,QAAeC,eAAQC,YAAY;MAAEL,aAAa;IAAmC,CAAA;EACvF,CAAA;EACAM,cAAqBC;EACrBC,SAAgBC,UAAG,WAAW,EAAEC,SAASC,MAAM,EAAER,OAAM,EAAE,GAAE;AACzDN,QAAIe,KAAK,iBAAiB;MAAEC,OAAOH,QAAQG,OAAOC;MAAIX;IAAO,GAAA;;;;;;EAC/D,CAAA;AACF,CAAA;;;ACjBA,YAAYY,aAAY;AACxB,YAAYC,aAAY;AAExB,SAASC,QAAQC,KAAKC,aAAa;AACnC,SAASC,iBAAiBC,kBAAAA,uBAAsB;AAChD,SAASC,YAAY;AAGrB,IAAA,eAAeC,gBAAe;EAC5BC,KAAK;EACLC,MAAM;EACNC;;IAEEC;;;;;EAIFC,aAAoBC,eAAO;IACzBC,UAAiBC,eAAOC,YAAY;MAClCN,aAAa;IACf,CAAA;EACF,CAAA;EACAO,cAAqBJ,eAAO;IAC1BK,SAAgBC,cACPN,eAAO;MACZO,KAAYL,eAAOC,YAAY;QAAEN,aAAa;MAAyB,CAAA;MACvEW,OAAcC,iBAAgBP,eAAOC,YAAY;QAAEN,aAAa;MAA2B,CAAA,CAAA;IAC7F,CAAA,CAAA;EAEJ,CAAA;EACAa,SAAgBC,WAAG,WAAW,EAAEC,MAAM,EAAEX,SAAQ,EAAE,GAAE;AAElD,UAAM,CAACY,MAAAA,IAAU,OAAOC,gBAAgBC,eAAe;MAAEd;IAAS,CAAA;AAClE,UAAMe,SAASH,SAASI,OAAOC,KAAKL,MAAAA,IAAUI,OAAOhB,SAASA,QAAAA;AAE9D,UAAM,EAAEkB,QAAO,IAAK,OAAOL,gBAAgBM,SAASC,MAAMC,OAAON,MAAAA,CAAAA;AACjE,UAAMX,UAAUc,QAAQI,IAAI,CAACC,YAAY;MACvCjB,KAAKkB,IAAIC,OAAOF,MAAAA,EAAQG,SAAQ;MAChCnB,OAAOiB,IAAIG,SAASJ,MAAAA;IACtB,EAAA;AAEA,WAAO;MAAEnB;IAAQ;EACnB,CAAA;AACF,CAAA;;;AC3CA,YAAYwB,aAAY;AACxB,YAAYC,cAAc;AAC1B,YAAYC,YAAY;AACxB,YAAYC,aAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,OAAAA,YAAW;AACpB,SAASC,mBAAAA,kBAAiBC,kBAAAA,uBAAsB;AAIhD,IAAA,eAAeC,gBAAe;EAC5BC,KAAK;EACLC,MAAM;EACNC,aAAa;EACbC,aAAoBC,eAAO;IACzBC,IAAIC,WAAWC,YAAY;MACzBL,aAAa;IACf,CAAA;IACAM,UAAiBC,eAAOF,YAAY;MAClCL,aAAa;IACf,CAAA;EACF,CAAA;EACAQ,cAAqBN,eAAO;;IAE1BO,QAAeC;EACjB,CAAA;EACAC,SAAgBC,WAAG,WAAW,EAAEC,MAAM,EAAEV,IAAIG,SAAQ,EAAE,GAAE;AACtD,UAAMG,SAAS,OAAOK,iBAAgBC,QAAQX,WAAWY,MAAMb,EAAAA,CAAAA;AAC/D,WAAO,OAAgBc,cACdC,oBAAaT,MAAAA,GACbU,eAAQ,CAACV,YAAYW,KAAIC,YAAYZ,OAAAA,MAAYH,WAAkBgB,YAAKb,OAAAA,IAAiBc,YAAI,CAAA,GAC7FC,aAAM;MACXC,QAAQ,MAAaC,aAAK,mBAAA;MAC1BC,QAAQ,CAAClB,YAAAA;AAEP,eAAcmB,gBAAQ;UAAEnB,QAAAA;QAAO,CAAA;MACjC;IACF,CAAA,CAAA;EAEJ,CAAA;AACF,CAAA;;;AHtBA,IAAMoB,YAAkC;EAACC;EAAUC;EAAMC;;AACzD,IAAMC,QAAQ;EACZ;;EAEA;EACA;EACA;;EAEA;;AAOK,IAAMC,gBAAgB;AAEtB,IAAMC,kBAAkB,MAC7BC,UAAUC,KAAK;EACbC,KAAKJ;EACLK,MAAM;EACNN,OAAOG,UAAUI,gBAAgB;IAAEX;IAAWI;EAAM,CAAA;EACpDQ,cAAcC,UAAUC;AAC1B,CAAA;AAEF,IAAMC,YAAYT,gBAAAA;AAGlB,IAAA,gCAAe,MAAyB;EACtCU,YAAYC,aAAaC,WAAWlB,SAAAA;EACpCgB,YAAYC,aAAaC,WAAW;IAACC;GAAM;EAC3CH,YAAYC,aAAaC,WAAW;IAACE;IAAUC;IAAoBC;GAAiB;EACpFN,YAAYC,aAAaM,qBAAqBR,SAAAA;EAC9CC,YAAYC,aAAaM,qBAAqBC,kBAAAA;;EAE9CR,YAAYC,aAAaC,WAAW;IAACO;GAAiB;EACtDT,YAAYC,aAAaC,WAAW;IAACQ;GAAqB;EAC1DV,YAAYC,aAAaM,qBAAqBI,gBAAAA;EAC9CX,YAAYC,aAAaM,qBAAqBK,iBAAAA;EAC9CZ,YAAYC,aAAaM,qBAAqBM,oBAAAA;;",
|
|
6
|
+
"names": ["Capabilities", "contributes", "templates", "DISCORD_BLUEPRINT", "LINEAR_BLUEPRINT", "RESEARCH_BLUEPRINT", "WEB_SEARCH_BLUEPRINT", "agent", "createResearchNote", "entityExtraction", "fetchDiscordMessages", "research", "syncLinearIssues", "Blueprint", "Effect", "Schema", "defineFunction", "log", "key", "name", "description", "inputSchema", "Struct", "enable", "Boolean", "annotations", "outputSchema", "Void", "handler", "fn", "context", "data", "info", "space", "id", "Effect", "Schema", "Filter", "Obj", "Query", "DatabaseService", "defineFunction", "trim", "defineFunction", "key", "name", "description", "trim", "inputSchema", "Struct", "typename", "String", "annotations", "outputSchema", "results", "Array", "dxn", "label", "optional", "handler", "fn", "data", "schema", "DatabaseService", "runSchemaQuery", "filter", "Filter", "type", "objects", "runQuery", "Query", "select", "map", "object", "Obj", "getDXN", "toString", "getLabel", "Effect", "Function", "Option", "Schema", "ArtifactId", "Obj", "DatabaseService", "defineFunction", "defineFunction", "key", "name", "description", "inputSchema", "Struct", "id", "ArtifactId", "annotations", "typename", "String", "outputSchema", "object", "Any", "handler", "fn", "data", "DatabaseService", "resolve", "toDXN", "pipe", "fromNullable", "flatMap", "Obj", "getTypename", "some", "none", "match", "onNone", "fail", "onSome", "succeed", "functions", "analysis", "list", "load", "tools", "BLUEPRINT_KEY", "createBlueprint", "Blueprint", "make", "key", "name", "toolDefinitions", "instructions", "templates", "system", "blueprint", "contributes", "Capabilities", "Functions", "agent", "research", "createResearchNote", "entityExtraction", "BlueprintDefinition", "RESEARCH_BLUEPRINT", "syncLinearIssues", "fetchDiscordMessages", "LINEAR_BLUEPRINT", "DISCORD_BLUEPRINT", "WEB_SEARCH_BLUEPRINT"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import {
|
|
2
|
+
meta
|
|
3
|
+
} from "./chunk-5RICKAMN.mjs";
|
|
4
|
+
|
|
5
|
+
// src/components/TemplateEditor/TemplateEditor.tsx
|
|
6
|
+
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
7
|
+
import React from "react";
|
|
8
|
+
import { createDocAccessor } from "@dxos/react-client/echo";
|
|
9
|
+
import { useThemeContext, useTranslation } from "@dxos/react-ui";
|
|
10
|
+
import { createBasicExtensions, createDataExtensions, createMarkdownExtensions, createThemeExtensions, decorateMarkdown, useTextEditor } from "@dxos/react-ui-editor";
|
|
11
|
+
import { mx } from "@dxos/react-ui-theme";
|
|
12
|
+
import { isTruthy } from "@dxos/util";
|
|
13
|
+
|
|
14
|
+
// src/components/TemplateEditor/handlebars-extension.ts
|
|
15
|
+
import { autocompletion, completionKeymap } from "@codemirror/autocomplete";
|
|
16
|
+
import { Decoration, ViewPlugin, keymap } from "@codemirror/view";
|
|
17
|
+
function _define_property(obj, key, value) {
|
|
18
|
+
if (key in obj) {
|
|
19
|
+
Object.defineProperty(obj, key, {
|
|
20
|
+
value,
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true
|
|
24
|
+
});
|
|
25
|
+
} else {
|
|
26
|
+
obj[key] = value;
|
|
27
|
+
}
|
|
28
|
+
return obj;
|
|
29
|
+
}
|
|
30
|
+
var handlebars = (_ = {}) => {
|
|
31
|
+
return [
|
|
32
|
+
handlebarsHighlightPlugin,
|
|
33
|
+
autocompletion({
|
|
34
|
+
activateOnTyping: true,
|
|
35
|
+
aboveCursor: true,
|
|
36
|
+
closeOnBlur: true,
|
|
37
|
+
override: [
|
|
38
|
+
handlebarsCompletions
|
|
39
|
+
]
|
|
40
|
+
}),
|
|
41
|
+
keymap.of(completionKeymap)
|
|
42
|
+
];
|
|
43
|
+
};
|
|
44
|
+
var regex = {
|
|
45
|
+
comment: /\{\{!\s*[^}]*\}\}/g,
|
|
46
|
+
brackets: /\{\{[^}]*\}\}/g,
|
|
47
|
+
command: /\{\{[#/]([^}]+)\}\}/g,
|
|
48
|
+
var: /\{\{(?!\s*!)(\w[^}]*)\}\}/g
|
|
49
|
+
};
|
|
50
|
+
var handlebarsHighlightPlugin = ViewPlugin.fromClass(class {
|
|
51
|
+
buildDecorations(view) {
|
|
52
|
+
const widgets = [];
|
|
53
|
+
for (const { from, to } of view.visibleRanges) {
|
|
54
|
+
const text = view.state.doc.sliceString(from, to);
|
|
55
|
+
{
|
|
56
|
+
let match;
|
|
57
|
+
while ((match = regex.comment.exec(text)) !== null) {
|
|
58
|
+
const start = from + match.index;
|
|
59
|
+
const end = start + match[0].length;
|
|
60
|
+
widgets.push(Decoration.mark({
|
|
61
|
+
class: "text-subdued"
|
|
62
|
+
}).range(start, end));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
{
|
|
66
|
+
let match;
|
|
67
|
+
while ((match = regex.brackets.exec(text)) !== null) {
|
|
68
|
+
const start = from + match.index;
|
|
69
|
+
const end = start + match[0].length;
|
|
70
|
+
widgets.push(Decoration.mark({
|
|
71
|
+
class: "text-subdued"
|
|
72
|
+
}).range(start, end));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
{
|
|
76
|
+
let match;
|
|
77
|
+
while ((match = regex.command.exec(text)) !== null) {
|
|
78
|
+
const start = from + match.index + 2;
|
|
79
|
+
let end = start + match[0].length - 4;
|
|
80
|
+
const text2 = view.state.doc.sliceString(start, end);
|
|
81
|
+
const parts = text2.split(/\s+/);
|
|
82
|
+
if (parts.length > 1) {
|
|
83
|
+
const idx = start + parts[0].length;
|
|
84
|
+
widgets.push(Decoration.mark({
|
|
85
|
+
class: "text-greenText"
|
|
86
|
+
}).range(idx, end));
|
|
87
|
+
end = idx;
|
|
88
|
+
}
|
|
89
|
+
widgets.push(Decoration.mark({
|
|
90
|
+
class: "text-blueText"
|
|
91
|
+
}).range(start, end));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
{
|
|
95
|
+
let match;
|
|
96
|
+
while ((match = regex.var.exec(text)) !== null) {
|
|
97
|
+
const start = from + match.index + 2;
|
|
98
|
+
const end = start + match[0].length - 4;
|
|
99
|
+
widgets.push(Decoration.mark({
|
|
100
|
+
class: "text-greenText"
|
|
101
|
+
}).range(start, end));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
widgets.sort((a, b) => a.from - b.from || a.startSide - b.startSide);
|
|
106
|
+
return Decoration.set(widgets);
|
|
107
|
+
}
|
|
108
|
+
update(update) {
|
|
109
|
+
if (update.docChanged || update.viewportChanged) {
|
|
110
|
+
this.decorations = this.buildDecorations(update.view);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
constructor(view) {
|
|
114
|
+
_define_property(this, "decorations", void 0);
|
|
115
|
+
this.decorations = this.buildDecorations(view);
|
|
116
|
+
}
|
|
117
|
+
}, {
|
|
118
|
+
decorations: (v) => v.decorations
|
|
119
|
+
});
|
|
120
|
+
var variables = [
|
|
121
|
+
"this"
|
|
122
|
+
];
|
|
123
|
+
var commands = [
|
|
124
|
+
"this",
|
|
125
|
+
"each",
|
|
126
|
+
"if",
|
|
127
|
+
"unless",
|
|
128
|
+
"with"
|
|
129
|
+
];
|
|
130
|
+
function handlebarsCompletions(context) {
|
|
131
|
+
const match = context.matchBefore(/\{\{[^}]*/);
|
|
132
|
+
if (!match || match.from === match.to) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
let type = "variable";
|
|
136
|
+
let text = match.text.slice(2);
|
|
137
|
+
let from = match.from + 2;
|
|
138
|
+
let matches = [];
|
|
139
|
+
if (text.startsWith("#") || text.startsWith("/")) {
|
|
140
|
+
const idx = text.lastIndexOf(" ");
|
|
141
|
+
if (idx !== -1) {
|
|
142
|
+
type = "variable";
|
|
143
|
+
matches = variables;
|
|
144
|
+
text = text.slice(idx + 1);
|
|
145
|
+
from += idx + 1;
|
|
146
|
+
} else {
|
|
147
|
+
type = "command";
|
|
148
|
+
text = text.slice(1);
|
|
149
|
+
matches = commands;
|
|
150
|
+
from += 1;
|
|
151
|
+
}
|
|
152
|
+
} else {
|
|
153
|
+
type = "variable";
|
|
154
|
+
matches = variables;
|
|
155
|
+
}
|
|
156
|
+
const options = matches.filter((name) => name.startsWith(text)).map((name) => ({
|
|
157
|
+
type,
|
|
158
|
+
label: name
|
|
159
|
+
}));
|
|
160
|
+
return {
|
|
161
|
+
from,
|
|
162
|
+
options
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// src/components/TemplateEditor/TemplateEditor.tsx
|
|
167
|
+
var TemplateEditor = ({ id, classNames, template }) => {
|
|
168
|
+
var _effect = _useSignals();
|
|
169
|
+
try {
|
|
170
|
+
const { t } = useTranslation(meta.id);
|
|
171
|
+
const { themeMode } = useThemeContext();
|
|
172
|
+
const { parentRef } = useTextEditor(() => {
|
|
173
|
+
const text = template.source?.target;
|
|
174
|
+
if (!text) {
|
|
175
|
+
return {};
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
initialValue: text.content ?? "",
|
|
179
|
+
extensions: [
|
|
180
|
+
createDataExtensions({
|
|
181
|
+
id,
|
|
182
|
+
text: createDocAccessor(text, [
|
|
183
|
+
"content"
|
|
184
|
+
])
|
|
185
|
+
}),
|
|
186
|
+
createBasicExtensions({
|
|
187
|
+
bracketMatching: false,
|
|
188
|
+
lineNumbers: true,
|
|
189
|
+
lineWrapping: true,
|
|
190
|
+
placeholder: t("template placeholder")
|
|
191
|
+
}),
|
|
192
|
+
createThemeExtensions({
|
|
193
|
+
themeMode
|
|
194
|
+
}),
|
|
195
|
+
createMarkdownExtensions(),
|
|
196
|
+
decorateMarkdown(),
|
|
197
|
+
handlebars()
|
|
198
|
+
].filter(isTruthy)
|
|
199
|
+
};
|
|
200
|
+
}, [
|
|
201
|
+
themeMode,
|
|
202
|
+
template.source?.target
|
|
203
|
+
]);
|
|
204
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
205
|
+
ref: parentRef,
|
|
206
|
+
className: mx("bs-full overflow-hidden", classNames)
|
|
207
|
+
});
|
|
208
|
+
} finally {
|
|
209
|
+
_effect.f();
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
export {
|
|
214
|
+
TemplateEditor
|
|
215
|
+
};
|
|
216
|
+
//# sourceMappingURL=chunk-43I2LR6O.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/TemplateEditor/TemplateEditor.tsx", "../../../src/components/TemplateEditor/handlebars-extension.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Template } from '@dxos/blueprints';\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { type ThemedClassName, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isTruthy } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nimport { handlebars } from './handlebars-extension';\n\nexport type TemplateEditorProps = ThemedClassName<{\n id: string;\n template: Template.Template;\n}>;\n\nexport const TemplateEditor = ({ id, classNames, template }: TemplateEditorProps) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const { parentRef } = useTextEditor(() => {\n const text = template.source?.target;\n if (!text) {\n return {};\n }\n\n return {\n initialValue: text.content ?? '',\n extensions: [\n createDataExtensions({ id, text: createDocAccessor(text, ['content']) }),\n createBasicExtensions({\n bracketMatching: false,\n lineNumbers: true,\n lineWrapping: true,\n placeholder: t('template placeholder'),\n }),\n createThemeExtensions({ themeMode }),\n createMarkdownExtensions(),\n decorateMarkdown(),\n handlebars(),\n ].filter(isTruthy),\n };\n }, [themeMode, template.source?.target]);\n\n return <div ref={parentRef} className={mx('bs-full overflow-hidden', classNames)} />;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n type CompletionContext,\n type CompletionResult,\n autocompletion,\n completionKeymap,\n} from '@codemirror/autocomplete';\nimport { type Extension } from '@codemirror/state';\nimport { Decoration, type DecorationSet, type EditorView, ViewPlugin, type ViewUpdate, keymap } from '@codemirror/view';\n\nexport type HandlebarsOptions = {};\n\n/**\n * Simple Handlebars plugin for CodeMirror.\n * Supports:\n * - Comments: {{! comment }}\n * - Commands: {{#command}} {{/command}}\n * - Variables: {{var}}\n * - Commands with variables: {{#each items}} {{/each}}\n */\nexport const handlebars = (_: HandlebarsOptions = {}): Extension => {\n return [\n handlebarsHighlightPlugin,\n autocompletion({\n activateOnTyping: true,\n aboveCursor: true,\n closeOnBlur: true,\n override: [handlebarsCompletions],\n }),\n keymap.of(completionKeymap),\n ];\n};\n\nconst regex = {\n comment: /\\{\\{!\\s*[^}]*\\}\\}/g,\n brackets: /\\{\\{[^}]*\\}\\}/g,\n command: /\\{\\{[#/]([^}]+)\\}\\}/g,\n var: /\\{\\{(?!\\s*!)(\\w[^}]*)\\}\\}/g,\n};\n\n/**\n * ViewPlugin that decorates Handlebars syntax.\n */\nconst handlebarsHighlightPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n buildDecorations(view: EditorView) {\n const widgets: any[] = [];\n\n for (const { from, to } of view.visibleRanges) {\n const text = view.state.doc.sliceString(from, to);\n\n // Match comments: {{! comment }}\n {\n let match;\n while ((match = regex.comment.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n widgets.push(Decoration.mark({ class: 'text-subdued' }).range(start, end));\n }\n }\n\n // Match brackets: {{ and }}\n {\n let match;\n while ((match = regex.brackets.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n widgets.push(Decoration.mark({ class: 'text-subdued' }).range(start, end));\n }\n }\n\n // Match commands: {{#command}} and {{/command}}\n {\n let match;\n while ((match = regex.command.exec(text)) !== null) {\n const start = from + match.index + 2;\n let end = start + match[0].length - 4;\n const text = view.state.doc.sliceString(start, end);\n const parts = text.split(/\\s+/);\n if (parts.length > 1) {\n const idx = start + parts[0].length;\n widgets.push(Decoration.mark({ class: 'text-greenText' }).range(idx, end));\n end = idx;\n }\n widgets.push(Decoration.mark({ class: 'text-blueText' }).range(start, end));\n }\n }\n\n // Match variables: {{var}}\n {\n let match;\n while ((match = regex.var.exec(text)) !== null) {\n const start = from + match.index + 2;\n const end = start + match[0].length - 4;\n widgets.push(Decoration.mark({ class: 'text-greenText' }).range(start, end));\n }\n }\n }\n\n // Sort decorations by position to avoid \"Ranges must be added sorted\" error.\n widgets.sort((a, b) => a.from - b.from || a.startSide - b.startSide);\n return Decoration.set(widgets);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n\n// TODO(burdon): Pass in variables.\nconst variables = ['this'];\nconst commands = ['this', 'each', 'if', 'unless', 'with'];\n\n/**\n * Provides completions for Handlebars variables.\n */\nfunction handlebarsCompletions(context: CompletionContext): CompletionResult | null {\n const match = context.matchBefore(/\\{\\{[^}]*/);\n if (!match || match.from === match.to) {\n return null;\n }\n\n let type = 'variable';\n let text = match.text.slice(2);\n let from = match.from + 2;\n let matches = [];\n if (text.startsWith('#') || text.startsWith('/')) {\n const idx = text.lastIndexOf(' ');\n if (idx !== -1) {\n type = 'variable';\n matches = variables;\n text = text.slice(idx + 1);\n from += idx + 1;\n } else {\n type = 'command';\n text = text.slice(1);\n matches = commands;\n from += 1;\n }\n } else {\n type = 'variable';\n matches = variables;\n }\n\n const options = matches.filter((name) => name.startsWith(text)).map((name) => ({ type, label: name }));\n return {\n from,\n options,\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "createDocAccessor", "useThemeContext", "useTranslation", "createBasicExtensions", "createDataExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "useTextEditor", "mx", "isTruthy", "autocompletion", "completionKeymap", "Decoration", "ViewPlugin", "keymap", "handlebars", "_", "handlebarsHighlightPlugin", "autocompletion", "activateOnTyping", "aboveCursor", "closeOnBlur", "override", "handlebarsCompletions", "keymap", "of", "completionKeymap", "regex", "comment", "brackets", "command", "var", "ViewPlugin", "fromClass", "buildDecorations", "view", "widgets", "from", "to", "visibleRanges", "text", "state", "doc", "sliceString", "match", "exec", "start", "index", "end", "length", "push", "Decoration", "mark", "class", "range", "parts", "split", "idx", "sort", "a", "b", "startSide", "set", "update", "docChanged", "viewportChanged", "decorations", "v", "variables", "commands", "context", "matchBefore", "type", "slice", "matches", "startsWith", "lastIndexOf", "options", "filter", "name", "map", "label", "TemplateEditor", "id", "classNames", "template", "t", "useTranslation", "meta", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "text", "source", "target", "initialValue", "content", "extensions", "createDataExtensions", "createDocAccessor", "createBasicExtensions", "bracketMatching", "lineNumbers", "lineWrapping", "placeholder", "createThemeExtensions", "createMarkdownExtensions", "decorateMarkdown", "handlebars", "filter", "isTruthy", "div", "ref", "className", "mx"]
|
|
7
|
+
}
|