class OpenCadAgentService:
def __init__(
self,
planner: OpenCadPlanner | None = None,
*,
kernel_call: KernelCall | None = None,
live_kernel: bool | None = None,
llm_client: LiteLlmProvider | None = None,
) -> None:
def chat(self, request: ChatRequest) -> ChatResponse:
_system_prompt = build_system_prompt(request.tree_state)
runtime = ToolRuntime(
request.tree_state,
kernel_call=self.kernel_call,
live_kernel=self.live_kernel,
)
if request.generate_code:
generated_code = self._generate_code(request)
new_tree, operations = self._run_generated_code(generated_code, request.tree_state)
return ChatResponse(
response=generated_code,
generated_code=generated_code,
operations_executed=operations,
new_tree_state=new_tree,
)
response_text, operations = self.planner.execute(
message=request.message,
runtime=runtime,
reasoning=request.reasoning,
)
return ChatResponse(
response=response_text,
operations_executed=operations,
new_tree_state=runtime.get_tree_state(),
)
print("outer kernel_call:", self.kernel_call)
service = OpenCadAgentService(kernel_call=self.kernel_call, live_kernel=True)
print("service.live_kernel:", service.live_kernel)
print("service.kernel_call:", service.kernel_call)
# then somewhere inside the service, where the runtime is constructed:
print("runtime._use_live_kernel:", runtime._use_live_kernel)
outer kernel_call: None
service.live_kernel: True
service.kernel_call: None
runtime._use_live_kernel: False