diff infinite_canvas/BUILD @ 280:49e9e591c9bb

Add persistent dictation, prewarmed WebRTC speech input, Copilot SDK routing, animated conversation lifecycle controls, parking, and architecture coverage.
author MrJuneJune <me@mrjunejune.com>
date Tue, 18 Aug 2026 19:14:53 -0700
parents 8d560f50ed4c
children c57149ad216e
line wrap: on
line diff
--- a/infinite_canvas/BUILD	Mon Aug 17 22:22:36 2026 -0700
+++ b/infinite_canvas/BUILD	Tue Aug 18 19:14:53 2026 -0700
@@ -2,6 +2,7 @@
 load("@rules_cc//cc:cc_library.bzl", "cc_library")
 load("@rules_cc//cc:cc_test.bzl", "cc_test")
 load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
+load("@rules_shell//shell:sh_test.bzl", "sh_test")
 load("//gui_ze:gui_ze.bzl", "move_files_into_dir")
 load("//third_party/raylib:raylib.bzl", "raylib_binary")
 
@@ -75,6 +76,28 @@
   }),
 )
 
+cc_library(
+  name = "agent_service",
+  srcs = select({
+    "//config:linux": ["agent_service_copilot.c"],
+    "//config:macos": ["agent_service_stub.c"],
+    "//config:windows": ["agent_service_stub.c"],
+    "//conditions:default": ["agent_service_stub.c"],
+  }),
+  hdrs = ["agent_service.h"],
+  deps = [
+    ":canvas",
+    "//dowa:dowa",
+  ] + select({
+    "//config:linux": ["//mrjunejune:inference_bridge"],
+    "//conditions:default": [],
+  }),
+  linkopts = select({
+    "//config:linux": ["-lpthread"],
+    "//conditions:default": [],
+  }),
+)
+
 filegroup(
   name = "inter_font",
   srcs = ["assets/Inter-Variable.ttf"],
@@ -124,6 +147,7 @@
     "//conditions:default": [],
   }),
   deps = [
+    ":agent_service",
     ":canvas",
     ":web_surface",
     "//dowa:dowa",
@@ -153,6 +177,7 @@
   }),
   defines = ["INFINITE_CANVAS_DEV_UI"],
   deps = [
+    ":agent_service",
     ":canvas",
     ":dev_ui",
     ":theme",
@@ -174,6 +199,31 @@
   data = [":dev_bin"],
 )
 
+sh_binary(
+  name = "orchestration_dev",
+  srcs = ["run_orchestration_dev.sh"],
+  data = [
+    ":dev",
+    "//dictation:server",
+    "//mrjunejune:canvas_orchestration_launcher",
+    "//mrjunejune/inference:copilot_sidecar_zip",
+    "//mrjunejune/inference:litellm_config.yaml",
+    "//mrjunejune/inference:litellm_proxy_zip",
+    "@copilot_cli_linux_x86_64//:copilot",
+    "@python_3_11//:files",
+    "@python_3_11//:python3",
+  ],
+  target_compatible_with = select({
+    "//config:linux": [],
+    "//conditions:default": ["@platforms//:incompatible"],
+  }),
+)
+
+alias(
+  name = "agent_dev",
+  actual = ":orchestration_dev",
+)
+
 alias(
   name = "app",
   actual = select({
@@ -208,6 +258,7 @@
   ],
   defines = ["INFINITE_CANVAS_DEV_UI"],
   deps = [
+    ":agent_service",
     ":canvas",
     ":dev_ui",
     ":web_surface",
@@ -245,6 +296,41 @@
   deps = [":canvas"],
 )
 
+cc_test(
+  name = "agent_service_test",
+  srcs = ["agent_service_test.c"],
+  args = [
+    "$(rootpath //mrjunejune/test:inference_bridge_fake_sidecar)",
+  ],
+  data = [
+    "//mrjunejune/test:inference_bridge_fake_sidecar",
+  ],
+  deps = [
+    ":agent_service",
+    "//dowa:dowa",
+  ],
+  linkopts = ["-lpthread"],
+  target_compatible_with = select({
+    "//config:linux": [],
+    "//conditions:default": ["@platforms//:incompatible"],
+  }),
+)
+
+sh_test(
+  name = "dictation_policy_test",
+  srcs = ["dictation_policy_test.sh"],
+  args = [
+    "$(rootpath :web_surface_native.cc)",
+    "$(rootpath :main.c)",
+    "$(rootpath :dev_ui.c)",
+  ],
+  data = [
+    "dev_ui.c",
+    "main.c",
+    "web_surface_native.cc",
+  ],
+)
+
 sh_binary(
   name = "serve",
   srcs = ["serve.sh"],