mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-09-15 00:19:14 +00:00
* feat: add scoped conversation reads to gateway runs * refactor: share conversation tool path and reuse parsed text --------- Co-authored-by: Totoro-qaq <279883115+Totoro-qaq@users.noreply.github.com>
71 lines
3.8 KiB
Python
71 lines
3.8 KiB
Python
"""Shared runtime protocol constants."""
|
|
|
|
DEFAULT_SKILLS_CONTAINER_PATH = "/mnt/skills"
|
|
|
|
# Host-only per-run capability. Keep this dependency-free: the runtime worker
|
|
# must not initialize the tool/subagent packages while importing this key.
|
|
CONVERSATION_READER_CONTEXT_KEY = "__conversation_reader"
|
|
CONVERSATION_TOOL_USE = "deerflow.tools.conversation:read_conversation"
|
|
|
|
# Hidden subdirectory (under a thread's outputs dir) that holds the browser
|
|
# tools' per-step screenshots. These are transient live-progress frames, not
|
|
# deliverables, so the workspace-changes scanner excludes this directory. Both
|
|
# the browser tools (which write here) and the scanner (which ignores it) import
|
|
# this single source of truth so the name cannot drift between them.
|
|
BROWSER_FRAMES_DIRNAME = ".browser-frames"
|
|
|
|
# Default subdirectory (under a thread's outputs dir) where the tool-output
|
|
# budget middleware persists oversized tool outputs. These are process
|
|
# feedback the model reads back via ``read_file`` (the budget preview carries
|
|
# the reference), not deliverables, so the workspace-changes scanner excludes
|
|
# this directory and run delivery verification never counts it as a produced
|
|
# artifact. Both the budget middleware's default ``storage_subdir`` and the
|
|
# scanner import this single source of truth so the name cannot drift between
|
|
# them; a custom configured ``storage_subdir`` is threaded through the
|
|
# snapshot capture as an extra excluded dir name.
|
|
TOOL_RESULTS_DIRNAME = ".tool-results"
|
|
|
|
# Hidden directory under a thread workspace owned by stdio MCP runtimes. The
|
|
# default subprocess temp directory lives at ``.mcp/tmp``; these files are
|
|
# process-internal state rather than workspace deliverables, so the
|
|
# workspace-changes scanner excludes the whole reserved namespace. MCP launch
|
|
# paths and the scanner share this name so writes and filtering cannot drift.
|
|
MCP_INTERNAL_DIRNAME = ".mcp"
|
|
|
|
# Default subprocess temp subdirectory pinned into stdio MCP environments
|
|
# (``TMPDIR``/``TMP``/``TEMP``). Both stdio launch paths (persistent sessions
|
|
# and background task calls) import this instead of composing the suffix
|
|
# themselves. Pinning the process temp dir here (alongside its cwd) makes
|
|
# tools that write to ``os.tmpdir()`` / ``tempfile.gettempdir()`` land inside
|
|
# the mounted user-data tree, where their output is resolvable by the
|
|
# sandbox/artifact API — instead of on an unreachable host temp path.
|
|
MCP_TMP_SUBDIR = f"{MCP_INTERNAL_DIRNAME}/tmp"
|
|
|
|
# Default timeout (seconds) for MCP server bring-up: tool discovery (subprocess
|
|
# spawn + initialize + tools/list) and persistent-session initialization. A hung
|
|
# stdio server (e.g. npx blocked on a package download or a server that never
|
|
# answers initialize) would otherwise block agent construction forever — and on
|
|
# the Gateway event loop, the whole process. Per-server override is
|
|
# ``mcpServers.<name>.session_init_timeout``; ``None`` disables the timeout.
|
|
DEFAULT_MCP_SESSION_INIT_TIMEOUT = 60.0
|
|
|
|
# Durable MCP task storage/protocol limits. The runtime validators and ORM use
|
|
# the same constants so SQLite cannot accept values that PostgreSQL later
|
|
# rejects at its VARCHAR boundaries.
|
|
MCP_TASK_SERVER_NAME_MAX_LENGTH = 128
|
|
MCP_TASK_REMOTE_ID_MAX_LENGTH = 255
|
|
MCP_TASK_NAME_MAX_LENGTH = 255
|
|
MCP_TASK_RESULT_ARTIFACT_MAX_BYTES = 65_536
|
|
MCP_TASK_POLL_AFTER_MAX_SECONDS = 86_400
|
|
|
|
# Persisted run-event envelope limits. Runtime definitions and the ORM both
|
|
# import these from this dependency-free module so lower layers never need to
|
|
# initialize deerflow.runtime just to validate storage constraints.
|
|
RUN_EVENT_TYPE_MAX_LENGTH = 32
|
|
RUN_EVENT_CATEGORY_MAX_LENGTH = 16
|
|
|
|
# Workspace changes are produced below the runtime layer, so their persisted
|
|
# event identity also lives here rather than in the runtime event catalog.
|
|
WORKSPACE_CHANGES_EVENT_TYPE = "workspace_changes"
|
|
WORKSPACE_CHANGES_EVENT_CATEGORY = "workspace"
|