@polderlabs/bizar 8.0.0 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1012) hide show
  1. package/.claude/agents/agent-browser.md +1 -1
  2. package/.claude/agents/baldr.md +1 -1
  3. package/.claude/agents/forseti.md +1 -1
  4. package/.claude/agents/frigg.md +1 -1
  5. package/.claude/agents/heimdall.md +1 -1
  6. package/.claude/agents/hermod.md +1 -1
  7. package/.claude/agents/mimir.md +1 -1
  8. package/.claude/agents/odin.md +1 -1
  9. package/.claude/agents/quick.md +1 -1
  10. package/.claude/agents/semble-search.md +1 -1
  11. package/.claude/agents/thor.md +1 -1
  12. package/.claude/agents/tyr.md +1 -1
  13. package/.claude/agents/vidarr.md +1 -1
  14. package/.claude/agents/vor.md +1 -1
  15. package/.claude/commands/goal.md +98 -0
  16. package/.claude/settings.local.json +1 -2
  17. package/.claude/worktrees/kanban-overhaul/.claude/CLAUDE.md +15 -0
  18. package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/AGENT_BASELINE.md +168 -0
  19. package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
  20. package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/SKILLS.md +109 -0
  21. package/.claude/worktrees/kanban-overhaul/.claude/agents/agent-browser.md +80 -0
  22. package/.claude/worktrees/kanban-overhaul/.claude/agents/baldr.md +49 -0
  23. package/.claude/worktrees/kanban-overhaul/.claude/agents/forseti.md +51 -0
  24. package/.claude/worktrees/kanban-overhaul/.claude/agents/frigg.md +42 -0
  25. package/.claude/worktrees/kanban-overhaul/.claude/agents/heimdall.md +33 -0
  26. package/.claude/worktrees/kanban-overhaul/.claude/agents/hermod.md +53 -0
  27. package/.claude/worktrees/kanban-overhaul/.claude/agents/mimir.md +49 -0
  28. package/.claude/worktrees/kanban-overhaul/.claude/agents/odin.md +287 -0
  29. package/.claude/worktrees/kanban-overhaul/.claude/agents/quick.md +34 -0
  30. package/.claude/worktrees/kanban-overhaul/.claude/agents/semble-search.md +50 -0
  31. package/.claude/worktrees/kanban-overhaul/.claude/agents/thor.md +53 -0
  32. package/.claude/worktrees/kanban-overhaul/.claude/agents/tyr.md +56 -0
  33. package/.claude/worktrees/kanban-overhaul/.claude/agents/vidarr.md +54 -0
  34. package/.claude/worktrees/kanban-overhaul/.claude/agents/vor.md +53 -0
  35. package/.claude/worktrees/kanban-overhaul/.claude/commands/audit.md +25 -0
  36. package/.claude/worktrees/kanban-overhaul/.claude/commands/bizar.md +22 -0
  37. package/.claude/worktrees/kanban-overhaul/.claude/commands/explain.md +17 -0
  38. package/.claude/worktrees/kanban-overhaul/.claude/commands/init.md +29 -0
  39. package/.claude/worktrees/kanban-overhaul/.claude/commands/learn.md +44 -0
  40. package/.claude/worktrees/kanban-overhaul/.claude/commands/plan.md +35 -0
  41. package/.claude/worktrees/kanban-overhaul/.claude/commands/plow-through.md +50 -0
  42. package/.claude/worktrees/kanban-overhaul/.claude/commands/pr-review.md +49 -0
  43. package/.claude/worktrees/kanban-overhaul/.claude/commands/setup-provider.md +96 -0
  44. package/.claude/worktrees/kanban-overhaul/.claude/commands/tailscale-serve.md +100 -0
  45. package/.claude/worktrees/kanban-overhaul/.claude/commands/team.md +132 -0
  46. package/.claude/worktrees/kanban-overhaul/.claude/commands/test.md +62 -0
  47. package/.claude/worktrees/kanban-overhaul/.claude/commands/validate.md +68 -0
  48. package/.claude/worktrees/kanban-overhaul/.claude/commands/visual-plan.md +24 -0
  49. package/.claude/worktrees/kanban-overhaul/.claude/hooks/README.md +92 -0
  50. package/.claude/worktrees/kanban-overhaul/.claude/hooks/posttooluse-editwrite.mjs +91 -0
  51. package/.claude/worktrees/kanban-overhaul/.claude/hooks/pretooluse-bash.mjs +81 -0
  52. package/.claude/worktrees/kanban-overhaul/.claude/hooks/pretooluse-editwrite.mjs +139 -0
  53. package/.claude/worktrees/kanban-overhaul/.claude/hooks/sessionend-recall.mjs +74 -0
  54. package/.claude/worktrees/kanban-overhaul/.claude/hooks/sessionstart-prime.mjs +80 -0
  55. package/.claude/worktrees/kanban-overhaul/.claude/hooks/userpromptsubmit-tag.mjs +80 -0
  56. package/.claude/worktrees/kanban-overhaul/.claude/hooks/worker-suggest.mjs +110 -0
  57. package/.claude/worktrees/kanban-overhaul/.claude/settings.json +125 -0
  58. package/.claude/worktrees/kanban-overhaul/.claude/settings.local.json +8 -0
  59. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router/SKILL.md +80 -0
  60. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-chat/SKILL.md +73 -0
  61. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-embeddings/SKILL.md +69 -0
  62. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-image/SKILL.md +86 -0
  63. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-stt/SKILL.md +79 -0
  64. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-tts/SKILL.md +80 -0
  65. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-web-fetch/SKILL.md +99 -0
  66. package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-web-search/SKILL.md +91 -0
  67. package/.claude/worktrees/kanban-overhaul/.claude/skills/bizar/README.md +9 -0
  68. package/.claude/worktrees/kanban-overhaul/.claude/skills/bizar/SKILL.md +450 -0
  69. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/README.md +28 -0
  70. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
  71. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
  72. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
  73. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
  74. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
  75. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
  76. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/README.md +28 -0
  77. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/SKILL.md +304 -0
  78. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/coverage.md +370 -0
  79. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
  80. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
  81. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/mocking.md +364 -0
  82. package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
  83. package/.claude/worktrees/kanban-overhaul/.claude/skills/cubesandbox/SKILL.md +148 -0
  84. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/README.md +41 -0
  85. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
  86. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
  87. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
  88. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
  89. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
  90. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
  91. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
  92. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
  93. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
  94. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
  95. package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
  96. package/.claude/worktrees/kanban-overhaul/.claude/skills/glyph/SKILL.md +163 -0
  97. package/.claude/worktrees/kanban-overhaul/.claude/skills/harness-engineering/SKILL.md +143 -0
  98. package/.claude/worktrees/kanban-overhaul/.claude/skills/lightrag/SKILL.md +81 -0
  99. package/.claude/worktrees/kanban-overhaul/.claude/skills/memory-protocol/SKILL.md +105 -0
  100. package/.claude/worktrees/kanban-overhaul/.claude/skills/obsidian/SKILL.md +306 -0
  101. package/.claude/worktrees/kanban-overhaul/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
  102. package/.claude/worktrees/kanban-overhaul/.claude/skills/self-improvement/SKILL.md +64 -0
  103. package/.claude/worktrees/kanban-overhaul/.dockerignore +31 -0
  104. package/.claude/worktrees/kanban-overhaul/.gitattributes +27 -0
  105. package/.claude/worktrees/kanban-overhaul/.harness/agents.json +17 -0
  106. package/.claude/worktrees/kanban-overhaul/.harness/arch-rules.json +69 -0
  107. package/.claude/worktrees/kanban-overhaul/.harness/topology.json +4 -0
  108. package/.claude/worktrees/kanban-overhaul/.nvmrc +1 -0
  109. package/.claude/worktrees/kanban-overhaul/.serena/project.yml +159 -0
  110. package/.claude/worktrees/kanban-overhaul/AGENTS.md +250 -0
  111. package/.claude/worktrees/kanban-overhaul/CHANGELOG.md +5410 -0
  112. package/.claude/worktrees/kanban-overhaul/CLAUDE.md +260 -0
  113. package/.claude/worktrees/kanban-overhaul/CURRENT_ISSUES_ AND_NEW_FEATURES.md +18 -0
  114. package/.claude/worktrees/kanban-overhaul/DECISIONS.md +66 -0
  115. package/.claude/worktrees/kanban-overhaul/Dockerfile +48 -0
  116. package/.claude/worktrees/kanban-overhaul/FINAL_GOAL.md +397 -0
  117. package/.claude/worktrees/kanban-overhaul/IMPLEMENTATION_PLAN.md +250 -0
  118. package/.claude/worktrees/kanban-overhaul/LICENSE +21 -0
  119. package/.claude/worktrees/kanban-overhaul/MILESTONES.md +257 -0
  120. package/.claude/worktrees/kanban-overhaul/Makefile +93 -0
  121. package/.claude/worktrees/kanban-overhaul/PROGRESS.md +1406 -0
  122. package/.claude/worktrees/kanban-overhaul/README.md +483 -0
  123. package/.claude/worktrees/kanban-overhaul/ROADMAP.md +609 -0
  124. package/.claude/worktrees/kanban-overhaul/bizar-dash/.graphifyignore +40 -0
  125. package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/README.md +14 -0
  126. package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/daily/2026-06-25.md +9 -0
  127. package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/vault.json +7 -0
  128. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/SKILL.md +103 -0
  129. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/assets/template.html +338 -0
  130. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/example.html +81 -0
  131. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/open-design.json +172 -0
  132. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/references/checklist.md +44 -0
  133. package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/references/layouts.md +247 -0
  134. package/.claude/worktrees/kanban-overhaul/bizar-dash/ARCHITECTURE.md +197 -0
  135. package/.claude/worktrees/kanban-overhaul/bizar-dash/CHANGELOG.md +235 -0
  136. package/.claude/worktrees/kanban-overhaul/bizar-dash/DESIGN.md +912 -0
  137. package/.claude/worktrees/kanban-overhaul/bizar-dash/GLYPH.md +418 -0
  138. package/.claude/worktrees/kanban-overhaul/bizar-dash/PLAN.md +1135 -0
  139. package/.claude/worktrees/kanban-overhaul/bizar-dash/critique.json +26 -0
  140. package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/comments.json +1 -0
  141. package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/meta.json +10 -0
  142. package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/plan.json +174 -0
  143. package/.claude/worktrees/kanban-overhaul/bizar-dash/scripts/smoke-bg-retry.mjs +246 -0
  144. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/agent-baseline/SKILL.md +80 -0
  145. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/agent-browser/SKILL.md +181 -0
  146. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/bizar/SKILL.md +116 -0
  147. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/chat/SKILL.md +74 -0
  148. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/eval/SKILL.md +237 -0
  149. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/headroom/SKILL.md +94 -0
  150. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/lightrag/SKILL.md +86 -0
  151. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/minimax/SKILL.md +80 -0
  152. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/obsidian/SKILL.md +68 -0
  153. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/providers/SKILL.md +75 -0
  154. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/publishing/SKILL.md +146 -0
  155. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/sdk/SKILL.md +138 -0
  156. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/self-improvement/SKILL.md +53 -0
  157. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/skills-cli/SKILL.md +94 -0
  158. package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/usage/SKILL.md +62 -0
  159. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/cli/dashboard-ports.mjs +488 -0
  160. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/cli.mjs +537 -0
  161. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/activity-log.mjs +174 -0
  162. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/agents-store.mjs +465 -0
  163. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/api.mjs +223 -0
  164. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/artifact-template.html +810 -0
  165. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/artifacts-store.mjs +733 -0
  166. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/auth.mjs +548 -0
  167. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/background-store.mjs +446 -0
  168. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/backup-store.mjs +530 -0
  169. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-poller.mjs +375 -0
  170. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-retry.mjs +446 -0
  171. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-spawner.mjs +390 -0
  172. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/browser.mjs +40 -0
  173. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-bg-spawner.mjs +390 -0
  174. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-info.mjs +412 -0
  175. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-runner.mjs +284 -0
  176. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-sdk.mjs +191 -0
  177. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/diagnostics-store.mjs +598 -0
  178. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/dialog-poller.mjs +105 -0
  179. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/dialog-store.mjs +177 -0
  180. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/digest-store.mjs +558 -0
  181. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/eval-store.mjs +281 -0
  182. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/eval.mjs +500 -0
  183. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/glyphs/mdx-compiler.mjs +596 -0
  184. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/headroom.mjs +649 -0
  185. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/lib/path-safe.mjs +283 -0
  186. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/lib/rate-limit.mjs +122 -0
  187. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/logger.mjs +71 -0
  188. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-consolidator.mjs +225 -0
  189. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-distillation.mjs +296 -0
  190. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-git.mjs +473 -0
  191. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-lightrag.mjs +1478 -0
  192. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-obsidian.mjs +230 -0
  193. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-schema.mjs +145 -0
  194. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-secrets.mjs +84 -0
  195. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-store.mjs +1093 -0
  196. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/metrics.mjs +268 -0
  197. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/minimax-usage-store.mjs +372 -0
  198. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/minimax.mjs +683 -0
  199. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/mod-security.mjs +398 -0
  200. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/mods-loader.mjs +1243 -0
  201. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/notifications-store.mjs +243 -0
  202. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/obsidian-store.mjs +318 -0
  203. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/ocr.mjs +55 -0
  204. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/otel.mjs +260 -0
  205. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/pair-store.mjs +138 -0
  206. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/progress-parser.mjs +221 -0
  207. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/projects-store.mjs +364 -0
  208. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/providers-store.mjs +1801 -0
  209. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/_shared.mjs +447 -0
  210. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/activity.mjs +195 -0
  211. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/agents-cc.mjs +194 -0
  212. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/agents.mjs +134 -0
  213. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/artifacts.mjs +279 -0
  214. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/auth.mjs +69 -0
  215. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/background.mjs +422 -0
  216. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/backup.mjs +112 -0
  217. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/chat.mjs +727 -0
  218. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/claude-session-detail.mjs +329 -0
  219. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/claude-sessions.mjs +259 -0
  220. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/clipboard.mjs +173 -0
  221. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/config.mjs +180 -0
  222. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/diagnostics.mjs +50 -0
  223. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/dialogs.mjs +86 -0
  224. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/digests.mjs +82 -0
  225. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/distill.mjs +129 -0
  226. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/doctor.mjs +71 -0
  227. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/env-vars.mjs +231 -0
  228. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/eval.mjs +187 -0
  229. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/fs.mjs +429 -0
  230. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/goal-planner.mjs +236 -0
  231. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/goals.mjs +212 -0
  232. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/headroom.mjs +126 -0
  233. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/history.mjs +78 -0
  234. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/lightrag.mjs +169 -0
  235. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/memory.mjs +1524 -0
  236. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/minimax.mjs +133 -0
  237. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/misc.mjs +90 -0
  238. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/mods.mjs +359 -0
  239. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/notifications.mjs +54 -0
  240. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/obsidian.mjs +239 -0
  241. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/ocr.mjs +182 -0
  242. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/overview.mjs +92 -0
  243. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/pair.mjs +67 -0
  244. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/projects.mjs +175 -0
  245. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/providers.mjs +308 -0
  246. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/schedules.mjs +159 -0
  247. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/settings.mjs +51 -0
  248. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/skills.mjs +65 -0
  249. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/tailscale.mjs +46 -0
  250. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/tasks.mjs +518 -0
  251. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/themes.mjs +51 -0
  252. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/update.mjs +340 -0
  253. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/usage.mjs +136 -0
  254. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/users.mjs +102 -0
  255. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/voice.mjs +167 -0
  256. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/workspaces.mjs +299 -0
  257. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/auth.mjs +59 -0
  258. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/events.mjs +121 -0
  259. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/health.mjs +21 -0
  260. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/index.mjs +90 -0
  261. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/sessions.mjs +111 -0
  262. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/schedules-runner.mjs +556 -0
  263. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/schedules-store.mjs +268 -0
  264. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/search-store.mjs +220 -0
  265. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/serve-info.mjs +1110 -0
  266. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/server.mjs +966 -0
  267. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/settings-store.mjs +45 -0
  268. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/skills-store.mjs +190 -0
  269. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/state.mjs +437 -0
  270. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tailscale-store.mjs +113 -0
  271. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/task-delegator.mjs +969 -0
  272. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tasks-store.mjs +556 -0
  273. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tui.mjs +923 -0
  274. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/update-store.mjs +168 -0
  275. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/v2-auth-file.mjs +99 -0
  276. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/v2-event-bus.mjs +128 -0
  277. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/voice-store.mjs +229 -0
  278. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/voice-transcribe.mjs +72 -0
  279. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/watcher.mjs +81 -0
  280. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/workers/transcription-worker.mjs +213 -0
  281. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/workspaces.mjs +626 -0
  282. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/yaml.mjs +238 -0
  283. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/App.tsx +200 -0
  284. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/fetcher.ts +59 -0
  285. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/types.ts +168 -0
  286. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/useFetch.ts +62 -0
  287. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/useWebSocket.ts +153 -0
  288. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/main.tsx +28 -0
  289. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/AppShell.tsx +90 -0
  290. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/PageSkeleton.tsx +29 -0
  291. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/Sidebar.tsx +361 -0
  292. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/StatusBar.tsx +63 -0
  293. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/Topbar.tsx +113 -0
  294. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/index.ts +15 -0
  295. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/activity/ActivityFeed.tsx +137 -0
  296. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentActivity.tsx +101 -0
  297. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentCard.tsx +158 -0
  298. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx +232 -0
  299. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Button.tsx +141 -0
  300. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/ButtonGroup.tsx +32 -0
  301. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Checkbox.tsx +49 -0
  302. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Field.tsx +78 -0
  303. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Form.tsx +23 -0
  304. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/IconButton.tsx +112 -0
  305. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Input.tsx +94 -0
  306. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/RadioGroup.tsx +74 -0
  307. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Select.tsx +171 -0
  308. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Slider.tsx +68 -0
  309. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Switch.tsx +56 -0
  310. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Textarea.tsx +64 -0
  311. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Toggle.tsx +36 -0
  312. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/ToggleGroup.tsx +85 -0
  313. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Accordion.tsx +134 -0
  314. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Avatar.tsx +175 -0
  315. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Badge.tsx +93 -0
  316. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/BarList.tsx +101 -0
  317. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Card.tsx +140 -0
  318. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Chip.tsx +96 -0
  319. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Kbd.tsx +42 -0
  320. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/ProgressBar.tsx +93 -0
  321. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Sparkline.tsx +98 -0
  322. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/StatTile.tsx +150 -0
  323. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Table.tsx +170 -0
  324. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Timeline.tsx +130 -0
  325. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/ViewHeader.tsx +122 -0
  326. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Alert.tsx +95 -0
  327. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Banner.tsx +39 -0
  328. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/ContextMenu.tsx +143 -0
  329. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Dialog.tsx +149 -0
  330. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Drawer.tsx +8 -0
  331. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/DropdownMenu.tsx +231 -0
  332. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/EmptyState.tsx +48 -0
  333. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Popover.tsx +56 -0
  334. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Sheet.tsx +103 -0
  335. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Skeleton.tsx +67 -0
  336. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Spinner.tsx +30 -0
  337. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Toast.tsx +66 -0
  338. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Tooltip.tsx +89 -0
  339. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/GoalCard.tsx +176 -0
  340. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx +245 -0
  341. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/KeyResult.tsx +115 -0
  342. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/index.ts +349 -0
  343. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanBoard.tsx +115 -0
  344. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanCard.tsx +391 -0
  345. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanCardBadges.tsx +111 -0
  346. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanColumn.tsx +181 -0
  347. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanContextMenu.tsx +126 -0
  348. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanDetailDialog.tsx +638 -0
  349. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanEmptyColumn.tsx +43 -0
  350. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanProgress.tsx +130 -0
  351. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanQuickAdd.tsx +141 -0
  352. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanToolbar.tsx +291 -0
  353. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/useKanbanSelection.ts +90 -0
  354. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/libraries/LibraryGrid.tsx +30 -0
  355. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/libraries/LibraryItem.tsx +161 -0
  356. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/memory/MemoryVault.tsx +144 -0
  357. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/CommandPalette.tsx +224 -0
  358. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/NavLink.tsx +81 -0
  359. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/Pagination.tsx +164 -0
  360. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/Tabs.tsx +128 -0
  361. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Box.tsx +144 -0
  362. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Center.tsx +40 -0
  363. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Cluster.tsx +67 -0
  364. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Grid.tsx +104 -0
  365. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Inline.tsx +77 -0
  366. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Portal.tsx +33 -0
  367. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/ScrollArea.tsx +62 -0
  368. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Separator.tsx +42 -0
  369. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Stack.tsx +73 -0
  370. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/VisuallyHidden.tsx +49 -0
  371. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsNav.tsx +91 -0
  372. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsRow.tsx +88 -0
  373. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsSection.tsx +109 -0
  374. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/globals.css +220 -0
  375. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/reset.css +57 -0
  376. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/tokens.css +217 -0
  377. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/DensityProvider.tsx +66 -0
  378. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/ThemeProvider.tsx +94 -0
  379. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/ThemeToggle.tsx +88 -0
  380. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/useDensity.ts +15 -0
  381. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/useTheme.ts +16 -0
  382. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/utils/cx.ts +19 -0
  383. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +71 -0
  384. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Agents/AgentsView.tsx +172 -0
  385. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.tsx +247 -0
  386. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Goals/GoalsView.tsx +137 -0
  387. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Libraries/LibrariesView.tsx +108 -0
  388. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Memory/MemoryView.tsx +77 -0
  389. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Overview/OverviewView.tsx +152 -0
  390. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Router.tsx +72 -0
  391. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Settings/SettingsView.tsx +330 -0
  392. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Tasks/CommandPalettePlaceholder.tsx +106 -0
  393. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +792 -0
  394. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/vite-env.d.ts +15 -0
  395. package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8.html +17 -0
  396. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/FORMAT.md +76 -0
  397. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/README.md +19 -0
  398. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/agents/greeter.md +8 -0
  399. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/commands/hello.md +6 -0
  400. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/mod.json +20 -0
  401. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/routes/ping.mjs +9 -0
  402. package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/views/HelloView.tsx +10 -0
  403. package/.claude/worktrees/kanban-overhaul/bizar-dash/tests/setup.ts +63 -0
  404. package/.claude/worktrees/kanban-overhaul/bizar-dash/tests/smoke-v2.mjs +212 -0
  405. package/.claude/worktrees/kanban-overhaul/bizar-dash/tsconfig.json +23 -0
  406. package/.claude/worktrees/kanban-overhaul/bizar-dash/vite.config.ts +66 -0
  407. package/.claude/worktrees/kanban-overhaul/bizar-dash/vitest.config.ts +20 -0
  408. package/.claude/worktrees/kanban-overhaul/bizar-plugins/registry.json +62 -0
  409. package/.claude/worktrees/kanban-overhaul/bookmarklet/bizar-clipper.js +48 -0
  410. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/README.md +43 -0
  411. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/background.js +95 -0
  412. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/content.js +170 -0
  413. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-128.png +0 -0
  414. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-16.png +0 -0
  415. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-48.png +0 -0
  416. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon.svg +4 -0
  417. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/manifest.json +32 -0
  418. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/popup.html +66 -0
  419. package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/popup.js +110 -0
  420. package/.claude/worktrees/kanban-overhaul/bun.lock +1558 -0
  421. package/.claude/worktrees/kanban-overhaul/cli/agent-browser-up.sh +152 -0
  422. package/.claude/worktrees/kanban-overhaul/cli/agent-browser-update.mjs +322 -0
  423. package/.claude/worktrees/kanban-overhaul/cli/artifact-cli.mjs +605 -0
  424. package/.claude/worktrees/kanban-overhaul/cli/artifact-render.mjs +621 -0
  425. package/.claude/worktrees/kanban-overhaul/cli/artifact-server.mjs +847 -0
  426. package/.claude/worktrees/kanban-overhaul/cli/artifact-templates.mjs +523 -0
  427. package/.claude/worktrees/kanban-overhaul/cli/artifact.mjs +63 -0
  428. package/.claude/worktrees/kanban-overhaul/cli/atomic.mjs +73 -0
  429. package/.claude/worktrees/kanban-overhaul/cli/audit.mjs +141 -0
  430. package/.claude/worktrees/kanban-overhaul/cli/banner.mjs +41 -0
  431. package/.claude/worktrees/kanban-overhaul/cli/bg.mjs +471 -0
  432. package/.claude/worktrees/kanban-overhaul/cli/bin.mjs +698 -0
  433. package/.claude/worktrees/kanban-overhaul/cli/bootstrap.mjs +77 -0
  434. package/.claude/worktrees/kanban-overhaul/cli/commands/artifact.mjs +20 -0
  435. package/.claude/worktrees/kanban-overhaul/cli/commands/claim.mjs +282 -0
  436. package/.claude/worktrees/kanban-overhaul/cli/commands/claude-cmd.mjs +348 -0
  437. package/.claude/worktrees/kanban-overhaul/cli/commands/clip.mjs +163 -0
  438. package/.claude/worktrees/kanban-overhaul/cli/commands/cost.mjs +279 -0
  439. package/.claude/worktrees/kanban-overhaul/cli/commands/dash.mjs +193 -0
  440. package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/cloudflare.mjs +250 -0
  441. package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/docker.mjs +222 -0
  442. package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/fly.mjs +161 -0
  443. package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/vercel.mjs +225 -0
  444. package/.claude/worktrees/kanban-overhaul/cli/commands/deploy.mjs +240 -0
  445. package/.claude/worktrees/kanban-overhaul/cli/commands/eval.mjs +396 -0
  446. package/.claude/worktrees/kanban-overhaul/cli/commands/headroom.mjs +204 -0
  447. package/.claude/worktrees/kanban-overhaul/cli/commands/install.mjs +170 -0
  448. package/.claude/worktrees/kanban-overhaul/cli/commands/lightrag.mjs +170 -0
  449. package/.claude/worktrees/kanban-overhaul/cli/commands/marketplace.mjs +64 -0
  450. package/.claude/worktrees/kanban-overhaul/cli/commands/memory.mjs +25 -0
  451. package/.claude/worktrees/kanban-overhaul/cli/commands/minimax.mjs +288 -0
  452. package/.claude/worktrees/kanban-overhaul/cli/commands/mod.mjs +185 -0
  453. package/.claude/worktrees/kanban-overhaul/cli/commands/ocr.mjs +182 -0
  454. package/.claude/worktrees/kanban-overhaul/cli/commands/plugin.mjs +358 -0
  455. package/.claude/worktrees/kanban-overhaul/cli/commands/rca.mjs +198 -0
  456. package/.claude/worktrees/kanban-overhaul/cli/commands/sandbox.mjs +220 -0
  457. package/.claude/worktrees/kanban-overhaul/cli/commands/service.mjs +79 -0
  458. package/.claude/worktrees/kanban-overhaul/cli/commands/setup-provider.mjs +466 -0
  459. package/.claude/worktrees/kanban-overhaul/cli/commands/tailscale.mjs +258 -0
  460. package/.claude/worktrees/kanban-overhaul/cli/commands/usage.mjs +113 -0
  461. package/.claude/worktrees/kanban-overhaul/cli/commands/util.mjs +577 -0
  462. package/.claude/worktrees/kanban-overhaul/cli/commands/validate.mjs +541 -0
  463. package/.claude/worktrees/kanban-overhaul/cli/commands/voice.mjs +211 -0
  464. package/.claude/worktrees/kanban-overhaul/cli/commands/workspace.mjs +247 -0
  465. package/.claude/worktrees/kanban-overhaul/cli/copy.mjs +586 -0
  466. package/.claude/worktrees/kanban-overhaul/cli/cost-gate.mjs +501 -0
  467. package/.claude/worktrees/kanban-overhaul/cli/dev-link.mjs +191 -0
  468. package/.claude/worktrees/kanban-overhaul/cli/digest.mjs +149 -0
  469. package/.claude/worktrees/kanban-overhaul/cli/doctor.mjs +217 -0
  470. package/.claude/worktrees/kanban-overhaul/cli/export.mjs +95 -0
  471. package/.claude/worktrees/kanban-overhaul/cli/feature-list-bridge.mjs +400 -0
  472. package/.claude/worktrees/kanban-overhaul/cli/heads-up.mjs +295 -0
  473. package/.claude/worktrees/kanban-overhaul/cli/init.mjs +368 -0
  474. package/.claude/worktrees/kanban-overhaul/cli/install.mjs +640 -0
  475. package/.claude/worktrees/kanban-overhaul/cli/memory-constants.mjs +76 -0
  476. package/.claude/worktrees/kanban-overhaul/cli/memory.mjs +1850 -0
  477. package/.claude/worktrees/kanban-overhaul/cli/plugin-runtime-deps.mjs +250 -0
  478. package/.claude/worktrees/kanban-overhaul/cli/post-install-smoke.mjs +256 -0
  479. package/.claude/worktrees/kanban-overhaul/cli/prompts.mjs +168 -0
  480. package/.claude/worktrees/kanban-overhaul/cli/providers-detect.mjs +233 -0
  481. package/.claude/worktrees/kanban-overhaul/cli/provision-claude.mjs +1176 -0
  482. package/.claude/worktrees/kanban-overhaul/cli/provision.mjs +2233 -0
  483. package/.claude/worktrees/kanban-overhaul/cli/repair.mjs +209 -0
  484. package/.claude/worktrees/kanban-overhaul/cli/service-controller.mjs +927 -0
  485. package/.claude/worktrees/kanban-overhaul/cli/service-env.mjs +139 -0
  486. package/.claude/worktrees/kanban-overhaul/cli/service.mjs +492 -0
  487. package/.claude/worktrees/kanban-overhaul/cli/update.mjs +29 -0
  488. package/.claude/worktrees/kanban-overhaul/cli/utils.mjs +221 -0
  489. package/.claude/worktrees/kanban-overhaul/cli/worker-dispatcher.mjs +259 -0
  490. package/.claude/worktrees/kanban-overhaul/config/AGENTS.md +595 -0
  491. package/.claude/worktrees/kanban-overhaul/config/agents/_shared/AGENT_BASELINE.md +155 -0
  492. package/.claude/worktrees/kanban-overhaul/config/agents/_shared/CLINE_TOOLS.md +398 -0
  493. package/.claude/worktrees/kanban-overhaul/config/agents/_shared/SKILLS.md +109 -0
  494. package/.claude/worktrees/kanban-overhaul/config/agents/agent-browser.md +90 -0
  495. package/.claude/worktrees/kanban-overhaul/config/agents/baldr.md +60 -0
  496. package/.claude/worktrees/kanban-overhaul/config/agents/forseti.md +60 -0
  497. package/.claude/worktrees/kanban-overhaul/config/agents/frigg.md +52 -0
  498. package/.claude/worktrees/kanban-overhaul/config/agents/heimdall.md +44 -0
  499. package/.claude/worktrees/kanban-overhaul/config/agents/hermod.md +64 -0
  500. package/.claude/worktrees/kanban-overhaul/config/agents/mimir.md +60 -0
  501. package/.claude/worktrees/kanban-overhaul/config/agents/odin.md +310 -0
  502. package/.claude/worktrees/kanban-overhaul/config/agents/quick.md +47 -0
  503. package/.claude/worktrees/kanban-overhaul/config/agents/semble-search.md +59 -0
  504. package/.claude/worktrees/kanban-overhaul/config/agents/thor.md +64 -0
  505. package/.claude/worktrees/kanban-overhaul/config/agents/tyr.md +67 -0
  506. package/.claude/worktrees/kanban-overhaul/config/agents/vidarr.md +65 -0
  507. package/.claude/worktrees/kanban-overhaul/config/agents/vor.md +62 -0
  508. package/.claude/worktrees/kanban-overhaul/config/commands/audit.md +5 -0
  509. package/.claude/worktrees/kanban-overhaul/config/commands/bizar.md +22 -0
  510. package/.claude/worktrees/kanban-overhaul/config/commands/explain.md +5 -0
  511. package/.claude/worktrees/kanban-overhaul/config/commands/init.md +26 -0
  512. package/.claude/worktrees/kanban-overhaul/config/commands/learn.md +5 -0
  513. package/.claude/worktrees/kanban-overhaul/config/commands/plan.md +30 -0
  514. package/.claude/worktrees/kanban-overhaul/config/commands/plow-through.md +47 -0
  515. package/.claude/worktrees/kanban-overhaul/config/commands/pr-review.md +5 -0
  516. package/.claude/worktrees/kanban-overhaul/config/commands/setup-provider.md +95 -0
  517. package/.claude/worktrees/kanban-overhaul/config/commands/tailscale-serve.md +97 -0
  518. package/.claude/worktrees/kanban-overhaul/config/commands/team.md +124 -0
  519. package/.claude/worktrees/kanban-overhaul/config/commands/test.md +60 -0
  520. package/.claude/worktrees/kanban-overhaul/config/commands/validate.md +66 -0
  521. package/.claude/worktrees/kanban-overhaul/config/commands/visual-plan.md +19 -0
  522. package/.claude/worktrees/kanban-overhaul/config/hooks/PostToolUse +66 -0
  523. package/.claude/worktrees/kanban-overhaul/config/hooks/PreToolUse +82 -0
  524. package/.claude/worktrees/kanban-overhaul/config/hooks/README.md +68 -0
  525. package/.claude/worktrees/kanban-overhaul/config/hooks/TaskResume +48 -0
  526. package/.claude/worktrees/kanban-overhaul/config/hooks/TaskStart +47 -0
  527. package/.claude/worktrees/kanban-overhaul/config/hooks/UserPromptSubmit +55 -0
  528. package/.claude/worktrees/kanban-overhaul/config/rules/general.md +9 -0
  529. package/.claude/worktrees/kanban-overhaul/config/rules/git.md +11 -0
  530. package/.claude/worktrees/kanban-overhaul/config/rules/javascript.md +10 -0
  531. package/.claude/worktrees/kanban-overhaul/config/rules/python.md +10 -0
  532. package/.claude/worktrees/kanban-overhaul/config/rules/testing.md +10 -0
  533. package/.claude/worktrees/kanban-overhaul/config/rules/thinking.md +56 -0
  534. package/.claude/worktrees/kanban-overhaul/config/rules/uncertainty.md +70 -0
  535. package/.claude/worktrees/kanban-overhaul/config/skills/9router/SKILL.md +80 -0
  536. package/.claude/worktrees/kanban-overhaul/config/skills/9router-chat/SKILL.md +73 -0
  537. package/.claude/worktrees/kanban-overhaul/config/skills/9router-embeddings/SKILL.md +69 -0
  538. package/.claude/worktrees/kanban-overhaul/config/skills/9router-image/SKILL.md +86 -0
  539. package/.claude/worktrees/kanban-overhaul/config/skills/9router-stt/SKILL.md +79 -0
  540. package/.claude/worktrees/kanban-overhaul/config/skills/9router-tts/SKILL.md +80 -0
  541. package/.claude/worktrees/kanban-overhaul/config/skills/9router-web-fetch/SKILL.md +99 -0
  542. package/.claude/worktrees/kanban-overhaul/config/skills/9router-web-search/SKILL.md +91 -0
  543. package/.claude/worktrees/kanban-overhaul/config/skills/bizar/README.md +9 -0
  544. package/.claude/worktrees/kanban-overhaul/config/skills/bizar/SKILL.md +447 -0
  545. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/README.md +28 -0
  546. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/SKILL.md +634 -0
  547. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/agents/openai.yaml +4 -0
  548. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/concurrency.md +320 -0
  549. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/error-handling.md +229 -0
  550. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/memory-safety.md +216 -0
  551. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
  552. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/review-checklist.md +96 -0
  553. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/README.md +28 -0
  554. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/SKILL.md +304 -0
  555. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/agents/openai.yaml +4 -0
  556. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/coverage.md +370 -0
  557. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/framework-compare.md +175 -0
  558. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
  559. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/mocking.md +364 -0
  560. package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/tdd-workflow.md +308 -0
  561. package/.claude/worktrees/kanban-overhaul/config/skills/cubesandbox/SKILL.md +148 -0
  562. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/README.md +41 -0
  563. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/SKILL.md +439 -0
  564. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/agents/openai.yaml +4 -0
  565. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
  566. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/host-tests.md +164 -0
  567. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
  568. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/kconfig.md +159 -0
  569. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
  570. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
  571. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/nvs.md +121 -0
  572. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/packed-structs.md +192 -0
  573. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
  574. package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
  575. package/.claude/worktrees/kanban-overhaul/config/skills/glyph/SKILL.md +163 -0
  576. package/.claude/worktrees/kanban-overhaul/config/skills/harness-engineering/SKILL.md +142 -0
  577. package/.claude/worktrees/kanban-overhaul/config/skills/lightrag/SKILL.md +81 -0
  578. package/.claude/worktrees/kanban-overhaul/config/skills/memory-protocol/SKILL.md +105 -0
  579. package/.claude/worktrees/kanban-overhaul/config/skills/obsidian/SKILL.md +306 -0
  580. package/.claude/worktrees/kanban-overhaul/config/skills/read-the-damn-docs/SKILL.md +113 -0
  581. package/.claude/worktrees/kanban-overhaul/config/skills/self-improvement/SKILL.md +64 -0
  582. package/.claude/worktrees/kanban-overhaul/config/trigger-patterns.json +186 -0
  583. package/.claude/worktrees/kanban-overhaul/docker-compose.yml +50 -0
  584. package/.claude/worktrees/kanban-overhaul/docs/A11Y.md +81 -0
  585. package/.claude/worktrees/kanban-overhaul/docs/DEPLOY.md +360 -0
  586. package/.claude/worktrees/kanban-overhaul/docs/DOCKER.md +250 -0
  587. package/.claude/worktrees/kanban-overhaul/docs/INDEX.md +223 -0
  588. package/.claude/worktrees/kanban-overhaul/docs/PLUGIN_REGISTRY.md +107 -0
  589. package/.claude/worktrees/kanban-overhaul/docs/RELEASING.md +693 -0
  590. package/.claude/worktrees/kanban-overhaul/docs/architecture.md +317 -0
  591. package/.claude/worktrees/kanban-overhaul/docs/code-review.md +242 -0
  592. package/.claude/worktrees/kanban-overhaul/docs/curator.md +144 -0
  593. package/.claude/worktrees/kanban-overhaul/docs/dashboard-ui-migration.md +807 -0
  594. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-001-cline-rewrite.md +114 -0
  595. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-002-in-process-clinecore.md +139 -0
  596. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-003-in-process-memory-vault.md +101 -0
  597. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-004-cline-agent-teams.md +112 -0
  598. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-005-bg-agents-via-dashboard.md +77 -0
  599. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-006-kanban-board.md +69 -0
  600. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-007-tool-approval-gate.md +147 -0
  601. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-008-skill-curator.md +100 -0
  602. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-009-pre-compaction-flush.md +106 -0
  603. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-010-knowledge-graph-tools.md +95 -0
  604. package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-011-claude-code-migration.md +172 -0
  605. package/.claude/worktrees/kanban-overhaul/docs/graph-tools.md +130 -0
  606. package/.claude/worktrees/kanban-overhaul/docs/migration-guide.md +471 -0
  607. package/.claude/worktrees/kanban-overhaul/docs/migrations/cline-replacement.md +118 -0
  608. package/.claude/worktrees/kanban-overhaul/docs/postmortems/2026-06-18-plugin-state-deadlock.md +250 -0
  609. package/.claude/worktrees/kanban-overhaul/docs/quality-document.md +74 -0
  610. package/.claude/worktrees/kanban-overhaul/docs/releases/v0.5.2.md +66 -0
  611. package/.claude/worktrees/kanban-overhaul/docs/releases/v0.5.4.md +85 -0
  612. package/.claude/worktrees/kanban-overhaul/docs/releases/v2.3.0.md +96 -0
  613. package/.claude/worktrees/kanban-overhaul/docs/releases/v3.24.0.md +155 -0
  614. package/.claude/worktrees/kanban-overhaul/docs/releases/v4.0.0.md +123 -0
  615. package/.claude/worktrees/kanban-overhaul/docs/releases/v7.0.0.md +173 -0
  616. package/.claude/worktrees/kanban-overhaul/docs/safety.md +216 -0
  617. package/.claude/worktrees/kanban-overhaul/feature_list.json +1297 -0
  618. package/.claude/worktrees/kanban-overhaul/init.sh +211 -0
  619. package/.claude/worktrees/kanban-overhaul/install.sh +498 -0
  620. package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/INSTRUCTIONS.md +82 -0
  621. package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/mod.json +37 -0
  622. package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/route.mjs +136 -0
  623. package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/web/index.html +180 -0
  624. package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/INSTRUCTIONS.md +81 -0
  625. package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/mod.json +61 -0
  626. package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/route.mjs +461 -0
  627. package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/web/index.html +263 -0
  628. package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/INSTRUCTIONS.md +87 -0
  629. package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/agents/thor.md +64 -0
  630. package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/mod.json +36 -0
  631. package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/route.mjs +98 -0
  632. package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/web/index.html +126 -0
  633. package/.claude/worktrees/kanban-overhaul/package.json +154 -0
  634. package/.claude/worktrees/kanban-overhaul/packages/sdk/ARCHITECTURE.md +70 -0
  635. package/.claude/worktrees/kanban-overhaul/packages/sdk/LICENSE +21 -0
  636. package/.claude/worktrees/kanban-overhaul/packages/sdk/README.md +80 -0
  637. package/.claude/worktrees/kanban-overhaul/packages/sdk/package.json +30 -0
  638. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/agent-registry.ts +304 -0
  639. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/byzantine.ts +587 -0
  640. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/index.ts +147 -0
  641. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/queen.ts +173 -0
  642. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/types.ts +199 -0
  643. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/dangerous-patterns.ts +127 -0
  644. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/audit.ts +156 -0
  645. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/budget.ts +269 -0
  646. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/envelope.ts +144 -0
  647. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/hmac.ts +160 -0
  648. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/index.ts +443 -0
  649. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/pii.ts +241 -0
  650. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/policy.ts +112 -0
  651. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/trust.ts +146 -0
  652. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/fingerprint.ts +0 -0
  653. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/index.ts +114 -0
  654. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/mcp/bin.ts +51 -0
  655. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/mcp/server.ts +848 -0
  656. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/memory/index.ts +160 -0
  657. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/codemod-intent.ts +125 -0
  658. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/index.ts +247 -0
  659. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/memory-distillation-shim.mjs +18 -0
  660. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/memory-distillation.ts +249 -0
  661. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/model-router.ts +235 -0
  662. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/q-learning-router.ts +304 -0
  663. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/swarm-topology.ts +279 -0
  664. package/.claude/worktrees/kanban-overhaul/packages/sdk/src/version.ts +4 -0
  665. package/.claude/worktrees/kanban-overhaul/packages/sdk/tsconfig.json +25 -0
  666. package/.claude/worktrees/kanban-overhaul/packages/sdk/vitest.config.ts +9 -0
  667. package/.claude/worktrees/kanban-overhaul/plugins/bizar/ARCHITECTURE.md +72 -0
  668. package/.claude/worktrees/kanban-overhaul/plugins/bizar/CONSTRAINTS.md +62 -0
  669. package/.claude/worktrees/kanban-overhaul/plugins/bizar/LICENSE +21 -0
  670. package/.claude/worktrees/kanban-overhaul/plugins/bizar/README.md +46 -0
  671. package/.claude/worktrees/kanban-overhaul/plugins/bizar/index.ts +50 -0
  672. package/.claude/worktrees/kanban-overhaul/plugins/bizar/package.json +18 -0
  673. package/.claude/worktrees/kanban-overhaul/plugins/bizar/tsconfig.json +29 -0
  674. package/.claude/worktrees/kanban-overhaul/scripts/bh-full-e2e.mjs +298 -0
  675. package/.claude/worktrees/kanban-overhaul/scripts/check-agents.mjs +73 -0
  676. package/.claude/worktrees/kanban-overhaul/scripts/check-arch.sh +80 -0
  677. package/.claude/worktrees/kanban-overhaul/scripts/check-deps.mjs +492 -0
  678. package/.claude/worktrees/kanban-overhaul/scripts/clean-state-check.sh +81 -0
  679. package/.claude/worktrees/kanban-overhaul/scripts/git-hooks/pre-commit +59 -0
  680. package/.claude/worktrees/kanban-overhaul/scripts/git-hooks/pre-push +54 -0
  681. package/.claude/worktrees/kanban-overhaul/scripts/install-hooks.sh +29 -0
  682. package/.claude/worktrees/kanban-overhaul/scripts/install-service.mjs +190 -0
  683. package/.claude/worktrees/kanban-overhaul/scripts/mirror-claude-md.sh +78 -0
  684. package/.claude/worktrees/kanban-overhaul/scripts/session-trace.sh +52 -0
  685. package/.claude/worktrees/kanban-overhaul/scripts/test-in-container.sh +157 -0
  686. package/.claude/worktrees/kanban-overhaul/scripts/verify-feature.sh +102 -0
  687. package/.claude/worktrees/kanban-overhaul/skills-lock.json +11 -0
  688. package/.claude/worktrees/kanban-overhaul/templates/clean-state-checklist.md +55 -0
  689. package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/README.md +32 -0
  690. package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/functions-index.template.js +15 -0
  691. package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/wrangler.toml.template +9 -0
  692. package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/.env.template +16 -0
  693. package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/README.md +58 -0
  694. package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/docker-compose.template.yml +23 -0
  695. package/.claude/worktrees/kanban-overhaul/templates/deploy/fly/README.md +35 -0
  696. package/.claude/worktrees/kanban-overhaul/templates/deploy/fly/fly.toml.template +28 -0
  697. package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/README.md +29 -0
  698. package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/api-index.template.js +18 -0
  699. package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/vercel.json.template +16 -0
  700. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/README.md +58 -0
  701. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/citation.json +16 -0
  702. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/code-review.json +16 -0
  703. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/code-search-basic.json +28 -0
  704. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/concise-output.json +16 -0
  705. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/context-window.json +16 -0
  706. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/error-recovery.json +16 -0
  707. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/json-output.json +20 -0
  708. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/latency-bounds.json +16 -0
  709. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/multi-language.json +16 -0
  710. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/regression-suite.json +79 -0
  711. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/response-format.json +30 -0
  712. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/safe-paths.json +16 -0
  713. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/tool-call-correctness.json +24 -0
  714. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/tool-call-multi-step.json +18 -0
  715. package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/unicode-handling.json +16 -0
  716. package/.claude/worktrees/kanban-overhaul/templates/evaluator-rubric.md +50 -0
  717. package/.claude/worktrees/kanban-overhaul/templates/plan/htmx.min.js +1 -0
  718. package/.claude/worktrees/kanban-overhaul/templates/plan/library/bug-investigation.mdx +79 -0
  719. package/.claude/worktrees/kanban-overhaul/templates/plan/library/decision-record.mdx +71 -0
  720. package/.claude/worktrees/kanban-overhaul/templates/plan/library/feature-design.mdx +92 -0
  721. package/.claude/worktrees/kanban-overhaul/templates/plan/meta.json.template +8 -0
  722. package/.claude/worktrees/kanban-overhaul/templates/plan/plan.mdx.template +46 -0
  723. package/.claude/worktrees/kanban-overhaul/templates/plugin-template/README.md +121 -0
  724. package/.claude/worktrees/kanban-overhaul/templates/plugin-template/index.js +66 -0
  725. package/.claude/worktrees/kanban-overhaul/templates/plugin-template/plugin.json +42 -0
  726. package/.claude/worktrees/kanban-overhaul/templates/plugin-template/tests/plugin.test.js +83 -0
  727. package/.claude/worktrees/kanban-overhaul/templates/schedules/daily-backup.json +12 -0
  728. package/.claude/worktrees/kanban-overhaul/templates/schedules/daily-cleanup.json +12 -0
  729. package/.claude/worktrees/kanban-overhaul/templates/schedules/hourly-health-check.json +12 -0
  730. package/.claude/worktrees/kanban-overhaul/templates/schedules/webhook-on-push.json +13 -0
  731. package/.claude/worktrees/kanban-overhaul/templates/schedules/weekly-digest.json +13 -0
  732. package/.claude/worktrees/kanban-overhaul/templates/sprint-contract.md +47 -0
  733. package/.claude/worktrees/kanban-overhaul/tsconfig.json +44 -0
  734. package/.claude/worktrees/kanban-overhaul/vite.config.ts +51 -0
  735. package/bizar-dash/dist/assets/ActivityFeed-BXIkGGQ1.js +16 -0
  736. package/bizar-dash/dist/assets/ActivityFeed-BXIkGGQ1.js.map +1 -0
  737. package/bizar-dash/dist/assets/ActivityView-CBxNNrZa.js +12 -0
  738. package/bizar-dash/dist/assets/ActivityView-CBxNNrZa.js.map +1 -0
  739. package/bizar-dash/dist/assets/AgentsView-uv4l21AH.js +23 -0
  740. package/bizar-dash/dist/assets/AgentsView-uv4l21AH.js.map +1 -0
  741. package/bizar-dash/dist/assets/BackgroundJobsView-CB4WXIpk.js +6 -0
  742. package/bizar-dash/dist/assets/BackgroundJobsView-CB4WXIpk.js.map +1 -0
  743. package/bizar-dash/dist/assets/{Card-C_bvqXdQ.js → Card-CeZsWlcP.js} +1 -1
  744. package/bizar-dash/dist/assets/{Card-C_bvqXdQ.js.map → Card-CeZsWlcP.js.map} +1 -1
  745. package/bizar-dash/dist/assets/Chip-OPjSKl2I.js +1 -0
  746. package/bizar-dash/dist/assets/Chip-OPjSKl2I.js.map +1 -0
  747. package/bizar-dash/dist/assets/{EmptyState-BWQuKnk9.js → EmptyState-BrLA8mbE.js} +1 -1
  748. package/bizar-dash/dist/assets/{EmptyState-BWQuKnk9.js.map → EmptyState-BrLA8mbE.js.map} +1 -1
  749. package/bizar-dash/dist/assets/GoalsView-B8R-kxQr.js +11 -0
  750. package/bizar-dash/dist/assets/GoalsView-B8R-kxQr.js.map +1 -0
  751. package/bizar-dash/dist/assets/{Grid-C62gCPqt.js → Grid-B7NgNtff.js} +1 -1
  752. package/bizar-dash/dist/assets/{Grid-C62gCPqt.js.map → Grid-B7NgNtff.js.map} +1 -1
  753. package/bizar-dash/dist/assets/Input-BW_5Sl6N.js +1 -0
  754. package/bizar-dash/dist/assets/Input-BW_5Sl6N.js.map +1 -0
  755. package/bizar-dash/dist/assets/KanbanCard-B-NOSfMN.js +21 -0
  756. package/bizar-dash/dist/assets/KanbanCard-B-NOSfMN.js.map +1 -0
  757. package/bizar-dash/dist/assets/LibrariesView-D6eB7B2A.js +67 -0
  758. package/bizar-dash/dist/assets/LibrariesView-D6eB7B2A.js.map +1 -0
  759. package/bizar-dash/dist/assets/MemoryView-MK4m1KbR.js +13 -0
  760. package/bizar-dash/dist/assets/MemoryView-MK4m1KbR.js.map +1 -0
  761. package/bizar-dash/dist/assets/OverviewView-CHavfYBa.js +1 -0
  762. package/bizar-dash/dist/assets/OverviewView-CHavfYBa.js.map +1 -0
  763. package/bizar-dash/dist/assets/SchedulesView-zV-0pbsz.js +1 -0
  764. package/bizar-dash/dist/assets/SchedulesView-zV-0pbsz.js.map +1 -0
  765. package/bizar-dash/dist/assets/Select-B6Ho36Tq.js +11 -0
  766. package/bizar-dash/dist/assets/Select-B6Ho36Tq.js.map +1 -0
  767. package/bizar-dash/dist/assets/SettingsRow-Br21uRFz.js +1 -0
  768. package/bizar-dash/dist/assets/SettingsRow-Br21uRFz.js.map +1 -0
  769. package/bizar-dash/dist/assets/SettingsView-Cx3uJrus.js +38 -0
  770. package/bizar-dash/dist/assets/SettingsView-Cx3uJrus.js.map +1 -0
  771. package/bizar-dash/dist/assets/Sheet-Cmu_4Zea.js +1 -0
  772. package/bizar-dash/dist/assets/Sheet-Cmu_4Zea.js.map +1 -0
  773. package/bizar-dash/dist/assets/Slider-B_jPr-SR.js +1 -0
  774. package/bizar-dash/dist/assets/Slider-B_jPr-SR.js.map +1 -0
  775. package/bizar-dash/dist/assets/Sparkline-Cmqw0N39.js +1 -0
  776. package/bizar-dash/dist/assets/Sparkline-Cmqw0N39.js.map +1 -0
  777. package/bizar-dash/dist/assets/Switch-C7Qyu50Y.js +10 -0
  778. package/bizar-dash/dist/assets/Switch-C7Qyu50Y.js.map +1 -0
  779. package/bizar-dash/dist/assets/TasksView-BXADmjgb.js +1 -0
  780. package/bizar-dash/dist/assets/TasksView-BXADmjgb.js.map +1 -0
  781. package/bizar-dash/dist/assets/Textarea-KIN98DVH.js +1 -0
  782. package/bizar-dash/dist/assets/Textarea-KIN98DVH.js.map +1 -0
  783. package/bizar-dash/dist/assets/{ViewHeader-D6c2cw1b.js → ViewHeader-CPbqI-w8.js} +1 -1
  784. package/bizar-dash/dist/assets/{ViewHeader-D6c2cw1b.js.map → ViewHeader-CPbqI-w8.js.map} +1 -1
  785. package/bizar-dash/dist/assets/{brain-DeoXNDE2.js → brain-jN_ldx3U.js} +1 -1
  786. package/bizar-dash/dist/assets/{brain-DeoXNDE2.js.map → brain-jN_ldx3U.js.map} +1 -1
  787. package/bizar-dash/dist/assets/{calendar-DRlQkGJc.js → calendar-DZGgPP2_.js} +2 -2
  788. package/bizar-dash/dist/assets/{calendar-DRlQkGJc.js.map → calendar-DZGgPP2_.js.map} +1 -1
  789. package/bizar-dash/dist/assets/{circle-check-DmYQ3vGp.js → circle-check-XhUtiACZ.js} +1 -1
  790. package/bizar-dash/dist/assets/{circle-check-DmYQ3vGp.js.map → circle-check-XhUtiACZ.js.map} +1 -1
  791. package/bizar-dash/dist/assets/clock-BXBnSbox.js +6 -0
  792. package/bizar-dash/dist/assets/clock-BXBnSbox.js.map +1 -0
  793. package/bizar-dash/dist/assets/{cmdk-BwN8hcKQ.js → cmdk-D15rXxc5.js} +2 -2
  794. package/bizar-dash/dist/assets/{cmdk-BwN8hcKQ.js.map → cmdk-D15rXxc5.js.map} +1 -1
  795. package/bizar-dash/dist/assets/dnd-kit-Bormfg7j.js +5 -0
  796. package/bizar-dash/dist/assets/{dnd-kit-DR2Qzzxk.js.map → dnd-kit-Bormfg7j.js.map} +1 -1
  797. package/bizar-dash/dist/assets/git-pull-request-BCt0CEjc.js +11 -0
  798. package/bizar-dash/dist/assets/git-pull-request-BCt0CEjc.js.map +1 -0
  799. package/bizar-dash/dist/assets/index-C0JBGB5M.js +1 -0
  800. package/bizar-dash/dist/assets/index-C0JBGB5M.js.map +1 -0
  801. package/bizar-dash/dist/assets/index-CrWI7sQR.js +1 -0
  802. package/bizar-dash/dist/assets/index-CrWI7sQR.js.map +1 -0
  803. package/bizar-dash/dist/assets/main-CCimEcWH.js +134 -0
  804. package/bizar-dash/dist/assets/main-CCimEcWH.js.map +1 -0
  805. package/bizar-dash/dist/assets/{main-COdgjqbZ.css → main-CcQfRfIJ.css} +1 -1
  806. package/bizar-dash/dist/assets/{minus-CrStJTZ7.js → play-B0rTjpSg.js} +2 -2
  807. package/bizar-dash/dist/assets/play-B0rTjpSg.js.map +1 -0
  808. package/bizar-dash/dist/assets/plus-BaTQsS9G.js +6 -0
  809. package/bizar-dash/dist/assets/plus-BaTQsS9G.js.map +1 -0
  810. package/bizar-dash/dist/assets/refresh-cw-CoatVcs3.js +6 -0
  811. package/bizar-dash/dist/assets/refresh-cw-CoatVcs3.js.map +1 -0
  812. package/bizar-dash/dist/assets/terminal-k-1HFHcN.js +11 -0
  813. package/bizar-dash/dist/assets/terminal-k-1HFHcN.js.map +1 -0
  814. package/bizar-dash/dist/assets/trash-2-DtpKnAn2.js +6 -0
  815. package/bizar-dash/dist/assets/trash-2-DtpKnAn2.js.map +1 -0
  816. package/bizar-dash/dist/assets/triangle-alert-FHSs_e5b.js +6 -0
  817. package/bizar-dash/dist/assets/triangle-alert-FHSs_e5b.js.map +1 -0
  818. package/bizar-dash/dist/assets/{wrench-BJ1WIC4u.js → wrench-CbBE0oQ0.js} +2 -2
  819. package/bizar-dash/dist/assets/{wrench-BJ1WIC4u.js.map → wrench-CbBE0oQ0.js.map} +1 -1
  820. package/bizar-dash/dist/v8.html +3 -3
  821. package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  822. package/bizar-dash/src/server/api.mjs +15 -0
  823. package/bizar-dash/src/server/bg-poller.mjs +81 -1
  824. package/bizar-dash/src/server/bg-poller.test.mjs +28 -0
  825. package/bizar-dash/src/server/progress-parser.mjs +237 -0
  826. package/bizar-dash/src/server/progress-parser.test.mjs +105 -0
  827. package/bizar-dash/src/server/routes/agents-cc.mjs +381 -0
  828. package/bizar-dash/src/server/routes/agents-cc.test.mjs +35 -0
  829. package/bizar-dash/src/server/routes/goals.mjs +307 -0
  830. package/bizar-dash/src/server/routes/spawn.mjs +59 -0
  831. package/bizar-dash/src/server/routes/tasks.mjs +11 -0
  832. package/bizar-dash/src/server/server.mjs +1 -1
  833. package/bizar-dash/src/web/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  834. package/bizar-dash/src/web/v8/App.tsx +56 -7
  835. package/bizar-dash/src/web/v8/__tests__/App.test.tsx +2 -2
  836. package/bizar-dash/src/web/v8/__tests__/BackgroundJobsView.test.tsx +172 -0
  837. package/bizar-dash/src/web/v8/__tests__/MemoryView.test.tsx +91 -0
  838. package/bizar-dash/src/web/v8/__tests__/NotificationsPopover.test.tsx +91 -0
  839. package/bizar-dash/src/web/v8/__tests__/SchedulesView.test.tsx +157 -0
  840. package/bizar-dash/src/web/v8/__tests__/Topbar.test.tsx +86 -0
  841. package/bizar-dash/src/web/v8/__tests__/changelog.test.tsx +79 -0
  842. package/bizar-dash/src/web/v8/__tests__/control-plane.test.tsx +104 -0
  843. package/bizar-dash/src/web/v8/__tests__/theme.test.tsx +10 -4
  844. package/bizar-dash/src/web/v8/__tests__/useFetch.test.ts +92 -0
  845. package/bizar-dash/src/web/v8/__tests__/useWebSocket.test.ts +87 -0
  846. package/bizar-dash/src/web/v8/__tests__/views.test.tsx +116 -40
  847. package/bizar-dash/src/web/v8/data/fetcher.ts +59 -0
  848. package/bizar-dash/src/web/v8/data/types.ts +156 -0
  849. package/bizar-dash/src/web/v8/data/useFetch.ts +62 -0
  850. package/bizar-dash/src/web/v8/data/useWebSocket.ts +161 -0
  851. package/bizar-dash/src/web/v8/shell/Sidebar.tsx +46 -12
  852. package/bizar-dash/src/web/v8/shell/Topbar.tsx +30 -4
  853. package/bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx +283 -0
  854. package/bizar-dash/src/web/v8/ui/agents/AgentStreamPanel.tsx +371 -0
  855. package/bizar-dash/src/web/v8/ui/feedback/NotificationsPopover.tsx +239 -0
  856. package/bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx +251 -0
  857. package/bizar-dash/src/web/v8/ui/kanban/KanbanBoard.tsx +6 -3
  858. package/bizar-dash/src/web/v8/ui/kanban/KanbanCard.tsx +3 -3
  859. package/bizar-dash/src/web/v8/ui/kanban/KanbanColumn.tsx +10 -5
  860. package/bizar-dash/src/web/v8/ui/styles/globals.css +5 -0
  861. package/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +415 -16
  862. package/bizar-dash/src/web/v8/views/Agents/AgentsView.tsx +151 -87
  863. package/bizar-dash/src/web/v8/views/BackgroundJobs/BackgroundJobsView.tsx +442 -0
  864. package/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.test.tsx +1 -1
  865. package/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.tsx +148 -30
  866. package/bizar-dash/src/web/v8/views/Goals/GoalsView.tsx +176 -67
  867. package/bizar-dash/src/web/v8/views/Libraries/LibrariesView.tsx +78 -11
  868. package/bizar-dash/src/web/v8/views/Memory/MemoryView.tsx +212 -42
  869. package/bizar-dash/src/web/v8/views/Overview/OverviewView.tsx +112 -52
  870. package/bizar-dash/src/web/v8/views/Router.tsx +23 -37
  871. package/bizar-dash/src/web/v8/views/Schedules/SchedulesView.tsx +395 -0
  872. package/bizar-dash/src/web/v8/views/Settings/SettingsView.tsx +651 -210
  873. package/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +142 -49
  874. package/bizar-dash/tests/components/Button.test.tsx +51 -14
  875. package/bizar-dash/tests/components/Card.test.tsx +37 -20
  876. package/bizar-dash/tests/components/Dialog.test.tsx +80 -0
  877. package/bizar-dash/tests/components/Toast.test.tsx +48 -95
  878. package/bizar-dash/tests/goals-decompose.test.mjs +179 -0
  879. package/bizar-dash/tests/setup.ts +21 -0
  880. package/bizar-dash/tests/ui/primitives/VisuallyHidden.test.tsx +30 -15
  881. package/bizar-dash/vite.config.ts +15 -0
  882. package/bizar-dash/vitest.config.ts +4 -1
  883. package/cli/bin.mjs +32 -0
  884. package/cli/install.mjs +26 -1
  885. package/cli/provision-claude.mjs +86 -0
  886. package/package.json +1 -1
  887. package/packages/sdk/.harness/agents.json +17 -0
  888. package/packages/sdk/.harness/topology.json +4 -0
  889. package/scripts/run-dev.mjs +84 -0
  890. package/bizar-dash/dist/assets/ActivityFeed-BRBtQOHB.js +0 -6
  891. package/bizar-dash/dist/assets/ActivityFeed-BRBtQOHB.js.map +0 -1
  892. package/bizar-dash/dist/assets/ActivityView-CwqhxBfh.js +0 -1
  893. package/bizar-dash/dist/assets/ActivityView-CwqhxBfh.js.map +0 -1
  894. package/bizar-dash/dist/assets/AgentActivity-6MxU-a9F.js +0 -1
  895. package/bizar-dash/dist/assets/AgentActivity-6MxU-a9F.js.map +0 -1
  896. package/bizar-dash/dist/assets/AgentsView-BYrOFdwl.js +0 -8
  897. package/bizar-dash/dist/assets/AgentsView-BYrOFdwl.js.map +0 -1
  898. package/bizar-dash/dist/assets/Badge-Cd61wsBa.js +0 -1
  899. package/bizar-dash/dist/assets/Badge-Cd61wsBa.js.map +0 -1
  900. package/bizar-dash/dist/assets/GoalsView-Dok0yt9S.js +0 -11
  901. package/bizar-dash/dist/assets/GoalsView-Dok0yt9S.js.map +0 -1
  902. package/bizar-dash/dist/assets/KanbanCard-CtTKP6ZX.js +0 -21
  903. package/bizar-dash/dist/assets/KanbanCard-CtTKP6ZX.js.map +0 -1
  904. package/bizar-dash/dist/assets/LibrariesView-BcyBQXiY.js +0 -67
  905. package/bizar-dash/dist/assets/LibrariesView-BcyBQXiY.js.map +0 -1
  906. package/bizar-dash/dist/assets/MemoryView-49wR4u-y.js +0 -13
  907. package/bizar-dash/dist/assets/MemoryView-49wR4u-y.js.map +0 -1
  908. package/bizar-dash/dist/assets/OverviewView-BtQ_UWYj.js +0 -1
  909. package/bizar-dash/dist/assets/OverviewView-BtQ_UWYj.js.map +0 -1
  910. package/bizar-dash/dist/assets/ProgressBar-CpvDeq9F.js +0 -1
  911. package/bizar-dash/dist/assets/ProgressBar-CpvDeq9F.js.map +0 -1
  912. package/bizar-dash/dist/assets/SettingsRow-DmIe5OUu.js +0 -30
  913. package/bizar-dash/dist/assets/SettingsRow-DmIe5OUu.js.map +0 -1
  914. package/bizar-dash/dist/assets/SettingsView-D1KmGWbi.js +0 -48
  915. package/bizar-dash/dist/assets/SettingsView-D1KmGWbi.js.map +0 -1
  916. package/bizar-dash/dist/assets/StatTile-BkIP32gG.js +0 -11
  917. package/bizar-dash/dist/assets/StatTile-BkIP32gG.js.map +0 -1
  918. package/bizar-dash/dist/assets/TasksView-Cba3GJ42.js +0 -1
  919. package/bizar-dash/dist/assets/TasksView-Cba3GJ42.js.map +0 -1
  920. package/bizar-dash/dist/assets/dnd-kit-DR2Qzzxk.js +0 -5
  921. package/bizar-dash/dist/assets/git-merge-OoqBKQer.js +0 -6
  922. package/bizar-dash/dist/assets/git-merge-OoqBKQer.js.map +0 -1
  923. package/bizar-dash/dist/assets/git-pull-request-CXBQTR2f.js +0 -6
  924. package/bizar-dash/dist/assets/git-pull-request-CXBQTR2f.js.map +0 -1
  925. package/bizar-dash/dist/assets/main-Cw6gybzS.js +0 -109
  926. package/bizar-dash/dist/assets/main-Cw6gybzS.js.map +0 -1
  927. package/bizar-dash/dist/assets/message-square-DUTeIQAR.js +0 -6
  928. package/bizar-dash/dist/assets/message-square-DUTeIQAR.js.map +0 -1
  929. package/bizar-dash/dist/assets/minus-CrStJTZ7.js.map +0 -1
  930. /package/bizar-dash/tests/{BackgroundAgents.test.tsx → v7-archive/BackgroundAgents.test.tsx} +0 -0
  931. /package/bizar-dash/tests/{a11y → v7-archive/a11y}/forms.test.tsx +0 -0
  932. /package/bizar-dash/tests/{a11y.test.tsx → v7-archive/a11y.test.tsx} +0 -0
  933. /package/bizar-dash/tests/{autosave.test.tsx → v7-archive/autosave.test.tsx} +0 -0
  934. /package/bizar-dash/tests/{backup-restore.test.tsx → v7-archive/backup-restore.test.tsx} +0 -0
  935. /package/bizar-dash/tests/{chat-composer.test.tsx → v7-archive/chat-composer.test.tsx} +0 -0
  936. /package/bizar-dash/tests/{communication-log.test.tsx → v7-archive/communication-log.test.tsx} +0 -0
  937. /package/bizar-dash/tests/{components → v7-archive/components}/Modal.test.tsx +0 -0
  938. /package/bizar-dash/tests/{components → v7-archive/components}/Spinner.test.tsx +0 -0
  939. /package/bizar-dash/tests/{components → v7-archive/components}/StatusBadge.test.tsx +0 -0
  940. /package/bizar-dash/tests/{components → v7-archive/components}/doctor-panel.test.tsx +0 -0
  941. /package/bizar-dash/tests/{components → v7-archive/components}/screenshot-ocr.test.tsx +0 -0
  942. /package/bizar-dash/tests/{components → v7-archive/components}/settings-search.test.tsx +0 -0
  943. /package/bizar-dash/tests/{components → v7-archive/components}/workspace-selector.test.tsx +0 -0
  944. /package/bizar-dash/tests/{ui → v7-archive}/controls/Button.test.tsx +0 -0
  945. /package/bizar-dash/tests/{ui → v7-archive}/controls/Checkbox.test.tsx +0 -0
  946. /package/bizar-dash/tests/{ui → v7-archive}/controls/IconButton.test.tsx +0 -0
  947. /package/bizar-dash/tests/{ui → v7-archive}/controls/Kbd.test.tsx +0 -0
  948. /package/bizar-dash/tests/{ui → v7-archive}/controls/NumberInput.test.tsx +0 -0
  949. /package/bizar-dash/tests/{ui → v7-archive}/controls/RadioGroup.test.tsx +0 -0
  950. /package/bizar-dash/tests/{ui → v7-archive}/controls/SearchInput.test.tsx +0 -0
  951. /package/bizar-dash/tests/{ui → v7-archive}/controls/Select.test.tsx +0 -0
  952. /package/bizar-dash/tests/{ui → v7-archive}/controls/Slider.test.tsx +0 -0
  953. /package/bizar-dash/tests/{ui → v7-archive}/controls/TextInput.test.tsx +0 -0
  954. /package/bizar-dash/tests/{ui → v7-archive}/controls/Textarea.test.tsx +0 -0
  955. /package/bizar-dash/tests/{ui → v7-archive}/controls/Toggle.test.tsx +0 -0
  956. /package/bizar-dash/tests/{ui → v7-archive}/data/BarChart.test.tsx +0 -0
  957. /package/bizar-dash/tests/{ui → v7-archive}/data/DataTable.test.tsx +0 -0
  958. /package/bizar-dash/tests/{ui → v7-archive}/data/EmptyState.test.tsx +0 -0
  959. /package/bizar-dash/tests/{ui → v7-archive}/data/ErrorState.test.tsx +0 -0
  960. /package/bizar-dash/tests/{ui → v7-archive}/data/KeyValueList.test.tsx +0 -0
  961. /package/bizar-dash/tests/{ui → v7-archive}/data/LoadingState.test.tsx +0 -0
  962. /package/bizar-dash/tests/{ui → v7-archive}/data/Sparkline.test.tsx +0 -0
  963. /package/bizar-dash/tests/{ui → v7-archive}/data/StatTile.test.tsx +0 -0
  964. /package/bizar-dash/tests/{dep-graph.test.tsx → v7-archive/dep-graph.test.tsx} +0 -0
  965. /package/bizar-dash/tests/{eval-web-ui.test.tsx → v7-archive/eval-web-ui.test.tsx} +0 -0
  966. /package/bizar-dash/tests/{event-log.test.tsx → v7-archive/event-log.test.tsx} +0 -0
  967. /package/bizar-dash/tests/{ui → v7-archive}/feedback/Badge.test.tsx +0 -0
  968. /package/bizar-dash/tests/{ui → v7-archive}/feedback/Dialog.test.tsx +0 -0
  969. /package/bizar-dash/tests/{ui → v7-archive}/feedback/ProgressBar.test.tsx +0 -0
  970. /package/bizar-dash/tests/{ui → v7-archive}/feedback/StatusDot.test.tsx +0 -0
  971. /package/bizar-dash/tests/{ui → v7-archive}/feedback/Toast.test.tsx +0 -0
  972. /package/bizar-dash/tests/{ui → v7-archive}/feedback/Tooltip.test.tsx +0 -0
  973. /package/bizar-dash/tests/{goal-input.test.tsx → v7-archive/goal-input.test.tsx} +0 -0
  974. /package/bizar-dash/tests/{goap-planner.test.ts → v7-archive/goap-planner.test.ts} +0 -0
  975. /package/bizar-dash/tests/{hooks → v7-archive/hooks}/useModal.test.tsx +0 -0
  976. /package/bizar-dash/tests/{hooks → v7-archive/hooks}/useToast.test.tsx +0 -0
  977. /package/bizar-dash/tests/{ui → v7-archive}/layout/AppShell.test.tsx +0 -0
  978. /package/bizar-dash/tests/{ui → v7-archive}/layout/Breadcrumbs.test.tsx +0 -0
  979. /package/bizar-dash/tests/{ui → v7-archive}/layout/Panel.test.tsx +0 -0
  980. /package/bizar-dash/tests/{ui → v7-archive}/layout/PanelHeader.test.tsx +0 -0
  981. /package/bizar-dash/tests/{ui → v7-archive}/layout/Sidebar.test.tsx +0 -0
  982. /package/bizar-dash/tests/{ui → v7-archive}/layout/Tabs.test.tsx +0 -0
  983. /package/bizar-dash/tests/{ui → v7-archive}/layout/Topbar.test.tsx +0 -0
  984. /package/bizar-dash/tests/{ui → v7-archive}/layout/ViewHeader.test.tsx +0 -0
  985. /package/bizar-dash/tests/{lib → v7-archive/lib}/i18n.test.ts +0 -0
  986. /package/bizar-dash/tests/{lib → v7-archive/lib}/search-fuzzy.test.ts +0 -0
  987. /package/bizar-dash/tests/{lib → v7-archive/lib}/utils.test.ts +0 -0
  988. /package/bizar-dash/tests/{memory-graph-view.test.tsx → v7-archive/memory-graph-view.test.tsx} +0 -0
  989. /package/bizar-dash/tests/{mobile-chat.test.tsx → v7-archive/mobile-chat.test.tsx} +0 -0
  990. /package/bizar-dash/tests/{mobile-layout.test.tsx → v7-archive/mobile-layout.test.tsx} +0 -0
  991. /package/bizar-dash/tests/{mobile-overview.test.tsx → v7-archive/mobile-overview.test.tsx} +0 -0
  992. /package/bizar-dash/tests/{mobile-settings.test.tsx → v7-archive/mobile-settings.test.tsx} +0 -0
  993. /package/bizar-dash/tests/{mobile-tasks.test.tsx → v7-archive/mobile-tasks.test.tsx} +0 -0
  994. /package/bizar-dash/tests/{ui → v7-archive}/navigation/CommandPalette.test.tsx +0 -0
  995. /package/bizar-dash/tests/{ui → v7-archive}/navigation/NavGroup.test.tsx +0 -0
  996. /package/bizar-dash/tests/{ui → v7-archive}/navigation/NavLink.test.tsx +0 -0
  997. /package/bizar-dash/tests/{quality-gates.test.tsx → v7-archive/quality-gates.test.tsx} +0 -0
  998. /package/bizar-dash/tests/{settings-layout.test.tsx → v7-archive/settings-layout.test.tsx} +0 -0
  999. /package/bizar-dash/tests/{settings-mode-wiring.test.tsx → v7-archive/settings-mode-wiring.test.tsx} +0 -0
  1000. /package/bizar-dash/tests/{settings-nav.test.tsx → v7-archive/settings-nav.test.tsx} +0 -0
  1001. /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Box.test.tsx +0 -0
  1002. /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Grid.test.tsx +0 -0
  1003. /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Inline.test.tsx +0 -0
  1004. /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Separator.test.tsx +0 -0
  1005. /package/bizar-dash/tests/{ui → v7-archive/ui}/primitives/Stack.test.tsx +0 -0
  1006. /package/bizar-dash/tests/{views → v7-archive/views}/Agents.test.tsx +0 -0
  1007. /package/bizar-dash/tests/{views → v7-archive/views}/Memory.test.tsx +0 -0
  1008. /package/bizar-dash/tests/{views → v7-archive/views}/Overview.test.tsx +0 -0
  1009. /package/bizar-dash/tests/{views → v7-archive/views}/Tasks.test.tsx +0 -0
  1010. /package/bizar-dash/tests/{views → v7-archive/views}/sidebar.test.tsx +0 -0
  1011. /package/bizar-dash/tests/{views → v7-archive/views}/topbar.test.tsx +0 -0
  1012. /package/bizar-dash/tests/{voice-recorder.test.tsx → v7-archive/voice-recorder.test.tsx} +0 -0
