@dxos/plugin-assistant 0.8.4-main.3eb6e50203 → 0.8.4-main.4a85c3132b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/AssistantSettings-2LFAG5OQ.mjs +93 -0
- package/dist/lib/browser/AssistantSettings-2LFAG5OQ.mjs.map +7 -0
- package/dist/lib/browser/BlueprintArticle-CCS25MNW.mjs +36 -0
- package/dist/lib/browser/BlueprintArticle-CCS25MNW.mjs.map +7 -0
- package/dist/lib/browser/{ChatCompanion-CAKFZAWN.mjs → ChatCompanion-UGD4V34A.mjs} +11 -9
- package/dist/lib/browser/ChatCompanion-UGD4V34A.mjs.map +7 -0
- package/dist/lib/browser/ChatContainer-ZGRSZ5EU.mjs +12 -0
- package/dist/lib/browser/{ChatDialog-ASVBLOOS.mjs → ChatDialog-AET7GVIB.mjs} +7 -7
- package/dist/lib/browser/ChatDialog-AET7GVIB.mjs.map +7 -0
- package/dist/lib/browser/ProjectArticle-QDBTIFNE.mjs +91 -0
- package/dist/lib/browser/ProjectArticle-QDBTIFNE.mjs.map +7 -0
- package/dist/lib/browser/ProjectSettings-R6RRARLO.mjs +194 -0
- package/dist/lib/browser/ProjectSettings-R6RRARLO.mjs.map +7 -0
- package/dist/lib/browser/PromptArticle-USQO4WX6.mjs +71 -0
- package/dist/lib/browser/PromptArticle-USQO4WX6.mjs.map +7 -0
- package/dist/lib/browser/TriggerStatus-65X3EUSN.mjs +122 -0
- package/dist/lib/browser/TriggerStatus-65X3EUSN.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-MUZGUQSC.mjs → app-graph-builder-SFYYUKTT.mjs} +3 -3
- package/dist/lib/{node-esm/app-graph-builder-4QN5M6PD.mjs.map → browser/app-graph-builder-SFYYUKTT.mjs.map} +2 -2
- package/dist/lib/browser/blueprint-definition-5LQNBZON.mjs +35 -0
- package/dist/lib/browser/blueprint-definition-5LQNBZON.mjs.map +7 -0
- package/dist/lib/browser/blueprints/index.mjs +3 -7
- package/dist/lib/browser/{chunk-6BVCG5SJ.mjs → chunk-7DXYAXLZ.mjs} +8 -8
- package/dist/lib/browser/chunk-7DXYAXLZ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-IJYAKPEU.mjs → chunk-JYY5AD65.mjs} +27 -27
- package/dist/lib/browser/chunk-JYY5AD65.mjs.map +7 -0
- package/dist/lib/browser/chunk-LEXIQDXZ.mjs +26 -0
- package/dist/lib/browser/chunk-LEXIQDXZ.mjs.map +7 -0
- package/dist/lib/browser/{ChatContainer-QB37VONJ.mjs → chunk-RU4G5NY4.mjs} +17 -21
- package/dist/lib/browser/chunk-RU4G5NY4.mjs.map +7 -0
- package/dist/lib/browser/{chunk-JA7PUZC7.mjs → chunk-UUA6GNGG.mjs} +544 -393
- package/dist/lib/browser/chunk-UUA6GNGG.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +38 -54
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{operation-resolver-2673CFJS.mjs → operation-resolver-ELXDQZEG.mjs} +23 -20
- package/dist/lib/browser/operation-resolver-ELXDQZEG.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-T3FN4GVP.mjs → react-surface-KYQSZO2I.mjs} +42 -23
- package/dist/lib/browser/react-surface-KYQSZO2I.mjs.map +7 -0
- package/dist/lib/browser/{repair-IRXDYF4R.mjs → repair-ZFZWZALX.mjs} +9 -8
- package/dist/lib/browser/repair-ZFZWZALX.mjs.map +7 -0
- package/dist/lib/browser/{settings-XF6GKHCG.mjs → settings-YREVQAZ5.mjs} +2 -2
- package/dist/lib/browser/{state-OYDPWLKA.mjs → state-MPG42ZO4.mjs} +2 -2
- package/dist/lib/browser/toolkit-XRSBBB3L.mjs +16 -0
- package/dist/lib/browser/toolkit-XRSBBB3L.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/AssistantSettings-QWFEMJG7.mjs +94 -0
- package/dist/lib/node-esm/AssistantSettings-QWFEMJG7.mjs.map +7 -0
- package/dist/lib/node-esm/BlueprintArticle-SNEN6LOY.mjs +37 -0
- package/dist/lib/node-esm/BlueprintArticle-SNEN6LOY.mjs.map +7 -0
- package/dist/lib/node-esm/{ChatCompanion-W4PGOCGR.mjs → ChatCompanion-NP4R5BFE.mjs} +11 -9
- package/dist/lib/node-esm/ChatCompanion-NP4R5BFE.mjs.map +7 -0
- package/dist/lib/node-esm/ChatContainer-IFHDIFJH.mjs +13 -0
- package/dist/lib/node-esm/{ChatDialog-AFLPYSIU.mjs → ChatDialog-UZNQBTKZ.mjs} +7 -7
- package/dist/lib/node-esm/ChatDialog-UZNQBTKZ.mjs.map +7 -0
- package/dist/lib/node-esm/ProjectArticle-BCIBESJN.mjs +92 -0
- package/dist/lib/node-esm/ProjectArticle-BCIBESJN.mjs.map +7 -0
- package/dist/lib/node-esm/ProjectSettings-Q5QY6BYS.mjs +195 -0
- package/dist/lib/node-esm/ProjectSettings-Q5QY6BYS.mjs.map +7 -0
- package/dist/lib/node-esm/PromptArticle-PGMJMQK7.mjs +72 -0
- package/dist/lib/node-esm/PromptArticle-PGMJMQK7.mjs.map +7 -0
- package/dist/lib/node-esm/TriggerStatus-UR5S7PXJ.mjs +123 -0
- package/dist/lib/node-esm/TriggerStatus-UR5S7PXJ.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-4QN5M6PD.mjs → app-graph-builder-E25JXI34.mjs} +3 -3
- package/dist/lib/node-esm/app-graph-builder-E25JXI34.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-CMJWGGJO.mjs +36 -0
- package/dist/lib/node-esm/blueprint-definition-CMJWGGJO.mjs.map +7 -0
- package/dist/lib/node-esm/blueprints/index.mjs +3 -7
- package/dist/lib/node-esm/chunk-3QBVFAYO.mjs +28 -0
- package/dist/lib/node-esm/chunk-3QBVFAYO.mjs.map +7 -0
- package/dist/lib/node-esm/{ChatContainer-ECFQVH6O.mjs → chunk-6NCLKQCL.mjs} +17 -21
- package/dist/lib/node-esm/chunk-6NCLKQCL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-3XC7LQSO.mjs → chunk-GZ4ERNT2.mjs} +544 -393
- package/dist/lib/node-esm/chunk-GZ4ERNT2.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-MJD5XWQV.mjs → chunk-JMBYVUD6.mjs} +27 -27
- package/dist/lib/node-esm/chunk-JMBYVUD6.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LB72WG6R.mjs → chunk-MWYYLALM.mjs} +8 -8
- package/dist/lib/node-esm/chunk-MWYYLALM.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +38 -54
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{operation-resolver-2ZD2DXOU.mjs → operation-resolver-Q5GNP2GH.mjs} +23 -20
- package/dist/lib/node-esm/operation-resolver-Q5GNP2GH.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-T4VMCCKZ.mjs → react-surface-JJRGVGKD.mjs} +42 -23
- package/dist/lib/node-esm/react-surface-JJRGVGKD.mjs.map +7 -0
- package/dist/lib/node-esm/{repair-DMI55PON.mjs → repair-LXFVOK4B.mjs} +9 -8
- package/dist/lib/node-esm/repair-LXFVOK4B.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-NGGZA7S7.mjs → settings-N452OW6Y.mjs} +2 -2
- package/dist/lib/node-esm/{state-VSCPGN7R.mjs → state-WHZFKIEL.mjs} +2 -2
- package/dist/lib/node-esm/{toolkit-JPRJRDDB.mjs → toolkit-5IWGLUF4.mjs} +3 -6
- package/dist/lib/node-esm/toolkit-5IWGLUF4.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
- package/dist/types/src/blueprints/assistant/blueprint.d.ts +4 -0
- package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +1 -0
- package/dist/types/src/blueprints/assistant/blueprint.test.d.ts +2 -0
- package/dist/types/src/blueprints/assistant/blueprint.test.d.ts.map +1 -0
- package/dist/types/src/blueprints/assistant/index.d.ts +2 -0
- package/dist/types/src/blueprints/assistant/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/index.d.ts +1 -6
- package/dist/types/src/blueprints/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/ai-service/ai-service.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +2 -22
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +1 -2
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/edge-model-resolver/edge-model-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/local-model-resolver/local-model-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/repair/repair.d.ts +1 -1
- package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings/settings.d.ts +1 -1
- package/dist/types/src/capabilities/state/state.d.ts +1 -1
- package/dist/types/src/capabilities/toolkit/index.d.ts +1 -1
- package/dist/types/src/capabilities/toolkit/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/toolkit/toolkit.d.ts +1 -1
- package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +1 -1
- package/dist/types/src/components/Chat/Chat.d.ts +6 -5
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.d.ts +1 -1
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +15 -15
- package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +14 -14
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +14 -14
- package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +14 -14
- package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts +2 -2
- package/dist/types/src/components/Typewriter/AssistantToolbar.d.ts.map +1 -1
- package/dist/types/src/components/Typewriter/Typewriter.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +0 -11
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts.map +1 -1
- package/dist/types/src/containers/AssistantSettings/index.d.ts +3 -0
- package/dist/types/src/containers/AssistantSettings/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/BlueprintArticle}/BlueprintArticle.d.ts +0 -1
- package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +1 -0
- package/dist/types/src/containers/BlueprintArticle/index.d.ts +3 -0
- package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/ChatCompanion}/ChatCompanion.d.ts +0 -1
- package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -0
- package/dist/types/src/containers/ChatCompanion/index.d.ts +3 -0
- package/dist/types/src/containers/ChatCompanion/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/ChatContainer}/ChatContainer.d.ts +2 -3
- package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -0
- package/dist/types/src/containers/ChatContainer/index.d.ts +3 -0
- package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/ChatDialog}/ChatDialog.d.ts +0 -1
- package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -0
- package/dist/types/src/containers/ChatDialog/index.d.ts +3 -0
- package/dist/types/src/containers/ChatDialog/index.d.ts.map +1 -0
- package/dist/types/src/containers/Project/ProjectArticle.d.ts +7 -0
- package/dist/types/src/containers/Project/ProjectArticle.d.ts.map +1 -0
- package/dist/types/src/containers/Project/ProjectSettings.d.ts +6 -0
- package/dist/types/src/containers/Project/ProjectSettings.d.ts.map +1 -0
- package/dist/types/src/containers/Project/index.d.ts +7 -0
- package/dist/types/src/containers/Project/index.d.ts.map +1 -0
- package/dist/types/src/containers/Project/triggers.d.ts +6 -0
- package/dist/types/src/containers/Project/triggers.d.ts.map +1 -0
- package/dist/types/src/{components → containers/PromptArticle}/PromptArticle.d.ts +0 -1
- package/dist/types/src/containers/PromptArticle/PromptArticle.d.ts.map +1 -0
- package/dist/types/src/containers/PromptArticle/index.d.ts +3 -0
- package/dist/types/src/containers/PromptArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts +4 -0
- package/dist/types/src/{components → containers}/TriggerStatus/TriggerStatus.d.ts.map +1 -1
- package/dist/types/src/containers/TriggerStatus/index.d.ts +3 -0
- package/dist/types/src/containers/TriggerStatus/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +10 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
- package/dist/types/src/hooks/useFilteredTypes.d.ts +1 -1
- package/dist/types/src/hooks/useFilteredTypes.d.ts.map +1 -1
- package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/processor/processor.d.ts +1 -1
- package/dist/types/src/processor/processor.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +14 -14
- package/dist/types/src/types/AssistantAction.d.ts +7 -11
- package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
- package/dist/types/src/types/service.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +82 -82
- package/src/AssistantPlugin.tsx +12 -9
- package/src/blueprints/assistant/blueprint.conversations.json +1 -0
- package/src/blueprints/assistant/blueprint.test.ts +48 -0
- package/src/blueprints/assistant/blueprint.ts +27 -0
- package/src/blueprints/assistant/index.ts +5 -0
- package/src/blueprints/index.ts +1 -8
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +1 -3
- package/src/capabilities/blueprint-definition/blueprint-definition.ts +25 -49
- package/src/capabilities/blueprint-definition/index.ts +0 -1
- package/src/capabilities/operation-resolver/operation-resolver.ts +21 -12
- package/src/capabilities/react-surface/react-surface.tsx +21 -11
- package/src/capabilities/repair/repair.ts +14 -7
- package/src/capabilities/toolkit/toolkit.ts +3 -15
- package/src/components/Chat/Chat.tsx +25 -15
- package/src/components/ChatProgress/ChatProgress.tsx +2 -2
- package/src/components/ChatPrompt/ChatActions.tsx +1 -1
- package/src/components/ChatPrompt/ChatOptions.tsx +29 -9
- package/src/components/ChatPrompt/ChatReferences.tsx +14 -4
- package/src/components/ChatThread/ChatThread.stories.tsx +4 -4
- package/src/components/ChatThread/ChatThread.tsx +2 -2
- package/src/components/ChatThread/registry.tsx +48 -15
- package/src/components/ChatThread/sync.test.ts +2 -0
- package/src/components/ChatThread/sync.ts +14 -8
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +2 -2
- package/src/components/TemplateEditor/TemplateEditor.tsx +2 -2
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -2
- package/src/components/TemplateEditor/TemplateForm.tsx +6 -7
- package/src/components/TemplateEditor/extensions/handlebars-extension.ts +4 -4
- package/src/components/ToolBlock/ToolBlock.tsx +4 -4
- package/src/components/Toolbox/Toolbox.stories.tsx +2 -2
- package/src/components/Toolbox/Toolbox.tsx +2 -2
- package/src/components/Typewriter/AssistantToolbar.tsx +3 -3
- package/src/components/Typewriter/Typewriter.stories.tsx +18 -15
- package/src/components/Typewriter/Typewriter.tsx +1 -1
- package/src/components/Typewriter/assistant-extension.tsx +3 -5
- package/src/components/index.ts +0 -18
- package/src/containers/AssistantSettings/index.ts +7 -0
- package/src/{components → containers/BlueprintArticle}/BlueprintArticle.tsx +10 -8
- package/src/containers/BlueprintArticle/index.ts +7 -0
- package/src/{components → containers/ChatCompanion}/ChatCompanion.tsx +4 -5
- package/src/containers/ChatCompanion/index.ts +7 -0
- package/src/{components → containers/ChatContainer}/ChatContainer.tsx +25 -24
- package/src/containers/ChatContainer/index.ts +7 -0
- package/src/{components → containers/ChatDialog}/ChatDialog.tsx +4 -7
- package/src/containers/ChatDialog/index.ts +7 -0
- package/src/containers/Project/ProjectArticle.tsx +117 -0
- package/src/containers/Project/ProjectSettings.tsx +118 -0
- package/src/containers/Project/index.ts +16 -0
- package/src/containers/Project/triggers.ts +131 -0
- package/src/containers/PromptArticle/PromptArticle.tsx +59 -0
- package/src/containers/PromptArticle/index.ts +7 -0
- package/src/{components → containers}/TriggerStatus/TriggerStatus.tsx +12 -4
- package/src/containers/TriggerStatus/index.ts +7 -0
- package/src/containers/index.ts +15 -0
- package/src/hooks/useBlueprintRegistry.ts +5 -2
- package/src/hooks/useFilteredTypes.ts +2 -2
- package/src/hooks/useReferencesProvider.ts +1 -5
- package/src/index.ts +1 -0
- package/src/processor/processor.test.ts +2 -1
- package/src/processor/processor.ts +17 -22
- package/src/testing/test-sequence.ts +3 -3
- package/src/testing/test-services.ts +1 -1
- package/src/translations.ts +11 -11
- package/src/types/AssistantAction.ts +3 -3
- package/src/types/service.ts +3 -3
- package/dist/lib/browser/BlueprintArticle-6SP2ZWJ2.mjs +0 -30
- package/dist/lib/browser/BlueprintArticle-6SP2ZWJ2.mjs.map +0 -7
- package/dist/lib/browser/ChatCompanion-CAKFZAWN.mjs.map +0 -7
- package/dist/lib/browser/ChatContainer-QB37VONJ.mjs.map +0 -7
- package/dist/lib/browser/ChatDialog-ASVBLOOS.mjs.map +0 -7
- package/dist/lib/browser/InitiativeContainer-V522FCYH.mjs +0 -266
- package/dist/lib/browser/InitiativeContainer-V522FCYH.mjs.map +0 -7
- package/dist/lib/browser/PromptArticle-PK3CBRUB.mjs +0 -52
- package/dist/lib/browser/PromptArticle-PK3CBRUB.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-MUZGUQSC.mjs.map +0 -7
- package/dist/lib/browser/blueprint-definition-YAGWYVCL.mjs +0 -14
- package/dist/lib/browser/chunk-3ETBCBMH.mjs +0 -47
- package/dist/lib/browser/chunk-3ETBCBMH.mjs.map +0 -7
- package/dist/lib/browser/chunk-6BVCG5SJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-DKQMSMBN.mjs +0 -326
- package/dist/lib/browser/chunk-DKQMSMBN.mjs.map +0 -7
- package/dist/lib/browser/chunk-IJYAKPEU.mjs.map +0 -7
- package/dist/lib/browser/chunk-JA7PUZC7.mjs.map +0 -7
- package/dist/lib/browser/chunk-POPBT2AQ.mjs +0 -198
- package/dist/lib/browser/chunk-POPBT2AQ.mjs.map +0 -7
- package/dist/lib/browser/operation-resolver-2673CFJS.mjs.map +0 -7
- package/dist/lib/browser/react-surface-T3FN4GVP.mjs.map +0 -7
- package/dist/lib/browser/repair-IRXDYF4R.mjs.map +0 -7
- package/dist/lib/browser/toolkit-IDXQCSTX.mjs +0 -19
- package/dist/lib/browser/toolkit-IDXQCSTX.mjs.map +0 -7
- package/dist/lib/node-esm/BlueprintArticle-7LI6UXKZ.mjs +0 -31
- package/dist/lib/node-esm/BlueprintArticle-7LI6UXKZ.mjs.map +0 -7
- package/dist/lib/node-esm/ChatCompanion-W4PGOCGR.mjs.map +0 -7
- package/dist/lib/node-esm/ChatContainer-ECFQVH6O.mjs.map +0 -7
- package/dist/lib/node-esm/ChatDialog-AFLPYSIU.mjs.map +0 -7
- package/dist/lib/node-esm/InitiativeContainer-U4LGO3BW.mjs +0 -267
- package/dist/lib/node-esm/InitiativeContainer-U4LGO3BW.mjs.map +0 -7
- package/dist/lib/node-esm/PromptArticle-BHPABYLT.mjs +0 -53
- package/dist/lib/node-esm/PromptArticle-BHPABYLT.mjs.map +0 -7
- package/dist/lib/node-esm/blueprint-definition-H3LFAEK2.mjs +0 -15
- package/dist/lib/node-esm/chunk-2LEN26ZQ.mjs +0 -48
- package/dist/lib/node-esm/chunk-2LEN26ZQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3XC7LQSO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-75PHXBN3.mjs +0 -327
- package/dist/lib/node-esm/chunk-75PHXBN3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-F6LA7XNS.mjs +0 -199
- package/dist/lib/node-esm/chunk-F6LA7XNS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LB72WG6R.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MJD5XWQV.mjs.map +0 -7
- package/dist/lib/node-esm/operation-resolver-2ZD2DXOU.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-T4VMCCKZ.mjs.map +0 -7
- package/dist/lib/node-esm/repair-DMI55PON.mjs.map +0 -7
- package/dist/lib/node-esm/toolkit-JPRJRDDB.mjs.map +0 -7
- package/dist/types/src/blueprints/assistant-blueprint.d.ts +0 -11
- package/dist/types/src/blueprints/assistant-blueprint.d.ts.map +0 -1
- package/dist/types/src/components/AssistantSettings/index.d.ts +0 -2
- package/dist/types/src/components/AssistantSettings/index.d.ts.map +0 -1
- package/dist/types/src/components/BlueprintArticle.d.ts.map +0 -1
- package/dist/types/src/components/ChatCompanion.d.ts.map +0 -1
- package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
- package/dist/types/src/components/ChatDialog.d.ts.map +0 -1
- package/dist/types/src/components/InitiativeContainer.d.ts +0 -9
- package/dist/types/src/components/InitiativeContainer.d.ts.map +0 -1
- package/dist/types/src/components/PromptArticle.d.ts.map +0 -1
- package/dist/types/src/components/TriggerStatus/TriggerStatus.d.ts +0 -4
- package/dist/types/src/components/TriggerStatus/index.d.ts +0 -2
- package/dist/types/src/components/TriggerStatus/index.d.ts.map +0 -1
- package/dist/types/src/functions/index.d.ts +0 -4
- package/dist/types/src/functions/index.d.ts.map +0 -1
- package/dist/types/src/functions/object-list.d.ts +0 -10
- package/dist/types/src/functions/object-list.d.ts.map +0 -1
- package/dist/types/src/functions/object-load.d.ts +0 -8
- package/dist/types/src/functions/object-load.d.ts.map +0 -1
- package/dist/types/src/functions/object-search.d.ts +0 -10
- package/dist/types/src/functions/object-search.d.ts.map +0 -1
- package/src/blueprints/assistant-blueprint.ts +0 -57
- package/src/components/AssistantSettings/index.ts +0 -5
- package/src/components/InitiativeContainer.tsx +0 -340
- package/src/components/PromptArticle.tsx +0 -49
- package/src/components/TriggerStatus/index.ts +0 -5
- package/src/functions/index.ts +0 -7
- package/src/functions/object-list.ts +0 -49
- package/src/functions/object-load.ts +0 -44
- package/src/functions/object-search.ts +0 -46
- /package/dist/lib/browser/{blueprint-definition-YAGWYVCL.mjs.map → ChatContainer-ZGRSZ5EU.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-XF6GKHCG.mjs.map → settings-YREVQAZ5.mjs.map} +0 -0
- /package/dist/lib/browser/{state-OYDPWLKA.mjs.map → state-MPG42ZO4.mjs.map} +0 -0
- /package/dist/lib/node-esm/{blueprint-definition-H3LFAEK2.mjs.map → ChatContainer-IFHDIFJH.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-NGGZA7S7.mjs.map → settings-N452OW6Y.mjs.map} +0 -0
- /package/dist/lib/node-esm/{state-VSCPGN7R.mjs.map → state-WHZFKIEL.mjs.map} +0 -0
- /package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts +0 -0
- /package/src/{components → containers}/AssistantSettings/AssistantSettings.tsx +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/hooks/useBlueprintRegistry.ts", "../../../src/hooks/useChatProcessor.ts", "../../../src/hooks/useChatServices.ts", "../../../src/hooks/useChatToolbarActions.ts", "../../../src/components/Chat/Chat.tsx", "../../../src/hooks/useContextBinder.ts", "../../../src/hooks/useContextObjects.ts", "../../../src/hooks/useFilteredTypes.ts", "../../../src/hooks/useFlush.ts", "../../../src/hooks/useOnline.ts", "../../../src/hooks/usePresets.ts", "../../../src/hooks/useReferencesProvider.ts", "../../../src/components/ChatPrompt/ChatActions.tsx", "../../../src/components/ChatPrompt/ChatOptions.tsx", "../../../src/components/ChatPrompt/ChatPresets.tsx", "../../../src/components/ChatPrompt/ChatReferences.tsx", "../../../src/components/ChatPrompt/ChatStatusIndicator.tsx", "../../../src/components/ChatThread/ChatThread.tsx", "../../../src/components/ChatThread/registry.tsx", "../../../src/components/ToolBlock/ToolBlock.tsx", "../../../src/components/ChatThread/sync.ts", "../../../src/components/TemplateEditor/TemplateEditor.tsx", "../../../src/components/TemplateEditor/extensions/handlebars-extension.ts", "../../../src/components/TemplateEditor/extensions/xml-extension.ts", "../../../src/components/Toolbox/Toolbox.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { Blueprint } from '@dxos/blueprints';\nimport { type Database, Filter, Obj, Ref } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { distinctBy } from '@dxos/util';\n\n/**\n * Provide a registry of blueprints from plugins.\n */\n// TODO(burdon): Reconcile with eventual public registry.\nexport const useBlueprintRegistry = () => {\n const blueprintDefinitions = useCapabilities(AppCapabilities.BlueprintDefinition);\n return useMemo(\n () => new Blueprint.Registry(blueprintDefinitions.map((blueprint) => blueprint.make())),\n [blueprintDefinitions],\n );\n};\n\nexport const useBlueprints = ({\n blueprintRegistry,\n db,\n}: {\n blueprintRegistry?: Blueprint.Registry;\n db?: Database.Database;\n}) => {\n const staticBlueprints = useMemo(() => blueprintRegistry?.query() ?? [], [blueprintRegistry]);\n const spaceBlueprints = useQuery(db, Filter.type(Blueprint.Blueprint));\n return useMemo(() => {\n const blueprints = distinctBy([...staticBlueprints, ...spaceBlueprints], (b) => b.key);\n blueprints.sort(({ name: a }, { name: b }) => a.localeCompare(b));\n return blueprints;\n }, [staticBlueprints, spaceBlueprints]);\n};\n\n/**\n * Create reactive map of active blueprints (by key).\n */\nexport const useActiveBlueprints = ({ context }: { context?: AiContextBinder }) => {\n const [active, setActive] = useState<Map<string, Blueprint.Blueprint>>(new Map());\n\n useEffect(() => {\n if (!context) {\n setActive(new Map());\n return;\n }\n\n const updateActive = () => {\n const blueprints = context.getBlueprints();\n setActive(new Map(blueprints.map((blueprint) => [blueprint.key, blueprint])));\n };\n\n // Set initial value.\n updateActive();\n\n // Subscribe to changes.\n return context.subscribeBlueprints(updateActive);\n }, [context]);\n\n return active;\n};\n\n// TODO(burdon): Move logic into binder.\nexport const useBlueprintHandlers = ({\n db,\n context,\n blueprintRegistry,\n}: {\n db: Database.Database;\n context?: AiContextBinder;\n blueprintRegistry?: Blueprint.Registry;\n}) => {\n const onUpdateBlueprint = useCallback(\n async (key: string, checked: boolean) => {\n if (!context || !blueprintRegistry) {\n return;\n }\n\n // Find existing cloned blueprint.\n const objects = await db.query(Filter.type(Blueprint.Blueprint)).run();\n let storedBlueprint = objects.find((blueprint) => blueprint.key === key);\n if (checked) {\n if (!storedBlueprint) {\n const blueprint = blueprintRegistry.getByKey(key);\n if (!blueprint) {\n return;\n }\n\n // NOTE: Possible race condition with other peers.\n storedBlueprint = db.add(Obj.clone(blueprint));\n }\n await context.bind({ blueprints: [Ref.make(storedBlueprint)] });\n } else if (storedBlueprint) {\n await context.unbind({ blueprints: [Ref.make(storedBlueprint)] });\n }\n },\n [db, context, blueprintRegistry],\n );\n\n return { onUpdateBlueprint };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport type * as Runtime from 'effect/Runtime';\nimport { useContext, useMemo, useState } from 'react';\n\nimport { AiConversation } from '@dxos/assistant';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { log } from '@dxos/log';\nimport { type Queue, type Space } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { AiChatProcessor, type AiChatServices, type AiServicePreset } from '../processor';\nimport { type Assistant } from '../types';\n\nexport type UseChatProcessorProps = {\n space?: Space;\n chat?: Chat.Chat;\n preset?: AiServicePreset;\n services?: () => Promise<Runtime.Runtime<AiChatServices>>;\n blueprintRegistry?: Blueprint.Registry;\n settings?: Assistant.Settings;\n};\n\n/**\n * Configure and create AiChatProcessor.\n */\nexport const useChatProcessor = ({\n space,\n chat,\n preset,\n services,\n blueprintRegistry,\n settings,\n}: UseChatProcessorProps): AiChatProcessor | undefined => {\n const observableRegistry = useContext(RegistryContext);\n\n // Create conversation from chat queue.\n const [conversation, setConversation] = useState<AiConversation>();\n useAsyncEffect(async () => {\n if (!space || !chat) {\n return;\n }\n\n // NOTE: Passing in space and getting queue from space rather than resolving the reference.\n // This is because if the chat isn't in a space yet, the reference will not be resolvable.\n const queue = space.queues.get(chat.queue.dxn);\n const conversation = new AiConversation({\n queue: queue as Queue<any>,\n registry: observableRegistry as Registry.Registry,\n });\n await conversation.open();\n setConversation(conversation);\n return () => {\n void conversation.close();\n setConversation(undefined);\n };\n }, [space, chat?.queue.dxn.toString()]);\n\n // Create processor.\n const processor = useMemo(() => {\n if (!services || !conversation) {\n return undefined;\n }\n\n log('creating processor', { preset, model: preset?.model, settings });\n return new AiChatProcessor(conversation, services, {\n observableRegistry,\n blueprintRegistry,\n model: preset?.model,\n });\n }, [services, conversation, blueprintRegistry, preset]);\n\n return processor;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport type * as Runtime from 'effect/Runtime';\nimport { useMemo } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { type Chat } from '@dxos/assistant-toolkit';\nimport { type Key } from '@dxos/echo';\nimport { TracingService } from '@dxos/functions';\nimport { TracingServiceExt } from '@dxos/functions-runtime';\nimport { AutomationCapabilities } from '@dxos/plugin-automation';\nimport { useClient } from '@dxos/react-client';\n\nimport { type AiChatServices } from '../processor';\n\nexport type UseChatServicesProps = {\n id?: Key.SpaceId;\n chat?: Chat.Chat;\n};\n\n/**\n * Construct service layer.\n */\n// TODO(dmaretskyi): Better return type.\nexport const useChatServices = ({\n id,\n chat,\n}: UseChatServicesProps): (() => Promise<Runtime.Runtime<AiChatServices>>) | undefined => {\n const client = useClient();\n id ??= client.spaces.default.id;\n\n const runtimeResolver = useCapability(AutomationCapabilities.ComputeRuntime);\n return useMemo(() => {\n const runtime = runtimeResolver.getRuntime(id);\n return () =>\n runtime.runPromise(\n Effect.runtime<AiChatServices>().pipe(\n Effect.provide(\n chat?.traceQueue?.target ? TracingServiceExt.layerQueue(chat.traceQueue?.target) : TracingService.layerNoop,\n ),\n ),\n );\n }, [id, chat?.traceQueue?.target]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport { useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { Chat } from '@dxos/assistant-toolkit';\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { MenuBuilder, useMenuActions } from '@dxos/react-ui-menu';\n\nimport { useChatContext } from '../components';\nimport { meta } from '../meta';\nimport { AssistantOperation } from '../types';\n\nexport type ChatToolbarActionsProps = {\n chat?: Chat.Chat;\n companionTo?: Obj.Unknown;\n};\n\nexport const useChatToolbarActions = ({ chat, companionTo }: ChatToolbarActionsProps) => {\n const { invoke } = useOperationInvoker();\n const { db } = useChatContext('useChatToolbarActions');\n const query = companionTo\n ? Query.select(Filter.id(companionTo.id)).targetOf(Chat.CompanionTo).source()\n : Query.select(Filter.nothing());\n\n // TODO(wittjosiah): Query in react vs query in atom?\n const chats = useQuery(db, query);\n\n // Create stable reference for dependency array to avoid circular reference issues.\n return useMenuActions(\n useMemo(() => {\n return Atom.make(() => {\n const builder = MenuBuilder.make()\n .root({\n label: ['chat toolbar title', { ns: meta.id }],\n })\n .action(\n 'new',\n {\n label: ['new thread button', { ns: meta.id }],\n icon: 'ph--plus--regular',\n type: 'new',\n disabled: !companionTo,\n },\n () => {\n invariant(companionTo);\n return invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat: undefined,\n }).pipe(runAndForwardErrors);\n },\n )\n .action(\n 'rename',\n {\n label: ['rename thread button', { ns: meta.id }],\n icon: 'ph--magic-wand--regular',\n type: 'rename',\n disabled: !chat,\n },\n () =>\n Effect.gen(function* () {\n invariant(chat);\n yield* invoke(AssistantOperation.UpdateChatName, { chat });\n }).pipe(runAndForwardErrors),\n )\n .action(\n 'branch',\n {\n label: ['button branch thread', { ns: meta.id }],\n icon: 'ph--git-branch--regular',\n type: 'branch',\n disabled: true,\n },\n () => {},\n );\n\n if (chats.length > 0) {\n builder.group(\n 'chats',\n {\n label: ['chat history label', { ns: meta.id }],\n icon: 'ph--clock-counter-clockwise--regular',\n selectCardinality: 'single',\n variant: 'dropdownMenu',\n },\n (builder) => {\n chats\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\n .forEach((chat) => {\n builder.action(\n chat.id,\n {\n label: Obj.getLabel(chat) ?? ['object name placeholder', { ns: Chat.Chat.typename }],\n },\n () =>\n Effect.gen(function* () {\n invariant(companionTo);\n yield* invoke(AssistantOperation.SetCurrentChat, {\n companionTo,\n chat,\n });\n }).pipe(runAndForwardErrors),\n );\n });\n },\n );\n }\n\n return builder.build();\n });\n }, [chats.length, db?.spaceId, companionTo?.id, chat?.id, invoke]),\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { createContext } from '@radix-ui/react-context';\nimport * as Array from 'effect/Array';\nimport * as Option from 'effect/Option';\nimport React, {\n type ComponentPropsWithoutRef,\n type PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { type Chat as ChatModule } from '@dxos/assistant-toolkit';\nimport { Event } from '@dxos/async';\nimport { type Database, Filter, Obj } from '@dxos/echo';\nimport { useVoiceInput } from '@dxos/plugin-transcription';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Input, type ThemedClassName, useDynamicRef, useTranslation } from '@dxos/react-ui';\nimport { ChatEditor, type ChatEditorController, type ChatEditorProps } from '@dxos/react-ui-chat';\nimport { type MarkdownStreamController } from '@dxos/react-ui-components';\nimport { Menu } from '@dxos/react-ui-menu';\nimport { Message } from '@dxos/types';\nimport { mx } from '@dxos/ui-theme';\nimport { isTruthy } from '@dxos/util';\n\nimport { useChatToolbarActions } from '../../hooks';\nimport { meta } from '../../meta';\nimport { type AiChatProcessor } from '../../processor';\nimport {\n ChatActions,\n type ChatActionsProps,\n ChatOptions,\n type ChatPresetsProps,\n ChatReferences,\n ChatStatusIndicator,\n} from '../ChatPrompt';\nimport { ChatThread as NaturalChatThread, type ChatThreadProps as NaturalChatThreadProps } from '../ChatThread';\n\nimport { type ChatEvent } from './events';\n\n//\n// Context\n// NOTE: The context should not be exported. It is only used internally.\n// Components outside of this Radix-style group shuld define their own APIs.\n//\n\ntype ChatContextValue = {\n debug?: boolean;\n event: Event<ChatEvent>;\n db?: Database.Database;\n chat?: ChatModule.Chat;\n messages: Message.Message[];\n processor: AiChatProcessor;\n};\n\nexport const [ChatContextProvider, useChatContext] = createContext<ChatContextValue>('Chat');\n\n//\n// Root\n//\n\ntype ChatRootProps = PropsWithChildren<\n Pick<ChatContextValue, 'db' | 'chat' | 'processor'> & {\n onEvent?: (event: ChatEvent) => void;\n }\n>;\n\nconst ChatRoot = ({ children, chat, processor, onEvent, ...props }: ChatRootProps) => {\n const [debug, setDebug] = useState(false);\n const pending = useAtomValue(processor.messages);\n const streaming = useAtomValue(processor.streaming);\n const lastPrompt = useRef<string | undefined>(undefined);\n\n // Messages.\n const storedMessages = useQuery(chat?.queue?.target, Filter.type(Message.Message));\n const messages = useMemo(() => {\n return Array.dedupeWith([...storedMessages, ...pending], ({ id: a }, { id: b }) => a === b);\n }, [storedMessages, pending]);\n\n // Events.\n const event = useMemo(() => new Event<ChatEvent>(), []);\n useEffect(() => {\n return event.on((ev) => {\n switch (ev.type) {\n case 'toggle-debug': {\n setDebug((debug) => !debug);\n\n // Dump state to console.\n queueMicrotask(async () => {\n const objects = processor.context.getObjects();\n const blueprints = processor.context.getBlueprints();\n const tools = await processor.getTools();\n const system = await processor.getSystemPrompt();\n // eslint-disable-next-line no-console\n console.log('Chat processor state:', { objects, blueprints });\n // eslint-disable-next-line no-console\n console.log(`\n ==== System Prompt ====\n ${system}\n ==== Tools ====\n ${Object.values(tools)\n .map((tool) => JSON.stringify(tool, null, 2))\n .join('\\n')}\n `);\n });\n break;\n }\n\n case 'submit': {\n const text = ev.text.trim();\n if (!streaming && text.length) {\n lastPrompt.current = ev.text;\n void processor.request({ message: text });\n }\n break;\n }\n\n case 'retry': {\n if (!streaming) {\n void processor.retry();\n }\n break;\n }\n\n case 'cancel': {\n if (streaming) {\n void processor.cancel();\n if (lastPrompt.current) {\n event.emit({ type: 'update-prompt', text: lastPrompt.current });\n }\n }\n break;\n }\n }\n\n onEvent?.(ev);\n });\n }, [event, processor, streaming, onEvent]);\n\n const db = props.db ?? (chat && Obj.getDatabase(chat));\n\n return (\n <ChatContextProvider\n debug={debug}\n event={event}\n db={db}\n chat={chat}\n messages={messages}\n processor={processor}\n {...props}\n >\n {children}\n </ChatContextProvider>\n );\n};\n\nChatRoot.displayName = 'Chat.Root';\n\n//\n// Viewport\n//\n\nconst CHAT_VIEWPORT_NAME = 'Chat.Viewport';\n\ntype ChatViewportProps = ThemedClassName<PropsWithChildren<ComponentPropsWithoutRef<'div'>>>;\n\nconst ChatViewport = ({ classNames, children, ...props }: ChatViewportProps) => {\n return (\n <div role='none' {...props} className={mx('flex flex-col h-full w-full', classNames)}>\n {children}\n </div>\n );\n};\n\nChatViewport.displayName = CHAT_VIEWPORT_NAME;\n\n//\n// Thread\n//\n\nconst CHAT_THREAD_NAME = 'Chat.Thread';\n\ntype ChatThreadProps = Omit<NaturalChatThreadProps, 'identity' | 'messages' | 'tools'>;\n\nconst ChatThread = (props: ChatThreadProps) => {\n const { debug, event, messages, processor } = useChatContext(CHAT_THREAD_NAME);\n const identity = useIdentity();\n const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);\n\n const controllerRef = useRef<MarkdownStreamController | null>(null);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'submit':\n case 'scroll-to-bottom':\n controllerRef.current?.scrollToBottom();\n break;\n case 'nav-previous':\n controllerRef.current?.navigatePrevious();\n break;\n case 'nav-next':\n controllerRef.current?.navigateNext();\n break;\n }\n });\n }, [event]);\n\n const handleEvent = useCallback<NonNullable<NaturalChatThreadProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n if (!identity) {\n return null;\n }\n\n return (\n <NaturalChatThread\n {...props}\n identity={identity}\n messages={messages}\n error={error}\n debug={debug}\n onEvent={handleEvent}\n ref={controllerRef}\n />\n );\n};\n\nChatThread.displayName = CHAT_THREAD_NAME;\n\n//\n// Prompt\n//\n\nconst CHAT_PROMPT_NAME = 'Chat.Prompt';\n\ntype ChatPromptProps = ThemedClassName<\n {\n outline?: boolean;\n settings?: boolean;\n } & Pick<ChatEditorProps, 'placeholder'> &\n Omit<ChatPresetsProps, 'onChange'> & {\n expandable?: boolean;\n online?: boolean;\n onOnlineChange?: (online: boolean) => void;\n onPresetChange?: ChatPresetsProps['onChange'];\n }\n>;\n\nconst ChatPrompt = ({\n classNames,\n outline,\n settings = true,\n placeholder,\n expandable,\n online,\n presets,\n preset,\n onPresetChange,\n onOnlineChange,\n}: ChatPromptProps) => {\n const { t } = useTranslation(meta.id);\n const { db, processor, event } = useChatContext(CHAT_PROMPT_NAME);\n\n const error = useAtomValue(processor.error).pipe(Option.getOrUndefined);\n const streaming = useAtomValue(processor.streaming);\n const active = useAtomValue(processor.active);\n const activeRef = useDynamicRef(active);\n\n const editorRef = useRef<ChatEditorController>(null);\n const [recordingState, setRecordingState] = useState(false);\n useEffect(() => {\n return event.on((event) => {\n switch (event.type) {\n case 'update-prompt':\n if (!editorRef.current?.getText()?.length) {\n editorRef.current?.setText(event.text);\n editorRef.current?.focus();\n }\n break;\n case 'record-start':\n setRecordingState(true);\n break;\n case 'record-stop':\n setRecordingState(false);\n break;\n }\n });\n }, [event]);\n\n // TODO(burdon): Configure capability in TranscriptionPlugin.\n const { recording } = useVoiceInput({\n active: recordingState,\n onUpdate: (text) => {\n editorRef.current?.setText(text);\n editorRef.current?.focus();\n },\n });\n\n const extensions = useMemo<Extension[]>(() => {\n return [\n Prec.highest(\n keymap.of([\n {\n key: 'Mod-d',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'toggle-debug' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowUp',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-previous' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-open' });\n return true;\n },\n },\n {\n key: 'Mod-ArrowDown',\n preventDefault: true,\n run: () => {\n event.emit({ type: 'nav-next' });\n return true;\n },\n shift: () => {\n event.emit({ type: 'thread-close' });\n return true;\n },\n },\n ]),\n ),\n ].filter(isTruthy);\n }, [event, expandable]);\n\n const handleSubmit = useCallback<NonNullable<ChatEditorProps['onSubmit']>>(\n (text) => {\n if (!activeRef.current) {\n event.emit({ type: 'submit', text });\n return true;\n }\n },\n [event],\n );\n\n const handleEvent = useCallback<NonNullable<ChatActionsProps['onEvent']>>(\n (ev) => {\n event.emit(ev);\n },\n [event],\n );\n\n return (\n <div\n role='group'\n className={mx(\n 'flex flex-col w-full dx-density-fine',\n outline &&\n 'bg-group-surface border border-subdued-separator transition transition-border [&:has(.cm-content:focus)]:border-separator rounded-sm',\n classNames,\n )}\n >\n <div role='none' className='flex p-2 gap-2'>\n <ChatStatusIndicator classNames='p-1' preset={preset} error={error} processing={streaming} />\n <ChatEditor\n ref={editorRef}\n autoFocus\n lineWrapping\n classNames='col-span-2 pt-0.5'\n placeholder={placeholder ?? t('prompt placeholder')}\n extensions={extensions}\n onSubmit={handleSubmit}\n />\n </div>\n\n {db && settings && (\n <div role='none' className='flex items-center overflow-hidden'>\n <ChatOptions\n db={db}\n blueprintRegistry={processor.blueprintRegistry}\n context={processor.context}\n preset={preset}\n presets={presets}\n onPresetChange={onPresetChange}\n />\n\n <div role='none' className='flex grow overflow-x-auto scrollbar-none'>\n <ChatReferences db={db} context={processor.context} />\n </div>\n\n <ChatActions\n classNames='col-span-2'\n microphone={true}\n recording={recording}\n processing={streaming}\n onEvent={handleEvent}\n >\n {/* TODO(burdon): Move offline switch into dialog. */}\n {online !== undefined && (\n <Input.Root>\n <Input.Label srOnly>{t('online switch label')}</Input.Label>\n <Input.Switch classNames='mx-2' checked={online} onCheckedChange={onOnlineChange} />\n </Input.Root>\n )}\n </ChatActions>\n </div>\n )}\n </div>\n );\n};\n\nChatPrompt.displayName = CHAT_PROMPT_NAME;\n\n//\n// Toolbar\n//\n\nconst CHAT_TOOLBAR_NAME = 'Chat.Toolbar';\n\ntype ChatToolbarProps = ThemedClassName<{ companionTo?: Obj.Unknown } & ComponentPropsWithoutRef<typeof Menu.Root>>;\n\nconst ChatToolbar = ({ classNames, companionTo, ...props }: ChatToolbarProps) => {\n const { chat } = useChatContext(CHAT_TOOLBAR_NAME);\n const menu = useChatToolbarActions({ chat, companionTo });\n\n return (\n <Menu.Root\n {...props}\n {...menu}\n attendableId={companionTo ? Obj.getDXN(companionTo).toString() : chat ? Obj.getDXN(chat).toString() : ''}\n >\n <Menu.Toolbar classNames={classNames} textBlockWidth />\n </Menu.Root>\n );\n};\n\nChatToolbar.displayName = CHAT_TOOLBAR_NAME;\n\n//\n// Chat\n//\n\nexport const Chat = {\n Root: ChatRoot,\n Viewport: ChatViewport,\n Thread: ChatThread,\n Prompt: ChatPrompt,\n Toolbar: ChatToolbar,\n};\n\nexport type { ChatRootProps, ChatViewportProps, ChatThreadProps, ChatPromptProps, ChatToolbarProps, ChatEvent };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Registry, RegistryContext } from '@effect-atom/atom-react';\nimport { useContext, useState } from 'react';\n\nimport { AiContextBinder } from '@dxos/assistant';\nimport { type Queue } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\n// NOTE: This takes a queue rather than a chat because the chat may not be in a space yet.\nexport const useContextBinder = (queue: Queue | undefined): AiContextBinder | undefined => {\n const registry = useContext(RegistryContext) as Registry.Registry;\n const [binder, setBinder] = useState<AiContextBinder>();\n\n useAsyncEffect(async () => {\n if (!queue) {\n return;\n }\n\n const binder = new AiContextBinder({ queue, registry });\n await binder.open();\n setBinder(binder);\n\n return () => {\n void binder.close();\n };\n }, [queue]);\n\n return binder;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type DXN, type Database, type Obj, Ref } from '@dxos/echo';\n\nexport type UseContextObjectsProps = {\n db?: Database.Database;\n context?: AiContextBinder;\n};\n\nexport type UseContextObjects = {\n objects: Obj.Unknown[];\n onUpdateObject: (dxn: DXN, checked: boolean) => Promise<void>;\n};\n\n/**\n * Create reactive map of active object references (by DXN string).\n */\nexport const useContextObjects = ({ db, context }: UseContextObjectsProps): UseContextObjects => {\n const handleUpdateObject = useCallback<UseContextObjects['onUpdateObject']>(\n async (dxn: DXN, checked: boolean) => {\n if (!db || !context) {\n return;\n }\n\n // Load the object by DXN from the current space.\n const ref = Ref.fromDXN(dxn);\n await ref.load();\n if (checked) {\n await context.bind({ objects: [ref] });\n } else {\n await context.unbind({ objects: [ref] });\n }\n },\n [db, context],\n );\n\n return {\n objects: context?.getObjects() ?? [],\n onUpdateObject: handleUpdateObject,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useEffect, useState } from 'react';\n\nimport { type Database, type Type } from '@dxos/echo';\nimport { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from '@dxos/echo/internal';\n\n// TODO(burdon): Pass in filter.\n// TODO(wittjosiah): Factor out.\nexport const useFilteredTypes = (db?: Database.Database): Type.AnyEntity[] => {\n const [types, setTypes] = useState<Type.AnyEntity[]>([]);\n useEffect(() => {\n if (!db) {\n return;\n }\n\n return db.schemaRegistry.query({ location: ['database', 'runtime'] }).subscribe(\n (query) => {\n const types = Array.from(\n new Set(\n query.results\n .filter((schema) => getTypeAnnotation(schema)?.kind !== EntityKind.Relation)\n .filter((schema) => SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false))),\n ),\n );\n\n setTypes(types);\n },\n { fire: true },\n );\n }, [db]);\n\n return types;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useRef, useState } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\n\nexport const useFlush = (space?: Space) => {\n const [state, setState] = useState<'idle' | 'flushing' | 'flushed'>('idle');\n const resetTimer = useRef<NodeJS.Timeout | null>(null);\n\n const handleFlush = useCallback(() => {\n if (!space) {\n return;\n }\n\n queueMicrotask(async () => {\n if (resetTimer.current) {\n clearTimeout(resetTimer.current);\n }\n\n setState('flushing');\n await space.db.flush();\n setState('flushed');\n\n resetTimer.current = setTimeout(() => {\n setState('idle');\n resetTimer.current = null;\n }, 1_000);\n });\n }, [space]);\n\n return { state, handleFlush };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Dispatch, type SetStateAction, useState } from 'react';\n\nexport const useOnline = (): [boolean, Dispatch<SetStateAction<boolean>>] => {\n const [online, setOnline] = useState(true);\n return [online, setOnline];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type ChatPromptProps } from '../components';\nimport { type AiServicePreset, AiServicePresets } from '../processor';\n\nexport type UsePresets = {\n preset: AiServicePreset | undefined;\n} & Pick<ChatPromptProps, 'presets' | 'onPresetChange'>;\n\nexport const usePresets = (online: boolean): UsePresets => {\n // TODO(burdon): Memo preset for provider.\n const [preset, setPreset] = useState<AiServicePreset>();\n const presets = useMemo(\n () => AiServicePresets.filter((preset) => online === (preset.provider === 'dxos-remote')),\n [online],\n );\n const presetOptions = useMemo(\n () => presets.map(({ id, model, label }) => ({ id, label: label ?? model })),\n [presets],\n );\n useEffect(() => {\n setPreset(presets[0]);\n }, [presets]);\n\n const handlePresetChange = useCallback<NonNullable<ChatPromptProps['onPresetChange']>>(\n (id) => {\n const preset = presets.find((preset) => preset.id === id);\n if (preset) {\n setPreset(preset);\n }\n },\n [presets],\n );\n\n return {\n preset: preset,\n presets: presetOptions,\n onPresetChange: handlePresetChange,\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type ReferencesProvider } from '@dxos/react-ui-chat';\n\n/**\n * Resolve references to objects in the space.\n */\nexport const useReferencesProvider = (space?: Space): ReferencesProvider | undefined => {\n return useMemo<ReferencesProvider | undefined>((): ReferencesProvider | undefined => {\n if (!space) {\n return undefined;\n }\n\n return {\n getReferences: async ({ query }) => {\n // TODO(burdon): Previously we filtered by types declared by the artifact definitions.\n // const schemas = blueprints.map((blueprint) => blueprint.schema).flat();\n // const objects = await space.db\n // .query(Filter.or(...schemas.map((schema) => Filter.type(schema as Type.Schema))))\n // .run();\n\n const objects = await space.db.query(Filter.everything()).run();\n\n return (\n objects\n // TODO(burdon): Remove cast ??? (+ two instances below).\n // .map((object) => {\n // log.info('object', { object, label: Obj.getLabel(object as any) });\n // return object;\n // })\n .filter((object) => stringMatch(query, Obj.getLabel(object as any) ?? ''))\n // TODO(dmaretskyi): `Type.getDXN` (at the point of writing) didn't work here as it was schema-only.\n .filter((object) => !!Obj.getDXN(object as Obj.Unknown))\n .map((object) => ({\n uri: Obj.getDXN(object as any).toString(),\n label: Obj.getLabel(object as any) ?? '',\n }))\n );\n },\n resolveReference: async ({ uri }) => {\n const object = await space.db.query(Filter.id(uri)).first();\n return { uri, label: Obj.getLabel(object) ?? '' };\n },\n } satisfies ReferencesProvider;\n }, [space]);\n};\n\nconst stringMatch = (query: string, label: string) => label.toLowerCase().startsWith(query.toLowerCase());\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\nimport { type ChatEvent } from '../Chat';\n\nexport type ChatActionsProps = ThemedClassName<\n PropsWithChildren<{\n microphone?: boolean;\n recording?: boolean;\n processing?: boolean;\n onEvent?: (event: ChatEvent) => void;\n }>\n>;\n\nexport const ChatActions = ({ classNames, children, microphone, recording, processing, onEvent }: ChatActionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div className={mx('flex items-center me-1', classNames)}>\n {children}\n\n <IconButton\n disabled={!processing}\n variant='ghost'\n icon='ph--x--regular'\n iconOnly\n label={t('cancel processing button')}\n onClick={() => onEvent?.({ type: 'cancel' })}\n />\n\n {microphone && (\n <IconButton\n disabled={!processing}\n classNames={mx(recording && 'bg-primary-500')}\n variant='ghost'\n icon='ph--microphone--regular'\n iconOnly\n noTooltip\n label={t('microphone button')}\n onMouseDown={() => onEvent?.({ type: 'record-start' })}\n onMouseUp={() => onEvent?.({ type: 'record-stop' })}\n onTouchStart={() => onEvent?.({ type: 'record-start' })}\n onTouchEnd={() => onEvent?.({ type: 'record-stop' })}\n />\n )}\n\n <IconButton\n variant='ghost'\n icon='ph--wrench--regular'\n iconOnly\n label={t('debug button')}\n onClick={() => onEvent?.({ type: 'toggle-debug' })}\n />\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { type JSX, useMemo, useState } from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { type Blueprint } from '@dxos/blueprints';\nimport { type Database, Filter, Obj, Type } from '@dxos/echo';\nimport { Annotation } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { IconButton, Popover, Select, useTranslation } from '@dxos/react-ui';\nimport { Listbox, SearchList, useSearchListResults } from '@dxos/react-ui-searchlist';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { getStyles, mx } from '@dxos/ui-theme';\n\nimport {\n useActiveBlueprints,\n useBlueprintHandlers,\n useBlueprints,\n useContextObjects,\n useFilteredTypes,\n} from '../../hooks';\nimport { meta } from '../../meta';\n\nconst panelClassNames = 'w-[calc(100dvw-.5rem)] sm:w-max md:w-72 max-w-text-content';\n\nexport type ChatOptionsProps = {\n db: Database.Database;\n context: AiContextBinder;\n blueprintRegistry?: Blueprint.Registry;\n presets?: { id: string; label: string }[];\n preset?: string;\n onPresetChange?: (id: string) => void;\n};\n\n/**\n * Manages the runtime context for the chat.\n */\nexport const ChatOptions = ({ db, context, blueprintRegistry, presets, preset, onPresetChange }: ChatOptionsProps) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div role='none' className='flex p-2'>\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton variant='ghost' icon='ph--plus--regular' iconOnly label={t('context objects button')} />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={panelClassNames}>\n <Popover.Viewport>\n <ObjectsPanel db={db} context={context} />\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton\n variant='ghost'\n icon='ph--sliders-horizontal--regular'\n iconOnly\n label={t('context settings button')}\n />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='top' classNames={panelClassNames}>\n <Popover.Viewport>\n <Tabs.Root orientation='horizontal' defaultValue='blueprints' defaultActivePart='list' tabIndex={-1}>\n <Tabs.Viewport\n classNames={mx(\n 'max-h-(--radix-popover-content-available-height) grid grid-rows-[1fr_min-content]',\n '[&_[cmdk-root]]:contents [&_[role=\"tabpanel\"]]:grid [&_[role=\"tabpanel\"]]:grid-rows-[1fr_min-content]',\n '[&_[role=\"listbox\"]]:min-h-0 [&_[role=\"listbox\"]]:overflow-y-auto',\n '[&_[role=\"tabpanel\"]]:min-h-0 [&_[role=\"tabpanel\"]]:px-form-chrome [&_[role=\"tabpanel\"][data-state=\"active\"]]:order-first [&_[role=\"tabpanel\"][data-state=\"inactive\"]]:hidden',\n )}\n >\n <Tabs.Tabpanel value='blueprints' tabIndex={-1} classNames='dx-focus-ring-inset'>\n <BlueprintsPanel blueprintRegistry={blueprintRegistry} db={db} context={context} />\n </Tabs.Tabpanel>\n <Tabs.Tabpanel value='model' tabIndex={-1} classNames='dx-focus-ring-inset px-0!'>\n <ModelsPanel presets={presets} preset={preset} onPresetChange={onPresetChange} />\n </Tabs.Tabpanel>\n <Tabs.Tablist classNames='sm:overflow-x-hidden justify-center p-form-chrome border-y border-subdued-separator order-last'>\n <Tabs.IconTab\n value='blueprints'\n icon='ph--blueprint--regular'\n label={t('blueprints in context title')}\n />\n <Tabs.IconTab value='model' label={t('chat model title')} icon='ph--cpu--regular' />\n </Tabs.Tablist>\n </Tabs.Viewport>\n </Tabs.Root>\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n );\n};\n\nconst BlueprintsPanel = ({\n blueprintRegistry,\n db,\n context,\n}: Pick<ChatOptionsProps, 'blueprintRegistry' | 'db' | 'context'>) => {\n const { t } = useTranslation(meta.id);\n\n const blueprints = useBlueprints({ blueprintRegistry, db });\n const activeBlueprints = useActiveBlueprints({ context });\n const { onUpdateBlueprint } = useBlueprintHandlers({ db, context, blueprintRegistry });\n\n const { results, handleSearch } = useSearchListResults({\n items: blueprints,\n extract: (blueprint) => blueprint.name,\n });\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <SearchList.Content classNames='py-form-chrome'>\n <SearchList.Viewport>\n {results.map((blueprint) => {\n const isActive = activeBlueprints.has(blueprint.key);\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={blueprint.key}\n value={blueprint.key}\n label={blueprint.name}\n checked={isActive}\n onSelect={() => onUpdateBlueprint?.(blueprint.key, !isActive)}\n />\n );\n })}\n </SearchList.Viewport>\n </SearchList.Content>\n <SearchList.Input placeholder={t('search placeholder')} classNames='mb-form-chrome' autoFocus />\n </SearchList.Root>\n );\n};\n\nconst ModelsPanel = ({\n presets,\n preset,\n onPresetChange,\n}: Pick<ChatOptionsProps, 'presets' | 'preset' | 'onPresetChange'>) => {\n return (\n <Listbox.Root value={preset} onValueChange={onPresetChange} autoFocus>\n {presets?.map(({ id, label }) => {\n return (\n <Listbox.Option key={id} value={id}>\n <Listbox.OptionLabel>{label}</Listbox.OptionLabel>\n <Listbox.OptionIndicator />\n </Listbox.Option>\n );\n })}\n </Listbox.Root>\n );\n};\n\nconst ANY = '__any__';\n\nconst ObjectsPanel = ({ db, context }: Pick<ChatOptionsProps, 'db' | 'context'>): JSX.Element => {\n const { t } = useTranslation(meta.id);\n\n // Item types sorted by label.\n const types = useFilteredTypes(db);\n const typenames = useMemo(() => {\n const typenames = types.map((type) => {\n const typename = Type.getTypename(type);\n return {\n typename,\n label: t('typename label', { ns: typename, defaultValue: typename }),\n };\n });\n\n typenames.sort((a, b) => a.label.localeCompare(b.label));\n return typenames;\n }, [types]);\n\n // Current type and filter.\n const [typename, setTypename] = useState<string>(ANY);\n const anyFilter = useMemo(\n () => Filter.or(...typenames.map(({ typename }) => Filter.typename(typename))),\n [typenames],\n );\n\n // Context objects.\n const objects = useQuery(db, typename === ANY ? anyFilter : Filter.typename(typename));\n const { objects: contextObjects, onUpdateObject } = useContextObjects({ db, context });\n\n const { results, handleSearch } = useSearchListResults({\n items: objects,\n extract: (object) => Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id,\n });\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <SearchList.Content classNames='p-form-chrome [&:has([cmdk-list-sizer]:empty)]:py-0'>\n <SearchList.Viewport>\n {results.length ? (\n results.map((object) => {\n const isActive = contextObjects.findIndex((obj) => obj.id === object.id) !== -1;\n const { icon, hue } = Option.fromNullable(Obj.getSchema(object)).pipe(\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.getOrElse(() => ({ icon: DEFAULT_OBJECT_ICON, hue: undefined as string | undefined })),\n );\n const styles = hue ? getStyles(hue) : undefined;\n return (\n <SearchList.Item\n classNames='flex items-center overflow-hidden'\n key={object.id}\n value={object.id}\n icon={icon}\n iconClassNames={styles?.surfaceText}\n label={Obj.getLabel(object) ?? Obj.getTypename(object) ?? object.id}\n checked={isActive}\n onSelect={() => onUpdateObject?.(Obj.getDXN(object), !isActive)}\n />\n );\n })\n ) : (\n <SearchList.Item value='__empty__' label={t('no results')} />\n )}\n </SearchList.Viewport>\n </SearchList.Content>\n\n <div role='none' className='grid grid-cols-[min-content_1fr] gap-2 px-form-chrome mb-form-chrome'>\n <Select.Root value={typename === ANY ? undefined : typename} onValueChange={setTypename}>\n <Select.TriggerButton density='fine' placeholder={t('type filter placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.ScrollUpButton />\n <Select.Viewport>\n <Select.Option value={ANY}>{t('any type filter label')}</Select.Option>\n {typenames.map(({ typename, label }) => (\n <Select.Option key={typename} value={typename}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.ScrollDownButton />\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n <SearchList.Input placeholder={t('search placeholder')} classNames='mb-0' autoFocus />\n </div>\n </SearchList.Root>\n );\n};\n\n// TODO(dmaretskyi): Extract those somewhere else.\nconst DEFAULT_OBJECT_ICON = 'ph--cube--regular';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Select } from '@dxos/react-ui';\n\nexport type ChatPresetsProps = {\n presets?: { id: string; label: string }[];\n preset?: string;\n onChange?: (id: string) => void;\n};\n\nexport const ChatPresets = ({ presets, preset, onChange }: ChatPresetsProps) => {\n return (\n <Select.Root value={preset} onValueChange={onChange}>\n <Select.TriggerButton classNames='text-sm' />\n <Select.Content>\n {presets?.map(({ id, label }) => (\n <Select.Option key={id} value={id} classNames='text-sm'>\n {label}\n </Select.Option>\n ))}\n <Select.Arrow />\n </Select.Content>\n </Select.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React from 'react';\n\nimport { type AiContextBinder } from '@dxos/assistant';\nimport { Annotation, type Database, Obj } from '@dxos/echo';\nimport { Icon, IconButton, type Label, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { getStyles, mx } from '@dxos/ui-theme';\n\nimport { useContextObjects } from '../../hooks';\nimport { meta } from '../../meta';\n\nexport type ChatReferencesProps = ThemedClassName<{\n context: AiContextBinder;\n db: Database.Database;\n}>;\n\nexport const ChatReferences = ({ classNames, context, db }: ChatReferencesProps) => {\n const { t } = useTranslation(meta.id);\n const { objects, onUpdateObject } = useContextObjects({ db, context });\n\n return (\n <ul className={mx('flex', classNames)}>\n {objects.map((obj) => {\n const dxn = Obj.getDXN(obj);\n const typename = Obj.getTypename(obj);\n const label: Label = Obj.getLabel(obj) ?? (typename ? ['object name placeholder', { ns: typename }] : obj.id);\n const { icon, hue } = Option.fromNullable(Obj.getSchema(obj)).pipe(\n Option.flatMap(Annotation.IconAnnotation.get),\n Option.getOrElse(() => ({ icon: DEFAULT_OBJECT_ICON, hue: undefined as string | undefined })),\n );\n const styles = hue ? getStyles(hue) : undefined;\n return (\n <li key={dxn.toString()} className='dx-tag py-0 ps-2 flex items-center gap-1' data-hue='neutral'>\n <Icon icon={icon} size={4} classNames={styles?.surfaceText} />\n {toLocalizedString(label, t)}\n <IconButton\n icon='ph--x--bold'\n iconOnly\n variant='ghost'\n label={t('remove object in context label')}\n classNames='p-0 hover:bg-transparent'\n size={3}\n onClick={() => onUpdateObject?.(dxn, false)}\n />\n </li>\n );\n })}\n </ul>\n );\n};\n\n// TODO(dmaretskyi): Extract those somewhere else.\nconst DEFAULT_OBJECT_ICON = 'ph--cube--regular';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { type ThemedClassName, Tooltip, useTimeout } from '@dxos/react-ui';\nimport { Spinner, type SpinnerProps } from '@dxos/react-ui-sfx';\nimport { mx } from '@dxos/ui-theme';\n\nconst period = 3_000;\n\nexport type ChatStatusIndicatorProps = ThemedClassName<\n {\n preset?: string;\n processing?: boolean;\n error?: Error;\n } & Pick<SpinnerProps, 'size' | 'onClick'>\n>;\n\nexport const ChatStatusIndicator = ({ classNames, preset, processing, error, ...props }: ChatStatusIndicatorProps) => {\n const [init, setInit] = useState(false);\n useEffect(() => setInit(false), [preset]);\n useTimeout(\n async () => {\n setInit(true);\n },\n period / 2,\n [preset],\n );\n\n return (\n <div role='none' className={mx('relative flex', classNames)}>\n <Spinner duration={period} state={!init ? 'flash' : error ? 'error' : processing ? 'spin' : 'pulse'} {...props} />\n {error && (\n <Tooltip.Trigger asChild content={error.message}>\n <div className='absolute inset-0' />\n </Tooltip.Trigger>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type CSSProperties, forwardRef, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { PublicKey } from '@dxos/keys';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type ThemedClassName, useForwardedRef } from '@dxos/react-ui';\nimport { MarkdownStream, type MarkdownStreamController, type MarkdownStreamProps } from '@dxos/react-ui-components';\nimport { type Message } from '@dxos/types';\nimport { mx } from '@dxos/ui-theme';\nimport { keyToFallback } from '@dxos/util';\n\nimport { type ChatEvent } from '../Chat';\n\nimport { blockToMarkdown, componentRegistry } from './registry';\nimport { MessageSyncer } from './sync';\n\nexport type ChatThreadProps = ThemedClassName<\n {\n identity?: Identity;\n messages?: Message.Message[];\n error?: Error;\n onEvent?: (event: ChatEvent) => void;\n } & Pick<MarkdownStreamProps, 'cursor' | 'fadeIn' | 'debug'>\n>;\n\n// TODO(burdon): Memo thread position.\nexport const ChatThread = forwardRef<MarkdownStreamController | null, ChatThreadProps>(\n (\n { classNames, identity, messages = [], error, cursor = false, fadeIn = true, debug = false, onEvent },\n forwardedRef,\n ) => {\n const controllerRef = useForwardedRef(forwardedRef);\n const [controller, setController] = useState<MarkdownStreamController | null>(null);\n\n // Callback ref to capture when MarkdownStream is mounted and trigger re-render.\n const refCallback = useCallback(\n (node: MarkdownStreamController | null) => {\n controllerRef.current = node;\n setController(node);\n },\n [controllerRef],\n );\n\n const userHue = useMemo(\n () => identity?.profile?.data?.hue || keyToFallback(identity?.identityKey ?? PublicKey.random()).hue,\n [identity],\n );\n\n // Show error.\n useEffect(() => {\n controller?.scrollToBottom();\n }, [controller, error]);\n\n // Update document.\n const syncer = useMemo(() => controller && new MessageSyncer(controller, blockToMarkdown), [controller]);\n useEffect(() => {\n const reset = syncer?.append(messages, true);\n if (reset) {\n controller?.scrollToBottom('instant');\n }\n }, [syncer, messages]);\n\n // Event adapter.\n const handleEvent = useCallback<NonNullable<MarkdownStreamProps['onEvent']>>(\n ({ type, value }) => {\n switch (type) {\n case 'submit': {\n value && onEvent?.({ type, text: value });\n break;\n }\n }\n },\n [onEvent],\n );\n\n return (\n <div\n role='none'\n className={mx('flex h-full w-full justify-center overflow-hidden', classNames)}\n style={{ '--user-fill': `var(--color-${userHue}-fill)` } as CSSProperties}\n >\n <MarkdownStream\n ref={refCallback}\n registry={componentRegistry}\n cursor={cursor}\n fadeIn={fadeIn}\n debug={debug}\n onEvent={handleEvent}\n />\n </div>\n );\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { log } from '@dxos/log';\nimport { ToggleContainer } from '@dxos/react-ui-components';\nimport {\n PromptWidget,\n ReasoningWidget,\n ReferenceWidget,\n SelectWidget,\n SuggestionWidget,\n SummaryWidget,\n} from '@dxos/react-ui-components';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { ContentBlock, type Message } from '@dxos/types';\nimport { type XmlWidgetProps, type XmlWidgetRegistry, getXmlTextChild } from '@dxos/ui-editor';\n\nimport { ToolBlock } from '../ToolBlock';\n\nimport { type BlockRenderer, type MessageThreadContext } from './sync';\n\nconst Fallback = ({ _tag, ...props }: XmlWidgetProps<MessageThreadContext>) => {\n return (\n <ToggleContainer.Root classNames='rounded-xs'>\n <ToggleContainer.Header classNames='bg-group-surface'>{_tag}</ToggleContainer.Header>\n <ToggleContainer.Content classNames='bg-modal-surface'>\n <Json classNames='p-2! text-sm' data={props} />\n </ToggleContainer.Content>\n </ToggleContainer.Root>\n );\n};\n\nconst Summary = ({ text }: { text: string }) => {\n return (\n <ToggleContainer.Root classNames='rounded-sm'>\n <ToggleContainer.Header classNames='bg-group-surface'>Conversation summarized</ToggleContainer.Header>\n <ToggleContainer.Content classNames='bg-modal-surface'>{text}</ToggleContainer.Content>\n </ToggleContainer.Root>\n );\n};\n\n/**\n * Custom XML tags registry.\n */\nexport const componentRegistry: XmlWidgetRegistry = {\n //\n // Widgets\n //\n\n prompt: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new PromptWidget(text) : null;\n },\n },\n reasoning: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new ReasoningWidget(text) : null;\n },\n },\n reference: {\n block: false,\n factory: ({ children, ref }) => {\n const text = getXmlTextChild(children);\n return text && ref ? new ReferenceWidget(text, ref) : null;\n },\n },\n select: {\n block: true,\n factory: ({ children }) => {\n const options = children\n ?.map((option: any) => option._tag === 'option' && getXmlTextChild(option.children))\n .filter(Boolean);\n return options?.length ? new SelectWidget(options) : null;\n },\n },\n suggestion: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new SuggestionWidget(text) : null;\n },\n },\n stats: {\n block: true,\n factory: ({ children }) => {\n const text = getXmlTextChild(children);\n return text ? new SummaryWidget(text) : null;\n },\n },\n\n //\n // React\n //\n\n toolCall: {\n block: true,\n Component: ToolBlock,\n },\n toolResult: {\n block: true,\n Component: Fallback,\n },\n toolkit: {\n block: true,\n Component: Fallback,\n },\n summary: {\n block: true,\n Component: Summary,\n },\n\n //\n // Fallback\n //\n\n json: {\n block: true,\n Component: Fallback,\n },\n};\n\n/**\n * Convert block to markdown.\n */\nexport const blockToMarkdown: BlockRenderer = (\n context: MessageThreadContext,\n message: Message.Message,\n block: ContentBlock.Any,\n) => {\n let str = blockToMarkdownImpl(context, message, block);\n if (str && !block.pending) {\n return (str += '\\n');\n }\n\n return str;\n};\n\nconst blockToMarkdownImpl = (context: MessageThreadContext, message: Message.Message, block: ContentBlock.Any) => {\n log('blockToMarkdown', { block: JSON.stringify(block) });\n switch (block._tag) {\n case 'text': {\n if (message.sender.role === 'user') {\n return `<prompt>${block.text}</prompt>`;\n } else {\n const text = block.text.trim();\n if (text.length > 0) {\n return text;\n }\n }\n break;\n }\n case 'reference': {\n const dxn = block.reference.dxn;\n return `<reference ref=\"${dxn.toString()}\">${context.getObjectLabel(dxn)}</reference>`;\n }\n case 'suggestion': {\n if (block.pending) {\n return;\n }\n return `<suggestion>${block.text}</suggestion>`;\n }\n case 'select': {\n if (block.pending || block.options.length === 0) {\n return;\n }\n return `<select>${block.options.map((option) => `<option>${option}</option>`).join('')}</select>`;\n }\n case 'toolCall': {\n context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, {\n blocks: [block],\n });\n return `<toolCall id=\"${block.toolCallId}\" />`;\n }\n case 'toolResult': {\n // TODO(dmaretskyi): the parameter could be undefined, perhaps tool blocks are not arriving in order.\n context.updateWidget<{ blocks: ContentBlock.Any[] }>(block.toolCallId, ({ blocks = [] } = { blocks: [] }) => ({\n blocks: [...blocks, block],\n }));\n break;\n }\n case 'stats': {\n return `<stats>${ContentBlock.createStatsMessage(block)}</stats>`;\n }\n case 'reasoning': {\n const text = block.reasoningText ?? block.redactedText;\n if (!text) {\n return;\n }\n // TODO(dmaretskyi): The mixed Markdown/XML parser does not support parsing multi-line XML tags.\n return `<reasoning>${text.replace(/\\n/g, ' ').trim()}</reasoning>`;\n }\n case 'summary': {\n return `<summary>${block.content}</summary>`;\n }\n default: {\n // TODO(burdon): Needs stable ID.\n return `<json id=\"${message.id}\">\\n${JSON.stringify(block)}\\n</json>`;\n }\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Tool from '@effect/ai/Tool';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { NumericTabs, TextCrawl, ToggleContainer, type ToggleContainerRootProps } from '@dxos/react-ui-components';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\nimport { type ContentBlock, type Message } from '@dxos/types';\nimport { type XmlWidgetProps } from '@dxos/ui-editor';\nimport { isNonNullable, safeParseJson } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nexport const isToolMessage = (message: Message.Message) => {\n return message.blocks.some((block: ContentBlock.Any) => block._tag === 'toolCall' || block._tag === 'toolResult');\n};\n\nexport type ToolBlockProps = XmlWidgetProps<{\n blocks: ContentBlock.Any[];\n}>;\n\nexport const ToolBlock = ({ view, blocks = [] }: ToolBlockProps) => {\n const { t } = useTranslation(meta.id);\n\n const items = useMemo<ToolContainerProps['items']>(() => {\n let lastToolCall: { tool: Tool.Any | undefined; block: ContentBlock.ToolCall } | undefined;\n // TODO(burdon): Get from context?\n const tools: Tool.Any[] = []; //processor.conversation.toolkit?.tools ?? [];\n return blocks\n .filter((block) => block._tag === 'toolCall' || block._tag === 'toolResult' || block._tag === 'stats')\n .map((block) => {\n switch (block._tag) {\n case 'toolCall': {\n if (block.pending && lastToolCall?.block.toolCallId === block.toolCallId) {\n return null;\n }\n\n const tool = tools.find((tool) => tool.name === block.name);\n lastToolCall = { tool, block };\n return {\n title: tool?.description ?? [t('tool call label'), tool?.name].join(' '),\n content: {\n ...block,\n input: safeParseJson(block.input),\n },\n };\n }\n\n case 'toolResult': {\n // TODO(burdon): Parse error type.\n if (block.error) {\n return {\n title: t('tool error label'),\n content: block,\n };\n }\n\n const title =\n lastToolCall?.tool?.description ?? [t('tool result label'), lastToolCall?.tool?.name].join(' ');\n lastToolCall = undefined;\n return {\n title,\n content: {\n ...block,\n result: safeParseJson(block.result),\n },\n };\n }\n\n case 'stats': {\n if (!lastToolCall) {\n return null;\n }\n\n return {\n title: t('stats label'),\n content: block,\n };\n }\n }\n })\n .filter(isNonNullable);\n }, [blocks]);\n\n const handleChangeOpen = useCallback(() => {\n setTimeout(() => {\n // Measure after animation.\n view?.requestMeasure();\n }, 1_000);\n }, [view]);\n\n if (!items.length) {\n return null;\n }\n\n return <ToolContainer items={items} onChangeOpen={handleChangeOpen} />;\n};\n\nToolBlock.displayName = 'ToolBlock';\n\ntype ToolContainerProps = {\n items: { title: string; content: any }[];\n} & Pick<ToggleContainerRootProps, 'onChangeOpen'>;\n\nexport const ToolContainer = ({ items, onChangeOpen }: ToolContainerProps) => {\n const tabsRef = useRef<HTMLDivElement>(null);\n const [selected, setSelected] = useState(0);\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n onChangeOpen?.(open);\n if (open) {\n tabsRef.current?.focus();\n }\n }, [open, onChangeOpen]);\n\n const handleSelect = useCallback((index: number) => {\n setSelected(index);\n }, []);\n\n return (\n <ToggleContainer.Root classNames='mt-2 w-full rounded-xs' open={open} onChangeOpen={setOpen}>\n <ToggleContainer.Header classNames='text-sm text-placeholder'>\n <TextCrawl key='status-roll' lines={items.map((item) => item.title)} autoAdvance greedy />\n </ToggleContainer.Header>\n <ToggleContainer.Content classNames='grid grid-cols-[32px_1fr]'>\n <NumericTabs ref={tabsRef} classNames='p-1' length={items.length} selected={selected} onSelect={handleSelect} />\n <Json\n data={items[selected]?.content}\n classNames='p-1 text-xs bg-transparent'\n replacer={{\n maxDepth: 3,\n maxArrayLen: 10,\n maxStringLen: 128,\n }}\n />\n </ToggleContainer.Content>\n </ToggleContainer.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type DXN } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { type MarkdownStreamController } from '@dxos/react-ui-components';\nimport { type ContentBlock, type Message } from '@dxos/types';\nimport { type StateDispatch, type XmlWidgetStateManager } from '@dxos/ui-editor';\n\n/**\n * Update document.\n */\nexport type TextModel = Pick<MarkdownStreamController, 'view' | 'reset' | 'append' | 'updateWidget'>;\n\n/**\n * Thread context passed to renderer.\n */\nexport class MessageThreadContext implements Pick<MarkdownStreamController, 'updateWidget'> {\n constructor(private readonly _widgetState?: XmlWidgetStateManager) {}\n\n updateWidget<T>(id: string, value: StateDispatch<T>) {\n this._widgetState?.updateWidget(id, value);\n }\n\n // TODO(burdon): Resolve from hypergraph.\n getObjectLabel(_id: DXN) {\n return 'Object';\n }\n}\n\n/**\n * Renders a block to markdown.\n */\nexport type BlockRenderer = (\n context: MessageThreadContext,\n message: Message.Message,\n block: ContentBlock.Any,\n) => string | undefined;\n\n/**\n * Syncs messages with the editor.\n */\nexport class MessageSyncer {\n private _initialMessageId?: string;\n private _currentMessageIndex = 0;\n private _currentBlockIndex = 0;\n private _currentBlockContent?: string;\n\n private readonly _context: MessageThreadContext;\n\n constructor(\n private readonly _model: TextModel,\n private readonly _blockRenderer: BlockRenderer,\n ) {\n this._context = new MessageThreadContext(this._model);\n }\n\n get context() {\n return this._context;\n }\n\n reset() {\n log('reset');\n this._initialMessageId = undefined;\n this._currentMessageIndex = 0;\n this._currentBlockIndex = 0;\n this._currentBlockContent = undefined;\n void this._model.reset('');\n }\n\n /**\n * Syncs messages with the editor.\n */\n append(messages: Message.Message[], flush = false): boolean {\n // TODO(dmaretskyi): MarkdownStream currently does not support streaming XML tags, so we need to remove pending non-text blocks.\n messages = messages.map((message) => ({\n ...message,\n blocks: message.blocks.filter((block) => !block.pending || block._tag === 'text'),\n }));\n\n // Check if new set of messages.\n if (this._initialMessageId !== messages[0]?.id) {\n this.reset();\n this._initialMessageId = messages[0]?.id;\n }\n\n if (flush && this._model.view?.state.doc.length === 0) {\n const buffer: string[] = [];\n this.process(messages, (content) => {\n buffer.push(content);\n });\n\n const content = buffer.join('');\n this._model.view?.dispatch({\n changes: [\n {\n from: 0,\n to: this._model.view?.state.doc.length ?? 0,\n insert: content,\n },\n ],\n selection: { anchor: content.length },\n });\n\n return true;\n } else {\n this.process(messages, (content) => {\n void this._model.append(content);\n });\n\n return false;\n }\n }\n\n private process(messages: Message.Message[], append: (content: string) => void) {\n // console.log('sync', {\n // doc: this._model.view?.state.doc.length,\n // messages: messages.map((message) => message.blocks.length),\n // currentMessageIndex: this._currentMessageIndex,\n // currentBlockIndex: this._currentBlockIndex,\n // currentBlockContent: this._currentBlockContent,\n // });\n\n let i = this._currentMessageIndex;\n for (const message of messages.slice(this._currentMessageIndex)) {\n if (i > this._currentMessageIndex) {\n this._currentBlockIndex = 0;\n }\n\n this._currentMessageIndex = i;\n let j = this._currentBlockIndex;\n for (const block of message.blocks.slice(this._currentBlockIndex)) {\n this._currentBlockIndex = j;\n const currentBlockContent = this._blockRenderer(this._context, message, block);\n if (currentBlockContent) {\n let content: string = '';\n if (this._currentBlockContent && currentBlockContent.startsWith(this._currentBlockContent)) {\n content = currentBlockContent.slice(this._currentBlockContent.length);\n } else {\n content = currentBlockContent;\n }\n\n // console.log('append', { message: i, block: j, content });\n this._currentBlockContent = currentBlockContent;\n append(content);\n }\n\n if (block.pending) {\n return;\n } else {\n this._currentBlockContent = undefined;\n this._currentBlockIndex++;\n }\n j++;\n }\n i++;\n }\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport React from 'react';\n\nimport { type Template } from '@dxos/blueprints';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { type ThemedClassName, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { useTextEditor } from '@dxos/react-ui-editor';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n} from '@dxos/ui-editor';\nimport { mx } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nimport { handlebars, xmlDecorator } from './extensions';\n\nexport type TemplateEditorProps = ThemedClassName<{\n id: string;\n template: Template.Template;\n lineNumbers?: boolean;\n}>;\n\nexport const TemplateEditor = ({ id, classNames, template, lineNumbers = true }: 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({\n id,\n text: createDocAccessor(text, ['content']),\n }),\n createBasicExtensions({\n bracketMatching: false,\n lineNumbers,\n lineWrapping: true,\n placeholder: t('template placeholder'),\n }),\n createThemeExtensions({\n themeMode,\n slots: { content: { className: '!pe-4' } },\n }),\n createMarkdownExtensions(),\n decorateMarkdown(),\n handlebars(),\n // xml(),\n // NOTE: Since we're using markdown only HTML nodes are parsed.\n xmlDecorator(),\n syntaxHighlighting(defaultHighlightStyle),\n ].filter(isNonNullable),\n };\n }, [themeMode, template.source?.target, lineNumbers]);\n\n return <div ref={parentRef} className={mx('h-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, RangeSetBuilder } from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n type EditorView,\n ViewPlugin,\n type ViewUpdate,\n WidgetType,\n keymap,\n} from '@codemirror/view';\n\nimport { Domino, mx } from '@dxos/ui';\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 }}\n comment: /\\{\\{!\\s*[^}]*\\}\\}/g,\n\n // {{var}}\n brackets: /\\{\\{[^}]*\\}\\}/g,\n\n // {{#command}} {{/command}}\n command: /\\{\\{[#/]([^}]+)\\}\\}/g,\n\n // {{var}}\n var: /\\{\\{(?!\\s*!)(\\w[^}]*)\\}\\}/g,\n\n // @dxn:queue:data:xxx\n dxn: /@?dxn:[\\w@:]+/g,\n\n // dxos.org/type/xxx\n url: /[\\w.-]+\\.[\\w.-]+\\/[\\w/]+/g,\n};\n\nconst tagPadding = 'mx-0.5 px-1 rounded-xs';\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 update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged || update.selectionSet) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n // NOTE: Decorations may clash with other extensions (e.g., markdown).\n buildDecorations(view: EditorView) {\n const selection = view.state.selection.main;\n const decorations: Array<{\n from: number;\n to: number;\n decoration: Decoration;\n }> = [];\n\n for (const { from, to } of view.visibleRanges) {\n const text = view.state.doc.sliceString(from, to);\n\n // Match DXN.\n {\n let match;\n while ((match = regex.dxn.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n // Only show widget if selection doesn't overlap with the match range.\n const overlaps = selection.to > start && selection.from <= end;\n if (!overlaps) {\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.widget({\n widget: new DXNWidget(match[0]),\n }),\n });\n }\n }\n }\n\n // Match URLs.\n {\n let match;\n while ((match = regex.url.exec(text)) !== null) {\n const start = from + match.index;\n const end = start + match[0].length;\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({\n class: mx('dx-tag--blue', tagPadding),\n }),\n });\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 decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-subdued' }),\n });\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 decorations.push({\n from: idx,\n to: end,\n decoration: Decoration.mark({ class: 'text-green-text' }),\n });\n end = idx;\n }\n decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-blue-text' }),\n });\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 decorations.push({\n from: start,\n to: end,\n decoration: Decoration.mark({ class: 'text-green-text' }),\n });\n }\n }\n }\n\n // Sort decorations by position to satisfy RangeSetBuilder requirements.\n decorations.sort((a, b) => a.from - b.from || a.to - b.to);\n\n // Add sorted decorations to builder.\n const builder = new RangeSetBuilder<Decoration>();\n for (const { from, to, decoration } of decorations) {\n builder.add(from, to, decoration);\n }\n\n return builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n\nclass DXNWidget extends WidgetType {\n constructor(private readonly _identifier: string) {\n super();\n }\n\n override ignoreEvent() {\n return false;\n }\n\n override eq(other: this) {\n return this._identifier === other._identifier;\n }\n\n override toDOM() {\n const text = this._identifier\n .split(':')\n .map((part) => {\n const len = 16;\n const plen = 4;\n if (part.length > len) {\n return `[${part.slice(0, plen)}…${part.slice(-plen)}]`;\n }\n return part;\n })\n .join(':');\n return Domino.of('span').classNames(mx('font-mono dx-tag--blue', tagPadding)).text(text).root;\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", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type Extension, RangeSetBuilder } from '@codemirror/state';\nimport { Decoration, type DecorationSet, type EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';\n\nexport type XmlOptions = {};\n\n/**\n * XML decorator plugin for CodeMirror.\n * Decorates XML tags with monospace font using the XML language grammar.\n */\nexport const xmlDecorator = (_: XmlOptions = {}): Extension => {\n return [xmlDecoratorPlugin];\n};\n\n/**\n * ViewPlugin that decorates XML tags using syntax tree.\n */\nconst xmlDecoratorPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView) {\n const builder = new RangeSetBuilder<Decoration>();\n\n for (const { from, to } of view.visibleRanges) {\n syntaxTree(view.state).iterate({\n from,\n to,\n enter: (node) => {\n // Decorate XML elements (opening tags, closing tags, self-closing tags).\n if (\n node.name === 'HTMLTag' ||\n node.name === 'OpenTag' ||\n node.name === 'CloseTag' ||\n node.name === 'SelfClosingTag' ||\n node.name === 'Element'\n ) {\n builder.add(node.from, node.to, Decoration.mark({ class: 'font-mono text-subdued' }));\n }\n },\n });\n }\n\n return builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, Fragment, useEffect, useState } from 'react';\n\nimport { type Blueprint } from '@dxos/blueprints';\nimport { type Database, type Ref } from '@dxos/echo';\nimport { Function } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { Filter, useQuery } from '@dxos/react-client/echo';\nimport { ScrollArea, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\nimport { type AiChatProcessor } from '../../processor';\nimport { ServiceType } from '../../types';\n\nexport type ToolboxProps = ThemedClassName<{\n services?: { service: ServiceType }[];\n functions?: Function.Function[];\n // TODO(burdon): Combine into single array.\n blueprints?: readonly Blueprint.Blueprint[];\n activeBlueprints?: readonly Ref.Ref<Blueprint.Blueprint>[];\n}>;\n\nexport const Toolbox = ({ classNames, functions, services, blueprints, activeBlueprints }: ToolboxProps) => {\n return (\n <ScrollArea.Root thin orientation='vertical'>\n <ScrollArea.Viewport classNames={classNames}>\n {blueprints && blueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={blueprints.map(({ name, description, tools }) => ({\n name,\n description,\n subitems: tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),\n }))}\n />\n )}\n\n {activeBlueprints && activeBlueprints.length > 0 && (\n <Section\n title='Blueprints'\n items={activeBlueprints.map(({ target }) => ({\n name: target?.name ?? '',\n description: target?.description ?? '',\n subitems: target?.tools.map((toolId) => ({ name: `∙ ${safeToolId(toolId)}` })),\n }))}\n />\n )}\n\n {services && services.length > 0 && (\n <Section\n title='Services'\n items={services.map(({ service: { serviceId, name, description } }) => ({\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 </ScrollArea.Viewport>\n </ScrollArea.Root>\n );\n};\n\nconst Section: FC<{\n title: string;\n items: { name: string; description?: string; subitems?: { name: string; description?: string }[] }[];\n striped?: boolean;\n}> = ({ title, items, striped }) => {\n const stripeClassNames = 'odd:bg-neutral-50 dark:odd:bg-neutral-800';\n const gridClassNames = 'grid grid-cols-[8rem_1fr]';\n const subGridClassNames = mx('col-span-full grid grid-cols-subgrid text-xs px-2', striped && stripeClassNames);\n\n return (\n <div>\n <h1 className='px-2 text-sm'>{title}</h1>\n <div className={gridClassNames}>\n {items.map(({ name, description, subitems }, i) => (\n <Fragment key={i}>\n {name && (\n <div className={subGridClassNames}>\n <div className='truncate text-primary-500'>{name}</div>\n <div className='line-clamp-2'>{description}</div>\n </div>\n )}\n {subitems?.map(({ name, description }, i) => (\n <div key={i} className={mx(subGridClassNames, striped && stripeClassNames)}>\n <div className='truncate'>{name}</div>\n <div className='line-clamp-3 text-subdued'>{description}</div>\n </div>\n ))}\n </Fragment>\n ))}\n </div>\n </div>\n );\n};\n\nexport type ToolboxContainerProps = ThemedClassName<{\n db?: Database.Database;\n processor?: AiChatProcessor;\n}>;\n\nexport const ToolboxContainer = ({ classNames, db, processor }: ToolboxContainerProps) => {\n // Registered services.\n const services = useQuery(db, Filter.type(ServiceType));\n const [serviceTools, setServiceTools] = useState<{ service: ServiceType }[]>([]);\n useEffect(() => {\n log('creating service tools...', { services: services.length });\n queueMicrotask(async () => {\n // TODO(burdon): Fix.\n // const tools = await Promise.all(\n // services.map(async (service) => ({ service, tools: await createToolsFromService(service) })),\n // );\n // setServiceTools(tools);\n });\n }, [services]);\n\n // Deployed functions.\n const functions = useQuery(db, Filter.type(Function.Function));\n\n return (\n <Toolbox\n classNames={classNames}\n blueprints={processor?.context.getBlueprints()}\n services={serviceTools}\n functions={functions}\n />\n );\n};\n\nconst safeToolId = (name: string) => {\n return name.split('_').pop();\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useCallback", "useEffect", "useMemo", "useState", "useCapabilities", "AppCapabilities", "Blueprint", "Filter", "Obj", "Ref", "useQuery", "distinctBy", "useBlueprintRegistry", "blueprintDefinitions", "useCapabilities", "AppCapabilities", "BlueprintDefinition", "useMemo", "Blueprint", "Registry", "map", "blueprint", "make", "useBlueprints", "blueprintRegistry", "db", "staticBlueprints", "query", "spaceBlueprints", "useQuery", "Filter", "type", "blueprints", "distinctBy", "b", "key", "sort", "name", "a", "localeCompare", "useActiveBlueprints", "context", "active", "setActive", "useState", "Map", "useEffect", "updateActive", "getBlueprints", "subscribeBlueprints", "useBlueprintHandlers", "onUpdateBlueprint", "useCallback", "checked", "objects", "run", "storedBlueprint", "find", "getByKey", "add", "Obj", "clone", "bind", "Ref", "unbind", "RegistryContext", "useContext", "useMemo", "useState", "AiConversation", "log", "useAsyncEffect", "useChatProcessor", "space", "chat", "preset", "services", "blueprintRegistry", "settings", "observableRegistry", "useContext", "RegistryContext", "conversation", "setConversation", "useState", "useAsyncEffect", "queue", "queues", "get", "dxn", "AiConversation", "registry", "open", "close", "undefined", "toString", "processor", "useMemo", "log", "model", "AiChatProcessor", "Effect", "useMemo", "useCapability", "TracingService", "TracingServiceExt", "AutomationCapabilities", "useClient", "useChatServices", "id", "chat", "client", "useClient", "spaces", "default", "runtimeResolver", "useCapability", "AutomationCapabilities", "ComputeRuntime", "useMemo", "runtime", "getRuntime", "runPromise", "pipe", "provide", "traceQueue", "target", "TracingServiceExt", "layerQueue", "TracingService", "layerNoop", "Atom", "Effect", "useMemo", "useOperationInvoker", "Chat", "Filter", "Obj", "Query", "runAndForwardErrors", "invariant", "useQuery", "MenuBuilder", "useMenuActions", "Prec", "keymap", "useAtomValue", "createContext", "Array", "Option", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "Event", "Filter", "Obj", "useVoiceInput", "useQuery", "useIdentity", "Input", "useDynamicRef", "useTranslation", "ChatEditor", "Menu", "Message", "mx", "isTruthy", "RegistryContext", "useContext", "useState", "AiContextBinder", "useAsyncEffect", "useContextBinder", "queue", "registry", "useContext", "RegistryContext", "binder", "setBinder", "useState", "useAsyncEffect", "AiContextBinder", "open", "close", "useCallback", "Ref", "useContextObjects", "db", "context", "handleUpdateObject", "useCallback", "dxn", "checked", "ref", "Ref", "fromDXN", "load", "bind", "objects", "unbind", "getObjects", "onUpdateObject", "Option", "useEffect", "useState", "EntityKind", "SystemTypeAnnotation", "getTypeAnnotation", "useFilteredTypes", "db", "types", "setTypes", "useState", "useEffect", "schemaRegistry", "query", "location", "subscribe", "Array", "from", "Set", "results", "filter", "schema", "getTypeAnnotation", "kind", "EntityKind", "Relation", "SystemTypeAnnotation", "get", "pipe", "getOrElse", "fire", "useCallback", "useRef", "useState", "useFlush", "space", "state", "setState", "useState", "resetTimer", "useRef", "handleFlush", "useCallback", "queueMicrotask", "current", "clearTimeout", "db", "flush", "setTimeout", "useState", "useOnline", "online", "setOnline", "useState", "useCallback", "useEffect", "useMemo", "useState", "usePresets", "online", "preset", "setPreset", "useState", "presets", "useMemo", "AiServicePresets", "filter", "provider", "presetOptions", "map", "id", "model", "label", "useEffect", "handlePresetChange", "useCallback", "find", "onPresetChange", "useMemo", "Filter", "Obj", "useReferencesProvider", "space", "useMemo", "undefined", "getReferences", "query", "objects", "db", "Filter", "everything", "run", "filter", "object", "stringMatch", "Obj", "getLabel", "getDXN", "map", "uri", "toString", "label", "resolveReference", "id", "first", "toLowerCase", "startsWith", "React", "IconButton", "useTranslation", "mx", "ChatActions", "classNames", "children", "microphone", "recording", "processing", "onEvent", "t", "useTranslation", "meta", "id", "div", "className", "mx", "IconButton", "disabled", "variant", "icon", "iconOnly", "label", "onClick", "type", "noTooltip", "onMouseDown", "onMouseUp", "onTouchStart", "onTouchEnd", "Option", "React", "useMemo", "useState", "Filter", "Obj", "Type", "Annotation", "useQuery", "IconButton", "Popover", "Select", "useTranslation", "Listbox", "SearchList", "useSearchListResults", "Tabs", "getStyles", "mx", "panelClassNames", "ChatOptions", "db", "context", "blueprintRegistry", "presets", "preset", "onPresetChange", "t", "useTranslation", "meta", "id", "React", "div", "role", "className", "Popover", "Root", "Trigger", "asChild", "IconButton", "variant", "icon", "iconOnly", "label", "Portal", "Content", "side", "classNames", "Viewport", "ObjectsPanel", "Arrow", "Tabs", "orientation", "defaultValue", "defaultActivePart", "tabIndex", "mx", "Tabpanel", "value", "BlueprintsPanel", "ModelsPanel", "Tablist", "IconTab", "blueprints", "useBlueprints", "activeBlueprints", "useActiveBlueprints", "onUpdateBlueprint", "useBlueprintHandlers", "results", "handleSearch", "useSearchListResults", "items", "extract", "blueprint", "name", "SearchList", "onSearch", "map", "isActive", "has", "key", "Item", "checked", "onSelect", "Input", "placeholder", "autoFocus", "Listbox", "onValueChange", "Option", "OptionLabel", "OptionIndicator", "ANY", "types", "useFilteredTypes", "typenames", "useMemo", "type", "typename", "Type", "getTypename", "ns", "sort", "a", "b", "localeCompare", "setTypename", "useState", "anyFilter", "Filter", "or", "objects", "useQuery", "contextObjects", "onUpdateObject", "useContextObjects", "object", "Obj", "getLabel", "length", "findIndex", "obj", "hue", "fromNullable", "getSchema", "pipe", "flatMap", "Annotation", "IconAnnotation", "get", "getOrElse", "DEFAULT_OBJECT_ICON", "undefined", "styles", "getStyles", "iconClassNames", "surfaceText", "getDXN", "Select", "TriggerButton", "density", "ScrollUpButton", "ScrollDownButton", "React", "Select", "Option", "React", "Annotation", "Obj", "Icon", "IconButton", "toLocalizedString", "useTranslation", "getStyles", "mx", "ChatReferences", "classNames", "context", "db", "t", "useTranslation", "meta", "id", "objects", "onUpdateObject", "useContextObjects", "React", "ul", "className", "mx", "map", "obj", "dxn", "Obj", "getDXN", "typename", "getTypename", "label", "getLabel", "ns", "icon", "hue", "fromNullable", "getSchema", "pipe", "flatMap", "Annotation", "IconAnnotation", "get", "getOrElse", "DEFAULT_OBJECT_ICON", "undefined", "styles", "getStyles", "li", "key", "toString", "data-hue", "Icon", "size", "surfaceText", "toLocalizedString", "IconButton", "iconOnly", "variant", "onClick", "React", "useEffect", "useState", "Tooltip", "useTimeout", "Spinner", "mx", "period", "ChatStatusIndicator", "classNames", "preset", "processing", "error", "props", "init", "setInit", "useState", "useEffect", "useTimeout", "React", "div", "role", "className", "mx", "Spinner", "duration", "state", "Tooltip", "Trigger", "asChild", "content", "message", "React", "forwardRef", "useCallback", "useEffect", "useMemo", "useState", "PublicKey", "useForwardedRef", "MarkdownStream", "mx", "keyToFallback", "React", "log", "ToggleContainer", "PromptWidget", "ReasoningWidget", "ReferenceWidget", "SelectWidget", "SuggestionWidget", "SummaryWidget", "Json", "ContentBlock", "getXmlTextChild", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "useTranslation", "NumericTabs", "TextCrawl", "ToggleContainer", "Json", "isNonNullable", "safeParseJson", "ToolBlock", "view", "blocks", "t", "useTranslation", "meta", "id", "items", "useMemo", "lastToolCall", "tools", "filter", "block", "_tag", "map", "pending", "toolCallId", "tool", "find", "name", "title", "description", "join", "content", "input", "safeParseJson", "error", "undefined", "result", "isNonNullable", "handleChangeOpen", "useCallback", "setTimeout", "requestMeasure", "length", "React", "ToolContainer", "onChangeOpen", "displayName", "tabsRef", "useRef", "selected", "setSelected", "useState", "open", "setOpen", "useEffect", "current", "focus", "handleSelect", "index", "ToggleContainer", "Root", "classNames", "Header", "TextCrawl", "key", "lines", "item", "autoAdvance", "greedy", "Content", "NumericTabs", "ref", "onSelect", "Json", "data", "replacer", "maxDepth", "maxArrayLen", "maxStringLen", "Fallback", "_tag", "props", "React", "ToggleContainer", "Root", "classNames", "Header", "Content", "Json", "data", "Summary", "text", "componentRegistry", "prompt", "block", "factory", "children", "getXmlTextChild", "PromptWidget", "reasoning", "ReasoningWidget", "reference", "ref", "ReferenceWidget", "select", "options", "map", "option", "filter", "Boolean", "length", "SelectWidget", "suggestion", "SuggestionWidget", "stats", "SummaryWidget", "toolCall", "Component", "ToolBlock", "toolResult", "toolkit", "summary", "json", "blockToMarkdown", "context", "message", "str", "blockToMarkdownImpl", "pending", "log", "JSON", "stringify", "sender", "role", "trim", "dxn", "toString", "getObjectLabel", "join", "updateWidget", "toolCallId", "blocks", "ContentBlock", "createStatsMessage", "reasoningText", "redactedText", "replace", "content", "id", "log", "MessageThreadContext", "_widgetState", "updateWidget", "id", "value", "getObjectLabel", "_id", "MessageSyncer", "_initialMessageId", "_currentMessageIndex", "_currentBlockIndex", "_currentBlockContent", "_context", "_model", "_blockRenderer", "context", "reset", "undefined", "append", "messages", "flush", "map", "message", "blocks", "filter", "block", "pending", "_tag", "view", "state", "doc", "length", "buffer", "process", "content", "push", "join", "dispatch", "changes", "from", "to", "insert", "selection", "anchor", "i", "slice", "j", "currentBlockContent", "startsWith", "ChatThread", "forwardRef", "classNames", "identity", "messages", "error", "cursor", "fadeIn", "debug", "onEvent", "forwardedRef", "controllerRef", "useForwardedRef", "controller", "setController", "useState", "refCallback", "useCallback", "node", "current", "userHue", "useMemo", "profile", "data", "hue", "keyToFallback", "identityKey", "PublicKey", "random", "useEffect", "scrollToBottom", "syncer", "MessageSyncer", "blockToMarkdown", "reset", "append", "handleEvent", "type", "value", "text", "React", "div", "role", "className", "mx", "style", "MarkdownStream", "ref", "registry", "componentRegistry", "ChatContextProvider", "useChatContext", "createContext", "ChatRoot", "children", "chat", "processor", "onEvent", "props", "debug", "setDebug", "useState", "pending", "useAtomValue", "messages", "streaming", "lastPrompt", "useRef", "undefined", "storedMessages", "useQuery", "queue", "target", "Filter", "type", "Message", "useMemo", "dedupeWith", "id", "a", "b", "event", "Event", "useEffect", "on", "ev", "queueMicrotask", "objects", "context", "getObjects", "blueprints", "getBlueprints", "tools", "getTools", "system", "getSystemPrompt", "console", "log", "Object", "values", "map", "tool", "JSON", "stringify", "join", "text", "trim", "length", "current", "request", "message", "retry", "cancel", "emit", "db", "Obj", "getDatabase", "React", "displayName", "CHAT_VIEWPORT_NAME", "ChatViewport", "classNames", "div", "role", "className", "mx", "CHAT_THREAD_NAME", "ChatThread", "identity", "useIdentity", "error", "pipe", "getOrUndefined", "controllerRef", "scrollToBottom", "navigatePrevious", "navigateNext", "handleEvent", "useCallback", "NaturalChatThread", "ref", "CHAT_PROMPT_NAME", "ChatPrompt", "outline", "settings", "placeholder", "expandable", "online", "presets", "preset", "onPresetChange", "onOnlineChange", "t", "useTranslation", "meta", "active", "activeRef", "useDynamicRef", "editorRef", "recordingState", "setRecordingState", "getText", "setText", "focus", "recording", "useVoiceInput", "onUpdate", "extensions", "Prec", "highest", "keymap", "of", "key", "preventDefault", "run", "shift", "filter", "isTruthy", "handleSubmit", "ChatStatusIndicator", "processing", "ChatEditor", "autoFocus", "lineWrapping", "onSubmit", "ChatOptions", "blueprintRegistry", "ChatReferences", "ChatActions", "microphone", "Input", "Root", "Label", "srOnly", "Switch", "checked", "onCheckedChange", "CHAT_TOOLBAR_NAME", "ChatToolbar", "companionTo", "menu", "useChatToolbarActions", "Menu", "attendableId", "getDXN", "toString", "Toolbar", "textBlockWidth", "Chat", "Viewport", "Thread", "Prompt", "defaultHighlightStyle", "syntaxHighlighting", "React", "createDocAccessor", "useThemeContext", "useTranslation", "useTextEditor", "createBasicExtensions", "createDataExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "mx", "isNonNullable", "autocompletion", "completionKeymap", "RangeSetBuilder", "Decoration", "ViewPlugin", "WidgetType", "keymap", "Domino", "mx", "handlebars", "_", "handlebarsHighlightPlugin", "autocompletion", "activateOnTyping", "aboveCursor", "closeOnBlur", "override", "handlebarsCompletions", "keymap", "of", "completionKeymap", "regex", "comment", "brackets", "command", "var", "dxn", "url", "tagPadding", "ViewPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "selectionSet", "selection", "state", "main", "from", "to", "visibleRanges", "text", "doc", "sliceString", "match", "exec", "start", "index", "end", "length", "overlaps", "push", "decoration", "Decoration", "widget", "DXNWidget", "mark", "class", "mx", "parts", "split", "idx", "sort", "a", "b", "builder", "RangeSetBuilder", "add", "finish", "v", "WidgetType", "_identifier", "ignoreEvent", "eq", "other", "toDOM", "map", "part", "len", "plen", "slice", "join", "Domino", "classNames", "root", "variables", "commands", "context", "matchBefore", "type", "matches", "startsWith", "lastIndexOf", "options", "filter", "name", "label", "syntaxTree", "RangeSetBuilder", "Decoration", "ViewPlugin", "xmlDecorator", "_", "xmlDecoratorPlugin", "ViewPlugin", "fromClass", "decorations", "view", "buildDecorations", "update", "docChanged", "viewportChanged", "builder", "RangeSetBuilder", "from", "to", "visibleRanges", "syntaxTree", "state", "iterate", "enter", "node", "name", "add", "Decoration", "mark", "class", "finish", "v", "TemplateEditor", "id", "classNames", "template", "lineNumbers", "t", "useTranslation", "meta", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "text", "source", "target", "initialValue", "content", "extensions", "createDataExtensions", "createDocAccessor", "createBasicExtensions", "bracketMatching", "lineWrapping", "placeholder", "createThemeExtensions", "slots", "className", "createMarkdownExtensions", "decorateMarkdown", "handlebars", "xmlDecorator", "syntaxHighlighting", "defaultHighlightStyle", "filter", "isNonNullable", "React", "div", "ref", "mx", "React", "Fragment", "useEffect", "useState", "Function", "log", "Filter", "useQuery", "ScrollArea", "mx", "Toolbox", "classNames", "functions", "services", "blueprints", "activeBlueprints", "React", "ScrollArea", "Root", "thin", "orientation", "Viewport", "length", "Section", "title", "items", "map", "name", "description", "tools", "subitems", "toolId", "safeToolId", "target", "service", "serviceId", "striped", "stripeClassNames", "gridClassNames", "subGridClassNames", "mx", "div", "h1", "className", "i", "Fragment", "key", "ToolboxContainer", "db", "processor", "useQuery", "Filter", "type", "ServiceType", "serviceTools", "setServiceTools", "useState", "useEffect", "log", "queueMicrotask", "Function", "context", "getBlueprints", "split", "pop", "useChatToolbarActions", "chat", "companionTo", "invoke", "useOperationInvoker", "db", "useChatContext", "query", "Query", "select", "Filter", "id", "targetOf", "Chat", "CompanionTo", "source", "nothing", "chats", "useQuery", "useMenuActions", "useMemo", "Atom", "make", "builder", "MenuBuilder", "root", "label", "ns", "meta", "action", "icon", "type", "disabled", "invariant", "AssistantOperation", "SetCurrentChat", "undefined", "pipe", "runAndForwardErrors", "gen", "UpdateChatName", "length", "group", "selectCardinality", "variant", "toSorted", "a", "b", "localeCompare", "forEach", "Obj", "getLabel", "typename", "build", "spaceId"]
|
|
7
|
+
}
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
AssistantSettings,
|
|
3
|
-
BlueprintArticle,
|
|
4
2
|
Chat,
|
|
5
|
-
ChatCompanion,
|
|
6
|
-
ChatContainer,
|
|
7
3
|
ChatContextProvider,
|
|
8
|
-
|
|
9
|
-
InitiativeContainer,
|
|
10
|
-
PromptArticle,
|
|
4
|
+
TemplateEditor,
|
|
11
5
|
Toolbox,
|
|
12
6
|
ToolboxContainer,
|
|
13
|
-
TriggerStatus,
|
|
14
7
|
useActiveBlueprints,
|
|
15
8
|
useBlueprintHandlers,
|
|
16
9
|
useBlueprintRegistry,
|
|
@@ -26,11 +19,8 @@ import {
|
|
|
26
19
|
useOnline,
|
|
27
20
|
usePresets,
|
|
28
21
|
useReferencesProvider
|
|
29
|
-
} from "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import {
|
|
32
|
-
TemplateEditor
|
|
33
|
-
} from "./chunk-DKQMSMBN.mjs";
|
|
22
|
+
} from "./chunk-UUA6GNGG.mjs";
|
|
23
|
+
import "./chunk-JYY5AD65.mjs";
|
|
34
24
|
import {
|
|
35
25
|
ApiAuthorization,
|
|
36
26
|
AssistantCapabilities,
|
|
@@ -40,15 +30,14 @@ import {
|
|
|
40
30
|
LLM_PROVIDERS,
|
|
41
31
|
ServiceType,
|
|
42
32
|
categoryIcons
|
|
43
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-7DXYAXLZ.mjs";
|
|
44
34
|
import {
|
|
45
35
|
ASSISTANT_DIALOG,
|
|
46
36
|
meta
|
|
47
37
|
} from "./chunk-EXVT7D4B.mjs";
|
|
48
|
-
import "./chunk-3ETBCBMH.mjs";
|
|
49
38
|
import {
|
|
50
|
-
|
|
51
|
-
} from "./chunk-
|
|
39
|
+
blueprint_default
|
|
40
|
+
} from "./chunk-LEXIQDXZ.mjs";
|
|
52
41
|
import "./chunk-J5LGTIGS.mjs";
|
|
53
42
|
|
|
54
43
|
// src/capabilities/ai-service/index.ts
|
|
@@ -57,11 +46,11 @@ var AiService = Capability.lazy("AiService", () => import("./ai-service-CY2BYPH6
|
|
|
57
46
|
|
|
58
47
|
// src/capabilities/app-graph-builder/index.ts
|
|
59
48
|
import { Capability as Capability2 } from "@dxos/app-framework";
|
|
60
|
-
var AppGraphBuilder = Capability2.lazy("AppGraphBuilder", () => import("./app-graph-builder-
|
|
49
|
+
var AppGraphBuilder = Capability2.lazy("AppGraphBuilder", () => import("./app-graph-builder-SFYYUKTT.mjs"));
|
|
61
50
|
|
|
62
51
|
// src/capabilities/blueprint-definition/index.ts
|
|
63
52
|
import { Capability as Capability3 } from "@dxos/app-framework";
|
|
64
|
-
var BlueprintDefinition = Capability3.lazy("BlueprintDefinition", () => import("./blueprint-definition-
|
|
53
|
+
var BlueprintDefinition = Capability3.lazy("BlueprintDefinition", () => import("./blueprint-definition-5LQNBZON.mjs"));
|
|
65
54
|
|
|
66
55
|
// src/capabilities/edge-model-resolver/index.ts
|
|
67
56
|
import { Capability as Capability4 } from "@dxos/app-framework";
|
|
@@ -73,30 +62,30 @@ var LocalModelResolver = Capability5.lazy("LocalModelResolver", () => import("./
|
|
|
73
62
|
|
|
74
63
|
// src/capabilities/operation-resolver/index.ts
|
|
75
64
|
import { Capability as Capability6 } from "@dxos/app-framework";
|
|
76
|
-
var OperationResolver = Capability6.lazy("OperationResolver", () => import("./operation-resolver-
|
|
65
|
+
var OperationResolver = Capability6.lazy("OperationResolver", () => import("./operation-resolver-ELXDQZEG.mjs"));
|
|
77
66
|
|
|
78
67
|
// src/capabilities/react-surface/index.ts
|
|
79
68
|
import { Capability as Capability7 } from "@dxos/app-framework";
|
|
80
|
-
var ReactSurface = Capability7.lazy("ReactSurface", () => import("./react-surface-
|
|
69
|
+
var ReactSurface = Capability7.lazy("ReactSurface", () => import("./react-surface-KYQSZO2I.mjs"));
|
|
81
70
|
|
|
82
71
|
// src/capabilities/repair/index.ts
|
|
83
72
|
import { Capability as Capability8 } from "@dxos/app-framework";
|
|
84
|
-
var Repair = Capability8.lazy("Repair", () => import("./repair-
|
|
73
|
+
var Repair = Capability8.lazy("Repair", () => import("./repair-ZFZWZALX.mjs"));
|
|
85
74
|
|
|
86
75
|
// src/capabilities/settings/index.ts
|
|
87
76
|
import { Capability as Capability9 } from "@dxos/app-framework";
|
|
88
|
-
var Settings = Capability9.lazy("Settings", () => import("./settings-
|
|
77
|
+
var Settings = Capability9.lazy("Settings", () => import("./settings-YREVQAZ5.mjs"));
|
|
89
78
|
|
|
90
79
|
// src/capabilities/state/index.ts
|
|
91
80
|
import { Capability as Capability10 } from "@dxos/app-framework";
|
|
92
|
-
var AssistantState = Capability10.lazy("AssistantState", () => import("./state-
|
|
81
|
+
var AssistantState = Capability10.lazy("AssistantState", () => import("./state-MPG42ZO4.mjs"));
|
|
93
82
|
|
|
94
83
|
// src/capabilities/toolkit/index.ts
|
|
95
84
|
import { Capability as Capability11 } from "@dxos/app-framework";
|
|
96
|
-
var Toolkit = Capability11.lazy("Toolkit", () => import("./toolkit-
|
|
85
|
+
var Toolkit = Capability11.lazy("Toolkit", () => import("./toolkit-XRSBBB3L.mjs"));
|
|
97
86
|
|
|
98
87
|
// src/translations.ts
|
|
99
|
-
import { Chat as Chat2,
|
|
88
|
+
import { Chat as Chat2, Project } from "@dxos/assistant-toolkit";
|
|
100
89
|
import { Blueprint, Prompt } from "@dxos/blueprints";
|
|
101
90
|
import { Sequence } from "@dxos/conductor";
|
|
102
91
|
import { Type } from "@dxos/echo";
|
|
@@ -142,15 +131,15 @@ var translations = [
|
|
|
142
131
|
"delete object label": "Delete AI Chat",
|
|
143
132
|
"object deleted label": "AI Chat deleted"
|
|
144
133
|
},
|
|
145
|
-
[
|
|
146
|
-
"typename label": "
|
|
147
|
-
"typename label_zero": "
|
|
148
|
-
"typename label_one": "
|
|
149
|
-
"typename label_other": "
|
|
150
|
-
"object name placeholder": "New
|
|
151
|
-
"rename object label": "Rename
|
|
152
|
-
"delete object label": "Delete
|
|
153
|
-
"object deleted label": "
|
|
134
|
+
[Project.Project.typename]: {
|
|
135
|
+
"typename label": "Project",
|
|
136
|
+
"typename label_zero": "Projects",
|
|
137
|
+
"typename label_one": "Project",
|
|
138
|
+
"typename label_other": "Projects",
|
|
139
|
+
"object name placeholder": "New project",
|
|
140
|
+
"rename object label": "Rename project",
|
|
141
|
+
"delete object label": "Delete project",
|
|
142
|
+
"object deleted label": "Project deleted"
|
|
154
143
|
},
|
|
155
144
|
// TODO(burdon): Reconcile with react-ui-chat.
|
|
156
145
|
[meta.id]: {
|
|
@@ -190,7 +179,7 @@ var translations = [
|
|
|
190
179
|
"chat history label": "Chat History",
|
|
191
180
|
"chat update name label": "Update AI Chat name",
|
|
192
181
|
"toolkit label": "Toolkit",
|
|
193
|
-
"
|
|
182
|
+
"stats label": "Stats",
|
|
194
183
|
"search placeholder": "Search...",
|
|
195
184
|
"prompt placeholder": "Enter question or command...",
|
|
196
185
|
"context objects button": "Add to context",
|
|
@@ -224,7 +213,7 @@ var translations = [
|
|
|
224
213
|
import * as Effect from "effect/Effect";
|
|
225
214
|
import { ActivationEvents, Capability as Capability12, Plugin } from "@dxos/app-framework";
|
|
226
215
|
import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
|
|
227
|
-
import { Chat as Chat3,
|
|
216
|
+
import { Chat as Chat3, Plan, Project as Project2, ProjectBlueprint, ResearchGraph } from "@dxos/assistant-toolkit";
|
|
228
217
|
import { Blueprint as Blueprint2, Prompt as Prompt2 } from "@dxos/blueprints";
|
|
229
218
|
import { Sequence as Sequence2 } from "@dxos/conductor";
|
|
230
219
|
import { Obj, Type as Type2 } from "@dxos/echo";
|
|
@@ -244,7 +233,10 @@ var AssistantPlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
|
|
|
244
233
|
metadata: {
|
|
245
234
|
icon: "ph--atom--regular",
|
|
246
235
|
iconHue: "sky",
|
|
247
|
-
createObject: (props
|
|
236
|
+
createObject: (props, { db }) => Operation.invoke(AssistantOperation.CreateChat, {
|
|
237
|
+
db,
|
|
238
|
+
name: props?.name
|
|
239
|
+
}).pipe(Effect.map(({ object }) => object))
|
|
248
240
|
}
|
|
249
241
|
},
|
|
250
242
|
{
|
|
@@ -274,14 +266,14 @@ var AssistantPlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
|
|
|
274
266
|
}
|
|
275
267
|
},
|
|
276
268
|
{
|
|
277
|
-
id: Type2.getTypename(
|
|
269
|
+
id: Type2.getTypename(Project2.Project),
|
|
278
270
|
metadata: {
|
|
279
271
|
icon: "ph--circuitry--regular",
|
|
280
272
|
iconHue: "sky",
|
|
281
|
-
createObject: (_, { db }) =>
|
|
282
|
-
name: "New
|
|
273
|
+
createObject: (_, { db }) => Project2.makeInitialized({
|
|
274
|
+
name: "New Project",
|
|
283
275
|
spec: "Not specified yet"
|
|
284
|
-
},
|
|
276
|
+
}, ProjectBlueprint.make()).pipe(withComputeRuntime(db.spaceId)),
|
|
285
277
|
addToCollectionOnCreate: true
|
|
286
278
|
}
|
|
287
279
|
}
|
|
@@ -295,9 +287,9 @@ var AssistantPlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
|
|
|
295
287
|
Blueprint2.Blueprint,
|
|
296
288
|
HasSubject.HasSubject,
|
|
297
289
|
Prompt2.Prompt,
|
|
298
|
-
ResearchGraph,
|
|
299
|
-
|
|
300
|
-
|
|
290
|
+
ResearchGraph.ResearchGraph,
|
|
291
|
+
Project2.Project,
|
|
292
|
+
Plan.Plan,
|
|
301
293
|
Sequence2
|
|
302
294
|
]
|
|
303
295
|
}), AppPlugin.addSettingsModule({
|
|
@@ -351,26 +343,19 @@ export {
|
|
|
351
343
|
ApiAuthorization,
|
|
352
344
|
AppGraphBuilder,
|
|
353
345
|
Assistant_exports as Assistant,
|
|
354
|
-
|
|
346
|
+
blueprint_default as AssistantBlueprint,
|
|
355
347
|
AssistantCapabilities,
|
|
356
348
|
AssistantEvents,
|
|
357
349
|
AssistantOperation,
|
|
358
350
|
AssistantPlugin,
|
|
359
|
-
AssistantSettings,
|
|
360
351
|
AssistantState,
|
|
361
|
-
BlueprintArticle,
|
|
362
352
|
BlueprintDefinition,
|
|
363
353
|
Chat,
|
|
364
|
-
ChatCompanion,
|
|
365
|
-
ChatContainer,
|
|
366
354
|
ChatContextProvider,
|
|
367
|
-
ChatDialog,
|
|
368
355
|
EdgeModelResolver,
|
|
369
|
-
InitiativeContainer,
|
|
370
356
|
LLM_PROVIDERS,
|
|
371
357
|
LocalModelResolver,
|
|
372
358
|
OperationResolver,
|
|
373
|
-
PromptArticle,
|
|
374
359
|
ReactSurface,
|
|
375
360
|
Repair,
|
|
376
361
|
ServiceType,
|
|
@@ -379,7 +364,6 @@ export {
|
|
|
379
364
|
Toolbox,
|
|
380
365
|
ToolboxContainer,
|
|
381
366
|
Toolkit,
|
|
382
|
-
TriggerStatus,
|
|
383
367
|
categoryIcons,
|
|
384
368
|
meta,
|
|
385
369
|
translations,
|