# aichat — the assistant, as an app. # # One conversation that drives every application through the AI services # layer. It is hosted three ways with one code base: under the window # manager as a special child seated in the pane slot (this binary, # `--stdin-loop`), standalone as its own window (this binary), and inside # any app's Window as the F10 overlay or inside the mobile/web superbuild # (this crate's lib, `makepad_app_aichat::script_mod` + `AiChatPanel{}`). # # The panel widget OWNS the engine: the service registry, the model, the # transcript. Hosts only feed it links (in-process) or bus frames (the # window manager's studio Custom frames) and give it a place to draw. # # Plan of record: repo-root aicontrol.md. [package] name = "makepad-app-aichat" version = "0.1.0" edition = "2021" license = "MIT OR Apache-2.0" default-run = "makepad-app-aichat" [lib] name = "makepad_app_aichat" path = "src/lib.rs" [[bin]] name = "makepad-app-aichat" path = "src/main.rs" [features] default = ["tweaker", "engine", "gen"] # The design overlay (Shift+F10 with the dev overlays on). On for development # builds; the Builder's releases build without it (--no-default-features). tweaker = ["dep:makepad-widgets-tweaker", "makepad-widgets/data", "makepad-widgets/dock", "makepad-widgets/fab"] # The chat backends: the person's own Claude Code / Codex CLIs, Claude # Desktop over MCP, the Claude API. No model runtime. Off for a build # without any backend — the web page answers with NoModel and the tool # console still works. engine = ["makepad-ai-services/engine"] # The machine's own model (Qwen through the hub's local runtime: the llm # crate, the Metal/CUDA stores and their kernel builds). Off by default; # an app that hosts the chat forwards its own `localai` feature here. localai = ["engine", "makepad-ai-services/localai"] # The assistant's own `gen` service (src/gen.rs): the hub's one-job runner # picks a fleet node and brings the picture back. gen = ["dep:makepad-ai-hub"] [dependencies] # The `ai` family is the F10 slot this chat fills: an app gets the slot by # linking the chat, and no other app has it. makepad-widgets = { path = "../../widgets", default-features = false, features = ["rich_text", "ai"] } makepad-widgets-tweaker = { path = "../../widgets/families/tweaker", optional = true } makepad-wm-api = { path = "../../libs/wm_api" } makepad-ai-services = { path = "../../libs/ai/services", default-features = false, features = ["platform"] } makepad-strict-json = { path = "../../libs/strict_json" } # The fleet client behind `gen`. Native only. makepad-ai-hub = { path = "../../libs/ai/hub", default-features = false, optional = true }