@polderlabs/bizar 6.2.4 → 6.3.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 (332) hide show
  1. package/.claude/CLAUDE.md +15 -0
  2. package/.claude/agents/_shared/AGENT_BASELINE.md +168 -0
  3. package/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
  4. package/.claude/agents/_shared/SKILLS.md +109 -0
  5. package/.claude/agents/agent-browser.md +80 -0
  6. package/.claude/agents/baldr.md +49 -0
  7. package/.claude/agents/forseti.md +51 -0
  8. package/.claude/agents/frigg.md +42 -0
  9. package/.claude/agents/heimdall.md +33 -0
  10. package/.claude/agents/hermod.md +53 -0
  11. package/.claude/agents/mimir.md +49 -0
  12. package/.claude/agents/odin.md +287 -0
  13. package/.claude/agents/quick.md +34 -0
  14. package/.claude/agents/semble-search.md +50 -0
  15. package/.claude/agents/thor.md +53 -0
  16. package/.claude/agents/tyr.md +56 -0
  17. package/.claude/agents/vidarr.md +54 -0
  18. package/.claude/agents/vor.md +53 -0
  19. package/.claude/commands/audit.md +25 -0
  20. package/.claude/commands/bizar.md +22 -0
  21. package/.claude/commands/explain.md +17 -0
  22. package/.claude/commands/init.md +29 -0
  23. package/.claude/commands/learn.md +44 -0
  24. package/.claude/commands/plan.md +35 -0
  25. package/.claude/commands/plow-through.md +50 -0
  26. package/.claude/commands/pr-review.md +49 -0
  27. package/.claude/commands/setup-provider.md +96 -0
  28. package/.claude/commands/tailscale-serve.md +100 -0
  29. package/.claude/commands/team.md +132 -0
  30. package/.claude/commands/test.md +62 -0
  31. package/.claude/commands/validate.md +68 -0
  32. package/.claude/commands/visual-plan.md +24 -0
  33. package/.claude/hooks/README.md +92 -0
  34. package/.claude/hooks/posttooluse-editwrite.mjs +91 -0
  35. package/.claude/hooks/pretooluse-bash.mjs +81 -0
  36. package/.claude/hooks/pretooluse-editwrite.mjs +139 -0
  37. package/.claude/hooks/sessionend-recall.mjs +74 -0
  38. package/.claude/hooks/sessionstart-prime.mjs +80 -0
  39. package/.claude/hooks/userpromptsubmit-tag.mjs +80 -0
  40. package/.claude/settings.json +116 -0
  41. package/.claude/skills/9router/SKILL.md +80 -0
  42. package/.claude/skills/9router-chat/SKILL.md +73 -0
  43. package/.claude/skills/9router-embeddings/SKILL.md +69 -0
  44. package/.claude/skills/9router-image/SKILL.md +86 -0
  45. package/.claude/skills/9router-stt/SKILL.md +79 -0
  46. package/.claude/skills/9router-tts/SKILL.md +80 -0
  47. package/.claude/skills/9router-web-fetch/SKILL.md +99 -0
  48. package/.claude/skills/9router-web-search/SKILL.md +91 -0
  49. package/.claude/skills/bizar/README.md +9 -0
  50. package/.claude/skills/bizar/SKILL.md +450 -0
  51. package/.claude/skills/cpp-coding-standards/README.md +28 -0
  52. package/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
  53. package/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
  54. package/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
  55. package/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
  56. package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
  57. package/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
  58. package/.claude/skills/cpp-testing/README.md +28 -0
  59. package/.claude/skills/cpp-testing/SKILL.md +304 -0
  60. package/.claude/skills/cpp-testing/references/coverage.md +370 -0
  61. package/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
  62. package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
  63. package/.claude/skills/cpp-testing/references/mocking.md +364 -0
  64. package/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
  65. package/.claude/skills/cubesandbox/SKILL.md +148 -0
  66. package/.claude/skills/embedded-esp-idf/README.md +41 -0
  67. package/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
  68. package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
  69. package/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
  70. package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
  71. package/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
  72. package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
  73. package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
  74. package/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
  75. package/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
  76. package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
  77. package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
  78. package/.claude/skills/glyph/SKILL.md +163 -0
  79. package/.claude/skills/harness-engineering/SKILL.md +143 -0
  80. package/.claude/skills/lightrag/SKILL.md +81 -0
  81. package/.claude/skills/memory-protocol/SKILL.md +105 -0
  82. package/.claude/skills/obsidian/SKILL.md +306 -0
  83. package/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
  84. package/.claude/skills/self-improvement/SKILL.md +64 -0
  85. package/README.md +87 -59
  86. package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js → EnvVarsSection-B58aiJiE.js} +1 -1
  87. package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js.map → EnvVarsSection-B58aiJiE.js.map} +1 -1
  88. package/bizar-dash/dist/assets/{MobileChat-BnKN_Ks_.js → MobileChat-BJrqwVDd.js} +1 -1
  89. package/bizar-dash/dist/assets/{MobileChat-BnKN_Ks_.js.map → MobileChat-BJrqwVDd.js.map} +1 -1
  90. package/bizar-dash/dist/assets/{MobileSettings-DjCPxC-Q.js → MobileSettings-CEQNJNLJ.js} +1 -1
  91. package/bizar-dash/dist/assets/{MobileSettings-DjCPxC-Q.js.map → MobileSettings-CEQNJNLJ.js.map} +1 -1
  92. package/bizar-dash/dist/assets/{main-DYiZqMrn.js → main-IvfQAOfy.js} +1 -1
  93. package/bizar-dash/dist/assets/{main-DYiZqMrn.js.map → main-IvfQAOfy.js.map} +1 -1
  94. package/bizar-dash/dist/assets/{markdown-C6mXtQxD.js → markdown-tOLaD6nm.js} +1 -1
  95. package/bizar-dash/dist/assets/{markdown-C6mXtQxD.js.map → markdown-tOLaD6nm.js.map} +1 -1
  96. package/bizar-dash/dist/assets/{mobile-CMHqtLV2.js → mobile-DYCHcUpq.js} +1 -1
  97. package/bizar-dash/dist/assets/{mobile-CMHqtLV2.js.map → mobile-DYCHcUpq.js.map} +1 -1
  98. package/bizar-dash/dist/assets/{mobile-layout-3jIhHX_p.js → mobile-layout-CBHjpwsb.js} +2 -2
  99. package/bizar-dash/dist/assets/{mobile-layout-3jIhHX_p.js.map → mobile-layout-CBHjpwsb.js.map} +1 -1
  100. package/bizar-dash/dist/assets/{useSlashCommands-DtITw8Xv.js → useSlashCommands-Bd7_FA6U.js} +2 -2
  101. package/bizar-dash/dist/assets/{useSlashCommands-DtITw8Xv.js.map → useSlashCommands-Bd7_FA6U.js.map} +1 -1
  102. package/bizar-dash/dist/assets/{vendor-CeHGtduv.js → vendor-C843201K.js} +12 -12
  103. package/bizar-dash/dist/assets/vendor-C843201K.js.map +1 -0
  104. package/bizar-dash/dist/index.html +6 -6
  105. package/bizar-dash/dist/mobile.html +2 -2
  106. package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  107. package/bizar-dash/src/server/api.mjs +4 -4
  108. package/bizar-dash/src/server/background-store.mjs +15 -16
  109. package/bizar-dash/src/server/bg-poller.mjs +25 -35
  110. package/bizar-dash/src/server/bg-retry.mjs +66 -194
  111. package/bizar-dash/src/server/claude-bg-spawner.mjs +390 -0
  112. package/bizar-dash/src/server/claude-info.mjs +412 -0
  113. package/bizar-dash/src/server/{cline-runner.mjs → claude-runner.mjs} +53 -48
  114. package/bizar-dash/src/server/claude-sdk.mjs +191 -0
  115. package/bizar-dash/src/server/providers-store.mjs +22 -49
  116. package/bizar-dash/src/server/routes/background.mjs +24 -20
  117. package/bizar-dash/src/server/routes/chat.mjs +223 -326
  118. package/bizar-dash/src/server/routes/claude-session-detail.mjs +329 -0
  119. package/bizar-dash/src/server/routes/claude-sessions.mjs +259 -0
  120. package/bizar-dash/src/server/routes/tasks.mjs +20 -28
  121. package/bizar-dash/src/server/task-delegator.mjs +76 -77
  122. package/bizar-dash/src/web/components/chat/useChat.ts +23 -27
  123. package/bizar-dash/src/web/views/Chat.tsx +8 -8
  124. package/cli/bin.mjs +31 -18
  125. package/cli/commands/claude-cmd.mjs +348 -0
  126. package/cli/commands/install.mjs +12 -11
  127. package/cli/commands/sandbox.mjs +220 -0
  128. package/cli/commands/validate.mjs +252 -288
  129. package/cli/dev-link.test.mjs +11 -11
  130. package/cli/doctor.mjs +131 -213
  131. package/cli/install.mjs +33 -37
  132. package/cli/install.test.mjs +9 -9
  133. package/cli/provision-claude.mjs +893 -0
  134. package/cli/provision.mjs +330 -226
  135. package/cli/provision.test.mjs +102 -0
  136. package/cli/utils.mjs +72 -58
  137. package/config/AGENTS.md +28 -28
  138. package/config/agents/_shared/AGENT_BASELINE.md +104 -684
  139. package/config/skills/bizar/SKILL.md +197 -0
  140. package/config/skills/cubesandbox/SKILL.md +148 -0
  141. package/config/skills/harness-engineering/SKILL.md +142 -0
  142. package/install.sh +66 -44
  143. package/package.json +19 -11
  144. package/packages/sdk/ARCHITECTURE.md +40 -36
  145. package/packages/sdk/package-lock.json +32 -0
  146. package/packages/sdk/package.json +15 -5
  147. package/{plugins/bizar → packages/sdk}/src/dangerous-patterns.ts +6 -28
  148. package/packages/sdk/src/fingerprint.ts +0 -0
  149. package/packages/sdk/src/index.ts +38 -73
  150. package/packages/sdk/src/mcp/bin.ts +51 -0
  151. package/packages/sdk/src/mcp/server.ts +498 -0
  152. package/{plugins/bizar/src/memory-vault.ts → packages/sdk/src/memory/index.ts} +18 -21
  153. package/packages/sdk/tests/sdk.test.mjs +148 -0
  154. package/packages/sdk/vitest.config.ts +1 -1
  155. package/scripts/bh-full-e2e.mjs +166 -363
  156. package/scripts/check-deps.mjs +28 -46
  157. package/scripts/mirror-claude-md.sh +78 -0
  158. package/scripts/test-in-container.sh +157 -0
  159. package/templates/clean-state-checklist.md +3 -3
  160. package/templates/sprint-contract.md +2 -2
  161. package/bizar-dash/.bizar/activity.log +0 -3
  162. package/bizar-dash/.omx/logs/omx-2026-07-07.jsonl +0 -1
  163. package/bizar-dash/.omx/state/session.json +0 -10
  164. package/bizar-dash/bizar-design/EXPLANATION.md +0 -307
  165. package/bizar-dash/bizar-design/INSTRUCTIONS.md +0 -149
  166. package/bizar-dash/bizar-design/canvas.html +0 -281
  167. package/bizar-dash/bizar-design/canvas.html.artifact.json +0 -19
  168. package/bizar-dash/bizar-design/components.css +0 -1665
  169. package/bizar-dash/bizar-design/components.html +0 -557
  170. package/bizar-dash/bizar-design/components.html.artifact.json +0 -19
  171. package/bizar-dash/bizar-design/desktop/agents.html +0 -74
  172. package/bizar-dash/bizar-design/desktop/agents.html.artifact.json +0 -19
  173. package/bizar-dash/bizar-design/desktop/memory.html +0 -75
  174. package/bizar-dash/bizar-design/desktop/memory.html.artifact.json +0 -19
  175. package/bizar-dash/bizar-design/desktop/metrics.html +0 -63
  176. package/bizar-dash/bizar-design/desktop/metrics.html.artifact.json +0 -19
  177. package/bizar-dash/bizar-design/desktop/overview.html +0 -95
  178. package/bizar-dash/bizar-design/desktop/overview.html.artifact.json +0 -19
  179. package/bizar-dash/bizar-design/desktop/settings.html +0 -70
  180. package/bizar-dash/bizar-design/desktop/settings.html.artifact.json +0 -19
  181. package/bizar-dash/bizar-design/icons.svg +0 -44
  182. package/bizar-dash/bizar-design/index.html +0 -192
  183. package/bizar-dash/bizar-design/index.html.artifact.json +0 -19
  184. package/bizar-dash/bizar-design/mobile/agents.html +0 -29
  185. package/bizar-dash/bizar-design/mobile/agents.html.artifact.json +0 -19
  186. package/bizar-dash/bizar-design/mobile/memory.html +0 -28
  187. package/bizar-dash/bizar-design/mobile/memory.html.artifact.json +0 -19
  188. package/bizar-dash/bizar-design/mobile/metrics.html +0 -29
  189. package/bizar-dash/bizar-design/mobile/metrics.html.artifact.json +0 -19
  190. package/bizar-dash/bizar-design/mobile/overview.html +0 -33
  191. package/bizar-dash/bizar-design/mobile/overview.html.artifact.json +0 -19
  192. package/bizar-dash/bizar-design/mobile/settings.html +0 -28
  193. package/bizar-dash/bizar-design/mobile/settings.html.artifact.json +0 -19
  194. package/bizar-dash/bizar-design/prototype.js +0 -114
  195. package/bizar-dash/bizar-design/tokens.css +0 -106
  196. package/bizar-dash/dist/assets/vendor-CeHGtduv.js.map +0 -1
  197. package/bizar-dash/node_modules/.package-lock.json +0 -6
  198. package/bizar-dash/package-lock.json +0 -6
  199. package/bizar-dash/src/server/cline-sdk.mjs +0 -132
  200. package/bizar-dash/src/server/routes/cline-session-detail.mjs +0 -559
  201. package/bizar-dash/src/server/routes/cline-sessions.mjs +0 -291
  202. package/cli/commands/cline-cmd.mjs +0 -289
  203. package/cli/commands/validate.test.mjs +0 -344
  204. package/cli/doctor.test.mjs +0 -350
  205. package/config/cline.json.template +0 -342
  206. package/packages/sdk/src/client.ts +0 -188
  207. package/packages/sdk/src/cline-events.ts +0 -134
  208. package/packages/sdk/src/cline-types.ts +0 -66
  209. package/packages/sdk/src/cline.ts +0 -339
  210. package/packages/sdk/src/errors.ts +0 -129
  211. package/packages/sdk/src/events.ts +0 -153
  212. package/packages/sdk/src/types.ts +0 -176
  213. package/packages/sdk/tests/client.test.ts +0 -217
  214. package/packages/sdk/tests/errors.test.ts +0 -108
  215. package/packages/sdk/tests/events.test.ts +0 -139
  216. package/packages/sdk/tests/fixtures/fetch-mock.ts +0 -152
  217. package/packages/sdk/tests/fixtures/sse-mock.ts +0 -30
  218. package/plugins/bizar/ARCHITECTURE.md +0 -142
  219. package/plugins/bizar/CONSTRAINTS.md +0 -67
  220. package/plugins/bizar/LICENSE +0 -21
  221. package/plugins/bizar/README.md +0 -448
  222. package/plugins/bizar/index.ts +0 -872
  223. package/plugins/bizar/package.json +0 -39
  224. package/plugins/bizar/scripts/check-forbidden-imports.sh +0 -33
  225. package/plugins/bizar/src/background-state.ts +0 -641
  226. package/plugins/bizar/src/background.ts +0 -1806
  227. package/plugins/bizar/src/cline-runner.ts +0 -203
  228. package/plugins/bizar/src/clineruntime.ts +0 -227
  229. package/plugins/bizar/src/commands-impl.ts +0 -151
  230. package/plugins/bizar/src/commands.ts +0 -1799
  231. package/plugins/bizar/src/compaction.d.mts +0 -48
  232. package/plugins/bizar/src/compaction.mjs +0 -192
  233. package/plugins/bizar/src/dashboard-client.ts +0 -233
  234. package/plugins/bizar/src/event-stream.ts +0 -606
  235. package/plugins/bizar/src/fingerprint.ts +0 -120
  236. package/plugins/bizar/src/handoff.ts +0 -79
  237. package/plugins/bizar/src/hooks/memory-flush-on-compact.ts +0 -123
  238. package/plugins/bizar/src/hooks/memory-inject.ts +0 -247
  239. package/plugins/bizar/src/hooks/memory-write-on-end.ts +0 -188
  240. package/plugins/bizar/src/hooks/skill-curator.ts +0 -180
  241. package/plugins/bizar/src/http-client.ts +0 -467
  242. package/plugins/bizar/src/key-rotation.ts +0 -218
  243. package/plugins/bizar/src/logger.ts +0 -144
  244. package/plugins/bizar/src/loop-engineering.ts +0 -241
  245. package/plugins/bizar/src/loop.ts +0 -176
  246. package/plugins/bizar/src/mistake-recovery.ts +0 -98
  247. package/plugins/bizar/src/odin.ts +0 -227
  248. package/plugins/bizar/src/options.ts +0 -470
  249. package/plugins/bizar/src/plan-fs.ts +0 -323
  250. package/plugins/bizar/src/reasoning-clean.ts +0 -454
  251. package/plugins/bizar/src/report.ts +0 -178
  252. package/plugins/bizar/src/research-prompt.ts +0 -35
  253. package/plugins/bizar/src/serve-info.ts +0 -228
  254. package/plugins/bizar/src/serve.ts +0 -496
  255. package/plugins/bizar/src/settings.ts +0 -349
  256. package/plugins/bizar/src/state.ts +0 -298
  257. package/plugins/bizar/src/tool-discipline.ts +0 -105
  258. package/plugins/bizar/src/tools/agent-browser.ts +0 -315
  259. package/plugins/bizar/src/tools/bg-collect.ts +0 -131
  260. package/plugins/bizar/src/tools/bg-get-comments.ts +0 -266
  261. package/plugins/bizar/src/tools/bg-kill.ts +0 -116
  262. package/plugins/bizar/src/tools/bg-pause.ts +0 -99
  263. package/plugins/bizar/src/tools/bg-report-progress.ts +0 -115
  264. package/plugins/bizar/src/tools/bg-resume.ts +0 -94
  265. package/plugins/bizar/src/tools/bg-send-message.ts +0 -223
  266. package/plugins/bizar/src/tools/bg-spawn.ts +0 -502
  267. package/plugins/bizar/src/tools/bg-status.ts +0 -130
  268. package/plugins/bizar/src/tools/graph-query.ts +0 -278
  269. package/plugins/bizar/src/tools/loop-engineering.ts +0 -193
  270. package/plugins/bizar/src/tools/memory-list.ts +0 -43
  271. package/plugins/bizar/src/tools/memory-read.ts +0 -69
  272. package/plugins/bizar/src/tools/memory-search.ts +0 -47
  273. package/plugins/bizar/src/tools/memory-write.ts +0 -54
  274. package/plugins/bizar/src/tools/open-kb.ts +0 -198
  275. package/plugins/bizar/src/tools/plan-action.ts +0 -785
  276. package/plugins/bizar/src/tools/read-glyph-feedback.ts +0 -191
  277. package/plugins/bizar/src/tools/team-spawn.ts +0 -73
  278. package/plugins/bizar/src/tools/team-status.ts +0 -76
  279. package/plugins/bizar/src/tools/wait-for-feedback.ts +0 -415
  280. package/plugins/bizar/src/trajectory.ts +0 -104
  281. package/plugins/bizar/tests/README.md +0 -99
  282. package/plugins/bizar/tests/attach-handler-bug.test.ts +0 -169
  283. package/plugins/bizar/tests/background-state.test.ts +0 -277
  284. package/plugins/bizar/tests/background.test.ts +0 -402
  285. package/plugins/bizar/tests/block.test.ts +0 -195
  286. package/plugins/bizar/tests/canonical-key-order.test.ts +0 -75
  287. package/plugins/bizar/tests/clineruntime-config.test.ts +0 -283
  288. package/plugins/bizar/tests/commands-impl.test.ts +0 -316
  289. package/plugins/bizar/tests/commands.test.ts +0 -584
  290. package/plugins/bizar/tests/compaction.test.ts +0 -264
  291. package/plugins/bizar/tests/config.test.ts +0 -128
  292. package/plugins/bizar/tests/dashboard-client.test.ts +0 -159
  293. package/plugins/bizar/tests/dispose.test.ts +0 -336
  294. package/plugins/bizar/tests/event-stream.test.ts +0 -409
  295. package/plugins/bizar/tests/event.test.ts +0 -262
  296. package/plugins/bizar/tests/fingerprint.test.ts +0 -162
  297. package/plugins/bizar/tests/http-client.test.ts +0 -404
  298. package/plugins/bizar/tests/init-helpers.test.ts +0 -203
  299. package/plugins/bizar/tests/integration/slash-command.test.ts +0 -349
  300. package/plugins/bizar/tests/integration/tool-routing.test.ts +0 -98
  301. package/plugins/bizar/tests/key-rotation.test.ts +0 -396
  302. package/plugins/bizar/tests/loop-engineering.test.ts +0 -168
  303. package/plugins/bizar/tests/loop.test.ts +0 -397
  304. package/plugins/bizar/tests/memory-write-on-end.test.ts +0 -92
  305. package/plugins/bizar/tests/mistake-recovery.test.ts +0 -116
  306. package/plugins/bizar/tests/odin.test.ts +0 -125
  307. package/plugins/bizar/tests/options.test.ts +0 -329
  308. package/plugins/bizar/tests/reasoning-clean.test.ts +0 -422
  309. package/plugins/bizar/tests/safety.test.ts +0 -256
  310. package/plugins/bizar/tests/serve.test.ts +0 -339
  311. package/plugins/bizar/tests/settings.test.ts +0 -351
  312. package/plugins/bizar/tests/stall-think.test.ts +0 -750
  313. package/plugins/bizar/tests/state.test.ts +0 -276
  314. package/plugins/bizar/tests/tool-discipline.test.ts +0 -77
  315. package/plugins/bizar/tests/tools/agent-browser.test.ts +0 -98
  316. package/plugins/bizar/tests/tools/bg-collect.test.ts +0 -337
  317. package/plugins/bizar/tests/tools/bg-get-comments.test.ts +0 -485
  318. package/plugins/bizar/tests/tools/bg-kill.test.ts +0 -235
  319. package/plugins/bizar/tests/tools/bg-pause.test.ts +0 -61
  320. package/plugins/bizar/tests/tools/bg-report-progress.test.ts +0 -79
  321. package/plugins/bizar/tests/tools/bg-resume.test.ts +0 -40
  322. package/plugins/bizar/tests/tools/bg-send-message.test.ts +0 -116
  323. package/plugins/bizar/tests/tools/bg-spawn-delegation.test.ts +0 -147
  324. package/plugins/bizar/tests/tools/bg-spawn-http.test.ts +0 -233
  325. package/plugins/bizar/tests/tools/bg-spawn.test.ts +0 -311
  326. package/plugins/bizar/tests/tools/bg-status.test.ts +0 -217
  327. package/plugins/bizar/tests/tools/cline-runner.test.ts +0 -115
  328. package/plugins/bizar/tests/tools/plan-action.test.ts +0 -599
  329. package/plugins/bizar/tests/tools/read-glyph-feedback.test.ts +0 -253
  330. package/plugins/bizar/tests/tools/wait-for-feedback.test.ts +0 -390
  331. package/plugins/bizar/tests/update-deadlock.test.ts +0 -151
  332. package/plugins/bizar/tsconfig.json +0 -29
