Spaces:
Build error
Build error
| import { setCurrentAgentState } from "#/state/agent-slice"; | |
| import { setUrl, setScreenshotSrc } from "#/state/browser-slice"; | |
| import store from "#/store"; | |
| import { ObservationMessage } from "#/types/message"; | |
| import { appendOutput } from "#/state/command-slice"; | |
| import { appendJupyterOutput } from "#/state/jupyter-slice"; | |
| import ObservationType from "#/types/observation-type"; | |
| export function handleObservationMessage(message: ObservationMessage) { | |
| switch (message.observation) { | |
| case ObservationType.RUN: { | |
| if (message.extras.hidden) break; | |
| let { content } = message; | |
| if (content.length > 5000) { | |
| const head = content.slice(0, 5000); | |
| content = `${head}\r\n\n... (truncated ${message.content.length - 5000} characters) ...`; | |
| } | |
| store.dispatch(appendOutput(content)); | |
| break; | |
| } | |
| case ObservationType.RUN_IPYTHON: | |
| store.dispatch( | |
| appendJupyterOutput({ | |
| content: message.content, | |
| imageUrls: Array.isArray(message.extras?.image_urls) | |
| ? message.extras.image_urls | |
| : undefined, | |
| }), | |
| ); | |
| break; | |
| case ObservationType.BROWSE: | |
| case ObservationType.BROWSE_INTERACTIVE: | |
| if (message.extras?.screenshot) { | |
| store.dispatch(setScreenshotSrc(message.extras?.screenshot)); | |
| } | |
| if (message.extras?.url) { | |
| store.dispatch(setUrl(message.extras.url)); | |
| } | |
| break; | |
| case ObservationType.AGENT_STATE_CHANGED: | |
| store.dispatch(setCurrentAgentState(message.extras.agent_state)); | |
| break; | |
| case ObservationType.DELEGATE: | |
| case ObservationType.READ: | |
| case ObservationType.EDIT: | |
| case ObservationType.THINK: | |
| case ObservationType.NULL: | |
| case ObservationType.RECALL: | |
| case ObservationType.ERROR: | |
| case ObservationType.MCP: | |
| break; // We don't display the default message for these observations | |
| default: | |
| break; | |
| } | |
| if (!message.extras?.hidden) { | |
| // Convert the message to the appropriate observation type | |
| const { observation } = message; | |
| switch (observation) { | |
| case "browse": | |
| if (message.extras?.screenshot) { | |
| store.dispatch(setScreenshotSrc(message.extras.screenshot)); | |
| } | |
| if (message.extras?.url) { | |
| store.dispatch(setUrl(message.extras.url)); | |
| } | |
| break; | |
| case "browse_interactive": | |
| if (message.extras?.screenshot) { | |
| store.dispatch(setScreenshotSrc(message.extras.screenshot)); | |
| } | |
| if (message.extras?.url) { | |
| store.dispatch(setUrl(message.extras.url)); | |
| } | |
| break; | |
| default: | |
| // For any unhandled observation types, just ignore them | |
| break; | |
| } | |
| } | |
| } | |