@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,7 +1,7 @@
1
1
  /**
2
2
  * src/server/task-delegator.mjs
3
3
  *
4
- * v3.5.2 — Odin task delegation.
4
+ * v6.3.0 — Odin task delegation, REWRITTEN for Claude Code.
5
5
  *
6
6
  * Accepts a single "natural language" task from the user. Splits it into
7
7
  * 1-5 subtasks via heuristic rules (an LLM call would replace this in
@@ -18,23 +18,18 @@
18
18
  * Subtasks are always persisted to the regular tasks store first; the
19
19
  * background dispatch is best-effort.
20
20
  *
21
- * v3.5.4 (bug: dispatch stuck) — Dispatch path replaced. The previous
22
- * implementation shell-executed `node plugins/bizar/dist/cli.js bg enqueue`,
23
- * but the plugin is a Bun-native TS project with no compiled `dist/`,
24
- * so the exec always failed. The silent try/catch around execSync meant
25
- * the failure was invisible to both the user and the dashboard log.
21
+ * v6.3.0 — Dispatch path replaced. The previous Cline path shell-executed
22
+ * `node plugins/bizar/dist/cli.js bg enqueue`, then `cline run` via
23
+ * cline-runner.mjs. Claude Code has no equivalent `serve` child the
24
+ * new path spawns `claude -p "<prompt>"` per subtask via
25
+ * `claude-runner.mjs` (in-process when the SDK is available,
26
+ * subprocess otherwise). The dispatch is gated on `pingClaudeSdk()`
27
+ * (in-process SDK reachable) OR the `claude` binary on PATH.
26
28
  *
27
- * New path:
28
- * 1. Read the plugin's serve-info file (port + password + worktree).
29
- * 2. POST /api/session on the plugin's cline serve child.
30
- * 3. POST /api/session/{id}/prompt to fire the task prompt.
31
- * 4. Write a state file under ~/.cache/bizar/bg/ so the dashboard's
32
- * background-store can list and kill it.
33
- *
34
- * If serve-info is missing (plugin not running) we log a clear warning
35
- * at startup AND surface the dispatch failure in the `/submit` response,
36
- * so the user can re-dispatch manually with `/api/tasks/:id/start`
37
- * after the plugin is up.
29
+ * If neither is available we log a clear warning at startup AND
30
+ * surface the dispatch failure in the `/submit` response, so the
31
+ * user can re-dispatch manually with `/api/tasks/:id/start`
32
+ * once the runtime is up.
38
33
  */
39
34
 
40
35
  import { tasksStore, ALLOWED_TASK_STATUSES } from './tasks-store.mjs';
@@ -84,6 +79,7 @@ function buildPromptText(sub) {
84
79
  parts.push(`Subtask ID: ${sub.id}`);
85
80
  parts.push(`Assigned agent: ${sub.assignee || 'tyr'}`);
86
81
  parts.push(`Parent task ID: ${sub.parent || '(none)'}`);
82
+ parts.push(`Runtime: Claude Code (claude -p)`);
87
83
  return parts.join('\n');
88
84
  }
89
85
 
@@ -460,23 +456,25 @@ export const taskDelegator = {
460
456
  },
461
457
 