@@ -1,1665 +0,0 @@
1
- *,
2
- *::before,
3
- *::after {
4
- box-sizing: border-box;
5
- }
6
-
7
- html,
8
- body {
9
- margin: 0;
10
- min-height: 100%;
11
- }
12
-
13
- body {
14
- background: var(--bg);
15
- color: var(--text);
16
- font: 400 var(--fs-body) / 1.45 var(--font-sans);
17
- -webkit-font-smoothing: antialiased;
18
- text-rendering: optimizeLegibility;
19
- }
20
-
21
- a {
22
- color: inherit;
23
- text-decoration: none;
24
- }
25
-
26
- button,
27
- input,
28
- textarea,
29
- select {
30
- font: inherit;
31
- color: inherit;
32
- }
33
-
34
- code,
35
- pre,
36
- .mono {
37
- font-family: var(--font-mono);
38
- font-variant-numeric: tabular-nums;
39
- }
40
-
41
- .design-shell {
42
- min-height: 100vh;
43
- --shell-topbar-height: 3.25rem;
44
- --sidebar-width: 3.25rem;
45
- --sidebar-label-opacity: 0;
46
- --sidebar-label-width: 0;
47
- }
48
-
49
- .design-shell.has-sidebar {
50
- display: grid;
51
- grid-template-rows: auto 1fr;
52
- }
53
-
54
- .design-shell.is-sidebar-expanded {
55
- --sidebar-width: 16rem;
56
- --sidebar-label-opacity: 1;
57
- --sidebar-label-width: 1fr;
58
- }
59
-
60
- .shell-topbar {
61
- display: grid;
62
- grid-template-columns: auto minmax(0, 1fr) auto;
63
- align-items: center;
64
- gap: var(--space-4);
65
- min-height: var(--shell-topbar-height);
66
- padding: var(--space-2) var(--space-4);
67
- border-bottom: 1px solid var(--border);
68
- background: var(--bg);
69
- position: sticky;
70
- top: 0;
71
- z-index: 30;
72
- }
73
-
74
- .shell-topbar-start,
75
- .shell-topbar-center,
76
- .shell-topbar-end {
77
- display: flex;
78
- align-items: center;
79
- gap: var(--space-3);
80
- min-width: 0;
81
- }
82
-
83
- .shell-topbar-center {
84
- justify-content: flex-start;
85
- }
86
-
87
- .shell-topbar-end {
88
- justify-content: flex-end;
89
- }
90
-
91
- .shell-topbar-center > *,
92
- .shell-topbar-end > * {
93
- min-width: 0;
94
- }
95
-
96
- .topbar-nav {
97
- display: inline-flex;
98
- align-items: center;
99
- gap: var(--space-2);
100
- min-width: 0;
101
- flex-wrap: nowrap;
102
- overflow-x: auto;
103
- scrollbar-width: none;
104
- }
105
-
106
- .topbar-nav::-webkit-scrollbar {
107
- display: none;
108
- }
109
-
110
- .brand-mark {
111
- display: flex;
112
- align-items: center;
113
- gap: var(--space-2);
114
- min-width: 10rem;
115
- }
116
-
117
- .brand-glyph {
118
- display: grid;
119
- place-items: center;
120
- width: 1.5rem;
121
- height: 1.5rem;
122
- border: 1px solid var(--border);
123
- border-radius: var(--radius);
124
- background: var(--bg-elev);
125
- color: var(--accent);
126
- font-size: 0.82rem;
127
- line-height: 1;
128
- }
129
-
130
- .brand-copy strong {
131
- display: block;
132
- color: var(--text-strong);
133
- letter-spacing: -0.02em;
134
- }
135
-
136
- .brand-copy span {
137
- display: block;
138
- color: var(--text-dim);
139
- font: 500 var(--fs-micro) / 1.4 var(--font-mono);
140
- text-transform: uppercase;
141
- letter-spacing: 0.08em;
142
- }
143
-
144
- .topbar-search,
145
- .project-pill,
146
- .runtime-pill {
147
- display: inline-flex;
148
- align-items: center;
149
- gap: var(--space-2);
150
- min-height: 1.75rem;
151
- padding: 0 var(--space-3);
152
- border: 1px solid var(--border);
153
- border-radius: var(--radius-sm);
154
- background: var(--bg-elev);
155
- color: var(--text-dim);
156
- }
157
-
158
- .topbar-search {
159
- flex: 1;
160
- justify-content: space-between;
161
- max-width: 20rem;
162
- }
163
-
164
- .kbd {
165
- padding: 0.1rem 0.35rem;
166
- border-radius: var(--radius-sm);
167
- border: 1px solid var(--border);
168
- background: var(--bg-elev);
169
- color: var(--text-dim);
170
- font: 500 var(--fs-micro) / 1.4 var(--font-mono);
171
- }
172
-
173
- .topbar-cluster {
174
- display: flex;
175
- align-items: center;
176
- gap: var(--space-2);
177
- margin-left: auto;
178
- }
179
-
180
- .shell-topbar-end .topbar-cluster {
181
- margin-left: 0;
182
- }
183
-
184
- .shell-body {
185
- display: grid;
186
- grid-template-columns: var(--sidebar-width) 1fr;
187
- min-height: calc(100vh - var(--shell-topbar-height));
188
- }
189
-
190
- .sidebar {
191
- display: flex;
192
- flex-direction: column;
193
- gap: var(--space-3);
194
- padding: var(--space-2);
195
- border-right: 1px solid var(--border);
196
- background: var(--bg);
197
- overflow: hidden;
198
- }
199
-
200
- .shell-sidebar,
201
- .sidebar-header,
202
- .sidebar-footer {
203
- display: grid;
204
- gap: var(--space-2);
205
- }
206
-
207
- .shell-sidebar {
208
- height: calc(100vh - var(--shell-topbar-height));
209
- position: sticky;
210
- top: var(--shell-topbar-height);
211
- }
212
-
213
- .shell-sidebar-body {
214
- display: grid;
215
- gap: var(--space-3);
216
- min-height: 0;
217
- align-content: start;
218
- }
219
-
220
- .sidebar-title {
221
- display: flex;
222
- align-items: center;
223
- gap: var(--space-2);
224
- min-height: 1.75rem;
225
- color: var(--text-strong);
226
- font: 500 var(--fs-meta) / 1.2 var(--font-mono);
227
- text-transform: uppercase;
228
- letter-spacing: 0.08em;
229
- }
230
-
231
- .sidebar-title-text,
232
- .nav-link-label,
233
- .nav-link-meta,
234
- .sidebar-group-label {
235
- opacity: var(--sidebar-label-opacity);
236
- max-width: calc(var(--sidebar-label-opacity) * 20rem);
237
- overflow: hidden;
238
- white-space: nowrap;
239
- transition:
240
- opacity var(--motion-base) var(--ease),
241
- max-width var(--motion-base) var(--ease);
242
- }
243
-
244
- .sidebar-group {
245
- display: grid;
246
- gap: var(--space-2);
247
- padding-top: var(--space-2);
248
- border-top: 1px solid var(--border);
249
- }
250
-
251
- .sidebar-group-label {
252
- padding: 0 var(--space-2);
253
- color: var(--text-dim);
254
- font: 500 var(--fs-micro) / 1.2 var(--font-mono);
255
- text-transform: uppercase;
256
- letter-spacing: 0.08em;
257
- }
258
-
259
- .sidebar-nav {
260
- display: grid;
261
- gap: var(--space-1);
262
- align-content: start;
263
- }
264
-
265
- .sidebar-toggle {
266
- justify-content: center;
267
- }
268
-
269
- .nav-button,
270
- .nav-link {
271
- display: inline-flex;
272
- align-items: center;
273
- justify-content: flex-start;
274
- gap: var(--space-2);
275
- width: 100%;
276
- min-height: 2.1rem;
277
- padding: 0 var(--space-2);
278
- border: 1px solid transparent;
279
- border-radius: var(--radius-sm);
280
- background: transparent;
281
- color: var(--text-dim);
282
- text-decoration: none;
283
- transition:
284
- color var(--motion-fast) var(--ease),
285
- border-color var(--motion-fast) var(--ease),
286
- background var(--motion-fast) var(--ease),
287
- transform var(--motion-fast) var(--ease),
288
- box-shadow var(--motion-fast) var(--ease);
289
- }
290
-
291
- .nav-button.is-active,
292
- .nav-link.is-active {
293
- background: color-mix(in oklch, var(--accent) 10%, var(--bg-elev));
294
- color: var(--text-strong);
295
- border-color: color-mix(in oklch, var(--accent) 18%, var(--border));
296
- }
297
-
298
- .nav-button:hover,
299
- .nav-link:hover {
300
- background: var(--bg-elev);
301
- color: var(--text-strong);
302
- border-color: color-mix(in oklch, var(--border-strong) 65%, transparent);
303
- }
304
-
305
- .nav-link.is-active:hover {
306
- background: color-mix(in oklch, var(--accent) 12%, var(--bg-elev));
307
- color: var(--text-strong);
308
- }
309
-
310
- .nav-icon {
311
- width: 0.9rem;
312
- height: 0.9rem;
313
- flex: 0 0 0.9rem;
314
- }
315
-
316
- .nav-label {
317
- white-space: nowrap;
318
- }
319
-
320
- .nav-link-copy {
321
- display: grid;
322
- grid-template-columns: var(--sidebar-label-width);
323
- min-width: 0;
324
- flex: 1;
325
- }
326
-
327
- .design-shell:not(.is-sidebar-expanded) .sidebar {
328
- align-items: center;
329
- }
330
-
331
- .design-shell:not(.is-sidebar-expanded) .sidebar-header,
332
- .design-shell:not(.is-sidebar-expanded) .sidebar-footer,
333
- .design-shell:not(.is-sidebar-expanded) .shell-sidebar-body,
334
- .design-shell:not(.is-sidebar-expanded) .sidebar-group,
335
- .design-shell:not(.is-sidebar-expanded) .sidebar-nav {
336
- width: 100%;
337
- justify-items: center;
338
- }
339
-
340
- .design-shell:not(.is-sidebar-expanded) .sidebar-group {
341
- padding-top: var(--space-3);
342
- }
343
-
344
- .design-shell:not(.is-sidebar-expanded) .sidebar-title {
345
- display: none;
346
- }
347
-
348
- .design-shell:not(.is-sidebar-expanded) .nav-button,
349
- .design-shell:not(.is-sidebar-expanded) .nav-link {
350
- justify-content: center;
351
- width: 2.25rem;
352
- min-height: 2.25rem;
353
- padding: 0;
354
- border-radius: var(--radius);
355
- }
356
-
357
- .design-shell:not(.is-sidebar-expanded) .sidebar-toggle {
358
- margin-bottom: var(--space-1);
359
- }
360
-
361
- .design-shell.is-sidebar-expanded .sidebar-toggle {
362
- justify-content: flex-start;
363
- }
364
-
365
- .design-shell:not(.is-sidebar-expanded) .sidebar-group-label,
366
- .design-shell:not(.is-sidebar-expanded) .sidebar-title-text,
367
- .design-shell:not(.is-sidebar-expanded) .nav-link-copy {
368
- display: none;
369
- }
370
-
371
- .design-shell.is-sidebar-expanded .shell-sidebar {
372
- padding-right: var(--space-2);
373
- }
374
-
375
- .nav-link-label {
376
- color: inherit;
377
- font-size: var(--fs-body);
378
- }
379
-
380
- .nav-link-meta {
381
- color: var(--text-dim);
382
- font-size: var(--fs-micro);
383
- text-transform: uppercase;
384
- letter-spacing: 0.08em;
385
- }
386
-
387
- .workspace {
388
- padding: var(--space-4);
389
- background: var(--bg);
390
- }
391
-
392
- .workspace-header {
393
- display: flex;
394
- align-items: end;
395
- justify-content: space-between;
396
- gap: var(--space-4);
397
- margin-bottom: var(--space-4);
398
- }
399
-
400
- .eyebrow {
401
- margin: 0 0 var(--space-2);
402
- color: var(--accent);
403
- font: 500 var(--fs-micro) / 1.4 var(--font-mono);
404
- text-transform: uppercase;
405
- letter-spacing: 0.08em;
406
- }
407
-
408
- .page-title {
409
- margin: 0;
410
- color: var(--text-strong);
411
- font-size: var(--fs-display);
412
- line-height: 1.1;
413
- letter-spacing: -0.025em;
414
- }
415
-
416
- .page-subtitle {
417
- margin: var(--space-2) 0 0;
418
- color: var(--text-dim);
419
- max-width: 48rem;
420
- }
421
-
422
- .toolbar {
423
- display: flex;
424
- align-items: center;
425
- gap: var(--space-2);
426
- flex-wrap: wrap;
427
- }
428
-
429
- .button {
430
- display: inline-flex;
431
- align-items: center;
432
- justify-content: center;
433
- gap: var(--space-2);
434
- min-height: 1.75rem;
435
- padding: 0 var(--space-3);
436
- border: 1px solid var(--border);
437
- border-radius: var(--radius-sm);
438
- background: var(--bg-elev);
439
- color: var(--text-strong);
440
- transition:
441
- border-color var(--motion-fast) var(--ease),
442
- background var(--motion-fast) var(--ease),
443
- transform var(--motion-fast) var(--ease);
444
- }
445
-
446
- .button:hover {
447
- border-color: var(--border-strong);
448
- background: var(--bg-elev-2);
449
- }
450
-
451
- .button.is-primary {
452
- background: color-mix(in oklch, var(--accent) 12%, var(--bg-elev));
453
- border-color: color-mix(in oklch, var(--accent) 22%, var(--border));
454
- color: var(--text-strong);
455
- }
456
-
457
- .button.is-ghost {
458
- background: transparent;
459
- }
460
-
461
- .button:active {
462
- transform: translateY(1px);
463
- }
464
-
465
- .button-set {
466
- display: inline-flex;
467
- gap: var(--space-2);
468
- }
469
-
470
- .button-set .button.is-current {
471
- background: var(--accent-bg);
472
- border-color: var(--accent-border);
473
- color: var(--accent);
474
- }
475
-
476
- .button.is-danger {
477
- color: var(--error);
478
- }
479
-
480
- .button.is-danger:hover {
481
- border-color: color-mix(in oklch, var(--error) 35%, var(--border));
482
- background: var(--error-soft);
483
- }
484
-
485
- .button.is-success {
486
- color: var(--success);
487
- }
488
-
489
- .button.is-success:hover {
490
- border-color: color-mix(in oklch, var(--success) 35%, var(--border));
491
- background: var(--success-soft);
492
- }
493
-
494
- .dashboard-grid {
495
- display: grid;
496
- gap: var(--space-4);
497
- }
498
-
499
- .hero-metrics {
500
- display: grid;
501
- grid-template-columns: repeat(4, minmax(0, 1fr));
502
- gap: var(--space-3);
503
- }
504
-
505
- .two-column {
506
- display: grid;
507
- grid-template-columns: minmax(0, 1.2fr) minmax(20rem, 0.8fr);
508
- gap: var(--space-4);
509
- }
510
-
511
- .three-column {
512
- display: grid;
513
- grid-template-columns: repeat(3, minmax(0, 1fr));
514
- gap: var(--space-4);
515
- }
516
-
517
- .card {
518
- border: 1px solid var(--border);
519
- border-radius: var(--radius-lg);
520
- background: var(--bg-elev);
521
- overflow: hidden;
522
- }
523
-
524
- .card.is-gradient {
525
- background: var(--panel-grad);
526
- }
527
-
528
- .card-header,
529
- .card-body,
530
- .card-footer {
531
- padding: 0.8125rem;
532
- }
533
-
534
- .card-header {
535
- display: flex;
536
- align-items: start;
537
- justify-content: space-between;
538
- gap: var(--space-3);
539
- border-bottom: 1px solid var(--border);
540
- }
541
-
542
- .card-title {
543
- margin: 0;
544
- color: var(--text-strong);
545
- font-size: var(--fs-title);
546
- line-height: 1.2;
547
- letter-spacing: -0.02em;
548
- }
549
-
550
- .card-meta {
551
- margin: var(--space-1) 0 0;
552
- color: var(--text-dim);
553
- font: 400 var(--fs-meta) / 1.45 var(--font-sans);
554
- }
555
-
556
- .metric {
557
- display: grid;
558
- gap: var(--space-2);
559
- }
560
-
561
- .metric-value {
562
- color: var(--text-strong);
563
- font: 600 clamp(1.25rem, 3.2vw, 2rem) / 0.95 var(--font-sans);
564
- letter-spacing: -0.04em;
565
- }
566
-
567
- .metric-delta {
568
- display: inline-flex;
569
- align-items: center;
570
- gap: var(--space-2);
571
- color: var(--text-dim);
572
- font: 500 var(--fs-meta) / 1.4 var(--font-mono);
573
- }
574
-
575
- .metric-delta.up {
576
- color: var(--success);
577
- }
578
-
579
- .metric-delta.down {
580
- color: var(--warning);
581
- }
582
-
583
- .pill {
584
- display: inline-flex;
585
- align-items: center;
586
- gap: 0.35rem;
587
- min-height: 1.375rem;
588
- padding: 0 0.55rem;
589
- border-radius: var(--radius-pill);
590
- border: 1px solid transparent;
591
- background: var(--bg-elev-2);
592
- color: var(--text-dim);
593
- font: 500 var(--fs-micro) / 1 var(--font-mono);
594
- text-transform: uppercase;
595
- letter-spacing: 0.08em;
596
- }
597
-
598
- .pill.accent {
599
- background: var(--accent-bg);
600
- border-color: var(--accent-border);
601
- color: var(--accent);
602
- }
603
-
604
- .pill.success {
605
- background: var(--success-soft);
606
- color: var(--success);
607
- }
608
-
609
- .pill.warning {
610
- background: var(--warning-soft);
611
- color: var(--warning);
612
- }
613
-
614
- .pill.error {
615
- background: var(--error-soft);
616
- color: var(--error);
617
- }
618
-
619
- .pill.info {
620
- background: var(--info-soft);
621
- color: var(--info);
622
- }
623
-
624
- .dot {
625
- width: 0.45rem;
626
- height: 0.45rem;
627
- border-radius: 50%;
628
- background: currentColor;
629
- }
630
-
631
- .cluster {
632
- display: flex;
633
- align-items: center;
634
- gap: var(--space-2);
635
- flex-wrap: wrap;
636
- }
637
-
638
- .split-label {
639
- display: flex;
640
- justify-content: space-between;
641
- gap: var(--space-4);
642
- color: var(--text-dim);
643
- font: 500 var(--fs-meta) / 1.4 var(--font-mono);
644
- }
645
-
646
- .sparkline {
647
- position: relative;
648
- min-height: 10rem;
649
- padding: var(--space-3);
650
- border: 1px solid color-mix(in oklch, var(--border) 88%, transparent);
651
- border-radius: var(--radius-lg);
652
- background:
653
- repeating-linear-gradient(0deg, color-mix(in oklch, var(--border) 52%, transparent) 0 1px, transparent 1px 2.2rem),
654
- repeating-linear-gradient(90deg, color-mix(in oklch, var(--border) 52%, transparent) 0 1px, transparent 1px 3.4rem),
655
- var(--bg-elev-2);
656
- overflow: hidden;
657
- }
658
-
659
- .sparkline svg {
660
- width: 100%;
661
- height: 100%;
662
- }
663
-
664
- .chart-svg {
665
- display: block;
666
- width: 100%;
667
- height: 100%;
668
- }
669
-
670
- .chart-area {
671
- fill: color-mix(in oklch, var(--accent) 3%, transparent);
672
- }
673
-
674
- .chart-line {
675
- fill: none;
676
- stroke: color-mix(in oklch, var(--accent) 78%, var(--text-dim));
677
- stroke-width: 0.62;
678
- stroke-opacity: 0.92;
679
- stroke-linecap: round;
680
- stroke-linejoin: round;
681
- }
682
-
683
- .chart-line.secondary {
684
- stroke: color-mix(in oklch, var(--accent-2) 45%, var(--text-dim));
685
- stroke-width: 0.52;
686
- stroke-opacity: 0.6;
687
- stroke-dasharray: 1.25 3.2;
688
- }
689
-
690
- .chart-point {
691
- fill: var(--bg-elev-2);
692
- stroke: color-mix(in oklch, var(--accent) 72%, var(--text-dim));
693
- stroke-width: 0.72;
694
- }
695
-
696
- .chart-axis {
697
- display: flex;
698
- justify-content: space-between;
699
- gap: var(--space-3);
700
- margin-top: var(--space-2);
701
- color: var(--text-dim);
702
- font: 500 var(--fs-micro) / 1.4 var(--font-mono);
703
- text-transform: uppercase;
704
- letter-spacing: 0.08em;
705
- }
706
-
707
- .chart-legend {
708
- display: flex;
709
- align-items: center;
710
- gap: var(--space-3);
711
- flex-wrap: wrap;
712
- margin-top: var(--space-3);
713
- }
714
-
715
- .chart-legend-item {
716
- display: inline-flex;
717
- align-items: center;
718
- gap: 0.45rem;
719
- color: var(--text-dim);
720
- font: 500 var(--fs-meta) / 1.4 var(--font-mono);
721
- }
722
-
723
- .legend-swatch {
724
- width: 1rem;
725
- height: 0.2rem;
726
- border-radius: var(--radius-pill);
727
- background: currentColor;
728
- }
729
-
730
- .legend-swatch.secondary {
731
- background:
732
- repeating-linear-gradient(90deg, color-mix(in oklch, var(--accent-2) 45%, var(--text-dim)) 0 0.3rem, transparent 0.3rem 0.55rem);
733
- }
734
-
735
- .chart-summary {
736
- display: grid;
737
- grid-template-columns: repeat(3, minmax(0, 1fr));
738
- gap: var(--space-3);
739
- margin-top: var(--space-3);
740
- }
741
-
742
- .chart-summary-item {
743
- display: grid;
744
- gap: var(--space-1);
745
- }
746
-
747
- .chart-summary-value {
748
- color: var(--text-strong);
749
- font: 600 0.95rem / 1 var(--font-sans);
750
- letter-spacing: -0.03em;
751
- }
752
-
753
- .row-list {
754
- display: grid;
755
- }
756
-
757
- .row-item {
758
- display: grid;
759
- grid-template-columns: auto 1fr auto;
760
- gap: var(--space-3);
761
- align-items: start;
762
- padding: var(--space-3) var(--space-4);
763
- border-top: 1px solid var(--border);
764
- }
765
-
766
- .row-item:first-child {
767
- border-top: 0;
768
- }
769
-
770
- .row-item h4,
771
- .mini-card h4,
772
- .stat-line h4 {
773
- margin: 0;
774
- color: var(--text-strong);
775
- font-size: 0.9rem;
776
- }
777
-
778
- .row-item p,
779
- .mini-card p,
780
- .stat-line p {
781
- margin: 0.2rem 0 0;
782
- color: var(--text-dim);
783
- font-size: var(--fs-meta);
784
- }
785
-
786
- .stack {
787
- display: grid;
788
- gap: var(--space-3);
789
- }
790
-
791
- .mini-card {
792
- padding: var(--space-3);
793
- border: 1px solid var(--border);
794
- border-radius: var(--radius);
795
- background: var(--bg-elev-2);
796
- }
797
-
798
- .surface {
799
- padding: var(--space-4);
800
- border: 1px solid var(--border);
801
- border-radius: var(--radius-lg);
802
- background: var(--bg-elev);
803
- }
804
-
805
- .surface.soft {
806
- background: var(--bg-elev-2);
807
- }
808
-
809
- .bar-track {
810
- width: 100%;
811
- height: 0.35rem;
812
- border-radius: var(--radius-pill);
813
- background: var(--bg-elev-3);
814
- overflow: hidden;
815
- }
816
-
817
- .bar-fill {
818
- height: 100%;
819
- border-radius: inherit;
820
- background: var(--accent);
821
- }
822
-
823
- .bar-fill.success {
824
- background: var(--success);
825
- }
826
-
827
- .bar-fill.warning {
828
- background: var(--warning);
829
- }
830
-
831
- .bar-fill.info {
832
- background: var(--info);
833
- }
834
-
835
- .timeline {
836
- display: grid;
837
- gap: var(--space-2);
838
- }
839
-
840
- .timeline-entry {
841
- display: grid;
842
- grid-template-columns: 4rem 1fr auto;
843
- gap: var(--space-3);
844
- align-items: start;
845
- padding: var(--space-2) 0;
846
- border-bottom: 1px solid var(--border);
847
- }
848
-
849
- .section-tabs,
850
- .screen-links {
851
- display: flex;
852
- align-items: center;
853
- gap: var(--space-2);
854
- flex-wrap: wrap;
855
- }
856
-
857
- .section-tabs {
858
- margin-bottom: var(--space-4);
859
- }
860
-
861
- .section-tab {
862
- display: inline-flex;
863
- align-items: center;
864
- gap: var(--space-2);
865
- min-height: 1.9rem;
866
- padding: 0 var(--space-3);
867
- border: 1px solid var(--border);
868
- border-radius: var(--radius-sm);
869
- background: var(--bg-elev);
870
- color: var(--text-dim);
871
- }
872
-
873
- .section-tab:hover {
874
- border-color: var(--border-strong);
875
- color: var(--text-strong);
876
- }
877
-
878
- .section-tab.is-active {
879
- border-color: color-mix(in oklch, var(--accent) 22%, var(--border));
880
- background: color-mix(in oklch, var(--accent) 10%, var(--bg-elev));
881
- color: var(--text-strong);
882
- }
883
-
884
- .ops-hero,
885
- .canvas-hero {
886
- display: grid;
887
- gap: var(--space-4);
888
- grid-template-columns: minmax(0, 1.55fr) minmax(20rem, 0.9fr);
889
- margin-bottom: var(--space-4);
890
- }
891
-
892
- .hero-panel {
893
- display: grid;
894
- gap: var(--space-4);
895
- }
896
-
897
- .hero-lead {
898
- margin: 0;
899
- max-width: 52rem;
900
- color: var(--text-dim);
901
- font-size: 0.92rem;
902
- line-height: 1.55;
903
- }
904
-
905
- .signal-grid {
906
- display: grid;
907
- grid-template-columns: repeat(4, minmax(0, 1fr));
908
- gap: var(--space-3);
909
- }
910
-
911
- .signal-tile {
912
- display: grid;
913
- gap: var(--space-2);
914
- padding: var(--space-3);
915
- border: 1px solid var(--border);
916
- border-radius: var(--radius-lg);
917
- background: var(--bg-elev-2);
918
- }
919
-
920
- .signal-tile .label,
921
- .micro-label {
922
- color: var(--text-dim);
923
- font: 500 var(--fs-micro) / 1.4 var(--font-mono);
924
- text-transform: uppercase;
925
- letter-spacing: 0.08em;
926
- }
927
-
928
- .signal-tile .value {
929
- color: var(--text-strong);
930
- font: 600 1.35rem / 1 var(--font-sans);
931
- letter-spacing: -0.04em;
932
- }
933
-
934
- .signal-tile .detail {
935
- color: var(--text-dim);
936
- font: 500 var(--fs-meta) / 1.4 var(--font-mono);
937
- }
938
-
939
- .launcher-grid {
940
- display: grid;
941
- grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
942
- gap: var(--space-4);
943
- }
944
-
945
- .launcher-stack,
946
- .status-grid,
947
- .matrix-grid,
948
- .stack-grid {
949
- display: grid;
950
- gap: var(--space-3);
951
- }
952
-
953
- .status-grid,
954
- .matrix-grid {
955
- grid-template-columns: repeat(2, minmax(0, 1fr));
956
- }
957
-
958
- .stack-grid {
959
- grid-template-columns: 1.25fr 0.95fr;
960
- }
961
-
962
- .launcher-card {
963
- display: grid;
964
- gap: var(--space-4);
965
- grid-template-columns: 10rem 1fr;
966
- padding: var(--space-4);
967
- border: 1px solid var(--border);
968
- border-radius: var(--radius-lg);
969
- background: var(--bg-elev);
970
- transition:
971
- transform var(--motion-fast) var(--ease),
972
- border-color var(--motion-fast) var(--ease),
973
- box-shadow var(--motion-fast) var(--ease);
974
- }
975
-
976
- .launcher-card:hover {
977
- border-color: var(--border-strong);
978
- }
979
-
980
- .screen-frame {
981
- min-height: 8rem;
982
- border: 1px solid var(--border);
983
- border-radius: var(--radius-md);
984
- background: var(--bg-elev-2);
985
- position: relative;
986
- overflow: hidden;
987
- }
988
-
989
- .screen-frame::before,
990
- .screen-frame::after {
991
- content: "";
992
- position: absolute;
993
- border-radius: var(--radius-sm);
994
- background: color-mix(in oklch, var(--accent) 12%, transparent);
995
- }
996
-
997
- .screen-frame::before {
998
- inset: 0.8rem auto auto 0.8rem;
999
- width: 2.8rem;
1000
- height: 0.35rem;
1001
- }
1002
-
1003
- .screen-frame::after {
1004
- inset: auto 0.8rem 0.8rem 0.8rem;
1005
- height: 2.2rem;
1006
- border: 1px solid var(--accent-border);
1007
- background: var(--bg);
1008
- }
1009
-
1010
- .density-list,
1011
- .queue-list {
1012
- display: grid;
1013
- gap: 0;
1014
- border: 0;
1015
- border-radius: 0;
1016
- overflow: visible;
1017
- background: transparent;
1018
- }
1019
-
1020
- .density-row,
1021
- .queue-row {
1022
- display: grid;
1023
- grid-template-columns: auto 1fr auto;
1024
- gap: var(--space-3);
1025
- align-items: center;
1026
- padding: var(--space-3) var(--space-4);
1027
- border-top: 1px solid var(--border);
1028
- background: transparent;
1029
- }
1030
-
1031
- .density-row:first-child,
1032
- .queue-row:first-child {
1033
- border-top: 0;
1034
- }
1035
-
1036
- .density-row .title,
1037
- .queue-row .title {
1038
- margin: 0;
1039
- color: var(--text-strong);
1040
- font-size: 0.86rem;
1041
- }
1042
-
1043
- .density-row .meta,
1044
- .queue-row .meta {
1045
- margin: 0.15rem 0 0;
1046
- color: var(--text-dim);
1047
- font: 500 var(--fs-meta) / 1.4 var(--font-mono);
1048
- }
1049
-
1050
- .info-block {
1051
- display: grid;
1052
- gap: var(--space-2);
1053
- padding: var(--space-4);
1054
- border: 1px solid var(--border);
1055
- border-radius: var(--radius-lg);
1056
- background: var(--bg-elev);
1057
- }
1058
-
1059
- .info-block h3,
1060
- .info-block h4 {
1061
- margin: 0;
1062
- color: var(--text-strong);
1063
- font-size: 0.92rem;
1064
- }
1065
-
1066
- .info-block p {
1067
- margin: 0;
1068
- color: var(--text-dim);
1069
- font-size: var(--fs-meta);
1070
- }
1071
-
1072
- .metric-strip {
1073
- display: grid;
1074
- grid-template-columns: repeat(3, minmax(0, 1fr));
1075
- gap: var(--space-3);
1076
- }
1077
-
1078
- .micro-stat {
1079
- display: grid;
1080
- gap: var(--space-1);
1081
- }
1082
-
1083
- .micro-stat-value {
1084
- color: var(--text-strong);
1085
- font: 600 1rem / 1 var(--font-sans);
1086
- letter-spacing: -0.03em;
1087
- }
1088
-
1089
- .canvas-command {
1090
- display: grid;
1091
- gap: var(--space-4);
1092
- padding: var(--space-4);
1093
- border: 1px solid var(--border);
1094
- border-radius: var(--radius-lg);
1095
- background: var(--bg-elev);
1096
- }
1097
-
1098
- .terminal-line {
1099
- display: flex;
1100
- justify-content: space-between;
1101
- gap: var(--space-3);
1102
- padding: var(--space-2) 0;
1103
- border-bottom: 1px solid var(--border);
1104
- color: var(--text-dim);
1105
- font: 500 var(--fs-meta) / 1.4 var(--font-mono);
1106
- }
1107
-
1108
- .terminal-line:last-child {
1109
- border-bottom: 0;
1110
- }
1111
-
1112
- .shell-divider {
1113
- height: 1px;
1114
- background: var(--border);
1115
- }
1116
-
1117
- .token-grid,
1118
- .pattern-grid {
1119
- display: grid;
1120
- grid-template-columns: repeat(2, minmax(0, 1fr));
1121
- gap: var(--space-4);
1122
- }
1123
-
1124
- .behavior-grid,
1125
- .form-grid {
1126
- display: grid;
1127
- grid-template-columns: repeat(3, minmax(0, 1fr));
1128
- gap: var(--space-4);
1129
- }
1130
-
1131
- .timeline-entry:last-child {
1132
- border-bottom: 0;
1133
- }
1134
-
1135
- .table {
1136
- width: 100%;
1137
- border-collapse: collapse;
1138
- }
1139
-
1140
- .table th,
1141
- .table td {
1142
- padding: 0.6875rem 0.875rem;
1143
- border-bottom: 1px solid var(--border);
1144
- text-align: left;
1145
- }
1146
-
1147
- .table th {
1148
- color: var(--text-dim);
1149
- font: 500 var(--fs-micro) / 1.4 var(--font-mono);
1150
- text-transform: uppercase;
1151
- letter-spacing: 0.08em;
1152
- }
1153
-
1154
- .table td:last-child,
1155
- .table th:last-child {
1156
- text-align: right;
1157
- }
1158
-
1159
- .table.compact th,
1160
- .table.compact td {
1161
- padding: 0.55rem 0.75rem;
1162
- }
1163
-
1164
- .rail-layout {
1165
- display: grid;
1166
- grid-template-columns: 15rem 1fr;
1167
- gap: var(--space-4);
1168
- }
1169
-
1170
- .side-rail {
1171
- padding: var(--space-3);
1172
- border: 1px solid var(--border);
1173
- border-radius: var(--radius-lg);
1174
- background: var(--bg-elev);
1175
- }
1176
-
1177
- .rail-button {
1178
- display: flex;
1179
- align-items: center;
1180
- justify-content: space-between;
1181
- gap: var(--space-2);
1182
- width: 100%;
1183
- margin-bottom: var(--space-2);
1184
- padding: 0.8rem 0.9rem;
1185
- border: 1px solid transparent;
1186
- border-radius: var(--radius);
1187
- background: transparent;
1188
- color: var(--text-dim);
1189
- }
1190
-
1191
- .rail-button.is-active {
1192
- border-color: var(--accent-border);
1193
- background: var(--accent-bg);
1194
- color: var(--accent);
1195
- }
1196
-
1197
- .rail-button:hover {
1198
- background: var(--bg-elev-2);
1199
- color: var(--text-strong);
1200
- }
1201
-
1202
- .module-grid {
1203
- display: grid;
1204
- grid-template-columns: repeat(2, minmax(0, 1fr));
1205
- gap: var(--space-4);
1206
- }
1207
-
1208
- .chat-grid {
1209
- display: grid;
1210
- grid-template-columns: 18rem 1fr 20rem;
1211
- gap: var(--space-4);
1212
- }
1213
-
1214
- .session-list,
1215
- .thread,
1216
- .info-panel {
1217
- min-height: 34rem;
1218
- }
1219
-
1220
- .session-row {
1221
- display: grid;
1222
- grid-template-columns: auto 1fr auto;
1223
- gap: var(--space-2);
1224
- align-items: center;
1225
- padding: 0.75rem 0.85rem;
1226
- border: 1px solid var(--border);
1227
- border-radius: var(--radius);
1228
- color: var(--text);
1229
- background: var(--bg);
1230
- }
1231
-
1232
- .session-row.is-active {
1233
- background: var(--accent-bg);
1234
- border-color: var(--accent-border);
1235
- }
1236
-
1237
- .message {
1238
- max-width: 80%;
1239
- padding: var(--space-3);
1240
- border-radius: var(--radius-md);
1241
- background: var(--bg);
1242
- border: 1px solid var(--border);
1243
- }
1244
-
1245
- .message.assistant {
1246
- background: var(--bg-elev-2);
1247
- }
1248
-
1249
- .message + .message {
1250
- margin-top: var(--space-3);
1251
- }
1252
-
1253
- .composer {
1254
- margin-top: auto;
1255
- padding: var(--space-3);
1256
- border: 1px solid var(--border);
1257
- border-radius: var(--radius-lg);
1258
- background: var(--bg-elev);
1259
- }
1260
-
1261
- .input,
1262
- .textarea,
1263
- .select {
1264
- width: 100%;
1265
- min-height: 2.25rem;
1266
- padding: 0.65rem 0.8rem;
1267
- border: 1px solid var(--border);
1268
- border-radius: var(--radius);
1269
- background: var(--bg);
1270
- color: var(--text);
1271
- }
1272
-
1273
- .input:focus,
1274
- .textarea:focus,
1275
- .select:focus {
1276
- outline: none;
1277
- border-color: var(--accent-border);
1278
- box-shadow: inset 0 0 0 1px var(--accent-border);
1279
- }
1280
-
1281
- .textarea {
1282
- min-height: 7rem;
1283
- resize: vertical;
1284
- }
1285
-
1286
- .field {
1287
- display: grid;
1288
- gap: var(--space-2);
1289
- }
1290
-
1291
- .field label {
1292
- color: var(--text-dim);
1293
- font: 500 var(--fs-meta) / 1.4 var(--font-mono);
1294
- }
1295
-
1296
- .settings-grid {
1297
- display: grid;
1298
- grid-template-columns: 16rem 1fr;
1299
- gap: var(--space-4);
1300
- }
1301
-
1302
- .settings-nav {
1303
- position: sticky;
1304
- top: 5rem;
1305
- align-self: start;
1306
- }
1307
-
1308
- .swatch-grid {
1309
- display: grid;
1310
- grid-template-columns: repeat(3, minmax(0, 1fr));
1311
- gap: var(--space-3);
1312
- }
1313
-
1314
- .swatch {
1315
- padding: var(--space-3);
1316
- border: 1px solid var(--border);
1317
- border-radius: var(--radius);
1318
- background: var(--bg-elev-2);
1319
- }
1320
-
1321
- .swatch-chip {
1322
- height: 3rem;
1323
- border-radius: var(--radius);
1324
- border: 1px solid color-mix(in oklch, black 14%, transparent);
1325
- margin-bottom: var(--space-2);
1326
- }
1327
-
1328
- .launcher-grid {
1329
- display: grid;
1330
- grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
1331
- gap: var(--space-4);
1332
- }
1333
-
1334
- .launcher-card {
1335
- display: grid;
1336
- gap: var(--space-4);
1337
- grid-template-columns: 10rem 1fr;
1338
- padding: var(--space-4);
1339
- border: 1px solid var(--border);
1340
- border-radius: var(--radius-lg);
1341
- background: var(--bg-elev);
1342
- }
1343
-
1344
- .launcher-card:hover {
1345
- transform: translateY(-1px);
1346
- border-color: var(--border-strong);
1347
- }
1348
-
1349
- .screen-frame {
1350
- min-height: 8rem;
1351
- border: 1px solid var(--border);
1352
- border-radius: var(--radius-md);
1353
- background: var(--bg-elev-2);
1354
- position: relative;
1355
- overflow: hidden;
1356
- }
1357
-
1358
- .screen-frame::before {
1359
- content: "";
1360
- position: absolute;
1361
- inset: 0 auto 0 0;
1362
- width: 1.7rem;
1363
- border-right: 1px solid var(--border);
1364
- background: var(--bg);
1365
- }
1366
-
1367
- .screen-frame::after {
1368
- content: "";
1369
- position: absolute;
1370
- inset: 0 0 auto 0;
1371
- height: 1.35rem;
1372
- border-bottom: 1px solid var(--border);
1373
- background: var(--bg-elev);
1374
- }
1375
-
1376
- .phone-frame {
1377
- width: min(24rem, 100%);
1378
- margin: 0 auto;
1379
- padding: 0.75rem;
1380
- border: 1px solid var(--border-strong);
1381
- border-radius: 2rem;
1382
- background: var(--bg);
1383
- }
1384
-
1385
- .phone-screen {
1386
- min-height: 46rem;
1387
- border: 1px solid var(--border);
1388
- border-radius: 1.5rem;
1389
- background: var(--bg-elev);
1390
- overflow: hidden;
1391
- }
1392
-
1393
- .mobile-topbar {
1394
- display: flex;
1395
- align-items: center;
1396
- justify-content: space-between;
1397
- padding: 1rem;
1398
- border-bottom: 1px solid var(--border);
1399
- }
1400
-
1401
- .mobile-content {
1402
- display: grid;
1403
- gap: var(--space-3);
1404
- padding: 1rem;
1405
- }
1406
-
1407
- .mobile-nav {
1408
- display: grid;
1409
- grid-template-columns: repeat(5, 1fr);
1410
- gap: var(--space-2);
1411
- padding: 0.75rem 1rem 1rem;
1412
- border-top: 1px solid var(--border);
1413
- }
1414
-
1415
- .mobile-nav .nav-button {
1416
- min-height: 3rem;
1417
- }
1418
-
1419
- .doc-note {
1420
- padding: var(--space-3);
1421
- border: 1px solid var(--accent-border);
1422
- border-radius: var(--radius);
1423
- background: var(--accent-soft);
1424
- color: var(--text);
1425
- }
1426
-
1427
- .screen-meta {
1428
- display: flex;
1429
- align-items: center;
1430
- gap: var(--space-2);
1431
- flex-wrap: wrap;
1432
- }
1433
-
1434
- .theme-preview {
1435
- display: grid;
1436
- gap: var(--space-3);
1437
- padding: var(--space-4);
1438
- border: 1px solid var(--border);
1439
- border-radius: var(--radius-lg);
1440
- background: var(--bg-elev);
1441
- }
1442
-
1443
- .theme-strip {
1444
- display: grid;
1445
- grid-template-columns: repeat(6, 1fr);
1446
- gap: var(--space-2);
1447
- }
1448
-
1449
- .theme-chip {
1450
- height: 2.5rem;
1451
- border-radius: var(--radius);
1452
- border: 1px solid color-mix(in oklch, black 12%, transparent);
1453
- }
1454
-
1455
- .demo-scroll {
1456
- max-height: 12rem;
1457
- overflow: auto;
1458
- padding-right: var(--space-2);
1459
- }
1460
-
1461
- .tab-strip {
1462
- display: flex;
1463
- align-items: center;
1464
- gap: var(--space-2);
1465
- flex-wrap: wrap;
1466
- }
1467
-
1468
- .tab {
1469
- display: inline-flex;
1470
- align-items: center;
1471
- gap: var(--space-2);
1472
- min-height: 2rem;
1473
- padding: 0 var(--space-3);
1474
- border: 1px solid transparent;
1475
- border-radius: var(--radius);
1476
- color: var(--text-dim);
1477
- }
1478
-
1479
- .tab.is-active {
1480
- color: var(--accent);
1481
- background: var(--accent-bg);
1482
- border-color: var(--accent-border);
1483
- }
1484
-
1485
- .segmented {
1486
- display: inline-flex;
1487
- gap: var(--space-2);
1488
- padding: var(--space-1);
1489
- border: 1px solid var(--border);
1490
- border-radius: var(--radius);
1491
- background: var(--bg);
1492
- }
1493
-
1494
- .segmented-item {
1495
- display: inline-flex;
1496
- align-items: center;
1497
- justify-content: center;
1498
- min-height: 1.75rem;
1499
- padding: 0 var(--space-3);
1500
- border-radius: var(--radius-sm);
1501
- color: var(--text-dim);
1502
- }
1503
-
1504
- .segmented-item.is-active {
1505
- background: var(--accent-bg);
1506
- color: var(--accent);
1507
- border: 1px solid var(--accent-border);
1508
- }
1509
-
1510
- .avatar {
1511
- display: inline-grid;
1512
- place-items: center;
1513
- width: 2rem;
1514
- height: 2rem;
1515
- border: 1px solid var(--border);
1516
- border-radius: 50%;
1517
- background: var(--bg-elev-2);
1518
- color: var(--text-strong);
1519
- font: 600 var(--fs-meta) / 1 var(--font-mono);
1520
- }
1521
-
1522
- .status-grid {
1523
- display: grid;
1524
- grid-template-columns: repeat(2, minmax(0, 1fr));
1525
- gap: var(--space-3);
1526
- }
1527
-
1528
- .drag-card {
1529
- border: 1px dashed var(--accent-border);
1530
- background: color-mix(in oklch, var(--accent) 6%, var(--bg-elev));
1531
- }
1532
-
1533
- .drop-zone {
1534
- min-height: 4rem;
1535
- padding: var(--space-3);
1536
- border: 1px dashed var(--border-strong);
1537
- border-radius: var(--radius);
1538
- background: color-mix(in oklch, var(--bg-elev-2) 86%, transparent);
1539
- color: var(--text-dim);
1540
- }
1541
-
1542
- .empty-state,
1543
- .loading-state,
1544
- .error-state {
1545
- display: grid;
1546
- gap: var(--space-3);
1547
- place-items: start;
1548
- padding: var(--space-4);
1549
- border: 1px dashed var(--border);
1550
- border-radius: var(--radius-lg);
1551
- background: var(--bg-elev-2);
1552
- }
1553
-
1554
- .error-state {
1555
- border-color: color-mix(in oklch, var(--error) 35%, var(--border));
1556
- background: color-mix(in oklch, var(--error) 6%, var(--bg-elev-2));
1557
- }
1558
-
1559
- .loading-bar {
1560
- width: 100%;
1561
- height: 0.35rem;
1562
- overflow: hidden;
1563
- border-radius: var(--radius-pill);
1564
- background: var(--bg-elev-3);
1565
- }
1566
-
1567
- .loading-bar::after {
1568
- content: "";
1569
- display: block;
1570
- width: 36%;
1571
- height: 100%;
1572
- background: var(--accent);
1573
- animation: loading-slide 1.2s linear infinite;
1574
- }
1575
-
1576
- @keyframes loading-slide {
1577
- from { transform: translateX(-100%); }
1578
- to { transform: translateX(280%); }
1579
- }
1580
-
1581
- .drawer {
1582
- display: grid;
1583
- gap: var(--space-3);
1584
- min-height: 14rem;
1585
- padding: var(--space-4);
1586
- border-left: 1px solid var(--border);
1587
- background: var(--bg-elev-2);
1588
- }
1589
-
1590
- .modal-demo {
1591
- display: grid;
1592
- gap: var(--space-3);
1593
- max-width: 28rem;
1594
- padding: var(--space-4);
1595
- border: 1px solid var(--border);
1596
- border-radius: var(--radius-xl);
1597
- background: var(--bg-elev);
1598
- }
1599
-
1600
- .kanban {
1601
- display: grid;
1602
- grid-template-columns: repeat(4, minmax(0, 1fr));
1603
- gap: var(--space-3);
1604
- }
1605
-
1606
- .kanban-column {
1607
- display: grid;
1608
- gap: var(--space-3);
1609
- padding: var(--space-3);
1610
- border: 1px solid var(--border);
1611
- border-radius: var(--radius-lg);
1612
- background: var(--bg-elev-2);
1613
- }
1614
-
1615
- .divider {
1616
- height: 1px;
1617
- background: var(--border);
1618
- }
1619
-
1620
- @media (max-width: 1100px) {
1621
- .shell-topbar {
1622
- grid-template-columns: 1fr;
1623
- align-items: stretch;
1624
- }
1625
-
1626
- .shell-topbar-start,
1627
- .shell-topbar-center,
1628
- .shell-topbar-end {
1629
- justify-content: flex-start;
1630
- flex-wrap: wrap;
1631
- }
1632
-
1633
- .hero-metrics,
1634
- .two-column,
1635
- .three-column,
1636
- .module-grid,
1637
- .chat-grid,
1638
- .settings-grid,
1639
- .rail-layout,
1640
- .token-grid,
1641
- .pattern-grid,
1642
- .behavior-grid,
1643
- .form-grid,
1644
- .status-grid,
1645
- .kanban,
1646
- .signal-grid,
1647
- .metric-strip {
1648
- grid-template-columns: 1fr;
1649
- }
1650
-
1651
- .ops-hero,
1652
- .canvas-hero,
1653
- .launcher-grid,
1654
- .stack-grid {
1655
- grid-template-columns: 1fr;
1656
- }
1657
-
1658
- .shell-body {
1659
- grid-template-columns: 1fr;
1660
- }
1661
-
1662
- .sidebar {
1663
- display: none;
1664
- }
1665
- }