Spaces:
Sleeping
Sleeping
Commit History
-
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 -
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
-
refactor: update test fixtures to use Pydantic models
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>beda709 -
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 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 -
feat: add memory recall/remember, planning, and collaboration to Flow
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>923cd86 -
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 -
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 -
test: verify plan/approve preserves notes field
c2479cb -
feat: add notes field to DesignPlan and field_agents config
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>e43a92b -
fix: prevent question card loop when agent mentions keywords as context
- Add finish category to _is_category_satisfied (checks constraints for surface finish entries) - Add anti-loop protection: skip cards for categories whose keywords appear in the user's current message (they just answered it) - Pass user_message through to generate_question_cards in both crew and fallback paths Fixes: CNC agent mentioning "surface finish" and "Ra" in NOT READY context text caused the gap analyzer to repeatedly show a finish card even after the user answered it. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>e65e6f8 -
feat: integrate gap analyzer into orchestrator, update CNC/CAM NOT READY prompts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>15c16a0 -
feat: add gap analyzer with analyze_gaps() and generate_question_cards()
Implements the gap analyzer module that scans agent NOT READY: responses, classifies missing design info into categories, deduplicates across agents, and generates structured question cards filtered against current design state. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>523f06c -
feat: add GapAnalysisConfig to settings with category keywords and agents
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>a2d6335 -
feat: add 3MF export and /api/models/{name}.3mf endpoint
- Add export_3mf() function to core/executor.py for slicer-ready 3MF format - Update export_all() to include 3MF alongside STEP and STL - Add GET /api/models/{name}.3mf endpoint to server/web.py - Add TestExport3MF test class with test_export_3mf and test_export_all_includes_3mf tests - All 217 tests pass including 2 new 3MF-specific tests This adds 3MF support for Cura/PrusaSlicer/Bambu Studio compatibility.38cfebe -
feat: add planning phase branching to CrewOrchestrator
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>ae64dca -
feat: add /api/plan/approve and /api/plan/reject endpoints
Add two new API endpoints enabling the frontend planning review gate: - POST /api/plan/approve: merges an (optionally edited) DesignPlan into DesignState, sets phase="approved" - POST /api/plan/reject: resets DesignState phase to "exploring" and clears the plan field Also adds PlanApproveRequest and PlanRejectRequest Pydantic models, and three new test cases covering phase transitions and plan merging. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>2d9cf0c -
feat: add DesignPlan model, compute_score(), phase/plan fields to DesignState
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>eb89dca -
feat: add PlanningConfig to settings with threshold, weights, caps
Introduces PlanningConfig Pydantic model with scoring weights, dimension/feature/constraint caps, trigger keywords, and approved agents list. Adds planning section to config.yaml and planning field to Settings. Tests written TDD-style, all 198 tests pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>8f354fe -
refactor: eliminate all Serializer classes, use Pydantic model_dump() directly
- Delete core/serializers.py entirely - Remove CAMResultSerializer from core/cam.py - ExecutionResult uses Field(serialization_alias=...) + model_dump(by_alias=True) - CNCValidationResult uses @computed_field for error_count/warning_count - All callers updated: .model_dump() replaces Serializer.to_dict() - 196 tests passing, zero Serializer references remain Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>2330e12 -
refactor: typed Pydantic config + Pydantic result models, eliminate dict access
- Replace all dict[str, Any] config fields with typed Pydantic sub-models (ServerConfig, PathsConfig, BackendsConfig, OrchestrationConfig, ValidationConfig, ExportConfig, CAMConfig, AgentConfig, RoutingConfig) - Convert ExecutionResult, CNCValidationResult, CNCIssue, CAMResult from dataclasses to Pydantic BaseModel with to_api_dict() methods - Simplify serializers to thin wrappers calling to_api_dict() - Update all 8 consumer files from dict bracket/get access to attribute access - 197 tests passing Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>e660ef7
-
test: replace SingleCallOrchestrator tests with CrewOrchestrator tests
b5b542e -
feat(tools): add generate_gcode_tool, store last shape on execution
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>7ac569f -
feat(cam): add CAMPlan Pydantic model for structured output
9f38d9a -
fix: update max_tokens test to match config value (8192)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>f606cc0 -
feat(cam): add CAM agent definition and cam config section
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>597f742 -
feat(cam): add generate_gcode function with ocp-freecad-cam wrapper
Wraps ocp-freecad-cam to convert CadQuery shapes into G-code strings. Loads default tool config, post-processor, and stock offset from config.yaml cam section with hardcoded fallbacks. Returns CAMResult with graceful failure when ocp-freecad-cam is not installed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>31d5bcb -
feat(cam): add CAMResult dataclass and serializer
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>f259b88 -
feat: add CrewAI CadQuery tools — execute_cad_tool, validate_cad_tool
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>9304064 -
feat: complete LLM adapter — enable function calling, add vision support
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>46a70e8 -
feat: add BaseOrchestrator ABC
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>249942d -
feat: add RoutingEngine class with config-driven keywords
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>0746d8d -
feat: add BackendFactory registry for centralized backend creation
e787a71 -
feat: add serializers for execution and validation results
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>b9e909b -
feat: add type system — enums, dataclasses, LLMBackend ABC
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>5ed3a9a -
feat: add Settings singleton with config.yaml + .env loading
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>2888065 -
feat: expand keyword routing vocabulary for better agent selection
Add missing keywords: gear, bearing, flange, heatsink, bolt, shaft, surface finish, drill, tap, endmill, bracket, housing, etc. Includes 7 new routing tests verifying the improvements. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>b9f4a46 -
test: add end-to-end pipeline integration tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>312f084 -
test: add CadQuery executor and CNC validator integration tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>ef30000