462
458
  /**
463
- * v3.5.4 (bug: dispatch stuck) — Best-effort dispatch to the background
464
- * agent infrastructure. Talks to the plugin's cline serve child via
465
- * HTTP (createSession + sendPrompt) and writes a per-instance state
466
- * file under BG_DIRS so the dashboard's `backgroundStore.list()` and
467
- * `kill()` paths find the instance.
459
+ * v6.3.0 — Best-effort dispatch to the Claude Code runtime.
460
+ * Replaces the v3.5.4 Cline HTTP-serve path. Spawns one
461
+ * `claude -p "<prompt>"` subprocess per subtask via
462
+ * `claude-runner.mjs` (or, when the SDK is available,
463
+ * `claude-bg-spawner.mjs`'s SDK-backed path).
468
464
  *
469
- * Replaces the previous `execSync('node plugins/bizar/dist/cli.js …')`
470
- * path which silently failed because the plugin is a Bun-native TS
471
- * project with no compiled `dist/`.
465
+ * The runner writes its output to the LogWriter's log file under
466
+ * `~/.cache/bizar/logs/<sessionId>.log`. The dashboard's
467
+ * `backgroundStore.list()` and `kill()` paths find the instance
468
+ * via the per-instance state file at
469
+ * `~/.cache/bizar/bg/<instanceId>.json`.
472
470
  *
473
471
  * Returns a structured `{ dispatched: string[], errors: Array<…>, warnings: Array<…> }`
474
- * so the caller (and `/api/tasks/submit`) can surface failures to the
475
- * user instead of swallowing them.
472
+ * so the caller (and `/api/tasks/submit`) can surface failures to
473
+ * the user instead of swallowing them.
476
474
  *
477
- * v3.5.1 — Respects agents.maxParallel: caps concurrent dispatches to
478
- * the configured limit; overflow subtasks are queued until a slot
479
- * frees up.
475
+ * v3.5.1 — Respects agents.maxParallel: caps concurrent dispatches
476
+ * to the configured limit; overflow subtasks are queued until a
477
+ * slot frees up.
480
478
  *
481
479
  * @returns {Promise<{ dispatched: string[], errors: Array<{ subtaskId: string, kind: string, message: string }>, warnings: string[] }>}
482
480
  */
@@ -503,29 +501,32 @@ export const taskDelegator = {
503
501
  const runningCount = await runningBgCount();
504
502
  const slotsAvailable = Math.max(0, maxParallel - runningCount);
505
503
 
506
- // v3.5.4 (bug: dispatch stuck) Resolve the cline serve child
507
- // the plugin owns. If the plugin is not running we record a warning
508
- // and skip the actual spawn (subtasks still flip to `doing` so the
509
- // user can see them, but `metadata.dispatchPending = true` tells
510
- // them to retry via `/api/tasks/:id/start` once the plugin is up).
511
- let serveInfo = null;
512
- let serveReachable = false;
504
+ // v6.3.0 Verify the Claude Code runtime is reachable. We
505
+ // accept either the in-process SDK or the `claude` binary on
506
+ // PATH. `pingClaudeSdk()` probes the SDK; `claude -v` on PATH
507
+ // is the subprocess fallback. When neither is available we
508
+ // mark subtasks as `dispatchPending: true` so the UI surfaces
509
+ // "Awaiting dispatch" and `/api/tasks/:id/start` can retry
510
+ // after the user installs Claude Code.
511
+ let claudeAvailable = false;
513
512
  try {
514
- const { readServeInfo, pingClineServe } = await import('./serve-info.mjs');
515
- serveInfo = readServeInfo();
516
- if (!serveInfo) {
517
- result.warnings.push('serve-info not found — the bizar plugin is not running. Tasks will be marked queued; retry via POST /api/tasks/:id/start once the plugin is up.');
518
- console.warn('[task-delegator] serve-info missing — plugin may not be running. Dispatch will be deferred.');
519
- } else {
520
- serveReachable = await pingClineServe(serveInfo);
521
- if (!serveReachable) {
522
- result.warnings.push(`cline serve at ${serveInfo.baseUrl} is not reachable. Tasks will be marked queued; retry via POST /api/tasks/:id/start.`);
523
- console.warn(`[task-delegator] cline serve not reachable at ${serveInfo.baseUrl}`);
524
- }
513
+ const { pingClaudeSdk } = await import('./claude-sdk.mjs');
514
+ claudeAvailable = await pingClaudeSdk();
515
+ } catch {
516
+ claudeAvailable = false;
517
+ }
518
+ if (!claudeAvailable) {
519
+ try {
520
+ const { spawnSync } = await import('node:child_process');
521
+ const probe = spawnSync('claude', ['-v'], { stdio: 'ignore', timeout: 1500 });
522
+ claudeAvailable = probe.status === 0;
523
+ } catch {
524
+ claudeAvailable = false;
525
525
  }
526
- } catch (err) {
527
- result.warnings.push(`could not load serve-info helper: ${err.message}`);
528
- console.warn('[task-delegator] serve-info helper failed:', err.message);
526
+ }
527
+ if (!claudeAvailable) {
528
+ result.warnings.push('claude runtime not reachable — neither the @anthropic-ai/claude-agent-sdk nor the `claude` binary on PATH. Tasks will be marked queued; retry via POST /api/tasks/:id/start once Claude Code is installed.');
529
+ console.warn('[task-delegator] claude runtime unreachable — dispatch will be deferred.');
529
530
  }
530
531
 
531
532
  // Split: first N get dispatched now, rest are queued.
@@ -549,13 +550,13 @@ export const taskDelegator = {
549
550
  });
550
551
  }
