@dxos/plugin-assistant 0.9.1-main.c7dcc2e112 → 0.9.1-staging.ee54ba693a
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/PLUGIN.mdl +18 -24
- package/dist/lib/neutral/{AgentArticle-2BEPWUMN.mjs → AgentArticle-GV6EEW3I.mjs} +1 -2
- package/dist/lib/neutral/AgentArticle-GV6EEW3I.mjs.map +7 -0
- package/dist/lib/neutral/AssistantPlugin.mjs +1 -1
- package/dist/lib/neutral/AssistantPlugin.node.mjs +6 -6
- package/dist/lib/neutral/AssistantPlugin.node.mjs.map +3 -3
- package/dist/lib/neutral/AssistantPlugin.workerd.mjs +7 -34
- package/dist/lib/neutral/AssistantPlugin.workerd.mjs.map +4 -4
- package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs +302 -0
- package/dist/lib/neutral/AssistantSettings-3N5M5VCN.mjs.map +7 -0
- package/dist/lib/neutral/{ChatArticle-KT46SUFU.mjs → ChatArticle-OO7GGEFW.mjs} +2 -2
- package/dist/lib/neutral/{ChatCompanion-YHC43RYQ.mjs → ChatCompanion-GIFJRY6I.mjs} +27 -27
- package/dist/lib/neutral/ChatCompanion-GIFJRY6I.mjs.map +7 -0
- package/dist/lib/neutral/{ChatDialog-YZDZLIQA.mjs → ChatDialog-5MXN4MXS.mjs} +5 -5
- package/dist/lib/neutral/ChatDialog-5MXN4MXS.mjs.map +7 -0
- package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs +72 -0
- package/dist/lib/neutral/IntegrationPrompt-2HJQFYJE.mjs.map +7 -0
- package/dist/lib/neutral/{SpaceHomePrompt-HTWQKLGI.mjs → SpaceHomePrompt-ISAB76LD.mjs} +8 -7
- package/dist/lib/neutral/SpaceHomePrompt-ISAB76LD.mjs.map +7 -0
- package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs +63 -0
- package/dist/lib/neutral/SpaceHomeSuggestions-IDH77QQR.mjs.map +7 -0
- package/dist/lib/neutral/{TracePanel-T552TAOH.mjs → TracePanel-JKNWADJ4.mjs} +2 -2
- package/dist/lib/neutral/{TriggerStatus-RBOHHDOK.mjs → TriggerStatus-FURRBHYA.mjs} +7 -5
- package/dist/lib/neutral/TriggerStatus-FURRBHYA.mjs.map +7 -0
- package/dist/lib/neutral/{agent-hydrator-PJBYVMBW.mjs → agent-hydrator-OBO3RHLO.mjs} +3 -4
- package/dist/lib/neutral/agent-hydrator-OBO3RHLO.mjs.map +7 -0
- package/dist/lib/neutral/{agent-service-WV5CSHAG.mjs → agent-service-XFJ4VQMT.mjs} +7 -9
- package/dist/lib/neutral/agent-service-XFJ4VQMT.mjs.map +7 -0
- package/dist/lib/neutral/ai-context-LIKJYMIN.mjs +14 -0
- package/dist/lib/neutral/ai-context-LIKJYMIN.mjs.map +7 -0
- package/dist/lib/neutral/{ai-service-AADUIKBY.mjs → ai-service-DM6YXWUC.mjs} +9 -5
- package/dist/lib/neutral/ai-service-DM6YXWUC.mjs.map +7 -0
- package/dist/lib/neutral/{app-graph-builder-PTSRZXRN.mjs → app-graph-builder-OPVOEQY7.mjs} +36 -19
- package/dist/lib/neutral/app-graph-builder-OPVOEQY7.mjs.map +7 -0
- package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs +97 -0
- package/dist/lib/neutral/automation-templates-MADJLXGJ.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +20 -18
- package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
- package/dist/lib/neutral/{chunk-KLYLW4WH.mjs → chunk-5IHQ52KJ.mjs} +1 -1
- package/dist/lib/neutral/chunk-5IHQ52KJ.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-5KB2WRI2.mjs → chunk-6Q4OBGIK.mjs} +83 -55
- package/dist/lib/neutral/chunk-6Q4OBGIK.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-54W7N6M6.mjs → chunk-BXI2R4OO.mjs} +49 -84
- package/dist/lib/neutral/chunk-BXI2R4OO.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-5H6UJHLF.mjs → chunk-CMPLPDYE.mjs} +12 -12
- package/dist/lib/neutral/chunk-CMPLPDYE.mjs.map +7 -0
- package/dist/lib/neutral/chunk-GPHT3HYS.mjs +8 -0
- package/dist/lib/neutral/{chunk-7FQT4XMI.mjs.map → chunk-GPHT3HYS.mjs.map} +2 -2
- package/dist/lib/neutral/{markdown-extension-IJ5RQMQ4.mjs → chunk-HKLSFB5I.mjs} +2 -38
- package/dist/lib/neutral/chunk-HKLSFB5I.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ZNDQVYUN.mjs → chunk-L7AR4VTA.mjs} +3 -3
- package/dist/lib/neutral/{chunk-ZNDQVYUN.mjs.map → chunk-L7AR4VTA.mjs.map} +1 -1
- package/dist/lib/neutral/chunk-LS72HWMM.mjs +42 -0
- package/dist/lib/neutral/chunk-LS72HWMM.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-35EL65O4.mjs → chunk-OZWZGIV2.mjs} +4 -2
- package/dist/lib/neutral/{chunk-35EL65O4.mjs.map → chunk-OZWZGIV2.mjs.map} +3 -3
- package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs → chunk-QOKLFHUS.mjs} +3 -4
- package/dist/lib/neutral/{toolkit-GVWXPDLJ.mjs.map → chunk-QOKLFHUS.mjs.map} +1 -1
- package/dist/lib/neutral/{chunk-5LKNH7FD.mjs → chunk-SCTHQVIJ.mjs} +8 -5
- package/dist/lib/neutral/{chunk-5LKNH7FD.mjs.map → chunk-SCTHQVIJ.mjs.map} +3 -3
- package/dist/lib/neutral/chunk-U4LTLBAX.mjs +56 -0
- package/dist/lib/neutral/chunk-U4LTLBAX.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-H77JTXAN.mjs → chunk-UPKFUZ6V.mjs} +7 -10
- package/dist/lib/neutral/chunk-UPKFUZ6V.mjs.map +7 -0
- package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs → chunk-V2Y4XE3O.mjs} +3 -4
- package/dist/lib/neutral/{operation-handler-SF36MOB5.mjs.map → chunk-V2Y4XE3O.mjs.map} +1 -1
- package/dist/lib/neutral/chunk-VTK5R4H3.mjs +9 -0
- package/dist/lib/neutral/chunk-VTK5R4H3.mjs.map +7 -0
- package/dist/lib/neutral/chunk-XVGEJWJX.mjs +133 -0
- package/dist/lib/neutral/chunk-XVGEJWJX.mjs.map +7 -0
- package/dist/lib/neutral/{companion-chat-provisioner-YZZ73P6E.mjs → companion-chat-provisioner-IQV5VIVE.mjs} +14 -8
- package/dist/lib/neutral/companion-chat-provisioner-IQV5VIVE.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +509 -579
- package/dist/lib/neutral/components/index.mjs.map +4 -4
- package/dist/lib/neutral/{integration-provider-RBD3AFJU.mjs → connector-ITLLTBPZ.mjs} +13 -14
- package/dist/lib/neutral/connector-ITLLTBPZ.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +12 -14
- package/dist/lib/neutral/containers/index.mjs.map +3 -3
- package/dist/lib/neutral/{create-chat-Z3FNA6OJ.mjs → create-chat-YGVZZYGP.mjs} +18 -16
- package/dist/lib/neutral/create-chat-YGVZZYGP.mjs.map +7 -0
- package/dist/lib/neutral/{create-object-BJUDDKQQ.mjs → create-object-5PAEJ6KM.mjs} +11 -27
- package/dist/lib/neutral/create-object-5PAEJ6KM.mjs.map +7 -0
- package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs → edge-model-resolver-WDJWDZTT.mjs} +2 -2
- package/dist/lib/neutral/execution-graph/index.mjs +182 -64
- package/dist/lib/neutral/execution-graph/index.mjs.map +3 -3
- package/dist/lib/neutral/extensions/index.mjs +8 -0
- package/dist/lib/neutral/{fork-chat-UYXYT6BT.mjs → fork-chat-RMAAYYQF.mjs} +15 -18
- package/dist/lib/neutral/fork-chat-RMAAYYQF.mjs.map +7 -0
- package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs +93 -0
- package/dist/lib/neutral/generate-home-suggestions-6MM2XWPV.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +195 -105
- package/dist/lib/neutral/hooks/index.mjs.map +4 -4
- package/dist/lib/neutral/index.mjs +14 -10
- package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs +41 -0
- package/dist/lib/neutral/markdown-extension-R4TKDTIF.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/meta.mjs +1 -1
- package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs +18 -0
- package/dist/lib/neutral/navigation-resolver-PYGP2DAW.mjs.map +7 -0
- package/dist/lib/neutral/operation-handler-2LEN45GP.mjs +8 -0
- package/dist/lib/neutral/operation-handler-2LEN45GP.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +1 -1
- package/dist/lib/neutral/plugin.mjs +2 -2
- package/dist/lib/neutral/plugin.workerd.mjs +13 -0
- package/dist/lib/neutral/plugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/{react-surface-ES7UHZ65.mjs → react-surface-HEJEK44F.mjs} +20 -35
- package/dist/lib/neutral/react-surface-HEJEK44F.mjs.map +7 -0
- package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs +28 -0
- package/dist/lib/neutral/resolve-navigation-targets-PBQ3OLUE.mjs.map +7 -0
- package/dist/lib/neutral/{run-prompt-in-new-chat-NIAGCKQV.mjs → run-prompt-in-new-chat-RNUJE2FM.mjs} +28 -31
- package/dist/lib/neutral/run-prompt-in-new-chat-RNUJE2FM.mjs.map +7 -0
- package/dist/lib/neutral/skill-definition-553MQRTR.mjs +8 -0
- package/dist/lib/neutral/skill-definition-553MQRTR.mjs.map +7 -0
- package/dist/lib/neutral/skills/index.mjs +8 -0
- package/dist/lib/neutral/skills/index.mjs.map +7 -0
- package/dist/lib/neutral/{state-XO2UYSSG.mjs → state-4LGAKSSD.mjs} +8 -2
- package/dist/lib/neutral/{state-XO2UYSSG.mjs.map → state-4LGAKSSD.mjs.map} +3 -3
- package/dist/lib/neutral/testing.mjs +1 -1
- package/dist/lib/neutral/toolkit-ETWLG5NT.mjs +8 -0
- package/dist/lib/neutral/toolkit-ETWLG5NT.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +64 -33
- package/dist/lib/neutral/translations.mjs.map +3 -3
- package/dist/lib/neutral/types/index.mjs +5 -1
- package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs → update-chat-name-IJJELRR6.mjs} +3 -3
- package/dist/lib/neutral/{update-chat-name-Y7JWIP64.mjs.map → update-chat-name-IJJELRR6.mjs.map} +2 -2
- package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
- package/dist/types/src/AssistantPlugin.workerd.d.ts.map +1 -1
- package/dist/types/src/capabilities/agent-hydrator.d.ts +1 -1
- package/dist/types/src/capabilities/agent-service.d.ts +1 -2
- package/dist/types/src/capabilities/agent-service.d.ts.map +1 -1
- package/dist/types/src/capabilities/ai-context.d.ts +1 -2
- package/dist/types/src/capabilities/ai-context.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -3
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/automation-templates.d.ts +1 -2
- package/dist/types/src/capabilities/automation-templates.d.ts.map +1 -1
- package/dist/types/src/capabilities/companion-chat-provisioner.d.ts +1 -1
- package/dist/types/src/capabilities/companion-chat-provisioner.d.ts.map +1 -1
- package/dist/types/src/capabilities/{integration-provider.d.ts → connector.d.ts} +2 -2
- package/dist/types/src/capabilities/connector.d.ts.map +1 -0
- package/dist/types/src/capabilities/create-object.d.ts +1 -27
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +3 -2
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown-extension.d.ts +1 -1
- package/dist/types/src/capabilities/migrations.d.ts +1 -2
- package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
- package/dist/types/src/capabilities/navigation-resolver.d.ts +5 -0
- package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -2
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
- package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/state.d.ts +1 -17
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/toolkit.d.ts +1 -2
- package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
- package/dist/types/src/components/AgentProperties/AgentProperties.stories.d.ts.map +1 -1
- package/dist/types/src/components/Chat/Chat.d.ts +4 -5
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
- package/dist/types/src/components/Chat/events.d.ts +0 -4
- package/dist/types/src/components/Chat/events.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatActions.d.ts +2 -2
- package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts +2 -2
- package/dist/types/src/components/ChatPrompt/ChatOptions.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts +5 -5
- package/dist/types/src/components/ChatPrompt/ChatPrompt.d.ts.map +1 -1
- package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts +9 -0
- package/dist/types/src/components/ChatPrompt/useChatVoiceInput.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +4 -4
- package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts +2 -2
- package/dist/types/src/components/ChatThread/MarkdownStream.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/registry.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts +2 -2
- package/dist/types/src/components/ChatThread/widgets/ReasoningWidget.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts +11 -0
- package/dist/types/src/components/ChatThread/widgets/SurfaceWidget.d.ts.map +1 -0
- package/dist/types/src/components/ChatThread/widgets/index.d.ts +1 -0
- package/dist/types/src/components/ChatThread/widgets/index.d.ts.map +1 -1
- package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
- package/dist/types/src/components/TaskList/TaskList.stories.d.ts +2 -2
- package/dist/types/src/components/TaskList/TaskList.stories.d.ts.map +1 -1
- package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -3
- package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +0 -4
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/constants.d.ts +1 -1
- package/dist/types/src/constants.d.ts.map +1 -1
- package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts +2 -2
- package/dist/types/src/containers/AgentArticle/AgentArticle.stories.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.d.ts +1 -1
- package/dist/types/src/containers/AssistantSettings/AssistantSettings.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts.map +1 -1
- package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts +12 -0
- package/dist/types/src/containers/AssistantSettings/OllamaModels.d.ts.map +1 -0
- package/dist/types/src/{components/TemplateEditor/TemplateEditor.stories.d.ts → containers/AssistantSettings/OllamaModels.stories.d.ts} +9 -7
- package/dist/types/src/containers/AssistantSettings/OllamaModels.stories.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts.map +1 -1
- package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts +2 -9
- package/dist/types/src/containers/ChatArticle/ChatArticle.d.ts.map +1 -1
- package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts +3 -10
- package/dist/types/src/containers/ChatCompanion/ChatCompanion.d.ts.map +1 -1
- package/dist/types/src/containers/ChatDialog/ChatDialog.d.ts.map +1 -1
- package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts +13 -0
- package/dist/types/src/containers/IntegrationPrompt/IntegrationPrompt.d.ts.map +1 -0
- package/dist/types/src/containers/IntegrationPrompt/index.d.ts +2 -0
- package/dist/types/src/{components/RoutineProperties → containers/IntegrationPrompt}/index.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceHomePrompt/SpaceHomePrompt.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts +1 -1
- package/dist/types/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.d.ts.map +1 -1
- package/dist/types/src/containers/TracePanel/TracePanel.stories.d.ts.map +1 -1
- package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts +1 -1
- package/dist/types/src/containers/TracePanel/testing/simulated-agent.d.ts.map +1 -1
- package/dist/types/src/containers/TriggerStatus/TriggerStatus.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +2 -3
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/execution-graph/execution-graph.d.ts +2 -1
- package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -1
- package/dist/types/src/execution-graph/index.d.ts +3 -3
- package/dist/types/src/execution-graph/index.d.ts.map +1 -1
- package/dist/types/src/execution-graph/span-tree.d.ts +13 -0
- package/dist/types/src/execution-graph/span-tree.d.ts.map +1 -1
- package/dist/types/src/extensions/index.d.ts +1 -1
- package/dist/types/src/extensions/index.d.ts.map +1 -1
- package/dist/types/src/extensions/prompt-extension.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +2 -2
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
- package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
- package/dist/types/src/hooks/useHomeSuggestions.d.ts +8 -0
- package/dist/types/src/hooks/useHomeSuggestions.d.ts.map +1 -0
- package/dist/types/src/hooks/usePresets.d.ts +6 -2
- package/dist/types/src/hooks/usePresets.d.ts.map +1 -1
- package/dist/types/src/hooks/useSkillRegistry.d.ts +21 -0
- package/dist/types/src/hooks/useSkillRegistry.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +4 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/create-chat.d.ts.map +1 -1
- package/dist/types/src/operations/fork-chat.d.ts.map +1 -1
- package/dist/types/src/operations/generate-home-suggestions.d.ts +5 -0
- package/dist/types/src/operations/generate-home-suggestions.d.ts.map +1 -0
- package/dist/types/src/operations/generate-home-suggestions.test.d.ts +2 -0
- package/dist/types/src/operations/generate-home-suggestions.test.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/resolve-navigation-targets.d.ts +3 -15
- package/dist/types/src/operations/resolve-navigation-targets.d.ts.map +1 -1
- package/dist/types/src/operations/run-prompt-in-new-chat.d.ts +2 -2
- package/dist/types/src/operations/run-prompt-in-new-chat.d.ts.map +1 -1
- package/dist/types/src/paths.d.ts +1 -1
- package/dist/types/src/paths.d.ts.map +1 -1
- package/dist/types/src/plugin.workerd.d.ts +2 -0
- package/dist/types/src/plugin.workerd.d.ts.map +1 -0
- package/dist/types/src/processor/presets.d.ts +20 -9
- package/dist/types/src/processor/presets.d.ts.map +1 -1
- package/dist/types/src/processor/processor.d.ts +10 -209
- package/dist/types/src/processor/processor.d.ts.map +1 -1
- package/dist/types/src/skills/assistant/index.d.ts +2 -0
- package/dist/types/src/skills/assistant/index.d.ts.map +1 -0
- package/dist/types/src/skills/assistant/skill.d.ts +4 -0
- package/dist/types/src/skills/assistant/skill.d.ts.map +1 -0
- package/dist/types/src/skills/assistant/skill.node.test.d.ts +2 -0
- package/dist/types/src/skills/assistant/skill.node.test.d.ts.map +1 -0
- package/dist/types/src/skills/index.d.ts.map +1 -0
- package/dist/types/src/templates/daily-digest.d.ts +2 -2
- package/dist/types/src/templates/daily-digest.d.ts.map +1 -1
- package/dist/types/src/templates/index.d.ts +3 -3
- package/dist/types/src/templates/index.d.ts.map +1 -1
- package/dist/types/src/templates/research-brief.d.ts +2 -2
- package/dist/types/src/templates/research-brief.d.ts.map +1 -1
- package/dist/types/src/templates/routine-templates.test.d.ts +2 -0
- package/dist/types/src/templates/routine-templates.test.d.ts.map +1 -0
- package/dist/types/src/templates/scaffold.d.ts +9 -9
- package/dist/types/src/templates/scaffold.d.ts.map +1 -1
- package/dist/types/src/testing/test-generator.d.ts +1 -1
- package/dist/types/src/testing/test-generator.d.ts.map +1 -1
- package/dist/types/src/testing/test-sequence.d.ts +1 -8
- package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
- package/dist/types/src/testing/test-trace.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Assistant.d.ts +5 -12
- package/dist/types/src/types/Assistant.d.ts.map +1 -1
- package/dist/types/src/types/AssistantCapabilities.d.ts +21 -0
- package/dist/types/src/types/AssistantCapabilities.d.ts.map +1 -1
- package/dist/types/src/types/AssistantOperation.d.ts +17 -110
- package/dist/types/src/types/AssistantOperation.d.ts.map +1 -1
- package/dist/types/src/types/ChatSurface.d.ts +12 -0
- package/dist/types/src/types/ChatSurface.d.ts.map +1 -0
- package/dist/types/src/types/Ollama.d.ts +44 -0
- package/dist/types/src/types/Ollama.d.ts.map +1 -0
- package/dist/types/src/types/Settings.d.ts +5 -4
- package/dist/types/src/types/Settings.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +2 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/service.d.ts +4 -3
- package/dist/types/src/types/service.d.ts.map +1 -1
- package/dist/types/src/util/suggestions.d.ts +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +2 -2
- package/package.json +102 -90
- package/src/AssistantPlugin.conversations.json +1 -1
- package/src/AssistantPlugin.node.ts +5 -5
- package/src/AssistantPlugin.test.ts +26 -40
- package/src/AssistantPlugin.ts +12 -10
- package/src/AssistantPlugin.workerd.ts +15 -6
- package/src/capabilities/agent-hydrator.ts +1 -2
- package/src/capabilities/agent-service.ts +5 -7
- package/src/capabilities/ai-context.ts +7 -32
- package/src/capabilities/ai-service.ts +3 -2
- package/src/capabilities/app-graph-builder.ts +38 -18
- package/src/capabilities/automation-templates.ts +3 -3
- package/src/capabilities/companion-chat-provisioner.ts +22 -6
- package/src/capabilities/{integration-provider.ts → connector.ts} +7 -12
- package/src/capabilities/create-object.ts +9 -26
- package/src/capabilities/index.ts +3 -5
- package/src/capabilities/markdown-extension.ts +2 -3
- package/src/capabilities/navigation-resolver.ts +20 -0
- package/src/capabilities/react-surface.tsx +21 -33
- package/src/capabilities/skill-definition.ts +72 -0
- package/src/capabilities/state.ts +7 -0
- package/src/components/AgentProperties/AgentProperties.stories.tsx +1 -2
- package/src/components/Chat/Chat.tsx +28 -10
- package/src/components/Chat/events.ts +0 -6
- package/src/components/ChatPrompt/ChatActions.tsx +181 -18
- package/src/components/ChatPrompt/ChatOptions.stories.tsx +3 -3
- package/src/components/ChatPrompt/ChatOptions.tsx +17 -21
- package/src/components/ChatPrompt/ChatPrompt.tsx +30 -46
- package/src/components/ChatPrompt/useChatVoiceInput.ts +103 -0
- package/src/components/ChatThread/ChatThread.stories.tsx +7 -16
- package/src/components/ChatThread/MarkdownStream.stories.tsx +3 -3
- package/src/components/ChatThread/registry.tsx +43 -17
- package/src/components/ChatThread/widgets/ReasoningWidget.stories.tsx +2 -2
- package/src/components/ChatThread/widgets/SurfaceWidget.tsx +41 -0
- package/src/components/ChatThread/widgets/index.ts +1 -0
- package/src/components/ProcessTree/ProcessTree.tsx +2 -10
- package/src/components/TaskList/TaskList.stories.tsx +2 -2
- package/src/components/TaskList/TaskList.tsx +2 -2
- package/src/components/Toolbox/Toolbox.tsx +11 -11
- package/src/components/index.ts +0 -6
- package/src/constants.ts +1 -1
- package/src/containers/AgentArticle/AgentArticle.stories.tsx +8 -9
- package/src/containers/AgentArticle/AgentArticle.tsx +1 -1
- package/src/{components → containers}/AssistantSettings/AssistantSettings.stories.tsx +3 -2
- package/src/containers/AssistantSettings/AssistantSettings.tsx +90 -0
- package/src/containers/AssistantSettings/OllamaModels.stories.tsx +108 -0
- package/src/containers/AssistantSettings/OllamaModels.tsx +255 -0
- package/src/containers/ChatArticle/ChatArticle.stories.tsx +3 -3
- package/src/containers/ChatArticle/ChatArticle.tsx +8 -19
- package/src/containers/ChatCompanion/ChatCompanion.tsx +26 -26
- package/src/containers/ChatDialog/ChatDialog.tsx +5 -4
- package/src/containers/IntegrationPrompt/IntegrationPrompt.tsx +79 -0
- package/src/containers/IntegrationPrompt/index.ts +5 -0
- package/src/containers/SpaceHomePrompt/SpaceHomePrompt.tsx +8 -6
- package/src/containers/SpaceHomeSuggestions/SpaceHomeSuggestions.tsx +46 -32
- package/src/containers/TracePanel/TracePanel.stories.tsx +89 -47
- package/src/containers/TracePanel/TracePanel.tsx +13 -8
- package/src/containers/TracePanel/dxn-extractor.test.ts +2 -2
- package/src/containers/TriggerStatus/TriggerStatus.tsx +8 -4
- package/src/containers/index.ts +2 -3
- package/src/execution-graph/SPEC.md +1 -1
- package/src/execution-graph/execution-graph.test.ts +213 -25
- package/src/execution-graph/execution-graph.ts +209 -72
- package/src/execution-graph/index.ts +8 -8
- package/src/execution-graph/span-tree.test.ts +33 -1
- package/src/execution-graph/span-tree.ts +43 -2
- package/src/execution-graph/sub-agent-delegation.test.ts +19 -19
- package/src/extensions/index.ts +1 -1
- package/src/extensions/prompt-extension.ts +1 -1
- package/src/feed-logger.ts +4 -4
- package/src/functions/services.test.ts +4 -4
- package/src/hooks/index.ts +2 -2
- package/src/hooks/useChatProcessor.ts +12 -16
- package/src/hooks/useContextBinder.ts +2 -4
- package/src/hooks/useDebug.ts +2 -2
- package/src/hooks/useHomeSuggestions.ts +55 -0
- package/src/hooks/usePresets.ts +80 -11
- package/src/hooks/useProcessEphemeralStatus.ts +1 -1
- package/src/hooks/useReferencesProvider.ts +1 -1
- package/src/hooks/useSkillRegistry.ts +125 -0
- package/src/index.ts +1 -1
- package/src/operations/create-chat.ts +11 -12
- package/src/operations/fork-chat.ts +14 -19
- package/src/operations/generate-home-suggestions.test.ts +103 -0
- package/src/operations/generate-home-suggestions.ts +116 -0
- package/src/operations/index.ts +1 -0
- package/src/operations/prompt.node.test.ts +14 -17
- package/src/operations/resolve-navigation-targets.ts +32 -19
- package/src/operations/run-prompt-in-new-chat.ts +30 -33
- package/src/operations/update-chat-name.ts +2 -2
- package/src/paths.ts +4 -2
- package/src/plugin.workerd.ts +5 -0
- package/src/processor/presets.ts +38 -61
- package/src/processor/processor.node.test.ts +1 -1
- package/src/processor/processor.ts +34 -20
- package/src/skills/assistant/index.ts +5 -0
- package/src/{blueprints/assistant/blueprint.node.test.ts → skills/assistant/skill.node.test.ts} +8 -8
- package/src/{blueprints/assistant/blueprint.ts → skills/assistant/skill.ts} +9 -9
- package/src/templates/daily-digest.ts +10 -12
- package/src/templates/index.ts +3 -3
- package/src/templates/research-brief.ts +15 -13
- package/src/templates/routine-templates.test.ts +55 -0
- package/src/templates/scaffold.ts +22 -57
- package/src/testing/data/trace-timeline-multiple.dx.json +1 -1
- package/src/testing/data/trace-timeline-remote.dx.json +1 -1
- package/src/testing/data/trace-timeline.dx.json +3430 -1092
- package/src/testing/test-generator.test.ts +26 -22
- package/src/testing/test-generator.ts +4 -8
- package/src/testing/test-trace.ts +2 -1
- package/src/testing/trace-timeline.node.test.ts +14 -14
- package/src/translations.ts +68 -33
- package/src/types/Assistant.ts +3 -1
- package/src/types/AssistantCapabilities.ts +21 -0
- package/src/types/AssistantOperation.ts +21 -32
- package/src/types/ChatSurface.ts +16 -0
- package/src/types/Ollama.ts +59 -0
- package/src/types/Settings.ts +12 -10
- package/src/types/index.ts +3 -0
- package/src/types/service.ts +14 -14
- package/src/util/suggestions.ts +1 -1
- package/dist/lib/neutral/AgentArticle-2BEPWUMN.mjs.map +0 -7
- package/dist/lib/neutral/AssistantSettings-7ALY4BMS.mjs +0 -40
- package/dist/lib/neutral/AssistantSettings-7ALY4BMS.mjs.map +0 -7
- package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs +0 -27
- package/dist/lib/neutral/BlueprintArticle-ZBOZNZM7.mjs.map +0 -7
- package/dist/lib/neutral/ChatCompanion-YHC43RYQ.mjs.map +0 -7
- package/dist/lib/neutral/ChatDialog-YZDZLIQA.mjs.map +0 -7
- package/dist/lib/neutral/RoutineArticle-FK5BXQN5.mjs +0 -119
- package/dist/lib/neutral/RoutineArticle-FK5BXQN5.mjs.map +0 -7
- package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs +0 -48
- package/dist/lib/neutral/RoutineList-SO5ETHNT.mjs.map +0 -7
- package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs +0 -17
- package/dist/lib/neutral/RoutineProperties-FISLMW2R.mjs.map +0 -7
- package/dist/lib/neutral/SpaceHomePrompt-HTWQKLGI.mjs.map +0 -7
- package/dist/lib/neutral/SpaceHomeSuggestions-6G4E7GNJ.mjs +0 -50
- package/dist/lib/neutral/SpaceHomeSuggestions-6G4E7GNJ.mjs.map +0 -7
- package/dist/lib/neutral/TriggerStatus-RBOHHDOK.mjs.map +0 -7
- package/dist/lib/neutral/agent-hydrator-PJBYVMBW.mjs.map +0 -7
- package/dist/lib/neutral/agent-service-WV5CSHAG.mjs.map +0 -7
- package/dist/lib/neutral/ai-context-7WRHWYXY.mjs +0 -42
- package/dist/lib/neutral/ai-context-7WRHWYXY.mjs.map +0 -7
- package/dist/lib/neutral/ai-service-AADUIKBY.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-builder-PTSRZXRN.mjs.map +0 -7
- package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs +0 -115
- package/dist/lib/neutral/automation-templates-M2XQWGR6.mjs.map +0 -7
- package/dist/lib/neutral/blueprint-definition-2XPYI35X.mjs +0 -40
- package/dist/lib/neutral/blueprint-definition-2XPYI35X.mjs.map +0 -7
- package/dist/lib/neutral/blueprints/index.mjs +0 -8
- package/dist/lib/neutral/chunk-54W7N6M6.mjs.map +0 -7
- package/dist/lib/neutral/chunk-5H6UJHLF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-5KB2WRI2.mjs.map +0 -7
- package/dist/lib/neutral/chunk-7FQT4XMI.mjs +0 -8
- package/dist/lib/neutral/chunk-H77JTXAN.mjs.map +0 -7
- package/dist/lib/neutral/chunk-IQZJ5TTM.mjs +0 -130
- package/dist/lib/neutral/chunk-IQZJ5TTM.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KLYLW4WH.mjs.map +0 -7
- package/dist/lib/neutral/companion-chat-provisioner-YZZ73P6E.mjs.map +0 -7
- package/dist/lib/neutral/create-chat-Z3FNA6OJ.mjs.map +0 -7
- package/dist/lib/neutral/create-object-BJUDDKQQ.mjs.map +0 -7
- package/dist/lib/neutral/fork-chat-UYXYT6BT.mjs.map +0 -7
- package/dist/lib/neutral/integration-provider-RBD3AFJU.mjs.map +0 -7
- package/dist/lib/neutral/markdown-extension-IJ5RQMQ4.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-ES7UHZ65.mjs.map +0 -7
- package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs +0 -22
- package/dist/lib/neutral/resolve-navigation-targets-ZHIMMH7L.mjs.map +0 -7
- package/dist/lib/neutral/run-prompt-in-new-chat-NIAGCKQV.mjs.map +0 -7
- package/dist/types/src/blueprints/assistant/blueprint.d.ts +0 -4
- package/dist/types/src/blueprints/assistant/blueprint.d.ts.map +0 -1
- package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts +0 -2
- package/dist/types/src/blueprints/assistant/blueprint.node.test.d.ts.map +0 -1
- package/dist/types/src/blueprints/assistant/index.d.ts +0 -2
- package/dist/types/src/blueprints/assistant/index.d.ts.map +0 -1
- package/dist/types/src/blueprints/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/integration-provider.d.ts.map +0 -1
- package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +0 -1
- package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts +0 -7
- package/dist/types/src/components/RoutineProperties/RoutineProperties.d.ts.map +0 -1
- package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts +0 -15
- package/dist/types/src/components/RoutineProperties/RoutineProperties.stories.d.ts.map +0 -1
- package/dist/types/src/components/RoutineProperties/index.d.ts +0 -2
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +0 -13
- package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +0 -21
- package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +0 -16
- package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +0 -12
- package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +0 -3
- package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +0 -8
- package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/index.d.ts +0 -2
- package/dist/types/src/components/TemplateEditor/index.d.ts.map +0 -1
- package/dist/types/src/components/TemplateEditor/types.d.ts +0 -18
- package/dist/types/src/components/TemplateEditor/types.d.ts.map +0 -1
- package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts +0 -6
- package/dist/types/src/containers/BlueprintArticle/BlueprintArticle.d.ts.map +0 -1
- package/dist/types/src/containers/BlueprintArticle/index.d.ts +0 -2
- package/dist/types/src/containers/BlueprintArticle/index.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +0 -6
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +0 -15
- package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineArticle/index.d.ts +0 -2
- package/dist/types/src/containers/RoutineArticle/index.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineList/RoutineList.d.ts +0 -6
- package/dist/types/src/containers/RoutineList/RoutineList.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts +0 -21
- package/dist/types/src/containers/RoutineList/RoutineList.stories.d.ts.map +0 -1
- package/dist/types/src/containers/RoutineList/index.d.ts +0 -2
- package/dist/types/src/containers/RoutineList/index.d.ts.map +0 -1
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts +0 -66
- package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +0 -1
- package/dist/types/src/hooks/useOnline.d.ts +0 -3
- package/dist/types/src/hooks/useOnline.d.ts.map +0 -1
- package/dist/types/src/templates/automation-templates.test.d.ts +0 -2
- package/dist/types/src/templates/automation-templates.test.d.ts.map +0 -1
- package/src/blueprints/assistant/index.ts +0 -5
- package/src/capabilities/blueprint-definition.ts +0 -67
- package/src/components/AssistantSettings/AssistantSettings.tsx +0 -43
- package/src/components/RoutineProperties/RoutineProperties.stories.tsx +0 -59
- package/src/components/RoutineProperties/RoutineProperties.tsx +0 -23
- package/src/components/RoutineProperties/index.ts +0 -5
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +0 -95
- package/src/components/TemplateEditor/TemplateEditor.tsx +0 -80
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +0 -76
- package/src/components/TemplateEditor/TemplateForm.tsx +0 -204
- package/src/components/TemplateEditor/extensions/handlebars-extension.ts +0 -274
- package/src/components/TemplateEditor/extensions/index.ts +0 -6
- package/src/components/TemplateEditor/extensions/xml-extension.ts +0 -64
- package/src/components/TemplateEditor/index.ts +0 -5
- package/src/components/TemplateEditor/types.tsx +0 -28
- package/src/containers/BlueprintArticle/BlueprintArticle.tsx +0 -29
- package/src/containers/BlueprintArticle/index.ts +0 -5
- package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +0 -75
- package/src/containers/RoutineArticle/RoutineArticle.tsx +0 -109
- package/src/containers/RoutineArticle/index.ts +0 -5
- package/src/containers/RoutineList/RoutineList.stories.tsx +0 -130
- package/src/containers/RoutineList/RoutineList.tsx +0 -50
- package/src/containers/RoutineList/index.ts +0 -5
- package/src/hooks/useBlueprintRegistry.ts +0 -125
- package/src/hooks/useOnline.ts +0 -10
- package/src/templates/automation-templates.test.ts +0 -66
- /package/dist/lib/neutral/{ChatArticle-KT46SUFU.mjs.map → ChatArticle-OO7GGEFW.mjs.map} +0 -0
- /package/dist/lib/neutral/{TracePanel-T552TAOH.mjs.map → TracePanel-JKNWADJ4.mjs.map} +0 -0
- /package/dist/lib/neutral/{edge-model-resolver-BBVOJBGJ.mjs.map → edge-model-resolver-WDJWDZTT.mjs.map} +0 -0
- /package/dist/lib/neutral/{blueprints → extensions}/index.mjs.map +0 -0
- /package/dist/types/src/{components → containers}/AssistantSettings/AssistantSettings.stories.d.ts +0 -0
- /package/dist/types/src/{components → containers}/AssistantSettings/index.d.ts +0 -0
- /package/dist/types/src/{blueprints → skills}/index.d.ts +0 -0
- /package/src/{components → containers}/AssistantSettings/index.ts +0 -0
- /package/src/{blueprints → skills}/index.ts +0 -0
|
@@ -5,13 +5,16 @@
|
|
|
5
5
|
import * as Array from 'effect/Array';
|
|
6
6
|
import * as Either from 'effect/Either';
|
|
7
7
|
import { pipe } from 'effect/Function';
|
|
8
|
+
import * as Option from 'effect/Option';
|
|
8
9
|
import * as Pipeable from 'effect/Pipeable';
|
|
9
10
|
import * as Schema from 'effect/Schema';
|
|
10
11
|
import * as Struct from 'effect/Struct';
|
|
11
12
|
|
|
12
13
|
import { AgentRequestBegin, AgentRequestEnd, CompleteBlock } from '@dxos/assistant';
|
|
13
14
|
import { Process, Trace } from '@dxos/compute';
|
|
15
|
+
import { Annotation } from '@dxos/echo';
|
|
14
16
|
import { AGENT_PROCESS_KEY } from '@dxos/functions-runtime';
|
|
17
|
+
import { EID } from '@dxos/keys';
|
|
15
18
|
import { LogLevel, log } from '@dxos/log';
|
|
16
19
|
import { type Commit } from '@dxos/react-ui-components';
|
|
17
20
|
import { type ContentBlock } from '@dxos/types';
|
|
@@ -23,6 +26,9 @@ import { ROOT_SPAN_ID, type Span, buildSpanTree, isSpanBeginEvent, isSpanEndEven
|
|
|
23
26
|
*/
|
|
24
27
|
const MAIN_BRANCH = 'main';
|
|
25
28
|
|
|
29
|
+
/** Timeline tag that applies a shimmer message effect. */
|
|
30
|
+
const SHIMMER_EFFECT_TAG = 'effect:shimmer';
|
|
31
|
+
|
|
26
32
|
const ICONS = {
|
|
27
33
|
agentRequestBegin: {
|
|
28
34
|
icon: 'ph--atom--regular',
|
|
@@ -85,6 +91,7 @@ const ICONS = {
|
|
|
85
91
|
export interface BuildExecutionGraphParams {
|
|
86
92
|
traceMessages: readonly Trace.Message[];
|
|
87
93
|
activeProcesses?: readonly Process.Info[];
|
|
94
|
+
collapseCompletedSpans?: boolean;
|
|
88
95
|
eventLimit?: number;
|
|
89
96
|
}
|
|
90
97
|
|
|
@@ -112,11 +119,12 @@ export type ExecutionGraphDetailsMap = Record<string, Trace.FlatEvent | undefine
|
|
|
112
119
|
export const buildExecutionGraph = ({
|
|
113
120
|
traceMessages,
|
|
114
121
|
activeProcesses = [],
|
|
122
|
+
collapseCompletedSpans = false,
|
|
115
123
|
eventLimit = 500,
|
|
116
124
|
}: BuildExecutionGraphParams): ExecutionGraph => {
|
|
117
125
|
const spanTree = buildSpanTree(traceMessages, { eventLimit });
|
|
118
126
|
const toolCallContext = buildToolCallContext(traceMessages);
|
|
119
|
-
const built = spanTreeToCommits(spanTree, activeProcesses, toolCallContext);
|
|
127
|
+
const built = spanTreeToCommits(spanTree, activeProcesses, toolCallContext, collapseCompletedSpans);
|
|
120
128
|
log('trace execution graph', {
|
|
121
129
|
traceMessages: traceMessages.length,
|
|
122
130
|
commits: built.commits.length,
|
|
@@ -282,7 +290,7 @@ const presentEvent = (event: Trace.FlatEvent, toolCallContext: ToolCallContext):
|
|
|
282
290
|
return {
|
|
283
291
|
icon: success ? ICONS.toolResultSuccess.icon : ICONS.toolResultError.icon,
|
|
284
292
|
level: success ? ICONS.toolResultSuccess.level : ICONS.toolResultError.level,
|
|
285
|
-
message: `${name}
|
|
293
|
+
message: `${name}${!success ? ' - Error' : ''}`,
|
|
286
294
|
idSuffix: `toolResult:${event.data.block.toolCallId}`,
|
|
287
295
|
};
|
|
288
296
|
}
|
|
@@ -311,7 +319,7 @@ const presentEvent = (event: Trace.FlatEvent, toolCallContext: ToolCallContext):
|
|
|
311
319
|
return {
|
|
312
320
|
icon: event.data.icon ?? (success ? ICONS.operationEndSuccess.icon : ICONS.operationEndError.icon),
|
|
313
321
|
level: success ? ICONS.operationEndSuccess.level : ICONS.operationEndError.level,
|
|
314
|
-
message: `${event.data.name ?? event.data.key}
|
|
322
|
+
message: `${event.data.name ?? event.data.key}${!success ? ' - Error' : ''}`,
|
|
315
323
|
idSuffix: `${event.data.key}:end`,
|
|
316
324
|
};
|
|
317
325
|
}
|
|
@@ -343,7 +351,10 @@ export const collectProcessActivityLines = (
|
|
|
343
351
|
if (!pid || !descendantPids.has(pid)) {
|
|
344
352
|
return false;
|
|
345
353
|
}
|
|
346
|
-
|
|
354
|
+
const metaConvId = message.meta.conversation
|
|
355
|
+
? EID.getEntityId(EID.parse(message.meta.conversation.uri))
|
|
356
|
+
: undefined;
|
|
357
|
+
if (conversationId && metaConvId !== undefined && metaConvId !== conversationId) {
|
|
347
358
|
return false;
|
|
348
359
|
}
|
|
349
360
|
return true;
|
|
@@ -381,7 +392,10 @@ export const deriveInFlightActivityLine = (
|
|
|
381
392
|
if (!pid || !descendantPids.has(pid)) {
|
|
382
393
|
return false;
|
|
383
394
|
}
|
|
384
|
-
|
|
395
|
+
const metaConvId = message.meta.conversation
|
|
396
|
+
? EID.getEntityId(EID.parse(message.meta.conversation.uri))
|
|
397
|
+
: undefined;
|
|
398
|
+
if (conversationId && metaConvId !== undefined && metaConvId !== conversationId) {
|
|
385
399
|
return false;
|
|
386
400
|
}
|
|
387
401
|
return true;
|
|
@@ -448,11 +462,41 @@ const collectDescendantPids = (messages: readonly Trace.Message[], rootPid: stri
|
|
|
448
462
|
return pids;
|
|
449
463
|
};
|
|
450
464
|
|
|
465
|
+
const isPendingToolCallEvent = (event: Trace.FlatEvent, toolCallContext: ToolCallContext): boolean => {
|
|
466
|
+
if (!Trace.isOfType(CompleteBlock, event)) {
|
|
467
|
+
return false;
|
|
468
|
+
}
|
|
469
|
+
if (event.data.block._tag !== 'toolCall') {
|
|
470
|
+
return false;
|
|
471
|
+
}
|
|
472
|
+
return !toolCallContext.resultByCallId.has(event.data.block.toolCallId);
|
|
473
|
+
};
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Marks commits that represent work still in flight for Timeline shimmer styling.
|
|
477
|
+
*/
|
|
478
|
+
const shouldShimmerInProgressCommit = (event: Trace.FlatEvent, toolCallContext: ToolCallContext): boolean =>
|
|
479
|
+
isPendingToolCallEvent(event, toolCallContext);
|
|
480
|
+
|
|
481
|
+
/**
|
|
482
|
+
* A span is completed when its last recorded event is a matching end boundary.
|
|
483
|
+
*/
|
|
484
|
+
const isCompletedSpan = (span: Span): boolean => {
|
|
485
|
+
if (span.id === ROOT_SPAN_ID) {
|
|
486
|
+
return false;
|
|
487
|
+
}
|
|
488
|
+
const lastEvent = span.events[span.events.length - 1];
|
|
489
|
+
return lastEvent !== undefined && isSpanEndEvent(lastEvent);
|
|
490
|
+
};
|
|
491
|
+
|
|
451
492
|
/**
|
|
452
493
|
* A span is "collapsible" when it would otherwise render as an empty fork-and-merge:
|
|
453
494
|
* exactly two events that form a begin/end pair and no child sub-spans. In that case
|
|
454
495
|
* we emit a single commit for the end event on the parent branch.
|
|
455
496
|
*
|
|
497
|
+
* When `collapseCompletedSpans` is enabled, any completed span collapses to that single
|
|
498
|
+
* end commit — middle events, child sub-spans, and the begin fork are all omitted.
|
|
499
|
+
*
|
|
456
500
|
* A *pending* span (one whose end event has not yet been recorded) is never collapsed:
|
|
457
501
|
* its trailing events should keep rendering as middle commits on the span's own branch
|
|
458
502
|
* — never as a fake "end" commit on the parent branch.
|
|
@@ -461,22 +505,24 @@ const collectDescendantPids = (messages: readonly Trace.Message[], rootPid: stri
|
|
|
461
505
|
* once they have completed: a span with no inner activity is collapsed regardless of where
|
|
462
506
|
* it sits in the tree.
|
|
463
507
|
*/
|
|
464
|
-
const isCollapsibleSpan = (span: Span, parent: Span | null): boolean => {
|
|
508
|
+
const isCollapsibleSpan = (span: Span, parent: Span | null, collapseCompletedSpans: boolean): boolean => {
|
|
465
509
|
if (span.id === ROOT_SPAN_ID) {
|
|
466
510
|
return false;
|
|
467
511
|
}
|
|
468
|
-
if (
|
|
512
|
+
if (parent === null) {
|
|
469
513
|
return false;
|
|
470
514
|
}
|
|
471
|
-
if (span.children.length
|
|
472
|
-
|
|
515
|
+
if (span.events.length === 2 && span.children.length === 0) {
|
|
516
|
+
const firstEvent = span.events[0];
|
|
517
|
+
const lastEvent = span.events[span.events.length - 1];
|
|
518
|
+
if (isSpanBeginEvent(firstEvent) && isSpanEndEvent(lastEvent)) {
|
|
519
|
+
return true;
|
|
520
|
+
}
|
|
473
521
|
}
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
if (!isSpanBeginEvent(firstEvent) || !isSpanEndEvent(lastEvent)) {
|
|
477
|
-
return false;
|
|
522
|
+
if (collapseCompletedSpans && isCompletedSpan(span)) {
|
|
523
|
+
return true;
|
|
478
524
|
}
|
|
479
|
-
return
|
|
525
|
+
return false;
|
|
480
526
|
};
|
|
481
527
|
|
|
482
528
|
/**
|
|
@@ -491,13 +537,15 @@ const isCollapsibleSpan = (span: Span, parent: Span | null): boolean => {
|
|
|
491
537
|
* Collapsible spans (`isCollapsibleSpan`) emit only the end commit on the parent branch with
|
|
492
538
|
* a single parent — a tidier rendering for sub-operations that have no inner detail.
|
|
493
539
|
*
|
|
494
|
-
* Events are processed in
|
|
495
|
-
*
|
|
540
|
+
* Events are processed in categorical span-tree order: each span's begin events, its child
|
|
541
|
+
* subtrees (depth-first), then its remaining events. Active-process running rows are inserted
|
|
542
|
+
* at the end of each matching span block — not appended after the entire tree.
|
|
496
543
|
*/
|
|
497
544
|
const spanTreeToCommits = (
|
|
498
545
|
root: Span,
|
|
499
546
|
activeProcesses: readonly Process.Info[],
|
|
500
547
|
toolCallContext: ToolCallContext,
|
|
548
|
+
collapseCompletedSpans: boolean,
|
|
501
549
|
): { branches: string[]; commits: Commit[]; details: ExecutionGraphDetailsMap } => {
|
|
502
550
|
const builder = new GraphBuilder();
|
|
503
551
|
const details: ExecutionGraphDetailsMap = {};
|
|
@@ -517,6 +565,24 @@ const spanTreeToCommits = (
|
|
|
517
565
|
|
|
518
566
|
const findParentSpan = (span: Span): Span | null => parentBySpan.get(span) ?? null;
|
|
519
567
|
|
|
568
|
+
const collapsedSpanIds = new Set<string>();
|
|
569
|
+
walkSpanTree(root, (span) => {
|
|
570
|
+
if (isCollapsibleSpan(span, findParentSpan(span), collapseCompletedSpans)) {
|
|
571
|
+
collapsedSpanIds.add(span.id);
|
|
572
|
+
}
|
|
573
|
+
});
|
|
574
|
+
|
|
575
|
+
const isUnderCollapsedAncestor = (span: Span): boolean => {
|
|
576
|
+
let ancestor = findParentSpan(span);
|
|
577
|
+
while (ancestor) {
|
|
578
|
+
if (collapsedSpanIds.has(ancestor.id)) {
|
|
579
|
+
return true;
|
|
580
|
+
}
|
|
581
|
+
ancestor = findParentSpan(ancestor);
|
|
582
|
+
}
|
|
583
|
+
return false;
|
|
584
|
+
};
|
|
585
|
+
|
|
520
586
|
// The branch name for a span is its pid — multiple sequential spans of the same process
|
|
521
587
|
// (e.g. successive agent requests in one session) share a branch so they reuse a single lane.
|
|
522
588
|
const branchOf = (span: Span | null): string => {
|
|
@@ -526,6 +592,9 @@ const spanTreeToCommits = (
|
|
|
526
592
|
return span.meta.pid ?? span.id;
|
|
527
593
|
};
|
|
528
594
|
|
|
595
|
+
// Track the id of the begin commit for each non-collapsible span so the end commit can merge into it.
|
|
596
|
+
const beginCommitIdBySpan = new Map<string, string>();
|
|
597
|
+
|
|
529
598
|
// Selector that returns "the most recent commit in this span's structural context".
|
|
530
599
|
//
|
|
531
600
|
// The walk is structural (pid/parentPid), not topological: at each ancestor, we prefer
|
|
@@ -551,29 +620,60 @@ const spanTreeToCommits = (
|
|
|
551
620
|
);
|
|
552
621
|
};
|
|
553
622
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
event: Trace.FlatEvent;
|
|
559
|
-
eventIndex: number;
|
|
560
|
-
globalIndex: number;
|
|
561
|
-
}
|
|
562
|
-
const stream: EventCursor[] = [];
|
|
563
|
-
walkSpanTree(root, (span) => {
|
|
564
|
-
span.events.forEach((event, eventIndex) => {
|
|
565
|
-
stream.push({ span, event, eventIndex, globalIndex: stream.length });
|
|
566
|
-
});
|
|
567
|
-
});
|
|
568
|
-
stream.sort((a, b) => a.event.timestamp - b.event.timestamp || a.globalIndex - b.globalIndex);
|
|
623
|
+
const lastCommitIdBySpan = new Map<string, string>();
|
|
624
|
+
let globalIndex = 0;
|
|
625
|
+
const insertedRunningPids = new Set<string>();
|
|
626
|
+
const activeProcessByPid = new Map(activeProcesses.map((process) => [process.pid, process]));
|
|
569
627
|
|
|
570
|
-
|
|
571
|
-
|
|
628
|
+
const emitRunningIndicator = (pid: Process.ID): void => {
|
|
629
|
+
if (insertedRunningPids.has(pid)) {
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
572
632
|
|
|
573
|
-
|
|
633
|
+
const process = activeProcessByPid.get(pid);
|
|
634
|
+
if (!process) {
|
|
635
|
+
return;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
if (
|
|
639
|
+
process.key === AGENT_PROCESS_KEY &&
|
|
640
|
+
Option.isSome(Annotation.getDictionary(process.params.annotations, Process.TargetAnnotation)) &&
|
|
641
|
+
(process.state === Process.State.RUNNING || process.state === Process.State.HYBERNATING)
|
|
642
|
+
) {
|
|
643
|
+
builder.addCommit({
|
|
644
|
+
id: `running:${process.pid}`,
|
|
645
|
+
branch: process.pid,
|
|
646
|
+
parents: builder.computeParents(
|
|
647
|
+
CommitSelector.branch(process.pid).pipe(CommitSelector.compose(CommitSelector.last())),
|
|
648
|
+
),
|
|
649
|
+
icon: ICONS.agentRequestRunning.icon,
|
|
650
|
+
level: ICONS.agentRequestRunning.level,
|
|
651
|
+
message: 'Generating...',
|
|
652
|
+
timestamp: new Date(),
|
|
653
|
+
tags: [SHIMMER_EFFECT_TAG],
|
|
654
|
+
});
|
|
655
|
+
insertedRunningPids.add(pid);
|
|
656
|
+
} else if (process.state === Process.State.RUNNING && builder.hasBranch(process.pid)) {
|
|
657
|
+
builder.addCommit({
|
|
658
|
+
id: `running:${process.pid}`,
|
|
659
|
+
branch: process.pid,
|
|
660
|
+
parents: builder.computeParents(
|
|
661
|
+
CommitSelector.branch(process.pid).pipe(CommitSelector.compose(CommitSelector.last())),
|
|
662
|
+
),
|
|
663
|
+
icon: ICONS.processRunning.icon,
|
|
664
|
+
level: ICONS.processRunning.level,
|
|
665
|
+
message: 'Running...',
|
|
666
|
+
timestamp: new Date(),
|
|
667
|
+
tags: [SHIMMER_EFFECT_TAG],
|
|
668
|
+
});
|
|
669
|
+
insertedRunningPids.add(pid);
|
|
670
|
+
}
|
|
671
|
+
};
|
|
672
|
+
|
|
673
|
+
const emitEventCommit = (span: Span, event: Trace.FlatEvent, eventIndex: number): void => {
|
|
574
674
|
const presentation = presentEvent(event, toolCallContext);
|
|
575
675
|
if (!presentation) {
|
|
576
|
-
|
|
676
|
+
return;
|
|
577
677
|
}
|
|
578
678
|
|
|
579
679
|
// Classify based on event TYPE, not array index. A pending span's trailing
|
|
@@ -583,11 +683,16 @@ const spanTreeToCommits = (
|
|
|
583
683
|
const isBeginEvent = isSpanBeginEvent(event);
|
|
584
684
|
const isEndEvent = isSpanEndEvent(event);
|
|
585
685
|
const parentSpan = findParentSpan(span);
|
|
586
|
-
const collapsible = isCollapsibleSpan(span, parentSpan);
|
|
686
|
+
const collapsible = isCollapsibleSpan(span, parentSpan, collapseCompletedSpans);
|
|
587
687
|
|
|
588
|
-
//
|
|
589
|
-
if (
|
|
590
|
-
|
|
688
|
+
// Descendants of a collapsed span emit no commits — inner activity is folded into the ancestor end row.
|
|
689
|
+
if (isUnderCollapsedAncestor(span)) {
|
|
690
|
+
return;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
// Collapsed spans: skip every event except the end commit.
|
|
694
|
+
if (collapsible && !isEndEvent) {
|
|
695
|
+
return;
|
|
591
696
|
}
|
|
592
697
|
|
|
593
698
|
const parentBranch = branchOf(parentSpan);
|
|
@@ -601,7 +706,7 @@ const spanTreeToCommits = (
|
|
|
601
706
|
// mid-stream would flash a throwaway lane.
|
|
602
707
|
const ownPid = span.meta.pid;
|
|
603
708
|
const parentPid = parentSpan?.meta.pid;
|
|
604
|
-
const spanHasMiddle = span.events.some((
|
|
709
|
+
const spanHasMiddle = span.events.some((spanEvent) => !isSpanBeginEvent(spanEvent) && !isSpanEndEvent(spanEvent));
|
|
605
710
|
const isProcessBoundary = ownPid != null && parentPid != null && ownPid !== parentPid && spanHasMiddle;
|
|
606
711
|
|
|
607
712
|
let branch: string;
|
|
@@ -651,7 +756,9 @@ const spanTreeToCommits = (
|
|
|
651
756
|
parents = builder.computeParents(lastInSpanContext(span));
|
|
652
757
|
}
|
|
653
758
|
|
|
654
|
-
const
|
|
759
|
+
const commitIndex = globalIndex++;
|
|
760
|
+
const commitId = formatCommitId(span, commitIndex, presentation.idSuffix);
|
|
761
|
+
const shimmer = shouldShimmerInProgressCommit(event, toolCallContext);
|
|
655
762
|
const commit: Commit = {
|
|
656
763
|
id: commitId,
|
|
657
764
|
branch,
|
|
@@ -660,47 +767,65 @@ const spanTreeToCommits = (
|
|
|
660
767
|
icon: presentation.icon,
|
|
661
768
|
level: presentation.level,
|
|
662
769
|
message: presentation.message,
|
|
770
|
+
...(shimmer && { tags: [SHIMMER_EFFECT_TAG] }),
|
|
663
771
|
};
|
|
664
772
|
builder.addCommit(commit);
|
|
665
773
|
details[commitId] = event;
|
|
774
|
+
lastCommitIdBySpan.set(span.id, commitId);
|
|
666
775
|
|
|
667
776
|
// Record begin commit so a later end event can merge into it.
|
|
668
777
|
if (isBeginEvent && !collapsible && span.id !== ROOT_SPAN_ID) {
|
|
669
778
|
beginCommitIdBySpan.set(span.id, commitId);
|
|
670
779
|
}
|
|
671
|
-
}
|
|
780
|
+
};
|
|
672
781
|
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
if (
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
(process.state === Process.State.RUNNING || process.state === Process.State.HYBERNATING)
|
|
679
|
-
) {
|
|
680
|
-
builder.addCommit({
|
|
681
|
-
id: `running:${process.pid}`,
|
|
682
|
-
branch: process.pid,
|
|
683
|
-
parents: builder.computeParents(
|
|
684
|
-
CommitSelector.branch(process.pid).pipe(CommitSelector.compose(CommitSelector.last())),
|
|
685
|
-
),
|
|
686
|
-
icon: ICONS.agentRequestRunning.icon,
|
|
687
|
-
level: ICONS.agentRequestRunning.level,
|
|
688
|
-
message: 'Generating...',
|
|
689
|
-
timestamp: new Date(),
|
|
690
|
-
});
|
|
691
|
-
} else if (process.state === Process.State.RUNNING && builder.hasBranch(process.pid)) {
|
|
692
|
-
builder.addCommit({
|
|
693
|
-
id: `running:${process.pid}`,
|
|
694
|
-
branch: process.pid,
|
|
695
|
-
parents: builder.computeParents(
|
|
696
|
-
CommitSelector.branch(process.pid).pipe(CommitSelector.compose(CommitSelector.last())),
|
|
697
|
-
),
|
|
698
|
-
icon: ICONS.processRunning.icon,
|
|
699
|
-
level: ICONS.processRunning.level,
|
|
700
|
-
message: 'Running...',
|
|
701
|
-
timestamp: new Date(),
|
|
702
|
-
});
|
|
782
|
+
const finishSpan = (span: Span): void => {
|
|
783
|
+
const pid = span.meta.pid;
|
|
784
|
+
if (pid) {
|
|
785
|
+
// Trace.Meta.pid is plain string (avoids circular dep); construct brand here.
|
|
786
|
+
emitRunningIndicator(Process.ID.make(pid));
|
|
703
787
|
}
|
|
788
|
+
|
|
789
|
+
if (span.id === ROOT_SPAN_ID || isCompletedSpan(span)) {
|
|
790
|
+
return;
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
if (pid && insertedRunningPids.has(pid)) {
|
|
794
|
+
return;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
const lastCommitId = lastCommitIdBySpan.get(span.id);
|
|
798
|
+
if (lastCommitId) {
|
|
799
|
+
builder.addTag(lastCommitId, SHIMMER_EFFECT_TAG);
|
|
800
|
+
}
|
|
801
|
+
};
|
|
802
|
+
|
|
803
|
+
const emitSpanCommits = (span: Span): void => {
|
|
804
|
+
for (let eventIndex = 0; eventIndex < span.events.length; eventIndex += 1) {
|
|
805
|
+
const event = span.events[eventIndex]!;
|
|
806
|
+
if (isSpanBeginEvent(event)) {
|
|
807
|
+
emitEventCommit(span, event, eventIndex);
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
for (const child of span.children) {
|
|
812
|
+
emitSpanCommits(child);
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
for (let eventIndex = 0; eventIndex < span.events.length; eventIndex += 1) {
|
|
816
|
+
const event = span.events[eventIndex]!;
|
|
817
|
+
if (!isSpanBeginEvent(event)) {
|
|
818
|
+
emitEventCommit(span, event, eventIndex);
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
finishSpan(span);
|
|
823
|
+
};
|
|
824
|
+
|
|
825
|
+
emitSpanCommits(root);
|
|
826
|
+
|
|
827
|
+
for (const process of activeProcesses) {
|
|
828
|
+
emitRunningIndicator(process.pid);
|
|
704
829
|
}
|
|
705
830
|
|
|
706
831
|
const { commits, branches } = builder.build();
|
|
@@ -870,6 +995,18 @@ class GraphBuilder {
|
|
|
870
995
|
this.#commits.push(commit);
|
|
871
996
|
}
|
|
872
997
|
|
|
998
|
+
addTag(commitId: string, tag: string) {
|
|
999
|
+
const index = this.#commits.findIndex((commit) => commit.id === commitId);
|
|
1000
|
+
if (index < 0) {
|
|
1001
|
+
return;
|
|
1002
|
+
}
|
|
1003
|
+
const commit = this.#commits[index]!;
|
|
1004
|
+
if (commit.tags?.includes(tag)) {
|
|
1005
|
+
return;
|
|
1006
|
+
}
|
|
1007
|
+
this.#commits[index] = { ...commit, tags: [...(commit.tags ?? []), tag] };
|
|
1008
|
+
}
|
|
1009
|
+
|
|
873
1010
|
/**
|
|
874
1011
|
* Computes parents — picks first matching commit's id.
|
|
875
1012
|
*/
|
|
@@ -3,32 +3,32 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
export {
|
|
6
|
-
CommitSelector,
|
|
7
|
-
buildExecutionGraph,
|
|
8
|
-
collectProcessActivityLines,
|
|
9
|
-
deriveInFlightActivityLine,
|
|
10
6
|
type BuildExecutionGraphParams,
|
|
11
7
|
type CollectProcessActivityOptions,
|
|
8
|
+
CommitSelector,
|
|
12
9
|
type ExecutionGraph,
|
|
13
10
|
type ExecutionGraphDetailsMap,
|
|
11
|
+
buildExecutionGraph,
|
|
12
|
+
collectProcessActivityLines,
|
|
13
|
+
deriveInFlightActivityLine,
|
|
14
14
|
} from './execution-graph';
|
|
15
15
|
export {
|
|
16
|
+
type EphemeralStatusUpdate,
|
|
16
17
|
estimateTokenCount,
|
|
17
18
|
formatPendingBlockStatus,
|
|
18
19
|
pendingStatusFromEphemeralMessage,
|
|
19
20
|
resolveEphemeralStatusUpdate,
|
|
20
|
-
type EphemeralStatusUpdate,
|
|
21
21
|
} from './pending-block-status';
|
|
22
22
|
export {
|
|
23
23
|
BEGIN_EVENT_TYPES,
|
|
24
|
+
type BuildSpanTreeOptions,
|
|
24
25
|
END_EVENT_TYPES,
|
|
25
26
|
ROOT_SPAN_ID,
|
|
27
|
+
type Span,
|
|
28
|
+
type SpanMeta,
|
|
26
29
|
buildSpanTree,
|
|
27
30
|
flattenSpanTree,
|
|
28
31
|
isSpanBeginEvent,
|
|
29
32
|
isSpanEndEvent,
|
|
30
33
|
walkSpanTree,
|
|
31
|
-
type BuildSpanTreeOptions,
|
|
32
|
-
type Span,
|
|
33
|
-
type SpanMeta,
|
|
34
34
|
} from './span-tree';
|
|
@@ -9,7 +9,7 @@ import { describe, test } from 'vitest';
|
|
|
9
9
|
import { AgentRequestBegin, AgentRequestEnd } from '@dxos/assistant';
|
|
10
10
|
import { Trace } from '@dxos/compute';
|
|
11
11
|
|
|
12
|
-
import { ROOT_SPAN_ID, buildSpanTree, flattenSpanTree } from './span-tree';
|
|
12
|
+
import { ROOT_SPAN_ID, buildSpanTree, collectSpanTreeEventsCategorically, flattenSpanTree } from './span-tree';
|
|
13
13
|
import { collectTraceEvents, withMeta } from './testing';
|
|
14
14
|
|
|
15
15
|
const NoteEvent = Trace.EventType('note', {
|
|
@@ -246,4 +246,36 @@ describe('buildSpanTree', () => {
|
|
|
246
246
|
expect(order[2].meta.pid).toBe('op-1');
|
|
247
247
|
expect(order).toHaveLength(3);
|
|
248
248
|
});
|
|
249
|
+
|
|
250
|
+
test('collectSpanTreeEventsCategorically emits begin, child subtrees, then remaining events', ({ expect }) => {
|
|
251
|
+
const messages = collectTraceEvents(
|
|
252
|
+
Effect.gen(function* () {
|
|
253
|
+
yield* withMeta({ pid: 'parent-1' }, Trace.write(Trace.OperationStart, { key: 'parent', name: 'Parent' }));
|
|
254
|
+
yield* withMeta(
|
|
255
|
+
{ pid: 'child-1', parentPid: 'parent-1' },
|
|
256
|
+
Effect.gen(function* () {
|
|
257
|
+
yield* Trace.write(Trace.OperationStart, { key: 'child', name: 'Child' });
|
|
258
|
+
yield* Trace.write(Trace.OperationEnd, { key: 'child', name: 'Child', outcome: 'success' });
|
|
259
|
+
}),
|
|
260
|
+
);
|
|
261
|
+
yield* withMeta(
|
|
262
|
+
{ pid: 'parent-1' },
|
|
263
|
+
Trace.write(Trace.OperationEnd, { key: 'parent', name: 'Parent', outcome: 'success' }),
|
|
264
|
+
);
|
|
265
|
+
}),
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
const tree = buildSpanTree(messages);
|
|
269
|
+
const order = collectSpanTreeEventsCategorically(tree).map(({ span, event }) => ({
|
|
270
|
+
pid: span.meta.pid ?? ROOT_SPAN_ID,
|
|
271
|
+
type: event.type,
|
|
272
|
+
}));
|
|
273
|
+
|
|
274
|
+
expect(order).toEqual([
|
|
275
|
+
{ pid: 'parent-1', type: Trace.OperationStart.key },
|
|
276
|
+
{ pid: 'child-1', type: Trace.OperationStart.key },
|
|
277
|
+
{ pid: 'child-1', type: Trace.OperationEnd.key },
|
|
278
|
+
{ pid: 'parent-1', type: Trace.OperationEnd.key },
|
|
279
|
+
]);
|
|
280
|
+
});
|
|
249
281
|
});
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { AgentRequestBegin, AgentRequestEnd } from '@dxos/assistant';
|
|
6
6
|
import { Trace } from '@dxos/compute';
|
|
7
|
+
import { EID } from '@dxos/keys';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Synthetic id assigned to the root span.
|
|
@@ -54,8 +55,8 @@ const computeMeta = (rawMeta: Trace.Meta): SpanMeta => ({
|
|
|
54
55
|
pid: rawMeta.pid,
|
|
55
56
|
parentPid: rawMeta.parentPid,
|
|
56
57
|
processName: rawMeta.processName,
|
|
57
|
-
conversationId: rawMeta.
|
|
58
|
-
triggerId: rawMeta.
|
|
58
|
+
conversationId: rawMeta.conversation ? EID.getEntityId(EID.parse(rawMeta.conversation.uri)) : undefined,
|
|
59
|
+
triggerId: rawMeta.trigger ? EID.getEntityId(EID.parse(rawMeta.trigger.uri)) : undefined,
|
|
59
60
|
toolCallId: rawMeta.toolCallId,
|
|
60
61
|
runtimeName: rawMeta.runtimeName,
|
|
61
62
|
});
|
|
@@ -249,6 +250,46 @@ const applyEventLimit = (events: readonly Trace.FlatEvent[], eventLimit: number
|
|
|
249
250
|
const isBoundary = (event: Trace.FlatEvent): boolean =>
|
|
250
251
|
BEGIN_EVENT_TYPES.has(event.type) || END_EVENT_TYPES.has(event.type);
|
|
251
252
|
|
|
253
|
+
/**
|
|
254
|
+
* A single event positioned within the span tree for commit emission.
|
|
255
|
+
*/
|
|
256
|
+
export interface SpanEventCursor {
|
|
257
|
+
readonly span: Span;
|
|
258
|
+
readonly event: Trace.FlatEvent;
|
|
259
|
+
readonly eventIndex: number;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Flattens span-tree events in categorical (depth-first) order: each span's begin events, its
|
|
264
|
+
* child subtrees in sibling order, then its remaining events (middle and end).
|
|
265
|
+
*/
|
|
266
|
+
export const collectSpanTreeEventsCategorically = (root: Span): SpanEventCursor[] => {
|
|
267
|
+
const stream: SpanEventCursor[] = [];
|
|
268
|
+
|
|
269
|
+
const visitSpan = (span: Span): void => {
|
|
270
|
+
for (let eventIndex = 0; eventIndex < span.events.length; eventIndex += 1) {
|
|
271
|
+
const event = span.events[eventIndex]!;
|
|
272
|
+
if (isSpanBeginEvent(event)) {
|
|
273
|
+
stream.push({ span, event, eventIndex });
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
for (const child of span.children) {
|
|
278
|
+
visitSpan(child);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
for (let eventIndex = 0; eventIndex < span.events.length; eventIndex += 1) {
|
|
282
|
+
const event = span.events[eventIndex]!;
|
|
283
|
+
if (!isSpanBeginEvent(event)) {
|
|
284
|
+
stream.push({ span, event, eventIndex });
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
visitSpan(root);
|
|
290
|
+
return stream;
|
|
291
|
+
};
|
|
292
|
+
|
|
252
293
|
/**
|
|
253
294
|
* Walks the span tree in depth-first pre-order, invoking `visit` for each span (root included).
|
|
254
295
|
*/
|
|
@@ -24,26 +24,26 @@ describe('sub-agent delegation fixture', () => {
|
|
|
24
24
|
expect(`\n${renderTimelineAscii(commits, branches)}\n`).toMatchInlineSnapshot(`
|
|
25
25
|
"
|
|
26
26
|
● [atom] Agent processing request...
|
|
27
|
-
├──● [info] Get Agent Context
|
|
27
|
+
├──● [info] Get Agent Context
|
|
28
|
+
│ ● [info] Get Agent Context
|
|
29
|
+
│ ● [check-square-offset] Update tasks
|
|
30
|
+
│ ● [info] Get Agent Context
|
|
31
|
+
│ ● [share-network] Delegate task
|
|
32
|
+
│ ● [info] Get Agent Context
|
|
33
|
+
│ ├──● [brain] Run Routine
|
|
34
|
+
│ │ ● [info] Get Agent Context
|
|
35
|
+
│ │ ● [info] Get Agent Context
|
|
36
|
+
│ │ ● [file-text] Create
|
|
37
|
+
│ │ ● [info] Get Agent Context
|
|
38
|
+
│ │ ● [plus] Add artifact - Error
|
|
39
|
+
│ │ ● [info] Get Agent Context
|
|
40
|
+
│ │ ● [info] Get Agent Context
|
|
41
|
+
│ │ ● [user] Complete the following task and report the result concisely.
|
|
42
|
+
│ │ ● [wrench] completeJob
|
|
43
|
+
◆──┼──╯ [brain] Run Routine
|
|
28
44
|
│ ● [user] create a sub-agent that creates a haiku in a new document
|
|
29
|
-
│ ● [info] Get Agent Context - Success
|
|
30
|
-
│ ● [check-square-offset] Update tasks - Success
|
|
31
|
-
│ ● [info] Get Agent Context - Success
|
|
32
|
-
│ ● [share-network] Delegate task - Success
|
|
33
|
-
│ ● [info] Get Agent Context - Success
|
|
34
45
|
◆──╯ [atom] Agent completed request
|
|
35
|
-
|
|
36
|
-
│ ● [info] Get Agent Context - Success
|
|
37
|
-
│ ● [user] Complete the following task and report the result concisely.
|
|
38
|
-
│ ● [info] Get Agent Context - Success
|
|
39
|
-
● │ [pencil] Update Chat Name - Success
|
|
40
|
-
│ ● [file-text] Create - Success
|
|
41
|
-
│ ● [info] Get Agent Context - Success
|
|
42
|
-
│ ● [plus] Add artifact - Error
|
|
43
|
-
│ ● [info] Get Agent Context - Success
|
|
44
|
-
│ ● [wrench] completeJob - Success
|
|
45
|
-
│ ● [info] Get Agent Context - Success
|
|
46
|
-
◆─────╯ [brain] Run Routine - Success
|
|
46
|
+
● [pencil] Update Chat Name
|
|
47
47
|
"
|
|
48
48
|
`);
|
|
49
49
|
});
|
|
@@ -53,7 +53,7 @@ describe('sub-agent delegation fixture', () => {
|
|
|
53
53
|
const lines = collectProcessActivityLines(messages, subAgentPid);
|
|
54
54
|
expect(lines.length).toBeGreaterThan(0);
|
|
55
55
|
expect(lines).toContain('Run Routine');
|
|
56
|
-
expect(lines[lines.length - 1]).
|
|
56
|
+
expect(lines[lines.length - 1]).toBe('Run Routine');
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
test('derives in-flight operation before completion', ({ expect }) => {
|
package/src/extensions/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { syntaxTree } from '@codemirror/language';
|
|
6
|
-
import {
|
|
6
|
+
import { type Extension, Facet, type Range } from '@codemirror/state';
|
|
7
7
|
import { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';
|
|
8
8
|
|
|
9
9
|
import { Domino } from '@dxos/ui';
|