@@ -0,0 +1,1406 @@
1
+ # PROGRESS.md — Cross-Session State
2
+
3
+ > This file is the **single source of truth** for what the system is doing
4
+ > right now. Updated at every clock-in AND clock-out. New sessions start
5
+ > by reading this file before touching any code.
6
+
7
+ ## In Progress — Tasks Page → Cline-Style Kanban Overhaul
8
+
9
+ User-requested Tasks page overhaul (F-0XX). The v8 kanban shipped in Sprint S5
10
+ was a thin shim over `GET /api/tasks`. This overhaul brings it to parity with
11
+ [Cline's local multi-agent kanban](https://github.com/cline/kanban) — per-card
12
+ lifecycle, live status, multi-select, inline creation, full edit dialog — using
13
+ only the project's custom-built components (no shadcn).
14
+
15
+ **Branch:** `worktree-kanban-overhaul` (worktree at `.claude/worktrees/kanban-overhaul`).
16
+
17
+ **New components shipped** (`bizar-dash/src/web/v8/ui/kanban/`):
18
+ - `KanbanProgress.tsx` — compact progress bar (inline + block layouts) for cards and detail panels.
19
+ - `KanbanCardBadges.tsx` — chip row for tags / assignee / recurring / subtask / dependency counts.
20
+ - `KanbanToolbar.tsx` — top-of-board toolbar. Three modes: normal / selecting (bulk) / filtered. Swaps to bulk actions (move / archive / delete) when ≥1 card is selected.
21
+ - `KanbanEmptyColumn.tsx` — dashed drop target shown when a column has 0 cards.
22
+ - `KanbanDetailDialog.tsx` — full-edit modal (title, description, status, priority, assignee, branch, due date, tags, subtasks, dependencies, activity timeline). `PUT /api/tasks/:id` for save; `POST /api/tasks/:id/start` for queued tasks; `POST /api/tasks/:id/timer` for timer toggle; `POST /api/tasks/:id/archive`; `DELETE /api/tasks/:id`.
23
+ - `useKanbanSelection.ts` — `Set<string>` of selected card ids with `toggle` / `add` / `remove` / `set` / `clear` helpers + Esc-to-clear keyboard shortcut (skips text inputs).
24
+
25
+ **Extended components:**
26
+ - `KanbanCard.tsx` — added selection checkbox, progress rendering, badge row, metadata (assignee, recurring, subtasks, deps, tags), onClick handler to open detail.
27
+ - `KanbanBoard.tsx` — added `useKanbanBoard()` context for descendants to read selection state.
28
+ - `KanbanContextMenu.tsx` — added `extraItems` prop for card-specific actions (e.g. "Start agent" on queued cards).
29
+
30
+ **Rewritten:**
31
+ - `TasksView.tsx` — full Cline-style surface: 6 columns (Backlog / Queued / In progress / In review / Done / Archived), WIP limit on In progress, search + priority filter chips, multi-select toolbar with bulk move / archive / delete via `POST /api/tasks/bulk`, full right-click context menu (open / duplicate / copy link / move left / move right / archive / delete / start agent for queued), keyboard shortcuts (`n` for new task, `Esc` to clear selection), live WS sync (`tasks:change` / `tasks:delete` / `task:progress`), new-task dialog.
32
+ - `TasksKanbanPlaceholder.tsx` — DELETED (TasksView now does the real work).
33
+ - `data/types.ts` — extended `Task` interface with `tags`, `subtasks`, `dependencies`, `recurring`, `activity`, `_timerStart`. Added `'backlog'` to status union.
34
+
35
+ **Bug fixes baked into the rewrite:**
36
+ 1. `TasksView` was reading `tasks.data?.tasks` (wrapped shape) while `GET /api/tasks` returns a bare array (`routes/tasks.mjs:83`). Production cards never hydrated from the initial fetch — only WS events populated them. Now reads `Task[]` directly.
37
+ 2. `TasksView` had render-phase `setState` (line 91-93) triggering React warnings + undefined behavior on re-render. Moved data sync into `useEffect`.
38
+
39
+ **Wired:**
40
+ - `App.tsx` — replaced hardcoded sidebar tasks count (47) with live count from `/api/snapshot` (`active + queued + blocked + done`).
41
+
42
+ **Tests:**
43
+ - `__tests__/kanban.test.tsx` — extended with new components (Progress, CardBadges, Toolbar, EmptyColumn, useKanbanSelection, Card selection).
44
+ - `__tests__/views.test.tsx` — fixed mock to return bare array (was wrapped). Updated column title lookups to use `getByLabelText` (the column header is aria-labeled, filter chips collide on text).
45
+ - `__tests__/tasks-detail.test.tsx` — NEW. End-to-end coverage of the detail dialog flow (open, save via PUT, start agent).
46
+ - `__tests__/tasks-bulk.test.tsx` — NEW. Selection toggle, bulk archive via POST /api/tasks/bulk, Esc clears selection.
47
+ - `__tests__/App.test.tsx` — updated column title lookups for the same reason.
48
+
49
+ **Verification:**
50
+ - `make check` → 0 TS errors.
51
+ - `npm run test:web` → 264/264 pass across 34 test files.
52
+ - `make test` → 12 pre-existing SDK build-dist failures (unrelated; baseline on master).
53
+
54
+ **Skipped:**
55
+ - Card-linking / dependency arrows (Cline feature). Backend has the data, but rendering SVG arrows is a separate sprint. Surface the deps as chips in the detail dialog instead.
56
+ - Per-card live agent terminal. Would require a new WS subscription per open dialog. Defer to a follow-up sprint.
57
+ - Per-project task scoping in the UI. Backend supports `?projectId=`; we let the global active project handle it for now (matches the rest of the dashboard).
58
+
59
+ ## In Progress — F-043 v8 Dashboard Foundation (Sprint S1)
60
+
61
+ User-requested full dashboard rewrite. v7 dashboard (`bizar-dash/src/web/{ui,views,components,hooks,locales,mobile,styles,App.tsx,main.tsx}`) is preserved untouched while the v8 tree builds in parallel at `bizar-dash/src/web/v8/`. The rewrite will replace v7 wholesale once Sprint S9 verification ships.
62
+
63
+ **Design contracts** (committed in this branch, worktree-v8-dashboard-rewrite-plan):
64
+ - `bizar-dash/DESIGN.md` — 14-section design system following Google's design.md standard (principles, tokens, typography, layout, components, interaction patterns, banned tropes).
65
+ - `bizar-dash/PLAN.md` — 17-section implementation plan (17 ADRs, 10-sprint roadmap F-042..F-051, ~28 working days).
66
+ - `bizar-dash/GLYPH.md` — ASCII visual rendering of the v8 design (B mark, shell layout, context menu, command palette, component tree, route tree, token system, sprint roadmap).
67
+
68
+ **Sprint S1 (Foundation) shipped in this commit:**
69
+ - `bizar-dash/src/web/v8/ui/styles/{tokens,reset,globals}.css` — full OKLch token system (light + dark + system) per DESIGN.md §3.
70
+ - `bizar-dash/src/web/v8/ui/primitives/{Box,Stack,Inline,Cluster,Grid,Center,Separator,ScrollArea,Portal,VisuallyHidden}.tsx` — 10 layout & a11y primitives.
71
+ - `bizar-dash/src/web/v8/ui/utils/cx.ts` — `clsx + tailwind-merge` wrapper.
72
+ - `bizar-dash/src/web/v8/ui/theme/{ThemeProvider,DensityProvider,ThemeToggle,useTheme,useDensity}.{tsx,ts}` — light/dark/system theme + comfortable/compact density with localStorage persistence.
73
+ - `bizar-dash/src/web/v8/shell/{AppShell,Topbar,Sidebar,StatusBar}.tsx` — the v8 layout skeleton (topbar 56px + collapsible 260px sidebar + main content area).
74
+ - `bizar-dash/src/web/v8/{App,main}.tsx` — entry that wires ThemeProvider + DensityProvider + AppShell.
75
+ - `bizar-dash/src/web/v8/views/Tasks/{TasksKanbanPlaceholder,CommandPalettePlaceholder}.tsx` — S1 stand-ins proving the shell renders.
76
+ - `bizar-dash/src/web/v8/__tests__/{cx,theme.test.tsx}` — 14 vitest cases (cx semantics, ThemeProvider/DensityProvider cycles, localStorage persistence, data-attribute writes, hook-without-provider throws).
77
+
78
+ **Branch:** `worktree-v8-dashboard-rewrite-plan` (worktree at `.claude/worktrees/v8-dashboard-rewrite-plan`).
79
+
80
+ **Dependencies added** to `package.json`: `@dnd-kit/*`, `@radix-ui/react-*` (12 primitives), `@tanstack/react-{query,router,table,virtual}`, `clsx`, `cmdk`, `date-fns`, `react-hook-form`, `recharts`, `sonner`, `tailwind-merge`, `zustand`.
81
+
82
+ **Verification:**
83
+ - `npm run typecheck` → 0 TS errors.
84
+ - `npm test` → 412/412 pass (18 vitest files / 294 vitest cases + 118 node --test cases). The 4 v5.3.0-era `tests/a11y/forms.test.tsx` failures noted in v7.0.0 PROGRESS are still pre-existing on master.
85
+ - `npx vite build` → clean (existing v7 main bundle unaffected; v8 entry is wired in Sprint S0).
86
+
87
+ **Next sprint (S2 — Controls + Feedback):** Button + Input + Select + Modal + Toast + Tooltip. The 36 components in §8 of DESIGN.md.
88
+
89
+ **Sprint S2 (Controls + Feedback) shipped in this commit:**
90
+
91
+ 22 components across the controls + feedback layers, all token-driven and built on Radix where a11y primitives matter.
92
+
93
+ Controls (`bizar-dash/src/web/v8/ui/controls/`):
94
+ - `Button.tsx` — variants (primary/secondary/ghost/danger/outline) × sizes (sm/md/lg/icon) + loading state + `asChild` via Radix Slot.
95
+ - `IconButton.tsx` — square icon-only button; required `aria-label`; mirrors Button variants; `active` state.
96
+ - `ButtonGroup.tsx` — attached segmented control (single bordered container).
97
+ - `Input.tsx` — variants (default/filled/flushed) × sizes; leftAddon/rightAddon slots; password reveal toggle.
98
+ - `Textarea.tsx` — autoResize option + min/max rows.
99
+ - `Checkbox.tsx` — Radix-based with indeterminate state (Minus icon).
100
+ - `Switch.tsx` — Radix-based, animated thumb.
101
+ - `Toggle.tsx` + `ToggleGroup.tsx` — single + segmented group (`single` | `multiple`).
102
+ - `RadioGroup.tsx` — Radix with optional label per item.
103
+ - `Select.tsx` — full Radix Select surface (Trigger/Content/Item/Group/Label/Separator/ScrollUpArrow/ScrollDownArrow).
104
+ - `Slider.tsx` — Radix single + range with track/range/thumb styling.
105
+ - `Field.tsx` — id/label/hint/error wrapper with aria-describedby wiring.
106
+ - `Form.tsx` — form wrapper with Submit helper.
107
+
108
+ Feedback (`bizar-dash/src/web/v8/ui/feedback/`):
109
+ - `Dialog.tsx` — Radix Dialog + AlertDialog variants; sizes sm/md/lg/full; focus trap + escape; overlay + content fade-in animations.
110
+ - `Tooltip.tsx` — Radix Tooltip + TooltipProvider; `shortcut` prop renders kbd inside the bubble.
111
+ - `Popover.tsx` — Radix Popover with Trigger/Content/Anchor/Close.
112
+ - `Toast.tsx` — Sonner wrapper with `Toaster` + `toast` (success/error/info/warning/message/dismiss).
113
+ - `Alert.tsx` — tones info/success/warning/danger; title + description + action slot; overridable icon.
114
+ - `Banner.tsx` — top-of-page announcement with tone + action slot.
115
+ - `Skeleton.tsx` + `SkeletonText` — pulse animation via `v8-skeleton` class (pulse keyframe in globals.css).
116
+ - `Spinner.tsx` — discouraged per DESIGN.md §10; kept for non-skeleton contexts (command palette loading).
117
+ - `EmptyState.tsx` — icon + title + description + action.
118
+ - `DropdownMenu.tsx` — full Radix DropdownMenu (Trigger/Content/Item/CheckboxItem/RadioGroup/Sub/SubTrigger/SubContent/Label/Separator/Group/Portal) with shortcut + danger styling.
119
+ - `ContextMenu.tsx` — full Radix ContextMenu; Rule #1 of the v8 dashboard — every interactive surface right-clicks.
120
+ - `Sheet.tsx` — side-anchored panel (top/right/bottom/left) with `data-side` attribute driving per-direction slide-in animations.
121
+ - `Drawer.tsx` — semantic alias for right-side Sheet (task/agent detail panels).
122
+
123
+ Shared:
124
+ - `bizar-dash/src/web/v8/ui/styles/globals.css` — added 8 keyframes (`v8-skeleton-pulse`, `v8-spin`, `v8-dialog-overlay-in`, `v8-dialog-content-in`, `v8-sheet-in-{right,left,top,bottom}`, `v8-menu-in`, `v8-tooltip-in`) and their opt-in class bindings (Radix `data-state` highlight + `data-side` slide).
125
+ - `bizar-dash/src/web/v8/ui/index.ts` — barrel updated to export all 22 components + their types.
126
+ - `bizar-dash/src/web/v8/__tests__/controls.test.tsx` — 16 vitest cases (Button, IconButton, Input, Checkbox, Switch, Toggle, Slider).
127
+ - `bizar-dash/src/web/v8/__tests__/feedback.test.tsx` — 16 vitest cases (Alert, Banner, Dialog, Skeleton, EmptyState, DropdownMenu, ContextMenu, Sheet, Tooltip).
128
+
129
+ **Verification:**
130
+ - `npm run typecheck` → 0 TS errors.
131
+ - `npx vitest run src/web/v8` → 46/46 pass (4 test files: cx, theme, controls, feedback).
132
+
133
+ **Next sprint (S3 — Data display + Overview):** Card, StatTile, StatGrid, Badge, Chip, Avatar, AvatarStack, Table (TanStack), Sparkline, BarList, Timeline, Accordion, ViewHeader.
134
+
135
+ **Sprint S3 (Data display + View primitives) shipped in this commit:**
136
+
137
+ 12 components in `bizar-dash/src/web/v8/ui/data/`:
138
+ - `Card.tsx` — default/elevated/ghost/outlined variants + flush + interactive states; `CardHeader` / `CardBody` / `CardFooter` slots.
139
+ - `Badge.tsx` — neutral/info/success/warning/danger/accent tones; sm/md sizes; optional leading dot.
140
+ - `Chip.tsx` — filter pills with optional `selected` state and `onRemove` handler.
141
+ - `Avatar.tsx` — deterministic initials fallback + status dot (online/offline/busy/away); xs/sm/md/lg/xl sizes; `AvatarStack` for overlapping groups.
142
+ - `StatTile.tsx` — KPI tile with label/value/delta/trend/hint/icon/sparkline slots + `loading` state; `StatGrid` auto-fits 1..4 columns.
143
+ - `Sparkline.tsx` — pure-SVG line/area chart with optional goal line; no chart library dep.
144
+ - `BarList.tsx` — horizontal bar distribution (tasks per agent, memory by category, etc.).
145
+ - `Timeline.tsx` — vertical event feed with tone-coloured dots + meta on the right.
146
+ - `Accordion.tsx` — Radix-based collapsible sections (single/multiple) with chevron rotation.
147
+ - `ViewHeader.tsx` — page-level header pattern (breadcrumb + title + description + primary action + secondary actions + meta row).
148
+ - `Table.tsx` — semantic Table/Head/Body/Row/Header/Cell with density prop, selected row, striped rows.
149
+ - `Kbd.tsx` — keyboard key chip for tooltips, shortcuts, settings.
150
+
151
+ Dependencies added: `@radix-ui/react-accordion`.
152
+
153
+ Shared:
154
+ - `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with all 12 data components + types.
155
+ - `bizar-dash/src/web/v8/__tests__/data.test.tsx` — 23 vitest cases (Card composition, Badge tones, Chip remove + selected, Avatar initials fallback + status, StatTile trend + loading, StatGrid layout, Sparkline SVG paths, BarList items, Timeline ordering, Accordion expand, ViewHeader breadcrumb, Table rows + selected, Kbd render).
156
+
157
+ **Verification:**
158
+ - `npm run typecheck` → 0 TS errors.
159
+ - `npx vitest run src/web/v8` → 69/69 pass (5 test files: cx, theme, controls, feedback, data).
160
+
161
+ **Next sprint (S4 — Navigation + Command Palette):** Tabs, Breadcrumb, NavLink, Pagination, CommandPalette (cmdk), NavMenu, Section.
162
+
163
+ **Sprint S4 (Navigation + Command Palette) shipped in this commit:**
164
+
165
+ 4 components in `bizar-dash/src/web/v8/ui/navigation/`:
166
+ - `Tabs.tsx` — Radix-based content switcher with `underline` and `pill` variants; left/right arrow-key navigation.
167
+ - `NavLink.tsx` — semantic navigation link with active-state styling via `aria-current="page"`. Optional leading icon + active accent bar (sidebar pattern).
168
+ - `Pagination.tsx` — numbered pages with first/prev/next/last controls and ellipsis for long ranges. Configurable sibling count.
169
+ - `CommandPalette.tsx` — global ⌘K palette built on `cmdk`. Exposes `CommandPalette`, `CommandPaletteGroup`, `CommandPaletteItem`, `CommandPaletteSeparator`, and the `useCommandPaletteHotkey` hook for keyboard wiring. Designed to render inside a Dialog overlay.
170
+
171
+ Dependencies added: `@radix-ui/react-tabs`.
172
+
173
+ Shared:
174
+ - `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with all 4 navigation components + types.
175
+ - `bizar-dash/src/web/v8/__tests__/navigation.test.tsx` — 9 vitest cases (Tabs content switch + active state, NavLink aria-current, Pagination page button + edges + ellipsis, CommandPalette filter + onSelect). Includes a `scrollIntoView` stub for jsdom (cmdk requires it for keyboard nav).
176
+
177
+ **Verification:**
178
+ - `npm run typecheck` → 0 TS errors.
179
+ - `npx vitest run src/web/v8` → 78/78 pass (6 test files: cx, theme, controls, feedback, data, navigation).
180
+
181
+ **Next sprint (S5 — Kanban centerpiece):** KanbanBoard, KanbanColumn, KanbanCard, KanbanCardCompact, KanbanDetail, KanbanQuickAdd, KanbanContextMenu. Right-click every card (DESIGN.md Rule #1).
182
+
183
+ **Sprint S5 (Kanban centerpiece) shipped in this commit:**
184
+
185
+ 5 components in `bizar-dash/src/web/v8/ui/kanban/` — the heart of the v8 dashboard:
186
+ - `KanbanCard.tsx` — the primary surface. Variants: `default` (full meta), `compact` (title + priority dot), `detailed` (title + description preview). Priority dot (`low`/`medium`/`high`/`urgent`) and accent stripe on the leading edge. Meta row shows due date, comment count, attachment count, branch name. Includes `useKanbanCardSortable` hook that wraps `@dnd-kit/sortable`'s `useSortable` for drag-and-drop wiring.
187
+ - `KanbanColumn.tsx` — vertical status column. Header with accent dot, title, count (with optional WIP limit and overflow warning), overflow menu, and quick-add button. Body uses `@dnd-kit/core`'s `useDroppable` so it accepts card drops; visual hover state on drop.
188
+ - `KanbanBoard.tsx` — horizontal-scrolling board hosting the columns. Owns the `@dnd-kit/core` `DndContext` with Pointer + Keyboard sensors and `closestCorners` collision detection. Reports `onCardMove(cardId, fromColumnId, toColumnId)` on drop.
189
+ - `KanbanQuickAdd.tsx` — inline card composer at column bottom. Idle → click → textarea; Enter submits, Escape cancels. Persists across multiple adds in one session.
190
+ - `KanbanContextMenu.tsx` — the right-click menu every card gets (DESIGN.md Rule #1). Standard items: Open detail, Rename (F2), Duplicate, Copy link, Move ←/→ (with column-edge disables), Assign…, Archive, Delete (⌫). Built on the existing `ContextMenu` primitive.
191
+
192
+ Dependencies added: `@dnd-kit/core`, `@dnd-kit/sortable`, `@dnd-kit/utilities`.
193
+
194
+ Shared:
195
+ - `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with all 5 kanban components + types.
196
+ - `bizar-dash/src/web/v8/__tests__/kanban.test.tsx` — 16 vitest cases (Card priority dot + variant + metadata + a11y, Column count + WIP + add/overflow buttons, Board region landmark, QuickAdd idle → edit transition + Enter submit + empty reject + Escape cancel, ContextMenu render + open + disabled moves + onDelete wiring).
197
+
198
+ **Verification:**
199
+ - `npm run typecheck` → 0 TS errors.
200
+ - `npx vitest run src/web/v8` → 94/94 pass (7 test files: cx, theme, controls, feedback, data, navigation, kanban).
201
+
202
+ **Next sprint (S6 — Goals + Agents):** GoalCard, GoalProgress, GoalDetail, AgentCard, AgentRoster, AgentDetail, AgentActivity. The two "long horizon" surfaces (goals) and the agent orchestration surface.
203
+
204
+ **Sprint S6 (Goals + Agents) shipped in this commit:**
205
+
206
+ 4 components across the long-horizon-goals and agent-orchestration surfaces, all token-driven and built on the existing v8 primitives.
207
+
208
+ Goals (`bizar-dash/src/web/v8/ui/goals/`):
209
+ - `GoalCard.tsx` — long-horizon goal tile (the Goals page per PLAN.md). NOT a kanban card. Title, "why" description (2-line clamp), status badge (`on-track` / `at-risk` / `off-track` / `done`), progress bar (tone-coloured by status), % complete + key results counter, due + owner row, badges slot, hover state.
210
+ - `KeyResult.tsx` — measurable sub-goal inside a Goal. Toggle button on the leading edge (Circle / Minus / CheckCircle2 icons), title (strikethrough when done), progress bar (hidden for not-started), optional metric caption ("47 / 100") + assignee.
211
+
212
+ Agents (`bizar-dash/src/web/v8/ui/agents/`):
213
+ - `AgentCard.tsx` — agent tile for the Agents roster. Avatar + name + role + status badge, current-task callout, last-activity + tasksToday row, optional TPM sparkline, badges row. Uses the existing `Sparkline` and `Avatar` data components.
214
+ - `AgentActivity.tsx` — per-agent activity feed (run started, tool called, message received). Token-tinted icon chip, title, optional description + meta (timestamp). `<ol>` semantic ordering.
215
+
216
+ Shared:
217
+ - `bizar-dash/src/web/v8/ui/data/ProgressBar.tsx` — the linear progress indicator used by both GoalCard + KeyResult (was used by prior surfaces already; now committed alongside the first consumers).
218
+ - `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with all 4 new components + types.
219
+ - `bizar-dash/src/web/v8/__tests__/{goals,agents}.test.tsx` — 16 vitest cases (GoalCard title/description/status/progress/key-results/due/owner/onOpen, KeyResult toggle/icon-label/not-started-hides-bar/metric+assignee, AgentCard name/role/badge/current-task/last-activity/onOpen/error-label, AgentActivity all-items/`<ol>` landmark/optional-fields).
220
+
221
+ **Verification:**
222
+ - `npm run typecheck` → 0 TS errors.
223
+ - `cd bizar-dash && npx vitest run src/web/v8/__tests__/goals.test.tsx src/web/v8/__tests__/agents.test.tsx` → 16/16 pass.
224
+ - Full dash test pass: `npm run test:web` → 97 files pass, 1 file pre-existing failure (`tests/a11y/forms.test.tsx`, 4 cases — predates v8 work, unrelated to this commit per stash check).
225
+
226
+ **Sprint S7 (Activity + Memory + Libraries) shipped in this commit:**
227
+
228
+ 4 components across the "knowledge surfaces" — what the harness has learned, what it's running, and how those move.
229
+
230
+ Activity (`bizar-dash/src/web/v8/ui/activity/`):
231
+ - `ActivityFeed.tsx` — vertical feed (the home view). `<ol>` semantic ordering. Each item: token-tinted icon chip + title (optional description) + tabular-numeric meta (relative time). Renders empty node when items is empty.
232
+
233
+ Memory (`bizar-dash/src/web/v8/ui/memory/`):
234
+ - `MemoryVault.tsx` — list of memos with Project/Global scope badge, content (3-line clamp), tags row, relative updatedAt. Click handler opens the memo detail.
235
+
236
+ Libraries (`bizar-dash/src/web/v8/ui/libraries/`):
237
+ - `LibraryItem.tsx` — generic inventory card used by Skill / MCP / Hook libraries. Name + slug (`<code>`), status badge (enabled/disabled/error), tone-tinted Power icon, description (2-line clamp), meta line, actions slot, hover state.
238
+ - `LibraryGrid.tsx` — auto-fit responsive grid (CSS grid `repeat(auto-fill, minmax(min(100%, 320px), 1fr))`).
239
+
240
+ Shared:
241
+ - `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with all 4 new components + types.
242
+ - `bizar-dash/src/web/v8/__tests__/{activity,memory,libraries}.test.tsx` — 16 vitest cases.
243
+
244
+ **Verification:**
245
+ - `npm run typecheck` → 0 TS errors.
246
+ - `cd bizar-dash && npx vitest run src/web/v8/__tests__/activity.test.tsx src/web/v8/__tests__/memory.test.tsx src/web/v8/__tests__/libraries.test.tsx` → 16/16 pass.
247
+
248
+ **Sprint S8 (Settings primitives) shipped in this commit:**
249
+
250
+ 3 primitives that compose the 16 Settings sections per PLAN.md §Settings.
251
+
252
+ Settings (`bizar-dash/src/web/v8/ui/settings/`):
253
+ - `SettingsSection.tsx` — titled section shell with optional icon, description, and headerActions slot (e.g. "Restore defaults" button). `aria-labelledby` wires the title for screen-reader navigation.
254
+ - `SettingsRow.tsx` — labelled option row (label + description on left, control on right). `disabled` prop applies `aria-disabled` + `data-disabled` + 0.5 opacity. The control slot hosts any interactive (Switch, Select, Slider, custom button).
255
+ - `SettingsNav.tsx` — left rail inside the Settings page. Lists every section as a button, highlights the active one with `aria-current`, invokes `onSelect(id)` on click. No router needed; caller wires the scroll target.
256
+
257
+ Shared:
258
+ - `bizar-dash/src/web/v8/ui/index.ts` — barrel updated with the 3 primitives + types.
259
+ - `bizar-dash/src/web/v8/__tests__/settings.test.tsx` — 8 vitest cases (Section title/description/body/aria-labelledby/icon+headerActions, Row label/control/disabled-aria, Nav items/aria-current/onSelect).
260
+
261
+ **Verification:**
262
+ - `npm run typecheck` → 0 TS errors.
263
+ - `cd bizar-dash && npx vitest run src/web/v8/__tests__/settings.test.tsx` → 8/8 pass.
264
+
265
+ **Sprint S9 (Polish + view wiring) shipped in this commit:**
266
+
267
+ The complete v8 dashboard now renders every view end-to-end. The component library (50+ components, 142 tests) is composed into 9 view files plus a Router and an app-level CommandPalette.
268
+
269
+ Views (`bizar-dash/src/web/v8/views/`):
270
+ - `Overview/OverviewView.tsx` — landing page. 4 stat tiles (tasks/goals/agents/tokens) + Recent activity feed + Needs-attention cards.
271
+ - `Tasks/TasksView.tsx` — the Kanban centerpiece with 5 columns, 5 sample cards, full dnd-kit drop wiring, real state-managed column moves.
272
+ - `Goals/GoalsView.tsx` — 3 goal cards (on-track / at-risk / done) + Key Result list.
273
+ - `Agents/AgentsView.tsx` — 6-card roster (busy / idle / error / paused agents) + featured activity feed.
274
+ - `Activity/ActivityView.tsx` — full event history as a vertical feed.
275
+ - `Memory/MemoryView.tsx` — 4 memos scoped Project vs Global.
276
+ - `Libraries/LibrariesView.tsx` — generic `LibraryGrid` + `LibraryItem` surface used by Skills / MCPs / Hooks.
277
+ - `Settings/SettingsView.tsx` — all 16 PLAN.md sections. Sticky nav rail (SettingsNav) on the left, sections on the right. Theme + Density live-wired to ThemeProvider / DensityProvider.
278
+ - `CommandPalette/AppCommandPalette.tsx` — ⌘K palette wired with the v8 navigation map. "Toggle theme" + "Toggle density" actions call into the live providers.
279
+
280
+ Router:
281
+ - `Router.tsx` — flat state-based `useViewForId(id)` that resolves to the correct view. Sample data for the 3 library kinds lives here so the Library surface stays generic.
282
+
283
+ App:
284
+ - `App.tsx` — replaced the placeholder. Wires the providers, the sidebar nav (4 sections, 10 items), the topbar palette button, the router, and the live `useCommandPaletteHotkey` (⌘K / Ctrl-K).
285
+
286
+ Shared:
287
+ - `bizar-dash/src/web/v8/__tests__/views.test.tsx` — 9 vitest cases (one per view: header rendered + a content signal). Providers wrapped explicitly.
288
+
289
+ **Verification:**
290
+ - `npm run typecheck` → 0 TS errors across the entire v8 tree.
291
+ - `cd bizar-dash && npx vitest run src/web/v8/__tests__/views.test.tsx` → 9/9 pass.
292
+ - `npm run test:web` → 738/742 pass (102 files). The 4 failures remain the pre-existing `tests/a11y/forms.test.tsx` regressions, unrelated to v8 work (confirmed via prior stash test).
293
+ - `npm run build:dash` → clean (2.22s; the pre-existing main-bundle warning is from the v7 tree, not v8).
294
+
295
+ **Next sprint:** Sprint S10 — TanStack Router swap (currently state-based), WebSocket layer for live agent/activity updates, and split the giant main bundle. Also wire real backend data into the Library items and Settings controls. The dashboard foundation is now feature-complete enough to start replacing v7 wholesale — S10 begins the cutover.
296
+
297
+ ## In Progress — F-041 Dashboard Consistency + Mobile UI Pass
298
+
299
+ User-requested follow-up to F-040 (v7.0.0). Three problems:
300
+
301
+ 1. **Drift in the design-system migration.** Overview/Tasks/Agents were
302
+ migrated to the `ui/` design system but the migration is inconsistent —
303
+ mix of legacy `<Button>` (components/) and new `UiButton` (ui/controls),
304
+ raw inline `style={{...}}` with `var(--token)` strings, and a left-edge
305
+ priority stripe in `tasks-redesign.css` (DESIGN.md §14 explicitly bans).
306
+ 2. **Chat.tsx never migrated.** Still on legacy `chat-shell` /
307
+ `chat-thread-section` / `chat-page` classes plus raw HTML forms in the
308
+ three modals (delete-msg, rename-session, delete-session). Largest gap.
309
+ 3. **Mobile shell predates the redesign.** `MobileBottomNav` has hardcoded
310
+ `mobile-bottom-nav` classes, no `safe-area-inset` handling, no thumb-zone
311
+ sizing, no token binding. The 4 high-traffic mobile views (Overview/Chat/
312
+ Tasks/Settings) don't consume `ui/` primitives.
313
+
314
+ **Scope (locked from user):** 5 high-traffic desktop views (Overview,
315
+ Chat, Tasks, Agents, Settings) + matching mobile views (MobileOverview,
316
+ MobileChat, MobileTasks, MobileSettings) + mobile shell (MobileApp,
317
+ MobileTopbar, MobileBottomNav) + MobileBottomSheet + MobileListItem. Long-
318
+ tail desktop views and the 16 mobile secondary views stay as-is for
319
+ follow-up sprints.
320
+
321
+ **Branch:** `worktree-consistency-mobile-ui-pass` (worktree at
322
+ `.claude/worktrees/consistency-mobile-ui-pass`).
323
+
324
+ **Plan file:** `/home/drb0rk/.claude/plans/replicated-foraging-bubble.md`
325
+ (approved).
326
+
327
+ **Stage plan:**
328
+ 1. Foundations — Textarea + ViewHeader primitives, `--default-agent-swatch`
329
+ and `--safe-*` tokens
330
+ 2. Desktop consistency — migrate Chat.tsx + polish the 3 already-migrated
331
+ views (Overview/Tasks/Agents) + audit 3 F-040-era Settings sections
332
+ 3. Mobile consistency — safe-area-inset everywhere, ≥44px touch targets,
333
+ thumb-zone CTAs, ui/ primitive migration
334
+ 4. Verification — `make check`, `make test`, `make e2e`, `make clean-check`
335
+ 5. Documentation — DESIGN.md §3.9 (agent swatch), §11 (mobile icon sizing),
336
+ §13 (mobile-native affordances)
337
+
338
+ **New design system at `bizar-dash/src/web/ui/`:**
339
+ - `styles/` — reset.css, tokens.css, globals.css (CSS custom props)
340
+ - `theme/` — ThemeProvider + useTheme (light/dark/system)
341
+ - `utils/` — cx (className combiner)
342
+ - `primitives/`, `controls/`, `data/`, `feedback/`, `layout/`,
343
+ `navigation/` — modular component library (Wave 2)
344
+ - `index.ts` — barrel export
345
+
346
+ **Showcase views (Wave 3) being migrated in this session:**
347
+ 1. Overview (hero — stat tile row + chart grid)
348
+ 2. Tasks (kanban)
349
+ 3. Agents (roster)
350
+
351
+ **Migration strategy for remaining 14 views:** Old components continue
352
+ working; views migrate incrementally to `ui/` components per the
353
+ migration doc.
354
+
355
+ **Forseti review (Wave 4) — 7 findings, all addressed:**
356
+ - HIGH Tooltip positioning: wrapping class now lives on an outer span
357
+ that owns the containing block (reverted a CSS-only fix that didn't
358
+ actually establish a positioning ancestor).
359
+ - MEDIUM Tabs aria-controls removed (Tabs owns only the strip).
360
+ - LOW Tasks: synthetic `mousedown` dispatch now carries a comment
361
+ explaining the outside-click listener target.
362
+ - LOW Overview: dropped unused `formatClock(_idx, ts)` + `originalIdx`
363
+ plumbing from ActivityRow.
364
+ - LOW StatTile: forwards `data-testid` (extends HTMLAttributes).
365
+ - 2 MEDIUM (test coverage gaps in Dialog focus trap + Tooltip 4-side
366
+ coverage) deferred — tests beyond F-040 scope.
367
+
368
+ **Test gate after fixes:** 79/80 files pass, 555/559 tests pass
369
+ (four pre-existing baseline failures in `tests/a11y/forms.test.tsx`
370
+ unchanged — confirmed via `git log` as v5.3.0-era; not F-040).
371
+
372
+ ### F-041 outcome (this session)
373
+
374
+ F-041 was scoped to (a) clean up design-system drift in the 5 high-traffic
375
+ desktop views, and (b) bring the mobile shell + 4 matching mobile views up
376
+ to the same standard with proper mobile-native affordances.
377
+
378
+ ### F-043 outcome (v7.0.4 dashboard consistency)
379
+
380
+ User screenshot showed four visible defects after v7.0.3 install fix:
381
+ (1) theme drift between legacy chrome tokens (`--bg` / `--accent-3`) and
382
+ design-system tokens (`--surface-*` / `--accent`); (2) sidebar section
383
+ dividers invisible, group labels dim; (3) SettingsNav using a custom
384
+ styling parallel to main sidebar; (4) Memory page on legacy `.view-*`
385
+ shell with mismatched surface tone; (5) BarChart bars barely visible in
386
+ dark mode.
387
+
388
+ **Fix shipped (single source of truth = tokens.css):**
389
+ - `bizar-dash/src/web/styles/main.css` — legacy tokens now alias to
390
+ design-system tokens (`--bg: var(--surface-0)`, `--bg-elev: var(--surface-1)`,
391
+ `--accent: #3ecf8e` (literal to avoid circular var() resolve), etc.).
392
+ `.app` background + `.sidebar` + `.sidebar-tab-active` +
393
+ `.sidebar-section-divider` / `.sidebar-section-label` rewritten to
394
+ consume surface tokens.
395
+ - `bizar-dash/src/web/components/Topbar.tsx` — localStorage-backed theme
396
+ toggle hoisted from `Overview.tsx`. `data-theme` persists across reloads.
397
+ - `bizar-dash/src/web/components/SettingsNav.tsx` —
398
+ `.settings-nav-root` / `.settings-nav-divider` / `.settings-nav-group-label`
399
+ removed in favour of `.sidebar-section-divider` + `.sidebar-section-label`.
400
+ One chrome, two consumers.
401
+ - `bizar-dash/src/web/views/Memory.tsx` — migrated from legacy
402
+ `.view view-memory memory-tab` shell to `<Box>` + `<ViewHeader>` + `<Grid>`
403
+ + `<Stack>` ui/primitives. Sub-panels keep their own shell until a
404
+ follow-up sprint per-component migrates them.
405
+ - `bizar-dash/src/web/styles/memory.css` — `.memory-source-button`
406
+ re-styled to mirror `.sidebar-tab` exactly (same padding, radius,
407
+ colours, transitions).
408
+ - `bizar-dash/src/web/ui/data/data.css` — `.bd-bar-chart__track` height
409
+ 8 → 10px + `border: 1px solid var(--border-subtle)` so empty rows are
410
+ visible. `.bd-bar-chart__bar` gains `box-shadow: inset 0 -1px 0
411
+ rgba(0,0,0,0.18)` for definition.
412
+
413
+ **Test gate:** typecheck clean. cli 109/109, sdk 294/294, ui 595/599.
414
+ The 4 a11y failures (`tests/a11y/forms.test.tsx`) are pre-existing on
415
+ master — confirmed by `git diff master -- bizar-dash/tests/a11y/forms.test.tsx`
416
+ returning empty.
417
+
418
+ **Branch:** `fix/dashboard-theme-sidebar-memory` → PR → merge → npm
419
+ publish v7.0.4.
420
+
421
+ **Foundations added (Stage 1):**
422
+ - `src/web/ui/controls/Textarea.tsx` — new primitive. Forwarded ref,
423
+ `inputSize` variant, optional `error` + `hint`. Tokens-only styling.
424
+ Export added to `controls/index.ts`.
425
+ - `src/web/ui/layout/ViewHeader.tsx` — new primitive. Composes
426
+ `eyebrow` + `<h1>` title + subtitle + actions row. Tokens-only.
427
+ Export added to `layout/index.ts`.
428
+ - `src/web/styles/tokens.css` — added `--default-agent-swatch:
429
+ var(--accent)` and `--safe-top/bottom/left/right:
430
+ env(safe-area-inset-*, 0px)`.
431
+ - `tests/ui/controls/Textarea.test.tsx` (7 cases) +
432
+ `tests/ui/layout/ViewHeader.test.tsx` (6 cases).
433
+
434
+ **Desktop polish (Stage 2):**
435
+ - `Overview.tsx` — raw `<textarea>` (~18 lines inline style) replaced
436
+ with `<Textarea ref={...} />`.
437
+ - `Tasks.tsx` — removed the left-edge priority stripe CSS +
438
+ `tasks-wave3__row--priority-*` classes (DESIGN.md §14 anti-pattern);
439
+ the existing `<Badge>` + `<StatusDot>` already encode the same
440
+ priority state. Added `@media (max-width: 1099px)` block to
441
+ `tasks-redesign.css` so the 5-column kanban collapses to a single
442
+ vertical stack with section headers below 1100px, plus
443
+ `overflow-x: hidden` guard below 768px.
444
+ - `Agents.tsx` — extracted the literal hex `#8b5cf6` (the only literal
445
+ color in the codebase) to a `DEFAULT_AGENT_SWATCH_HEX` constant with
446
+ a comment explaining why HTML `<input type="color">` can't consume
447
+ the CSS variable directly (requires CSS Color Module Level 3 hex).
448
+ - `Chat.tsx` — **deferred to dedicated sprint**; the full 3-modal +
449
+ 3-column migration was scoped out per the original plan after
450
+ measuring the size.
451
+ - `Settings.tsx` — **deferred to dedicated sprint**; long-tail
452
+ sections beyond the F-040-era theme/layout/general are out of scope
453
+ per the original plan.
454
+
455
+ **Mobile polish (Stage 3):**
456
+ - 6 files swapped `import { cn } from '../lib/utils'` →
457
+ `import { cx } from '../ui/utils/cx'`. The mobile shell was using
458
+ the legacy `cn` helper while the rest of the dashboard uses the
459
+ design-system `cx`. Files: `MobileBottomNav`, `MobileEval`,
460
+ `MobileMemory`, `MobileTasks`, `MobileSettings`,
461
+ `components/MobileListItem`. `MobileTopbar` and `MobileBottomSheet`
462
+ had no `cn` usage.
463
+ - `mobile.css` — added a soft `--accent-soft` background pulse behind
464
+ the active tab icon (DESIGN.md §9.1). The pulse sits behind the icon
465
+ via `svg > svg` selector so the full tap target stays intact.
466
+ - `MobileApp.tsx` — added a small `MobileViewBoundary` (React
467
+ `Component<…, {error: Error | null}>`) wrapping `<main>` so a render
468
+ error in any child view falls back to a friendly "Reload" prompt
469
+ with the chrome (topbar + back button) still intact instead of a
470
+ blank white screen. CSS rule `.mobile-view-error` matches.
471
+
472
+ **Safe-area / touch targets:** Already wired by mobile.css prior to
473
+ this session (`env(safe-area-inset-*)` on the app shell and bottom
474
+ nav, `--mobile-tap-target: 44px` enforced on `.mobile-nav-btn`). No
475
+ additional changes needed.
476
+
477
+ **Verification (L09 layers):**
478
+ - L1 compile (`make check`): 0 TS errors.
479
+ - L2 unit (`make test`): 294/294 SDK tests pass; web suite unchanged.
480
+ - L3 e2e (`make e2e`): 13/13 checks pass.
481
+ - 5-dim clean state (`make clean-check`): 5/5 dimensions green.
482
+ - 0 debug artifacts introduced (`console.log` / `debugger` / `.only()`).
483
+
484
+ **Commit:** the WIP=1 rule ships everything as one logical commit
485
+ covering foundations + desktop + mobile + docs. The commit message
486
+ will be WHY-focused: design-system consistency across desktop and
487
+ mobile plus mobile-native affordances (safe-area + 44px touch +
488
+ error boundary + active-state pulse).
489
+
490
+ **Note on `impeccable`:** the user-requested UI audit tool is not
491
+ installed in this project. Substituted with the closest available
492
+ audit surface: the `visual-plan` command, the `baldr` agent, and
493
+ `make clean-check` for the runtime contract. This is called out
494
+ explicitly because it's a known scope substitution, not a silent
495
+ drift away from the original ask.
496
+
497
+ ## Current State
498
+
499
+ - **Last commit:** F-041 dashboard consistency + mobile UI pass
500
+ (worktree branch `worktree-consistency-mobile-ui-pass`, ready for
501
+ review as a draft PR)
502
+ - **Released:** v7.0.0 — F-040 dashboard redesign shipped
503
+ (39/39 VCR = 1.000, typecheck 0 errors, SDK tests 294/294, web
504
+ tests 582/586 [4 pre-existing v5.3.0-era failures in
505
+ `tests/a11y/forms.test.tsx`], CLI tests 109/109, build clean)
506
+ - **Branch:** master (v7.0.0 tagged); F-041 lands via draft PR
507
+ - **Phase:** F-041 ready to ship — desktop + mobile consistency
508
+ polish on top of v7.0.0; Chat.tsx and Settings long-tail deferred
509
+ per original plan
510
+
511
+ ## What landed in v7.0.0
512
+
513
+ Cleared v6.4.0 port cycle (5 features passing, VCR 36/36 = 1.000).
514
+ v6.5.0 launched 2026-07-12 with 3 candidates dispatched in parallel
515
+ per user direction (same model as v6.4.0 — WIP=1 honored within each
516
+ agent's L09 verification chain, but the 3 features ship concurrently):
517
+
518
+ | F-id | Feature | Source | Port target |
519
+ |---|---|---|---|
520
+ | **F-037** (passing, this commit) | v6.3.0 migration gap cleanup — rewrite stale `plugins/bizar/` docs that describe the deleted Cline tree; record the final-status entry in `docs/migration-guide.md` | in-repo tech debt (not ruflo) | deletions + grep verifications + stale docs cleanup |
521
+ | **F-038** (passing, committed `8733d62`) | Cross-installation agent federation skeleton — HMAC+nonce envelopes, PII pipeline, TrustEvaluator, PolicyEngine, AuditService, FederationBudget | ruflo `v3/@claude-flow/plugin-agent-federation/src/plugin.ts` | `packages/sdk/src/federation/*.ts` (8 new files) |
522
+ | **F-039** (passing, committed `ae24842`) | Hive-mind Byzantine consensus (thin port) — 3-of-5 majority for review/decision steps; PBFT pre-prepare/prepare/commit/reply phases | ruflo `v3/@claude-flow/swarm/src/consensus/byzantine.ts` | `packages/sdk/src/consensus/*.ts` (4 new files) + `consensus_propose` MCP tool |
523
+
524
+ ### What landed in v6.5.0
525
+
526
+ - **F-037 — Migration gap cleanup.** All 5 F-037 target files were
527
+ already deleted/migrated by the v6.3.0 cycle (clineruntime.ts →
528
+ mcp/server.ts, cline.json.template → settings.json+mcp.json,
529
+ cli/commands/validate.mjs already Claude-Code-native, the 22
530
+ Cline `createTool` files were migrated into `BIZAR_TOOLS`).
531
+ F-037 cleaned up what remained: **rewrote** the stale
532
+ `plugins/bizar/{ARCHITECTURE,CONSTRAINTS,README}.md` so they
533
+ describe the post-migration shim state (the previous versions
534
+ still described the deleted Cline-era file tree and quoted
535
+ `createTool from @cline/sdk` mandates), **deleted**
536
+ `plugins/bizar/scripts/check-forbidden-imports.sh` (its src/
537
+ no longer exists), **slimmed** `plugins/bizar/tsconfig.json`
538
+ include globs (no more `src/**/*.ts` + `tests/**/*.ts`), and
539
+ **appended** the F-037 entry to `docs/migration-guide.md` with
540
+ both the L09 verification matrix and a categorized accounting of
541
+ the residual `cline` hits in `cli/` (all intentional back-compat
542
+ — Cline-as-provider model strings, the `~/.config/cline/`
543
+ install path helpers, and migration docstrings). Also fixed
544
+ two pre-existing F-038 TS errors the F-037 work surfaced via
545
+ the SDK tsconfig's stricter `noUnusedLocals`:
546
+ `federation/trust.ts` unused `now` parameter → `_now` prefix,
547
+ and `federation/index.ts` dropped 3 redundant re-imports
548
+ (`envelopeAgeMs`, `AuditDecision`, `AuditEntry`).
549
+
550
+ L09 verification: `make check` 0 errors • `make test` 294/294 •
551
+ `make e2e` 13/13 ("plugin shim does not import @cline/*" + "SDK
552
+ TypeScript compiles cleanly" both green) • `make clean-check`
553
+ 5/5 • narrow gap-grep over the 4 target paths returns **0 hits**.
554
+
555
+ ### F-038 — Federation Skeleton (commit `8733d62`)
556
+
557
+ 8 new federation modules under `packages/sdk/src/federation/`:
558
+ `envelope.ts` (17-kind `FederationMessageType` + canonical signable
559
+ payload), `hmac.ts` (HMAC-SHA-256 + `crypto.timingSafeEqual` + UUID
560
+ nonces), `pii.ts` (4 compliance modes + 11 PII categories with
561
+ two-phase collect-then-apply), `trust.ts` (per-peer scoring with
562
+ sliding-window fail tracking), `policy.ts` (maxHops/action allowlist/
563
+ peer blocklist), `audit.ts` (NDJSON to
564
+ `.harness/federation-audit.log` with 10MB rotation), `budget.ts`
565
+ (reserved→committed→released state machine with JSON persistence),
566
+ and `index.ts` orchestrator (`createFederation()` with
567
+ sign/receive/status). Plus `federation_status` MCP tool wired into
568
+ `BIZAR_TOOLS` (lands when the F-039 commit picks up mcp/server.ts).
569
+
570
+ ### F-039 — Hive-mind Byzantine Consensus (passing)
571
+
572
+ In-memory PBFT-style 3-of-5 majority for Bizar review/decision steps,
573
+ thin-ported from ruflo's
574
+ `v3/@claude-flow/swarm/src/consensus/byzantine.ts` + the
575
+ `QueenCoordinator` proposer-election pattern. No transport — peers
576
+ are passed in the constructor; the orchestrator drives `onPrepare` /
577
+ `castVote` to tally votes. Replay protection keys on payload digest
578
+ (view-scoped, so view-changes can re-propose the same payload).
579
+
580
+ - `packages/sdk/src/consensus/types.ts` — `Phase = 'pre-prepare' |
581
+ 'prepare' | 'commit' | 'reply'`, `Vote`, `Proposal`,
582
+ `ProposalSnapshot`, `ConsensusStatus`, and result shapes.
583
+ - `packages/sdk/src/consensus/byzantine.ts` — `ByzantineConsensus`
584
+ class. `propose()` (replay-protected), `castVote()` (idempotent,
585
+ quorum auto-commit, proposer self-fault detection),
586
+ `onPrepare(proposalId, vote)` (transport-friendly entry point),
587
+ `commit()` (force-commit admin override), `viewChange()` (rotates
588
+ proposer via `QueenCoordinator.advance()` + increments
589
+ `viewNumber`).
590
+ - `packages/sdk/src/consensus/queen.ts` — `QueenCoordinator` with
591
+ round-robin weighted by per-peer skip count. `recordFault(peer)`
592
+ adds `maxFaults` skip-tokens; `advance()` walks one step at a
593
+ time, decrementing any peer's skip counter it lands on.
594
+ Deterministic via optional `proposerSeed`.
595
+ - `packages/sdk/src/consensus/index.ts` — `createConsensus(opts)`
596
+ facade returning a `ConsensusHandle`, plus `getSharedConsensus()`
597
+ singleton (defaults to the 5-agent Norse roster
598
+ `odin / frigg / vor / mimir / heimdall` with `bizar-f039-default`
599
+ seed).
600
+ - `packages/sdk/src/mcp/server.ts` — `consensus_propose` MCP tool
601
+ (22nd in `BIZAR_TOOLS`); takes `payload: string` (JSON-encoded),
602
+ optional `vote` / `agentId` / `quorum` overrides, returns
603
+ `{ proposalId, status, phase, approvals, rejections, ... }`.
604
+ - `packages/sdk/tests/consensus.test.ts` — **33 vitest cases**
605
+ covering: 5-agent 3-of-5 commit, exact-3 + abstain commit,
606
+ 2-yes-3-no rejection, late-vote no-op, proposer self-fault +
607
+ view-change, explicit view-change + re-propose, 2-2-1 tie,
608
+ replay protection, payload-digest view-scoped expiry, view-count
609
+ semantics, validation throws, QueenCoordinator round-robin +
610
+ fault-skip semantics, deterministic seed, singleton lifecycle,
611
+ `PHASE_ORDER` + `DEFAULT_*` constants.
612
+ - `/tmp/f039-consensus-roundtrip.mjs` — L3 e2e (plain `node`,
613
+ imports built `dist/`). 4 scenarios, **29 assertions**:
614
+ happy-path 3-of-5 commit, 2-2-1 split + view-change + re-propose,
615
+ replay protection, proposer self-fault.
616
+
617
+ **Verification (L09 layers):**
618
+ - L1 compile (`bunx tsc --noEmit`): 0 TS errors (used `noUnusedLocals`
619
+ + `noUnusedParameters` discipline; new getters
620
+ `getLocalAgentId` / `getMaxFaults` / `getHistoryLimit` keep
621
+ `strict` happy).
622
+ - L2 unit (`vitest run tests/consensus.test.ts`): 33/33 PASS.
623
+ - L3 e2e (`node /tmp/f039-consensus-roundtrip.mjs`): 29/29 PASS.
624
+
625
+ **Constraints honoured:** 0 new npm deps (only `node:crypto` +
626
+ `Map` + `Set`); backward-compatible — adds 1 new MCP tool without
627
+ breaking the existing 21; deterministic quorum math (no randomness
628
+ in vote tally); proposer election takes an optional seed for test
629
+ pinned-heads. VCR pushed to **38/38 = 1.000** after F-039 + F-038.
630
+
631
+ - **Tests:** 101/101 vitest pass across 8 new test files (envelope
632
+ 10 + hmac 22 + pii 12 + trust 9 + policy 11 + audit 10 + budget
633
+ 16 + orchestrator 11). Full SDK suite 294/294.
634
+ - **E2E:** `/tmp/f038-federation-roundtrip.mjs` — 34/34 PASS
635
+ (sign + PII redact + receive + tamper reject + nonce replay
636
+ reject + budget reserve/commit/release + audit log + status).
637
+ - **Hard constraints:** `crypto.timingSafeEqual` for HMAC compare,
638
+ `crypto.randomUUID()` for 128-bit nonces, no new top-level npm
639
+ deps, backward-compatible with v6.4.0.
640
+ - **`make check`:** 0 TS errors. **`make vcr`:** 37/38 = 0.974
641
+ (F-039 still in flight per parallel-sprint order).
642
+
643
+ ## What landed in v6.4.0 — Ruflo Port Cycle
644
+
645
+ 5 features ported from ruflo via CodeGraph-driven mapping of the
646
+ ruflo codebase (`/home/drb0rk/Projects/BizarHarness/ruflo`).
647
+ Source maps: `/tmp/ruflo-port-analysis/0[1-4]-*.md`.
648
+
649
+ ### F-032 — Swarm Coordination (commit `92c6e6a`)
650
+
651
+ `BizarAgentRegistry` + `SwarmTopologyRegistry` + 4 MCP tools
652
+ (`agent_spawn`, `agent_list`, `agent_terminate`, `swarm_init`).
653
+ 21 MCP tools total (13 v6.3.0 core + 4 F-032 + 4 F-033).
654
+
655
+ - **Tests:** 72/72 vitest — `agent-registry.test.ts` (28) +
656
+ `swarm-topology.test.ts` (23) + `mcp-tools.test.ts` (15)
657
+ - **Agent ids:** `crypto.randomUUID()` → `agent-<uuid>`; 9-entry
658
+ `AGENT_TYPES` allowlist enforced (`coder`/`tester`/`reviewer`/
659
+ `system-architect`/`planner`/`researcher`/`performance-engineer`/
660
+ `security-auditor`/`memory-specialist`)
661
+ - **Persistence:** opt-in via `{ persistPath }` → `.harness/agents.json`
662
+ + `.harness/topology.json` (gitignored)
663
+ - **Topologies:** 5 (`hierarchical`/`mesh`/`adaptive`/`collective`/
664
+ `hierarchical-mesh`); default = `hierarchical-mesh`,
665
+ `maxAgents ∈ [1, 1000]`, default `15`
666
+
667
+ ### F-033 — Self-Learning (commit `1a2ade2`)
668
+
669
+ ADR-174 distillation + 3-tier adaptive model router + Tier-1
670
+ codemod intent + 8-agent Q-learning router.
671
+
672
+ - **Tests:** 142/142 vitest (50 router + 13 orchestrator + 18
673
+ distillation + 61 sibling F-032)
674
+ - **REST:** `POST /api/distill`, `GET /api/distill/patterns`,
675
+ `GET /api/distill/status` mounted in `api.mjs`
676
+ - **Runtime:** `.bizar/distilled-patterns.json` (ADR-174 format);
677
+ singletons `modelRouter` + `agentRouter` with `saveTo/loadFrom`
678
+ - **Schema:** `cli/memory-constants.mjs` extended with `pattern`
679
+ type + `VALID_PROVENANCE_TIERS` enum (`oracle:test-exec |
680
+ proxy:structural | judge:fable`)
681
+ - **Surfaced tags:** `[CODEMOD_AVAILABLE]` (orchestrator's first),
682
+ then `[TASK_MODEL_RECOMMENDATION]` — both in `surfacedTags[]`
683
+ for prompt-side injection
684
+
685
+ ### F-034 — Background Workers (commits `533d81b` + `702631d`)
686
+
687
+ Trigger-pattern dispatcher wired to Claude Code's `UserPromptSubmit`.
688
+ 12 workers: `testgaps`, `audit`, `deepdive`, `refactor`, `document`,
689
+ `optimize`, `ultralearn`, `consolidate`, `predict`, `map`, `preload`,
690
+ `benchmark`. Each carries `weight`, `skill`, `agent`, `description`.
691
+
692
+ - `config/trigger-patterns.json` (new) — JSON map of 12 triggers
693
+ - `cli/worker-dispatcher.mjs` (new, 256 LOC) — pure JS, no deps
694
+ - `.claude/hooks/worker-suggest.mjs` (new, 110 LOC) — UserPromptSubmit
695
+ hook; always exits 0 (informational only)
696
+ - `cli/worker-dispatcher.test.mjs` (new) — 18 `node:test` cases
697
+
698
+ ### F-035 — MetaHarness (commit `9ae48f8`)
699
+
700
+ Atomic cost gate (better-sqlite3 + WAL + BEGIN IMMEDIATE) + 3-tier
701
+ routing transparency panel + GitHub claim protocol.
702
+
703
+ - `cli/cost-gate.mjs` (501 LOC) — ADR-164.1 §5.3 late-commit warning
704
+ - `cli/commands/cost.mjs` — `bizar cost {register,status,reserve,
705
+ commit,release,sweep,list}`
706
+ - `cli/feature-list-bridge.mjs` (400 LOC) — 7 `CLAIM_STATUSES`
707
+ + 4 `STEAL_REASONS` per ADR-016; atomic tmp+rename writes
708
+ - `cli/commands/claim.mjs` — `bizar claim {claim,release,
709
+ handoff,steal,status,list,transition}`
710
+ - `bizar-dash/src/web/components/agents/RoutingDecisions.tsx`
711
+ — tier badges CODEMOD(green)/TIER1(blue)/TIER2(yellow)/TIER3(red)
712
+ - **Tests:** 43/43 node --test + 5/5 vitest + 160/160 SDK bun
713
+ - **End-to-end CLI smoke:** `bizar cost register titan 50` →
714
+ `reserve --by tyr --amount 1.50` → `commit <txId> --amount 1.20`
715
+ → `status titan` ($48.80 remaining); `bizar claim F-035
716
+ --who odin` → `status F-035` (active by odin)
717
+
718
+ ### F-036 — Goal Planner UI (commit `6b96d2e`)
719
+
720
+ GOAP A* from plain-English goal + 6 dashboard panels
721
+ (GoalInput, PlanVisualization, CommunicationLog, RealTimeEventLog,
722
+ DependencyGraph, QualityGates) wired to the existing `Ws()`
723
+ singleton.
724
+
725
+ - `bizar-dash/src/web/lib/goapPlanner.ts` — clause split →
726
+ verb map → A* over effect/precondition closure
727
+ - `bizar-dash/src/server/routes/goal-planner.mjs` —
728
+ `POST /api/goal-planner/plan`
729
+ - `bizar-dash/tests/setup.ts` — `ResizeObserver` + `matchMedia`
730
+ jsdom stubs
731
+ - 22/22 F-036 tests + 320/324 full dashboard suite (4 pre-existing
732
+ `a11y/forms.test.tsx` import failures, confirmed via `git stash`
733
+ baseline)
734
+ - **Constraints honoured:** no new deps (existing `@xyflow/react` +
735
+ `lucide-react`), no Tailwind, single `Ws()` subscription
736
+ - **`feature_list.json` mutated only via canonical
737
+ `make verify-feature` gate**
738
+
739
+ ### v6.4.0 release consolidation — Makefile, e2e, JSDoc
740
+
741
+ - `scripts/bh-full-e2e.mjs` — tool-list updated to match the new
742
+ SDK surface (21 tools: 13 v6.3.0 + 4 F-032 + 4 F-033); old
743
+ `bizar_*` prefix + `bizar_sandbox_*` / `bizar_glyph_*` /
744
+ `bizar_plan_comment_*` were v6.3.0 migration drift
745
+ - `Makefile` — `make e2e` target fixed (pointed at non-existent
746
+ `scripts/e2e.sh`); `make test` target expanded to include
747
+ F-035's `cli/__tests__/{cost-gate,feature-list-bridge}.test.mjs`
748
+ - `packages/sdk/src/mcp/server.ts:26` — JSDoc example replaced
749
+ `console.log(msg)` (false positive in `make clean-check` regex)
750
+ with `handleAgentMessage(msg)`
751
+ - `package.json` — bumped 6.3.0 → 6.4.0 (MINOR: 5 new features,
752
+ backward-compatible)
753
+
754
+ ### v6.4.0 final gate
755
+
756
+ - `make check` ✓ (0 TS errors)
757
+ - `make test` ✓ (269/269: 160 SDK + 109 CLI)
758
+ - `make e2e` ✓ (13/13 checks, 21 tools verified)
759
+ - `make clean-check` ✓ (5/5 dimensions, 0 debug artifacts)
760
+ - `make vcr` ✓ (**36/36 = 1.000**)
761
+
762
+ Total v6.4.0 LOC: ~7,200 insertions across 32+ new files.
763
+ +8 MCP tools (13 → 21), +1 REST surface (`/api/goal-planner/plan`),
764
+ +2 CLI surfaces (`bizar cost` + `bizar claim`), +12 background
765
+ workers, +1 dashboard page (Goals tab).
766
+
767
+ Full analysis: `/tmp/ruflo-port-analysis/00-SYNTHESIS.md` (and
768
+ `0[1-4]-*.md` for the per-area maps).
769
+
770
+ **Sprint order constraint:** F-033 should land after F-032
771
+ because the router benefits from the agent registry. The other
772
+ three (F-034, F-035, F-036) are independent of each other and of
773
+ F-032.
774
+
775
+ ### F-032 — Swarm Coordination (passing, committed `92c6e6a`)
776
+
777
+ `BizarAgentRegistry` + `SwarmTopologyRegistry` + 4 MCP tools
778
+ (`agent_spawn`, `agent_list`, `agent_terminate`, `swarm_init`)
779
+ written and exported. `BIZAR_TOOLS` count = 17 (13 + 4 F-032).
780
+
781
+ - **Tests:** 72/72 vitest pass — `agent-registry.test.ts` (28) +
782
+ `swarm-topology.test.ts` (23) + `mcp-tools.test.ts` (15). **TS:** 0
783
+ errors via `make check`.
784
+ - **Agent ids:** `crypto.randomUUID()` → `agent-<uuid>` (122-bit random
785
+ payload, no retry loop). Agent types gated by 9-entry `AGENT_TYPES`
786
+ allowlist (`coder` / `tester` / `reviewer` / `system-architect` /
787
+ `planner` / `researcher` / `performance-engineer` / `security-auditor`
788
+ / `memory-specialist`); `agent_spawn` rejects anything else with a
789
+ structured MCP error.
790
+ - **Persistence:** opt-in via `{ persistPath }`. Singleton writes to
791
+ `.harness/agents.json` + `.harness/topology.json` (gitignored). On
792
+ reload, the new registry reconstructs from the snapshot so a Claude
793
+ Code session restart doesn't drop the population.
794
+ - **Topologies:** 5 topologies (`hierarchical` / `mesh` / `adaptive` /
795
+ `collective` / `hierarchical-mesh`); default = `hierarchical-mesh`,
796
+ `maxAgents` clamped to `[1, 1000]`, default `15`. The `default` swarm
797
+ is lazy-seeded on the first `initSwarm` call.
798
+ - **`layers[]`:** `[compile, unit, e2e]` set in feature_list.json;
799
+ `state="passing"`, `commit="92c6e6a"`, VCR pushed to 36/36 = 1.000.
800
+
801
+ ### F-033 — Self-Learning (passing, committed `1a2ade2`)
802
+
803
+ ADR-174 distillation pipeline + adaptive model router + Tier-1
804
+ codemod intent + 8-agent Q-learning router. Committed as `1a2ade2`.
805
+
806
+ - **Tests:** 142/142 vitest pass across 9 files (50 router + 13
807
+ orchestrator + 18 distillation + 61 sibling F-032 work).
808
+ - **L3 roundtrip:** `/tmp/f033-roundtrip.mjs` writes 3 notes (one with
809
+ `test-exec` tag) → distiller → 3 patterns, 1 promoted
810
+ (`pat_1wi5axn`, `provenance_tier: oracle:test-exec`, `promoted: true`).
811
+ - **3 new MCP tools:** `model_route`, `agent_route`, `memory_distill`,
812
+ plus orchestrator tool wired via `hooksRouteTool`.
813
+ - **TS files:** `packages/sdk/src/router/{codemod-intent, model-router,
814
+ q-learning-router, memory-distillation, index}.ts` (orchestrator).
815
+ - **JS files:** `bizar-dash/src/server/{memory-distillation,
816
+ memory-consolidator, routes/distill}.mjs`.
817
+ - **REST surface:** `POST /api/distill`, `GET /api/distill/patterns`,
818
+ `GET /api/distill/status` mounted in `api.mjs`.
819
+ - **Runtime output:** `.bizar/distilled-patterns.json` (ADR-174 format).
820
+ - **Schema:** `cli/memory-constants.mjs` extended with `pattern` type +
821
+ `VALID_PROVENANCE_TIERS` enum (`oracle:test-exec | proxy:structural
822
+ | judge:fable`).
823
+ - **Bandit singletons:** `modelRouter` and `agentRouter` are module-
824
+ level singletons (priors accumulate across tool calls within one
825
+ MCP server instance — matches ruflo ADR-026 bandit-persistence).
826
+ - **Persistence:** `modelRouter` + `agentRouter` both expose
827
+ `saveTo()` / `loadFrom()` JSON-state round-trip.
828
+
829
+ ## What landed in v6.4.0 (so far)
830
+
831
+ ### F-034 — Background Workers (commits 533d81b + 702631d)
832
+
833
+ Trigger-pattern dispatcher wired to Claude Code's `UserPromptSubmit`
834
+ event. Every prompt auto-suggests relevant Bizar skills/agents.
835
+
836
+ - `config/trigger-patterns.json` (new) — 12 workers with regex-driven
837
+ triggers: `testgaps`, `audit`, `deepdive`, `refactor`, `document`,
838
+ `optimize`, `ultralearn`, `consolidate`, `predict`, `map`, `preload`,
839
+ `benchmark`. Each carries `weight`, `skill`, `agent`, `description`.
840
+ - `cli/worker-dispatcher.mjs` (new, 256 lines) — pure JS, no deps.
841
+ Exports `dispatch()`, `listWorkers()`, `loadPatterns()`, `resetCache()`.
842
+ Cached regex compilation, weight-ranked output, defensively handles
843
+ missing/malformed config.
844
+ - `.claude/hooks/worker-suggest.mjs` (new, 110 lines) — UserPromptSubmit
845
+ hook. Reads stdin, calls `dispatch()`, emits
846
+ `hookSpecificOutput.additionalContext` on stdout, stderr log for
847
+ operator visibility, always exits 0 (informational only).
848
+ - `.claude/settings.json` — UserPromptSubmit entry appended as a sibling
849
+ command (preserves existing `userpromptsubmit-tag.mjs`).
850
+ - `cli/worker-dispatcher.test.mjs` (new, 204 lines) — 18 `node:test`
851
+ cases: 5 canonical dry-run prompts + 8 edge cases + `listWorkers`
852
+ completeness + 4 `loadPatterns`/cache lifecycle + missing/malformed
853
+ config tolerance.
854
+ - `Makefile` + `package.json` — test pipeline picks up the new suite.
855
+
856
+ **Verification (L09 layers):**
857
+ - L1 compile (`node --check`): PASS
858
+ - L2 unit (`node --test cli/worker-dispatcher.test.mjs`): 18/18 PASS
859
+ - L3 e2e (`./scripts/test-in-container.sh`): FAILS at typecheck stage
860
+ due to **pre-existing F-035 WIP** in `cli/commands/cost.mjs`
861
+ (cost-gate port) — unrelated to F-034. F-034 introduces zero TS
862
+ source and lands cleanly on v6.3.0.
863
+
864
+ ## What landed in v6.3.0
865
+
866
+ Complete migration from Cline to Claude Code. Plugin layer, agent
867
+ definitions, hook scripts, and mistake-limit machinery all rewired
868
+ to ride on Claude Code's Agent SDK + MCP + skill/agent/hook system.
869
+
870
+ - **Plugin layer → Claude Code MCP server.** The Bizar plugin now
871
+ ships as a Claude Code MCP server (`@anthropic-ai/claude-agent-sdk`)
872
+ exposing the same tool surface that previously came through the
873
+ Cline plugin host.
874
+ - **Cline's `AgentPlugin` → Claude Code skills + agents + hooks.**
875
+ All 14 agent files in `config/agents/` are now Claude Code agent
876
+ definitions; `config/skills/` and `config/hooks/` are loaded by
877
+ Claude Code's skill loader and hook system respectively.
878
+ - **Cline's `beforeTool` / `afterTool` → Claude Code's `PreToolUse` /
879
+ `PostToolUse`.** The five hook scripts (`PreToolUse`, `PostToolUse`,
880
+ `TaskStart`, `TaskResume`, `UserPromptSubmit`) are installed to
881
+ Claude Code's canonical hook locations.
882
+ - **Cline's `ClineCore` → Claude Code `Agent SDK`
883
+ (`@anthropic-ai/claude-agent-sdk`).** The plugin's `clineruntime.ts`
884
+ is now an Agent SDK wrapper; session config is driven by Claude
885
+ Code's runtime.
886
+ - **Cline's `createTool` from `@cline/sdk` → Claude Code MCP tool
887
+ registration via `@anthropic-ai/claude-agent-sdk`.** All 19+ tools
888
+ are registered through the SDK's MCP tool API.
889
+ - **Mistake-limit floor (default 10) now uses Claude Code's
890
+ `onConsecutiveMistakeLimitReached` callback** instead of Cline's
891
+ session-config field. Field renamed to `claudeAgentMaxConsecutiveMistakes`.
892
+
893
+ ## What landed in v6.2.5
894
+
895
+ Deep-dive session: critical skill-lock bug, new CubeSandbox
896
+ integration, walkinglabs principles applied, container-based testing.
897
+
898
+ ## What landed in v6.2.4
899
+
900
+ Fixes the silent v6.0.0 mistake-limit regression AND gives every
901
+ Bizar agent the exact schemas for Claude Code's tools so they stop making
902
+ the mistakes in the first place.
903
+
904
+ ### Patches
905
+
906
+ 1. **`plugins/bizar/src/clineruntime.ts:buildExecution`** — plugin
907
+ defaultMaxConsecutiveMistakes is now a FLOOR (Math.max) instead
908
+ of a default that gets overridden by the CLI's --retries flag.
909
+ 2. **`plugins/bizar/src/options.ts`** — bumped plugin default from
910
+ 6 → 10.
911
+ 3. **`config/agents/_shared/AGENT_BASELINE.md`** — added "Tool
912
+ Mistakes — Don't Kill the Session" section + removed stale
913
+ "translated from Claude Fable 5" sentence (Claude-Code-only since
914
+ v6.3.0 (was Cline-only in v6.1.0–v6.2.5)).
915
+ 4. **`config/agents/_shared/CLINE_TOOLS.md`** (new) — schemas for
916
+ `read_file`, `editor`, `ask_question`, `use_subagents`, etc.
917
+ Highlights the #1 mistake: `ask_question` with `options: null`.
918
+ 5. **All 14 agent files** — description frontmatter now references
919
+ `CLINE_TOOLS.md`. The `agent-browser.md` agent (the only one
920
+ that didn't reference the baseline) now does too.
921
+ 6. **`cli/commands/validate.mjs`** — new `mistake-limit-floor`
922
+ check (lenient warn).
923
+ 7. **`scripts/check-agents.mjs`** (new) — CI check that all 14
924
+ agents reference the shared docs.
925
+ 8. **`scripts/bh-full-e2e.mjs`** — runs check-agents.mjs as part
926
+ of e2e.
927
+
928
+ ### User-reported trigger
929
+
930
+ > "all writes hang after the first failure, 'Tool execution was
931
+ > interrupted before a result was produced'." — Claude Code's log:
932
+ > `max consecutive mistakes reached (3) in yolo mode`. The model
933
+ > had tried 4 different approaches to edit a Dockerfile (editor,
934
+ > python heredoc, single-line python, sed) and all failed.
935
+
936
+ The fix is two-pronged:
937
+ - **Runtime:** the plugin's higher mistake limit (10) always wins
938
+ via the Math.max floor.
939
+ - **Agent training:** every agent now has the exact tool schemas in
940
+ their context, so they make fewer mistakes in the first place.
941
+
942
+ ## What landed in v6.2.3
943
+
944
+ Full Claude Code CLI integration per the official Claude Code docs (https://docs.claude.com/claude-code):
945
+ - [cli/cli-reference](https://docs.claude.com/claude-code/cli/cli-reference)
946
+ - [cli/agent-teams](https://docs.claude.com/claude-code/cli/agent-teams)
947
+ - [features/subagents](https://docs.claude.com/claude-code/features/subagents)
948
+ - [cli/samples](https://docs.claude.com/claude-code/cli/samples/)
949
+
950
+ ### Patches
951
+
952
+ 1. **`plugins/bizar/src/clineruntime.ts:163`** — flipped
953
+ `enableSpawnAgent: false` → `true`. Silent v6.0.0 regression
954
+ that blocked Claude Code's Agent tool (subagent dispatch). Without
955
+ this, Odin could not delegate to subagents.
956
+ 2. **`cli/commands/setup-provider.mjs`** — wrote to the wrong file
957
+ (v6.2.2 was `~/.claude/settings.json`, fixed to
958
+ `~/.claude/settings.json` which is what Claude Code CLI
959
+ + kanban mode actually read). Now also auto-migrates any legacy
960
+ `openai-compatible` providerId to `litellm`.
961
+ 3. **`cli/commands/cline-cmd.mjs`** (new) — pass-through wrappers:
962
+ - `bizar config` → `claude config`
963
+ - `bizar history` → `claude history`
964
+ - `bizar hub` → `claude hub`
965
+ - `bizar hook` → `claude hook`
966
+ - `bizar team <name> "mission"` → use the Agent tool (note Claude Code has agent teams via Agent tool `team_name`)
967
+ - `bizar subagent <agent> "task"` → research subagent
968
+ 4. **`cli/commands/rca.mjs`** (new) — `bizar rca <github-issue-url>`
969
+ adapted from the official Claude Code Agent SDK GitHub Issue RCA sample.
970
+ 5. **`cli/commands/validate.mjs`** — new `cline-settings-provider`
971
+ check that warns about fake/legacy providerIds in
972
+ `~/.claude/settings.json`.
973
+ 6. **`scripts/bh-full-e2e.mjs`** — added 3 new e2e checks
974
+ (subagent plumbing, cline-cmd wrappers, rca sample).
975
+
976
+ ## What landed in v6.2.2
977
+
978
+ Per operator request: the installer used to add a `provider.9router`
979
+ block to `~/.claude/settings.json` on every install. That's now removed —
980
+ the user picks their own provider. New `bizar setup-provider` CLI
981
+ command (and matching `/setup-provider` Claude Code slash command) make it
982
+ easy to add a provider with the live catalog from
983
+ `http://localhost:20128/v1/models`.
984
+
985
+ ### Patches
986
+
987
+ 1. **`config/cline.json.template`** — removed the `provider` block
988
+ entirely (9router + minimax). Template is now provider-free.
989
+ 2. **`cli/provision.mjs:patchClineJson`** — stopped auto-adding
990
+ `provider.9router` and `provider.minimax`. Still backfills the
991
+ Bizar scaffolding (plugin entry, default_agent, $schema,
992
+ instructions, permission, snapshot) but NOT provider config.
993
+ 3. **`cli/commands/setup-provider.mjs`** (new) — `bizar setup-provider`
994
+ subcommand. Writes a `provider` block with `baseUrl` + `apiKey` +
995
+ live model catalog. Flags: `--list`, `--remove`, `--gateway`,
996
+ `--key`, `--provider`.
997
+ 4. **`config/commands/setup-provider.md`** (new) — the matching
998
+ `/setup-provider` Claude Code slash command.
999
+ 5. **`cli/commands/validate.mjs`** — `provider-config` is now
1000
+ ALWAYS lenient (informational, never fails). New behavior
1001
+ reports whatever providers the user has configured.
1002
+ 6. **Agent `model:` fields** — updated to use the live gateway
1003
+ prefix `minimaxcustom/MiniMax-M3` (was stale `minimax/MiniMax-M3`).
1004
+ Same for `model` and `small_model` in claude settings.json template.
1005
+ 7. **Post-install hint** — when no provider is configured, the
1006
+ installer prints a clear setup hint pointing at `bizar setup-provider`.
1007
+
1008
+ ## What landed in v6.2.1
1009
+
1010
+ Fixes the "I see skills but no hooks" user report. v6.0.0 shipped
1011
+ "hooks" as markdown behavioral files in `~/.claude/hooks/` which Claude Code
1012
+ silently ignored. v6.2.1 replaces them with five real Claude Code-native
1013
+ executable hook scripts.
1014
+
1015
+ ### Patches
1016
+
1017
+ 1. **`config/hooks/{PreToolUse,PostToolUse,TaskStart,TaskResume,UserPromptSubmit}`** (new) —
1018
+ five real executable hook scripts with shebang lines:
1019
+ - `PreToolUse` blocks writes to `.env`/`secrets/`/`node_modules`/
1020
+ lockfiles; warns on `console.log`/`debugger`/`.only()` in `src/`
1021
+ - `PostToolUse` logs tool latency to `~/.config/bizar/hook-logs/`
1022
+ - `TaskStart` primes the AI with project context
1023
+ - `TaskResume` reminds the AI to re-read state + check git log
1024
+ - `UserPromptSubmit` tags the prompt for routing
1025
+ 2. **`cli/provision.mjs:syncConfigExtras`** — installs hooks to BOTH
1026
+ `~/.claude/hooks/` AND `~/Documents/Claude/Hooks/` (Claude Code's default
1027
+ global hooks location), with `chmod +x`.
1028
+ 3. **`cli/commands/validate.mjs`** — `hooks-installed` now verifies
1029
+ shebang + executable bit (not just file presence). New
1030
+ `hooks-canonical-location` check confirms
1031
+ `~/Documents/Claude/Hooks/` is populated.
1032
+ 4. **`scripts/bh-full-e2e.mjs`** — new check verifies
1033
+ `config/hooks/` has all 5 Claude Code-native hook scripts with shebangs.
1034
+ 5. **Removed** the obsolete `config/hooks/{pre-tool-use,post-tool-use,README}.md`
1035
+ (markdown behavioral files that Claude Code never read).
1036
+
1037
+ ## What landed in v6.2.0
1038
+
1039
+ Made Bizar's Claude Code integration end-to-end flawless: every plugin
1040
+ artifact, slash command, agent file, skill, rule, hook, and provider
1041
+ config now lands in the user's `~/.claude/` on every install. New
1042
+ `bizar validate` + `/validate` Claude Code command, plus `/team` and
1043
+ `/test` slash commands. The `make e2e` infrastructure is restored.
1044
+
1045
+ ### Patches
1046
+
1047
+ 1. **`plugins/bizar/src/clineruntime.ts:164`** — flipped
1048
+ `enableAgentTeams: false` → `true`. The `bizar_spawn_team` tool
1049
+ requires agent-teams to be enabled in Claude Code's session config;
1050
+ without this, `/team` and the team coordinator were silently
1051
+ unavailable.
1052
+
1053
+ 2. **`config/cline.json.template`** — added three new slash command
1054
+ entries to the `command:` block:
1055
+ - `team` (routes to `odin`, template `commands-bizar/team.md`) —
1056
+ spawns a Claude Code agent team (Odin + Thor + Tyr + Mimir + Hermod +
1057
+ Forseti) for parallel multi-agent missions.
1058
+ - `test` (routes to `thor`, template `commands-bizar/test.md`) —
1059
+ thin wrapper around `bizar test-gate`, auto-detects the
1060
+ project's test runner.
1061
+ - `validate` (routes to `heimdall`, template
1062
+ `commands-bizar/validate.md`) — runs the full 21-point
1063
+ `bizar validate` check battery.
1064
+
1065
+ 3. **`config/commands/team.md`** (new) — comprehensive guide for
1066
+ the `/team` command. Default team composition, decomposition
1067
+ rules, the pre-dispatch checklist, the sibling-awareness block,
1068
+ and three worked example missions (refactor, multi-feature
1069
+ build, bug hunt).
1070
+
1071
+ 4. **`config/commands/test.md`** (new) — documents the `/test`
1072
+ slash command and its relationship to `bizar test-gate`.
1073
+
1074
+ 5. **`config/commands/validate.md`** (new) — documents the
1075
+ `/validate` slash command and its 21 checks.
1076
+
1077
+ 6. **`cli/commands/validate.mjs`** (new) — the `bizar validate`
1078
+ subcommand. 21-point health check that confirms:
1079
+ - claude CLI reachable + version
1080
+ - claude settings.json parses + plugin entry + path resolves
1081
+ - plugin runtime deps (zod, @anthropic-ai/claude-agent-sdk) wired
1082
+ - plugin index.ts + enableAgentTeams plumbing (regression check)
1083
+ - all 14 agent files installed + Claude Code .yaml format
1084
+ - all 13 slash commands (incl. /team, /test, /validate)
1085
+ - all skills / rules / hooks mirrored to ~/.claude/
1086
+ - provider.9router (preferred) or provider.minimax (legacy)
1087
+ - 9Router gateway reachable (lenient unless --strict)
1088
+ - default_agent + instructions[] in claude settings.json
1089
+
1090
+ Flags: `--json` for machine output, `--strict` to fail on
1091
+ lenient checks, `--only <name>` to run a single check.
1092
+
1093
+ 7. **`cli/commands/validate.test.mjs`** (new) — 15 unit tests
1094
+ covering: JSON output shape, missing-team/test/validate command
1095
+ detection, missing-agent detection, claude settings.json absence,
1096
+ enableAgentTeams regression, provider-config missing,
1097
+ 9router-only / minimax-only configurations, --strict mode,
1098
+ --only filter, unknown --only name.
1099
+
1100
+ 8. **`cli/provision.mjs:patchClineJson()`** — refactored to be
1101
+ more robust. On every install/update it now patches the
1102
+ following on the user's claude settings.json (additive, idempotent):
1103
+ - `plugin` entry (the critical one — Bizar plugin won't load
1104
+ without it)
1105
+ - `provider.9router` (the v6.0.1+ preferred gateway)
1106
+ - `provider.minimax` (legacy fallback)
1107
+ - `default_agent` (set to "odin" if missing)
1108
+ - `$schema` (https://docs.claude.com/claude-code/config.json)
1109
+ - `instructions` (point at the bundled tools reference)
1110
+ - `permission` ("allow")
1111
+ - `snapshot` (false)
1112
+ The previous version only added the plugin entry on first
1113
+ install; subsequent updates didn't backfill the other fields.
1114
+
1115
+ 9. **`scripts/bh-full-e2e.mjs`** (new) — the 15-check end-to-end
1116
+ verifier. Lives at `scripts/bh-full-e2e.mjs` (not `/tmp/` —
1117
+ that was a pre-existing infra gap that blocked `make e2e` and
1118
+ clean-check dimension #5 since v5.6.0). Checks:
1119
+ - plugin entry resolves
1120
+ - enableAgentTeams: true in clineruntime.ts
1121
+ - claude settings.json.template completeness
1122
+ - config/commands/ has team/test/validate
1123
+ - config/agents/ has all 14 agents
1124
+ - config/skills/ has 8+ skills
1125
+ - config/rules/ has 7 always-on rules
1126
+ - plugin index.ts is well-formed
1127
+ - plugin source has 19+ tool files
1128
+ - plugin has 4+ hooks
1129
+ - claude CLI reachable
1130
+ - ClineRuntime class is importable
1131
+ - bizar validate command + tests present
1132
+ - package.json valid
1133
+ - TypeScript compiles cleanly
1134
+
1135
+ 10. **`Makefile` + `scripts/clean-state-check.sh`** — point at
1136
+ `scripts/bh-full-e2e.mjs` instead of the missing
1137
+ `/tmp/bh-full-e2e.mjs`. `make e2e` and clean-check #5 now work.
1138
+
1139
+ 11. **`package.json` `test` script** — added
1140
+ `cli/install.test.mjs`, `cli/provision.test.mjs`,
1141
+ `cli/commands/validate.test.mjs` to the npm test pipeline.
1142
+ Previously these only ran via `make test` (which also picks
1143
+ them up); now they're explicit so CI catches any regression.
1144
+
1145
+ 12. **`.claude/instructions/bizar-tools.md`** — removed the
1146
+ lingering "opencode" references that survived the v6.1.0
1147
+ Cline-only rewrite. Now correctly says "Claude Code" and references
1148
+ `headroom wrap claude` / `~/.claude/skills/`.
1149
+
1150
+ ### Tests
1151
+
1152
+ - `plugins/bizar/tests/clineruntime-config.test.ts` — 3 new cases
1153
+ pinning `enableAgentTeams: true` so the v6.0.0-era "false" can't
1154
+ silently regress.
1155
+ - `cli/commands/validate.test.mjs` — 15 cases (new file).
1156
+ - `scripts/bh-full-e2e.mjs` — 15 e2e checks (new file).
1157
+
1158
+ ### Migration
1159
+
1160
+ Operators on a v6.1.0 install should run `bizar update` to pull
1161
+ the new command files (team.md, test.md, validate.md) and the
1162
+ patched clineruntime.ts (enableAgentTeams: true). The update is
1163
+ backwards-compatible and idempotent.
1164
+
1165
+ ## What landed in v6.0.1
1166
+
1167
+ Diagnosed root cause of "Claude Code keeps stopping" (Claude Code aborting sessions
1168
+ after 3 consecutive tool-validation failures — bundled CLI default).
1169
+
1170
+ ### Patches
1171
+ 1. **`plugins/bizar/src/clineruntime.ts`** (now wraps Claude Code Agent SDK) — `startSession` now passes through
1172
+ the `execution` block (`maxConsecutiveMistakes`, `reminderAfterIterations`,
1173
+ `reminderText`, `loopDetection`) and wires an `onConsecutiveMistakeLimitReached`
1174
+ callback by default. Runtime constructor accepts `defaultMaxConsecutiveMistakes`
1175
+ and `defaultOnConsecutiveMistakeLimitReached` so every session inherits them
1176
+ unless the caller overrides.
1177
+
1178
+ 2. **`plugins/bizar/src/mistake-recovery.ts`** (new) — pure helper that
1179
+ builds the recovery callback. Recoverable mistakes
1180
+ (`invalid_tool_call`, `tool_execution_failed`) return
1181
+ `{action:"continue", guidance:"..."}` so the session keeps running with a
1182
+ guidance message; infra failures (`api_error`) return `{action:"stop"}`.
1183
+
1184
+ 3. **`plugins/bizar/src/tool-discipline.ts`** (new) — system-prompt directive
1185
+ appended by `beforeModel`. Tells the model to populate all required schema
1186
+ fields, prefer built-in tools over bash (`read_file`, `editor`, `search`,
1187
+ `apply_patch`, `list_files`, `web_fetch`), keep `run_commands` small (≈600
1188
+ char ceiling, no `for`/`xargs`/`sed -i`/`heredoc`), and switch tools after
1189
+ two identical failures.
1190
+
1191
+ 4. **`plugins/bizar/src/options.ts`** — adds `claudeAgentMaxConsecutiveMistakes` field (renamed from `clineruntimeMaxConsecutiveMistakes` in v6.3.0)
1192
+ normalized option (default 6, range [3, 20], env `BIZAR_MAX_CONSECUTIVE_MISTAKES`).
1193
+
1194
+ 5. **`plugins/bizar/index.ts`** — wires the recovery callback into the
1195
+ runtime; `beforeModel` injects the tool-discipline directive idempotently.
1196
+
1197
+ 6. **`cli/provision.mjs:syncConfigExtras`** — now also copies `config/rules/*.md`
1198
+ into `${CLAUDE_DIR}/rules/`. Pre-existing gap: `bizar install` / `bizar update`
1199
+ were silently skipping the always-on rules in `~/.claude/rules/`.
1200
+
1201
+ 7. **`config/cline.json.template`** — adds `claudeAgentMaxConsecutiveMistakes: 6` (renamed from `clineruntimeMaxConsecutiveMistakes` in v6.3.0)
1202
+ to the Bizar plugin metadata block so a fresh `bizar install` writes the
1203
+ new field automatically.
1204
+
1205
+ ### Tests
1206
+ - `plugins/bizar/tests/mistake-recovery.test.ts` (10 cases)
1207
+ - `plugins/bizar/tests/tool-discipline.test.ts` (9 cases)
1208
+ - `plugins/bizar/tests/clineruntime-config.test.ts` (6 cases)
1209
+ - `plugins/bizar/tests/options.test.ts` — 7 new cases for the field
1210
+ - `cli/provision.test.mjs` — 2 new cases for rules sync
1211
+
1212
+ ### v6.0.1 hotfix #2: 9Router gateway
1213
+ All Bizar agents now route chat through 9Router at `http://localhost:20128/v1`
1214
+ (the user's existing 9Router instance with MiniMax keys + auto-fallback to
1215
+ free models on `kr/*` and `openrouter/*:free` IDs). Plus 8 capability
1216
+ skills for the full 9Router feature surface — chat, web-search, web-fetch,
1217
+ image, TTS, STT, embeddings — installed automatically by
1218
+ `syncConfigExtras` into `~/.claude/skills/9router*/SKILL.md`.
1219
+
1220
+ | Patches |
1221
+ |---|
1222
+ | `config/skills/9router*/SKILL.md` (8 new) — full 9Router skill tree, including the entry point + chat / web-search / web-fetch / image / TTS / STT / embeddings. |
1223
+ | `config/cline.json.template` — added `provider.9router` block (`baseUrl: http://localhost:20128/v1`, `apiKey: ${NINEROUTER_KEY}`). Switched all 13 model-bearing agents + top-level `model` + `small_model` to `9router/<id>` strings. |
1224
+ | `cli/doctor.mjs` — added `9router-reachable` health check; `provider-config-sanity` now prefers `provider.9router` (falls back to legacy `provider.minimax`). |
1225
+ | `cli/doctor.mjs:check9routerReachable` — `GET ${NINEROUTER_URL}/api/health` with 4s timeout; lenient (warn, not fail) so offline work doesn't break. |
1226
+
1227
+ Operators: re-run `bizar install` to push the new provider block to
1228
+ `~/.claude/settings.json`. `NINEROUTER_URL` env var overrides the default
1229
+ endpoint (handy when 9Router runs inside a container/tunnel).
1230
+
1231
+ ## Recent releases
1232
+
1233
+ | Version | Date | Type | Notes |
1234
+ | ------------------- | ---------- | ------ | ------------------------------------------- |
1235
+ | **v7.0.4** | 2026-07-12 | patch | dashboard consistency: theme unification, sidebar sections, settings-nav share chrome, Memory page on ui/primitives, BarChart dark-mode visibility |
1236
+ | **v7.0.3** | 2026-07-12 | patch | install flow: build SDK + dashboard dist on fresh installs (PATH-resolved tsc, buildDash() step) |
1237
+ | **v7.0.2** | 2026-07-11 | patch | vite chunk fix (drop brittle manualChunks to break circular import) |
1238
+ | **v7.0.0** | 2026-07-11 | major | F-041 desktop consistency + mobile UI pass |
1239
+ | **v6.3.0** | 2026-07-11 | major | Claude Code migration (plugin → MCP, skills, hooks) |
1240
+ | **v6.1.0** | 2026-07-09 | dev | Cline-exclusive; superseded by v6.3.0 Claude Code migration |
1241
+ | **v6.0.2** | 2026-07-09 | patch | fix dashboard-presence check in legacy installer |
1242
+ | **v6.0.1** | 2026-07-09 | dev | Claude Code mistake-recovery + tool-discipline + rules-sync + 9router gateway |
1243
+ | **v6.0.0-beta.1** | 2026-07-08 | BETA | CURRENT_ISSUES sprint — Odin, /loop, slash commands, vault linking |
1244
+ | v5.6.0-beta.17 | 2026-07-07 | BETA | general repo cleanup release |
1245
+ | v5.6.0-beta.1 | 2026-07-07 | BETA | OpenCode → Cline rewrite (4 phases) |
1246
+ | v5.5.6 | 2026-07-07 | stable | new `/plow-through` slash command |
1247
+
1248
+ ## In Progress
1249
+
1250
+ _None._
1251
+
1252
+ ## Blockers
1253
+
1254
+ - **`/tmp/bh-full-e2e.mjs` is missing globally.** Blocks `make e2e` and
1255
+ clean-check dimension #5 (startup path). Pre-existing — exists in
1256
+ `clean-state-check.sh` line 68 but no code path generates the file. Out
1257
+ of scope for v6.0.1.
1258
+
1259
+ ## Recent sessions
1260
+
1261
+ | Date | Phase | Outcome |
1262
+ | ---------- | ----- | ----------------------------------------------------------- |
1263
+ | 2026-07-11 | 7 | v6.3.0 — Claude Code migration COMPLETE |
1264
+ | 2026-07-09 | 6 | v6.0.1 — Claude Code mistake-recovery + tool-discipline + rules-sync |
1265
+ | 2026-07-08 | 5 | CURRENT_ISSUES sprint COMPLETE — published v6.0.0-beta.1 |
1266
+ | 2026-07-07 | 3 | In-process ClineRuntime + agent teams + memory vault + E2E |
1267
+ | 2026-07-07 | 2 | OpenCode → Cline rewrite (17 tools, 4 hooks) |
1268
+ | 2026-07-07 | 1 | Mechanical OpenCode→Cline rename + @cline/sdk wiring |
1269
+
1270
+ ## Verification commands (single source of truth)
1271
+
1272
+ ```sh
1273
+ make check # typecheck + tests (full pipeline) — 746/746 pass
1274
+ make test # unit tests only
1275
+ make e2e # real plugin load + tool invocation — BLOCKED (script missing)
1276
+ make clean-check # 5-dimension exit verification — 4/5 pass (E2E blocked)
1277
+ make vcr # feature_list VCR ratio — 25/25 = 1.000
1278
+ ```
1279
+
1280
+ ## S10 — v8 dashboard live data (F-052, this session)
1281
+
1282
+ User-requested: turn the v8 dashboard into a real-time orchestration
1283
+ center. Every view pulls live data from the dashboard backend. Agents
1284
+ view unifies Bizar + Claude Code background agents. Goals render
1285
+ from `.bizar/PROGRESS.md`.
1286
+
1287
+ **Backend:**
1288
+ - `bizar-dash/src/server/progress-parser.mjs` — pure parser for
1289
+ `.bizar/PROGRESS.md`. `parseProgress(text)` returns
1290
+ `{goals, preamble, postamble}` with `{id, title, status, progress,
1291
+ keyResults[], owner, due, section}`. `serializeProgress(parsed)`
1292
+ inverse. Header format `## F-NNN — Title` or `## Bare Title`.
1293
+ - `bizar-dash/src/server/routes/goals.mjs` — full CRUD over
1294
+ PROGRESS.md. GET/PATCH `/api/goals/:id/status`, POST `/api/goals`,
1295
+ PATCH `/api/goals/:id`, KR add/toggle/remove. Atomic write via
1296
+ tmp+rename. Falls back to `$HOME` when no project is active.
1297
+ - `bizar-dash/src/server/routes/agents-cc.mjs` — Claude Code
1298
+ background agents via `claude agents --json --all`. 5s module cache
1299
+ to avoid subprocess-per-render. Enrichment reads session JSONL for
1300
+ last-message snippet/timestamp. Kill + send endpoints.
1301
+ - `bizar-dash/src/server/bg-poller.mjs` — `tickCCAgents()` with
1302
+ SHA-1 digest diff. Emits `agents:change` only when the digest
1303
+ actually moves (order-independent).
1304
+
1305
+ **Frontend (v8):**
1306
+ - `bizar-dash/src/web/v8/data/{fetcher,types,useFetch,useWebSocket}.ts`
1307
+ — module-singleton WS client with exponential reconnect, fetch
1308
+ hook with AbortController + refetch(), TypeScript types matching
1309
+ REST shapes.
1310
+ - All 8 v8 views rewritten to consume live data:
1311
+ - **Overview** — `/api/snapshot` + `/api/activity?limit=10`,
1312
+ live-tail `activity:new` via ring buffer.
1313
+ - **Tasks** — `/api/tasks`, kanban columns mapped from server
1314
+ statuses, DnD → `PATCH /api/tasks/:id/status`, optimistic update
1315
+ + rollback on error, live sync via `tasks:change`.
1316
+ - **Goals** — `/api/goals`, status Select per goal → PATCH,
1317
+ focused goal drawer with KeyResults, live sync via
1318
+ `goals:change`.
1319
+ - **Agents** — unified Bizar + CC agents with source filter chip
1320
+ (`all | bizar | claude-code`), live updates via `agents:change`
1321
+ and `agent:status`.
1322
+ - **Activity** — full event history with WS tail.
1323
+ - **Memory** — `/api/memory` with Project/Global/All scope chips.
1324
+ - **Libraries** — Skills / MCPs / Hooks now fetch live data
1325
+ (`/api/skills?kind=…`); Router drops hardcoded arrays.
1326
+ - **Settings** — live counts for Plugins / MCPs / Skills / Hooks
1327
+ sections; toggles PATCH `/api/settings`.
1328
+
1329
+ **Tests:**
1330
+ - Backend: `node --test` on `progress-parser.test.mjs` (8) +
1331
+ `agents-cc.test.mjs` (4) + `bg-poller.test.mjs` (3) = **15/15
1332
+ pass**.
1333
+ - Frontend: `npx vitest run src/web/v8` — 25 files, **195/195 pass**
1334
+ (142 baseline + 53 new across data hooks + view rewrites). The
1335
+ pre-existing `views.test.tsx` was rewritten to mock `fetch` and
1336
+ assert structure against the new live-data shells.
1337
+ - New tests: `useFetch.test.ts` (5 cases), `useWebSocket.test.ts`
1338
+ (5 cases via FakeSocket).
1339
+
1340
+ **Constraints honoured:** 0 new top-level npm deps; CC background
1341
+ agents polled via `claude agents --json` (no API needed); PROGRESS.md
1342
+ round-trips through serialize/deserialize; WS layer mirrors the
1343
+ existing legacy `Ws()` singleton pattern.
1344
+
1345
+ **Next sprint (S11):** Agent detail panel + control plane. Click any
1346
+ agent card → right-side Drawer with live detail, last-10 actions
1347
+ timeline, and `Send prompt` / `Restart` / `Kill` actions that map to
1348
+ the new `/api/cc-agents/:id/kill` + `/api/agents/:name/invoke`
1349
+ endpoints.
1350
+
1351
+ ## S11-S14 — Control plane, goal editor, palette + settings wiring
1352
+
1353
+ User request: "control and configure everything in the dashboard".
1354
+
1355
+ **S11 — Agent detail Drawer + control plane:**
1356
+ - `bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx` — right-side Sheet
1357
+ with avatar, current-task callout, prompt textarea, and three
1358
+ action buttons:
1359
+ - **Send** → POST `/api/cc-agents/:id/send` (CC source) or
1360
+ `/api/agents/:name/invoke` (Bizar source)
1361
+ - **Restart** → POST `/api/agents/:name/restart` (Bizar only;
1362
+ CC gets a "spawn a fresh agent via palette" hint)
1363
+ - **Copy id** → `navigator.clipboard.writeText(key)`
1364
+ - `AgentsView.tsx` — `onOpen` wires each card to `setOpenId(c.id)`;
1365
+ `AgentDetail` mounts when `openId !== null`.
1366
+ - Backend endpoints already shipped in `routes/agents-cc.mjs`.
1367
+
1368
+ **S12 — Goal editing drawer + create flow:**
1369
+ - `bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx` — Sheet with
1370
+ editable Title / Status / Owner / Due + inline KeyResult list
1371
+ (toggle done, add via Enter, remove button). Each field PATCHes
1372
+ `/api/goals/:id` on blur or change. KR toggles/deletes hit
1373
+ `/api/goals/:id/key-results/:krId`.
1374
+ - `GoalsView.tsx` — card click opens Drawer (was inline section);
1375
+ `+ New goal` button POSTs `/api/goals` then opens the new goal
1376
+ for editing. Source-of-truth stays `.bizar/PROGRESS.md`.
1377
+
1378
+ **S13 — Command palette control plane:**
1379
+ - `AppCommandPalette.tsx` — three new groups:
1380
+ - **Agents** — Spawn Coder / Researcher / Planner / Reviewer →
1381
+ POST `/api/agents`.
1382
+ - **Tasks** — `New task…` (window.prompt → POST
1383
+ `/api/tasks/submit`), `Go to tasks board` (existing nav).
1384
+ - **Projects** — dynamically loaded from `/api/projects`; each
1385
+ entry hits POST `/api/projects/:id/activate`.
1386
+ - Toast hook stub: `onToast` prop surfaces success/error.
1387
+
1388
+ **S14 — Settings wiring pass:**
1389
+ - `useFetch` already wires live counts into the Plugins / MCPs /
1390
+ Skills / Hooks sections (shipped in S10). The S14 pass
1391
+ consolidates PATCH endpoints (`/api/settings` + per-section
1392
+ hookups) and adds the `tests/control-plane.test.tsx` regression
1393
+ suite covering AgentDetail + GoalDetail.
1394
+
1395
+ **Tests added:**
1396
+ - `bizar-dash/src/web/v8/__tests__/control-plane.test.tsx` —
1397
+ 7 vitest cases covering AgentDetail (name/badge, task callout,
1398
+ Send endpoint routing, button presence) and GoalDetail
1399
+ (editable fields, KR list, PATCH on blur).
1400
+
1401
+ **Verification (L1 proxy — typecheck):**
1402
+ - `tsc --noEmit` via Node API: 0 diagnostics, 0 failures.
1403
+
1404
+ **Next sprint:** chat surface rewrite (deferred from earlier
1405
+ PLANs) + mobile dashboard v8 cutover (the user said "professional
1406
+ and data-driven"; chat is the last non-data surface).