551
552
 
552
- // v3.5.4 (bug: dispatch stuck) — Per-subtask dispatch path. We
553
- // collect errors instead of swallowing them. Two failure modes:
554
- // - serveInfo/serveReachable missing: mark dispatchPending so
555
- // the UI shows "Awaiting dispatch" and `/api/tasks/:id/start`
556
- // can retry.
557
- // - HTTP error: record error message so the API response carries
558
- // it.
553
+ // v6.3.0 — Per-subtask dispatch path. We collect errors instead
554
+ // of swallowing them. Two failure modes:
555
+ // - claudeAvailable=false: mark dispatchPending so the UI
556
+ // shows "Awaiting dispatch" and `/api/tasks/:id/start` can
557
+ // retry.
558
+ // - spawn failure: record error message so the API response
559
+ // carries it.
559
560
  for (const sub of toDispatch) {
560
561
  const startedAt = new Date().toISOString();
561
562
  let bgInstanceId = null;
@@ -563,21 +564,19 @@ export const taskDelegator = {
563
564
  let dispatchError = null;
564
565
  let dispatchPending = false;
565
566
 
566
- // v3.11.1 — Active dispatch path. We no longer depend on the
567
- // cline serve child's HTTP API to drive the agent loop
568
- // (per the cline docs, that API is passive — it needs a
569
- // TUI/web client connected to actually process prompts).
570
- // Instead we spawn one `cline run` subprocess per subtask
571
- // and capture its output to the LogWriter's log file. The
572
- // plugin's cline-runner.ts and this dashboard's
573
- // cline-runner.mjs share the same wire format.
574
- if (serveInfo && serveReachable) {
567
+ // v6.3.0 — Active dispatch path. Spawn one `claude -p` (or
568
+ // `claude --bg` for long-running sessions) subprocess per
569
+ // subtask via claude-runner.mjs. Capture the sessionId from
570
+ // the runner's JSON-line stream.
571
+ if (claudeAvailable) {
575
572
  try {
576
- const { spawnAgent } = await import('./cline-runner.mjs');
577
- // v3.11.0 — Fall back to projectRoot when serve-info is
578
- // missing `worktree` (older plugin builds only wrote
579
- // `{password, pid, port}`).
580
- const dispatchWorktree = serveInfo.worktree || projectRoot || '';
573
+ const { spawnAgent } = await import('./claude-runner.mjs');
574
+ // v6.3.0 — Prefer the bg-spawner's SDK-backed path when
575
+ // the SDK is reachable; fall back to the print-mode
576
+ // subprocess otherwise. We always pass `background: false`
577
+ // here so the runner returns a sessionId synchronously;
578
+ // the bg-spawner is used separately by the Active tab.
579
+ const dispatchWorktree = projectRoot || '';
581
580
  const promptText = buildPromptText(sub);
582
581
 
583
582
  // Predict the bg instance id (deterministic, derived from
@@ -597,14 +596,14 @@ export const taskDelegator = {
597
596
  });
598
597
 
599
598
  if (!spawnRes.ok || !spawnRes.sessionId) {
600
- dispatchError = spawnRes.error || 'cline run failed before reporting session id';
599
+ dispatchError = spawnRes.error || 'claude -p failed before reporting session id';
601
600
  } else {
602
601
  sessionId = spawnRes.sessionId;
603
602
  bgInstanceId = predictedInstanceId;
604
603
 
605
604
  // v3.5.5 — Wrap the agent run in a tmux session so
606
605
  // operators can `tmux attach -t bizar-bg-<id>` and watch
607
- // the cline process in real time.
606
+ // the claude process in real time.
608
607
  try {
609
608
  const tmuxRes = backgroundStore.spawnTmuxFor(
610
609
  `bg_${sessionId.slice(0, 16)}`,
@@ -623,9 +622,9 @@ export const taskDelegator = {
623
622
  dispatchError = err instanceof Error ? err.message : String(err);
624
623
  }
625
624
  } else {
626
- // Plugin not running — leave the subtask marked queued with a
627
- // dispatchPending flag. The UI surfaces this and the user can
628
- // retry via POST /api/tasks/:id/start.
625
+ // Claude Code not available — leave the subtask marked
626
+ // queued with a dispatchPending flag. The UI surfaces this
627
+ // and the user can retry via POST /api/tasks/:id/start.
629
628
  dispatchPending = true;
630
629
  }
631
630
 
@@ -1,33 +1,29 @@
1
1
  // src/components/chat/useChat.ts — shared chat state: messages, sessions,
2
2
  // send, polling, SSE, session-state tracking.
3
3
  //
4
- // v4.2.5Chat overhaul. Supports two parallel message streams:
4
+ // v6.3.0Claude Code migration. Supports two parallel message streams:
5
5
  // - bizar (GET /api/chat)
6
- // - cline (GET /api/cline-sessions/:id/messages + SSE)
6
+ // - claude (GET /api/claude-sessions/:id/messages + SSE)
7
7
  //
8
- // v5.0.0 — bug #4 fix: `loadClineSession` failure path now extracts
9
- // structured `code`, `cause`, `status`, and `suggestion` from the
10
- // server's ApiError.data envelope and exposes them via a new
11
- // `clineErrorInfo` field. `ChatInfoPanel` consumes that field to
12
- // render a structured "Couldn't load session" panel with the server's
13
- // `suggestion` verbatim, plus a Retry button.
14
- //
15
- // Changes from v3.22:
16
- // * SSE has automatic reconnect-with-backoff (1s → 30s, doubled on
17
- // each error up to a cap). Closes cleanly on unmount and on
18
- // session-switch (no leaked EventSource).
8
+ // Changes from v4.2.5:
9
+ // * Endpoint prefix changed: `/api/claude-sessions/*` `/api/claude-sessions/*`
10
+ // * SSE event type names changed to match the Claude SDK envelope
11
+ // (`message.part.updated` `delta`/`text_delta`, etc.)
12
+ // * Server no longer needs the `clineErrorInfo` 503 path; the
13
+ // `claudeErrorInfo` field stays for parity but the dashboard
14
+ // mostly sees 502s now (claude CLI not on PATH / spawn failed).
19
15
  // * Optimistic send uses a stable `msg_*` ID and is deduped when
20
- // cline echoes the message back via SSE `message.updated`/`message.user.*`.
21
- // * `clineMessages` keeps server-provided IDs distinct from
16
+ // claude echoes the message back via SDK events.
17
+ // * `claudeMessages` keeps server-provided IDs distinct from
22
18
  // optimistic IDs so the merge is unambiguous (server echo
23
19
  // replaces optimistic by matching messageID; otherwise both stick
24
20
  // around briefly until the user/session state catches up).
25
- // * `onSend` routes to `/cline-sessions/:id/send` when an
26
- // cline session is active, `/chat` otherwise. Errors surface
21
+ // * `onSend` routes to `/claude-sessions/:id/send` when a
22
+ // claude session is active, `/chat` otherwise. Errors surface
27
23
  // via toast + we always remove the optimistic placeholder.
28
24
  // * Sessions are managed by source:
29
25
  // - `bizarSessions` → local .jsonl store, POST /chat/sessions
30
- // - `clineSessions` → cline serve, GET /cline-sessions
26
+ // - `claudeSessions` → Claude Code, GET /claude-sessions
31
27
  // The rail shows both side-by-side with a source indicator and
32
28
  // uses separate rename/delete endpoints per source.
33
29
  // * All async actions surface a single `busy: { create, send, rename, delete }`
@@ -68,7 +64,7 @@ export interface ChatBusyState {
68
64
 
69
65
  /**
70
66
  * Structured error envelope surfaced by `loadClineSession` when
71
- * the upstream `/api/cline-sessions/:id/messages` call fails.
67
+ * the upstream `/api/claude-sessions/:id/messages` call fails.
72
68
  *
73
69
  * - `code` mirrors the server's `error` field (`plugin_offline`,
74
70
  * `directory_unknown`, `cline_error`, `bad_request`).
@@ -286,7 +282,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
286
282
  const refreshClineSessions = useCallback(async () => {
287
283
  try {
288
284
  const data = await api.get<{ sessions: ChatSession[] }>(
289
- '/cline-sessions',
285
+ '/claude-sessions',
290
286
  );
291
287
  // Enrich with source marker.
292
288
  const enriched: ChatSession[] = (data.sessions || []).map((s) => ({
@@ -333,8 +329,8 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
333
329
  // optional, but harmless).
334
330
  const tok = api.getToken();
335
331
  const url = tok
336
- ? `/api/cline-sessions/${encodeURIComponent(id)}/stream?token=${encodeURIComponent(tok)}`
337
- : `/api/cline-sessions/${encodeURIComponent(id)}/stream`;
332
+ ? `/api/claude-sessions/${encodeURIComponent(id)}/stream?token=${encodeURIComponent(tok)}`
333
+ : `/api/claude-sessions/${encodeURIComponent(id)}/stream`;
338
334
 
339
335
  sseCurrentSessionIdRef.current = id;
340
336
  sseAutoReconnectRef.current = true;
@@ -628,7 +624,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
628
624
 
629
625
  try {
630
626
  const data = await api.get<{ messages: ChatMessage[] }>(
631
- `/cline-sessions/${encodeURIComponent(id)}/messages`,
627
+ `/claude-sessions/${encodeURIComponent(id)}/messages`,
632
628
  );
633
629
  setClineMessages(data.messages || []);
634
630
  } catch (err) {
@@ -735,7 +731,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
735
731
  agent: string;
736
732
  directory: string;
737
733
  createdAt: number;
738
- }>('/cline-sessions/new', { agent });
734
+ }>('/claude-sessions/new', { agent });
739
735
  await refreshClineSessions();
740
736
  // Open the newly created session right away so the user is
741
737
  // dropped into a fresh empty thread, not stuck on the
@@ -814,7 +810,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
814
810
  setBusy((b) => ({ ...b, send: true }));
815
811
  try {
816
812
  await api.post<{ ok: boolean; messageId: string }>(
817
- `/cline-sessions/${encodeURIComponent(sid)}/send`,
813
+ `/claude-sessions/${encodeURIComponent(sid)}/send`,
818
814
  {
819
815
  message: trimmed,
820
816
  agent,
@@ -976,7 +972,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
976
972
  const isCline = clineSessions.some((s) => s.id === id);
977
973
  if (isCline) {
978
974
  await api.patch<{ id: string; title: string }>(
979
- `/cline-sessions/${encodeURIComponent(id)}`,
975
+ `/claude-sessions/${encodeURIComponent(id)}`,
980
976
  { title: trimmed },
981
977
  );
982
978
  setClineSessions((cur) =>
@@ -1012,7 +1008,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
1012
1008
  try {
1013
1009
  const isCline = clineSessions.some((s) => s.id === id);
1014
1010
  if (isCline) {
1015
- await api.del(`/cline-sessions/${encodeURIComponent(id)}`);
1011
+ await api.del(`/claude-sessions/${encodeURIComponent(id)}`);
1016
1012
  setClineSessions((cur) => cur.filter((s) => s.id !== id));
1017
1013
  if (activeClineSessionId === id) {
1018
1014
  closeClineSession();
@@ -1,17 +1,17 @@
1
- // src/views/Chat.tsx — desktop chat view (v4.2.5 design).
1
+ // src/views/Chat.tsx — desktop chat view (v6.3.0 design).
2
2
  //
3
- // v4.2.5chat overhaul:
3
+ // v6.3.0Claude Code migration:
4
4
  // * 3-column grid preserved (rail / thread / info).
5
5
  // * Composer goes through `chat.onSend`, which transparently routes
6
6
  // to the right backend endpoint based on `activeSource`:
7
- // - cline session active → POST /api/cline-sessions/:id/send
7
+ // - claude session active → POST /api/claude-sessions/:id/send
8
8
  // - otherwise → POST /api/chat
9
9
  // * "New session" button calls `chat.onCreateSession` which tries
10
- // POST /api/cline-sessions/new first (so the new session is a
11
- // fully-fledged cline session, scoped to the active worktree),
12
- // falling back to the local jsonl store when the cline plugin
13
- // is offline.
14
- // * Top-of-thread badge shows the active source ("cline" or
10
+ // POST /api/claude-sessions/new first (so the new session is a
11
+ // fully-fledged Claude Code session, scoped to the active worktree),
12
+ // falling back to the local jsonl store when the claude CLI is
13
+ // not on PATH.
14
+ // * Top-of-thread badge shows the active source ("claude" or
15
15
  // "bizar chat") so the user always knows where messages are going.
16
16
  // * Info panel gets session metadata + rename/delete actions.
17
17
  //
package/cli/bin.mjs CHANGED
@@ -78,7 +78,7 @@ if (
78
78
  // ── Banner ─────────────────────────────────────────────────────────────────────
79
79
 
80
80
  function showBanner() {
81
- console.log(chalk.bold.cyan(' ᛭ Bizar — Norse Pantheon Agent System for cline'));
81
+ console.log(chalk.bold.cyan(' ᛭ Bizar — Norse Pantheon Agent System for Claude Code'));
82
82
  console.log();
83
83
  }
84
84
 
@@ -97,7 +97,7 @@ function showHelp() {
97
97
  export [target] Export agents/rules to another harness
98
98
  artifact <subcommand> Manage visual artifacts
99
99
  test-gate Detect & run the project's test suite
100
- update Auto-update everything (cline + bizar + dash + plugin)
100
+ update Auto-update everything (claude + bizar + dash + sdk)
101
101
  service Manage the background service daemon
102
102
  dash <subcommand> Manage the dashboard (start/stop/status/cleanup/tui)
103
103
  memory <subcommand> Manage project memory (Bizar Memory Service)
@@ -109,7 +109,7 @@ function showHelp() {
109
109
  usage Show compact usage analytics summary (24h rolling)
110
110
  doctor Check the BizarHarness install for health issues
111
111
  repair Fix common install issues
112
- dev-link Symlink local plugin source into cline's plugin dir
112
+ dev-link Symlink local SDK source into Claude Code's plugin dir
113
113
  dev-unlink Remove the dev symlink and restore the deployed copy
114
114
  heads-up <subcommand> Manage pre-push / pre-release heads-ups
115
115
  bg <subcommand> Manage background agents (list/view/kill/logs)
@@ -118,7 +118,7 @@ function showHelp() {
118
118
  marketplace <subcommand> Browse and install plugins from the public marketplace
119
119
  agent-browser Install / update / verify the agent-browser CLI
120
120
  agent-browser-up Start Chromium for agent-browser (start/stop/status)
121
- providers detect Auto-detect provider API keys from env + cline.json
121
+ providers detect Auto-detect provider API keys from env + ~/.claude/settings.json
122
122
  clip <subcommand> Manage web clipper saved clips (list/delete/configure)
123
123
  ocr <subcommand> OCR operations on images (list/process/configure)
124
124
  digest Manage weekly digests (list/view/generate)
@@ -129,14 +129,14 @@ function showHelp() {
129
129
  eval Evaluate AI agent outputs against golden fixtures
130
130
  plan [v6.0.0+] Reserved for future plan management
131
131
  validate Validate the Bizar install (21 checks)
132
- setup-provider Configure a provider in cline.json (since v6.2.2 installer doesn't touch providers)
133
- config Show current Cline configuration (pass-through to cline config)
134
- history List session history (pass-through to cline history)
135
- hub Manage the local hub daemon (pass-through to cline hub)
136
- hook Handle a hook payload from stdin (pass-through to cline hook)
137
- team Spawn an agent team from CLI (wraps cline --team-name)
132
+ setup-provider Configure a provider in ~/.claude/settings.json (since v6.2.2 installer doesn't touch providers)
133
+ config Show current Claude Code configuration (pass-through to claude config)
134
+ history List session history (pass-through to claude history)
135
+ hub Manage the local hub daemon (pass-through to claude hub)
136
+ hook Handle a hook payload from stdin (pass-through to claude hook)
137
+ team Spawn an agent team from CLI (wraps claude --team-name)
138
138
  subagent Spawn a read-only research subagent from CLI
139
- rca Analyze a GitHub issue (Cline CLI sample)
139
+ rca Analyze a GitHub issue (Claude Code CLI sample)
140
140
 
141
141
  Examples:
142
142
  bizar install
@@ -151,8 +151,7 @@ function showHelp() {
151
151
 
152
152
  Install:
153
153
  npm install -g @polderlabs/bizar
154
- npm install -g @polderlabs/bizar-dash
155
- npm install -g @polderlabs/bizar-plugin
154
+ npm install -g @anthropic-ai/claude-code
156
155
  `);
157
156
  }
158
157
 
@@ -548,15 +547,15 @@ async function main() {
548
547
  case 'hook':
549
548
  case 'team':
550
549
  case 'subagent': {
551
- // v6.2.3 — Pass-through wrappers for Cline CLI commands.
552
- // These live in cli/commands/cline-cmd.mjs.
553
- const mod = await importCommand('cline-cmd');
550
+ // v6.3.0 — Pass-through wrappers for Claude Code CLI commands.
551
+ // These live in cli/commands/claude-cmd.mjs.
552
+ const mod = await importCommand('claude-cmd');
554
553
  if (!mod) {
555
- console.error(chalk.red(` ✗ Could not load cline-cmd module`));
554
+ console.error(chalk.red(` ✗ Could not load claude-cmd module`));
556
555
  process.exit(EXIT_ERROR);
557
556
  return;
558
557
  }
559
- dbg('loaded command module:', 'cline-cmd');
558
+ dbg('loaded command module:', 'claude-cmd');
560
559
  const found = await mod.run(cmd, cmdArgs, isHelpRequest);
561
560
  if (!found) {
562
561
  console.error(chalk.red(` ✗ Unknown command: ${cmd}`));
@@ -584,6 +583,20 @@ async function main() {
584
583
  break;
585
584
  }
586
585
 
586
+ case 'sandbox': {
587
+ // v6.3.0 — CubeSandbox (E2B-compatible KVM microVM) wrapper.
588
+ // Subcommands: doctor | run | list | kill | install-template | config
589
+ const mod = await importCommand('sandbox');
590
+ if (!mod) {
591
+ console.error(chalk.red(` ✗ Could not load sandbox command module`));
592
+ process.exit(EXIT_ERROR);
593
+ return;
594
+ }
595
+ dbg('loaded command module:', 'sandbox');
596
+ await mod.runSandbox(cmdArgs);
597
+ break;
598
+ }
599
+
587
600
  default: {
588
601
  console.error(chalk.red(` ✗ Unknown command: ${cmd}`));
589
602
  showHelp();