mirror of
https://github.com/leonvanzyl/autocoder.git
synced 2026-02-05 08:23:08 +00:00
Complete project rebrand from AutoCoder to AutoForge, touching 62 files across Python backend, FastAPI server, React UI, documentation, config, and CI/CD. Key changes: - Rename autocoder_paths.py -> autoforge_paths.py with backward-compat migration from .autocoder/ -> .autoforge/ directories - Update registry.py to migrate ~/.autocoder/ -> ~/.autoforge/ global config directory with fallback support - Update security.py with fallback reads from legacy .autocoder/ paths - Rename .claude/commands and skills from gsd-to-autocoder-spec to gsd-to-autoforge-spec - Update all Python modules: client, prompts, progress, agent, orchestrator, server routers and services - Update React UI: package.json name, index.html title, localStorage keys, all documentation sections, component references - Update start scripts (bat/sh/py), examples, and .env.example - Update CLAUDE.md and README.md with new branding and paths - Update test files for new .autoforge/ directory structure - Transfer git remote from leonvanzyl/autocoder to AutoForgeAI/autoforge Backward compatibility preserved: legacy .autocoder/ directories are auto-detected and migrated on next agent start. Config fallback chain checks both new and old paths. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
58 lines
2.2 KiB
Python
58 lines
2.2 KiB
Python
"""
|
|
Chat Session Constants
|
|
======================
|
|
|
|
Shared constants for all chat session types (assistant, spec, expand).
|
|
|
|
The canonical ``API_ENV_VARS`` list lives in ``env_constants.py`` at the
|
|
project root and is re-exported here for convenience so that existing
|
|
imports (``from .chat_constants import API_ENV_VARS``) continue to work.
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
from typing import AsyncGenerator
|
|
|
|
# -------------------------------------------------------------------
|
|
# Root directory of the autoforge project (repository root).
|
|
# Used throughout the server package whenever the repo root is needed.
|
|
# -------------------------------------------------------------------
|
|
ROOT_DIR = Path(__file__).parent.parent.parent
|
|
|
|
# Ensure the project root is on sys.path so we can import env_constants
|
|
# from the root-level module without requiring a package install.
|
|
_root_str = str(ROOT_DIR)
|
|
if _root_str not in sys.path:
|
|
sys.path.insert(0, _root_str)
|
|
|
|
# -------------------------------------------------------------------
|
|
# Environment variables forwarded to Claude CLI subprocesses.
|
|
# Single source of truth lives in env_constants.py at the project root.
|
|
# Re-exported here so existing ``from .chat_constants import API_ENV_VARS``
|
|
# imports continue to work unchanged.
|
|
# -------------------------------------------------------------------
|
|
from env_constants import API_ENV_VARS # noqa: E402, F401
|
|
|
|
|
|
async def make_multimodal_message(content_blocks: list[dict]) -> AsyncGenerator[dict, None]:
|
|
"""Yield a single multimodal user message in Claude Agent SDK format.
|
|
|
|
The Claude Agent SDK's ``query()`` method accepts either a plain string
|
|
or an ``AsyncIterable[dict]`` for custom message formats. This helper
|
|
wraps a list of content blocks (text and/or images) in the expected
|
|
envelope.
|
|
|
|
Args:
|
|
content_blocks: List of content-block dicts, e.g.
|
|
``[{"type": "text", "text": "..."}, {"type": "image", ...}]``.
|
|
|
|
Yields:
|
|
A single dict representing the user message.
|
|
"""
|
|
yield {
|
|
"type": "user",
|
|
"message": {"role": "user", "content": content_blocks},
|
|
"parent_tool_use_id": None,
|
|
"session_id": "default",
|
|
}
|