Spaces:
Sleeping
Sleeping
Commit History
-
docs: add ArchAgent Phase 1 design spec
Greenfield successor to NeuralCAD targeting house-scale architectural design. Two-service architecture (web + Blender worker), LangGraph agent orchestration, HouseSpec Pydantic DSL with deterministic bpy translator, gallery + per-item persistence, chat + image inputs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>bdc65cb
-
fix: rewrite agent backstories to stop asking technical questions (#14)
Daniel Tu +1: Claude Opus 4.6 (1M context)Unverified signatureThe system_template added in #13 was overridden by the backstories in config.yaml which explicitly told agents to "ask the user about expected loads, critical dimensions" and listed clearance hole sizes as things to discuss. Gemini Flash follows the backstory (first, most detailed instruction) and ignores the later Question Guidelines. Root fix: reframe backstories so technical knowledge is "I will derive" rather than "ask the user about". Agents now ask plain- language questions with concrete suggestions, then determine the engineering specs themselves. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>cc2146c -
feat: constrain agent questions to user-friendly abstraction level (#13)
Daniel Tu +1: Claude Opus 4.6 (1M context)Unverified signatureAgents and gap analyzer were asking overly technical questions like "What are the precise X, Y, Z coordinates for the M4 mounting holes?" — details only a CAD engineer would know. Users describe intent; agents should derive the technical parameters. - Add question abstraction rules to gap analyzer system prompt - Apply CrewAI system_template on advisory agents (design, engineering, cnc) via {{ .System }} / {{ .Prompt }} to preserve default behaviour while injecting question-level guidance - Improve part name extraction patterns in DesignState Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>afd1605 -
Merge pull request #12 from danghoangnhan/feat/ui-model-selector
Daniel TuUnverified signaturefeat: add model selector dropdown to UIe61ffd6 -
feat: add model selector dropdown to UI
Users can now pick which model to use per backend (e.g. gemini-2.5-flash vs gemini-2.5-pro) from a dropdown in the top bar. Available models are configured in config.yaml and served via GET /api/backend-models. Also adds .gitignore entries for Claude Code local files. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1f27d6a -
fix: exclude env source to prevent MEMORY collision on HF Spaces
HuggingFace Spaces injects a MEMORY env var that pydantic-settings tries to JSON-parse into our MemoryConfig field, crashing on startup. Disable EnvSettingsSource and read needed env vars manually. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>9f83e0b -
Merge pull request #11 from danghoangnhan/feat/frontend-gap-cards-pr
Daniel TuUnverified signaturefeat: frontend gap cards — generic renderer with severity indicators3cbdb67 -
feat: frontend gap cards — generic renderer with severity indicators
Removes hardcoded category-to-state mappings and dimension special-case. Frontend is now a dumb renderer — backend owns all state via extract_decisions(). Cards sorted by severity with visual indicators (blocking=red, nice_to_have=dim). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>3350418 -
feat: rewrite gap cards with severity support and generic rendering
Rewrite renderQuestionCards to sort by severity (blocking/recommended/ nice_to_have), add REQUIRED badges and color-coded borders, and render all categories generically. Simplify gapSubmitAll to format selections as plain text without mutating designState — the backend's extract_decisions() handles state updates on the next chat turn. Remove gapDimChanged and all category-specific special cases. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>a057d80 -
feat: add severity field to GeneratedQuestionCard
Adds a Literal["blocking", "recommended", "nice_to_have"] severity field (default "recommended") to GeneratedQuestionCard so the frontend receives severity directly on each card. Also updates the system prompt to instruct the LLM to mirror gap severity onto the corresponding question cards. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>54db1da -
docs: add frontend gap cards optimization plan
4-task plan: add severity to backend model, rewrite renderQuestionCards with generic rendering and severity support, simplify gapSubmitAll. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>2eba4bf -
docs: add frontend gap cards optimization design spec
Generic renderer with severity indicators, removing hardcoded category-to-state mappings and dimension special-case rendering. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1fdf00c -
feat: LLM-based gap analyzer replacing keyword matching
Replaces the keyword-based gap analyzer with a single structured LLM call that semantically detects missing design information and generates contextual question cards. Open-ended categories, configurable model, graceful fallback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>b8a5d56 -
docs: mark LLM gap analyzer spec as implemented
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>c28181f -
fix: pass max_tokens to LLM, add debug log for JSON parse fallback
Addresses code review findings: - max_tokens config was defined but not passed to crewai.LLM - JSON parse fallback now logs at debug level for diagnostics Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>a3f1aa5 -
feat: replace keyword gap analyzer with LLM-based analyze_gaps
Replace the old keyword-matching gap detection (MissingItem, GapAnalysis, QuestionCard, QUESTION_TEMPLATES, generate_question_cards) with an LLM-based approach using structured output via crewai.LLM.call(response_model=...). New models: DetectedGap, GeneratedQuestionCard, GapAnalysisResult. New function: analyze_gaps() now takes agent_responses + DesignState + user_message, calls the LLM with a system prompt, and returns a GapAnalysisResult with enriched agent metadata. Falls back to empty result on any LLM failure. Update callers in crew_orchestrator.py and agent_flow.py to use the new API (analyze_gaps returns question_cards directly, no separate generate_question_cards step). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>2919322 -
refactor: replace GapAnalysisConfig keyword fields with LLM model config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>964b35b -
docs: add LLM gap analyzer implementation plan
6-task TDD plan using crewai.LLM for structured output. Updated spec to reflect sync API and crewai.LLM (not litellm). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>bc7240a -
docs: add LLM-based gap analyzer design spec
Evolves the keyword-matching gap analyzer into a single structured LLM call with open-ended categories, contextual question generation, and configurable model selection. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>a93ca2c
-
refactor: update test fixtures to use Pydantic models
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>beda709 -
refactor: type server route request models with DesignState/DesignPlan
d1b7ccd -
refactor: update CrewOrchestrator to return ChatTurnResponse
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>98e04b1 -
refactor: update BaseOrchestrator and MockChatBackend to return ChatTurnResponse
Replace raw dict returns with typed Pydantic models throughout the orchestrator layer: BaseOrchestrator.chat_turn() now declares ChatTurnResponse return type, MockChatBackend builds and returns ChatTurnResponse directly, and _execute_cad_code returns PreviewData. Remove unused _format_response helper and AGENT_COLORS/NAMES/AVATARS imports. Bridge CrewOrchestrator._fallback() and server routes to handle the new typed returns until Tasks 9-10 complete their migration. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>6d4f152 -
refactor: type ContextVar design state as DesignState
Change set_design_state() and get_design_state() to use DesignState objects instead of dicts. Update QueryDesignStateTool._run() to use the state directly without reconstruction. Update callers in CrewOrchestrator to pass DesignState objects instead of model_dump(). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>83f3ff9 -
refactor: type analyze_gaps and extract_decisions with AgentResponse
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>a9d0aec -
feat: add PreviewData and ChatTurnResponse pydantic models
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>e1e8953 -
refactor: remove duplicate AgentResponse/ChatResult dataclasses from core/types
6657e32 -
refactor: convert PipelineResult from dataclass to Pydantic BaseModel
- Replace @dataclass with Pydantic BaseModel - Add model_config with arbitrary_types_allowed for ExecutionResult.cq.Workplane - Change exported_files default to Field(default_factory=dict) - Add TestPipelineResultModel with model_dump and default_exported_files tests - All 9 tests pass Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>2ebc6f1 -
refactor: convert AgentDef from dataclass to Pydantic BaseModel
b20b4ef -
refactor: add ToolConfig pydantic model, replace tool_config dicts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>cdccbe3 -
docs: add pydantic unification implementation plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1923201 -
Merge pull request #10 from danghoangnhan/feat/crewai-flow-memory-planning
Daniel TuUnverified signaturefeat: CrewAI Flow, Memory, Planning, Collaboration & Tool Migration46fb80d -
feat: add memory recall/remember, planning, and collaboration to Flow
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>923cd86 -
feat: remove raw history, add Memory to CrewOrchestrator
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>a79f922 -
refactor: migrate tools to BaseTool subclasses with args_schema
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1db1a69 -
refactor: extract derive_part_name, remove dead code from prompts.py
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>44c1e10 -
feat: add memory and crew config sections
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>4173448 -
docs: add memory/planning/collab/tools implementation plan
6 tasks: part name utility + dead code cleanup, config, tool migration to BaseTool, history removal + Memory creation, Flow memory/planning/ collaboration integration, final validation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>052f613 -
docs: add BaseTool migration to memory/planning/collab spec
Phase 1E: migrate @tool decorators to BaseTool subclasses with args_schema, fix validate_cad to use last shape, fix gcode operations to accept list. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>897ba1e -
docs: add memory, planning, and collaboration design spec
Covers pre-integration refactoring (dead code removal, history rendering, part name extraction, config) plus CrewAI Memory recall/remember, planning on Crews, and collaboration via allow_delegation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>4ebb6fc -
fix: address code review findings from Flow refactor
- Guard AgentResponse.from_agent() with descriptive ValueError for unknown IDs - Fix _run_single_agent_crew to handle CrewAI pydantic output correctly - Replace _format_response with AgentResponse in error path - Add test for GENERATORS_ONLY Flow path Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>9ff7a7c -
refactor: wire AgentDispatchFlow, remove RoutingEngine
Replace the inline Crew construction in CrewOrchestrator._run_crew with AgentDispatchFlow.kickoff(), remove the RoutingEngine class and its module-level singletons, and update MockChatBackend + all tests to use route_agents from agent_flow.py. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>b70c3c9 -
feat: add AgentDispatchFlow with router-gated agent dispatch
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>39c4d96 -
feat: add agent_flow models, routing, and readiness helpers
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>dd37dce -
docs: add CrewAI Flow refactor implementation plan
8 tasks: AgentResponse model, FlowState, routing, readiness checks, full AgentDispatchFlow, crew_orchestrator integration, RoutingEngine removal, and final validation. TDD throughout. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>58e84f7 -
docs: add RoutingEngine replacement to Flow refactor spec
Routing logic (keyword scoring, CAD triggers, mentions, approved phase) moves into Flow's @router(route_message) step, replacing RoutingEngine class and module-level singleton. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>9f111c1 -
docs: add CrewAI Flow refactor design spec
Approach A: Router-gated Flow replacing Crew.kickoff() with parallel advisory agents and readiness-gated generation agents. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>0a63fc5 -
Merge pull request #9 from danghoangnhan/fix/ask-agent-confirm-updates-plan-card
Daniel TuUnverified signaturefix: ask agent confirm now updates plan card fields516dd6f -
fix: ask agent confirm now correctly updates plan card fields
askAgentForField() and confirmRecommendation() both called sendMessage() which triggered a backend round-trip. The crew orchestrator blindly reset phase from "planning" to "exploring" and cleared the plan on any message, destroying the plan state before the auto-fill could take effect. - Add plan_context flag through the full backend chain so plan-field queries preserve the planning phase - confirmRecommendation() now updates locally instead of sending to backend, preventing the phase reset that broke auto-fill - sendMessage() accepts options param to pass planContext flag Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>cfa0cbb -
Merge pull request #8 from danghoangnhan/feat/editable-plan-card
Daniel TuUnverified signaturefeat: editable plan card with inline editing, agent assist, and notesf31dad3