@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
package/install.sh CHANGED
@@ -1,26 +1,23 @@
1
1
  #!/usr/bin/env bash
2
2
  #
3
- # install.sh — Cross-platform BizarHarness installer (v5.x — thin shell wrapper).
3
+ # install.sh — Cross-platform BizarHarness installer (Claude Code).
4
4
  #
5
- # v5.xUpdated for issue #7. The install/update flow now:
6
- # 1. On first install: registers the system service that auto-starts
7
- # the dashboard (`bizar service install`).
8
- # 2. On update: stops the running service before files are replaced
9
- # (`bizar service stop` → npm upgrade → `bizar service restart`).
5
+ # v6.3.0Migrated from Cline to Claude Code.
10
6
  #
11
- # Almost all logic still lives in `cli/provision.mjs:runProvision`, which
12
- # is shared between `bizar install` and `bizar update`. This bash script
13
- # exists only for the platform-specific steps that need sudo + a system
14
- # package manager:
7
+ # 1. Detects platform (Linux/macOS/Windows)
8
+ # 2. Installs Node.js 18+, jq, gh, uv, python3 (cross-platform)
9
+ # 3. Installs Claude Code via npm:
10
+ # npm install -g @anthropic-ai/claude-agent-sdk
11
+ # npm install -g @anthropic-ai/claude-code
12
+ # 4. Optionally installs agent-browser (Rust native CLI from vercel-labs)
13
+ # 5. Shells out to `node cli/provision-claude.mjs`, which writes the
14
+ # `~/.claude/` config tree, registers the Bizar MCP server, and
15
+ # copies agent files / skills / commands / hooks / rules.
15
16
  #
16
- # - Linux: ensure node is installed (apt/dnf/pacman/zypper), install uv,
17
- # python3.12, jq, gh, agent-browser (npm), Chrome for Testing.
18
- # - macOS: ensure homebrew is installed; everything else is via brew/npm.
19
- # - Windows: a stub that prints "use install.ps1".
20
- #
21
- # Agent files / plugin copy / cline.json patching / service registration /
22
- # skills install / doctor check are ALL handled by the unified provisioner
23
- # after this script returns.
17
+ # Almost all logic still lives in `cli/provision-claude.mjs:runProvision`,
18
+ # which is shared between `bizar install` and `bizar update`. This bash
19
+ # script exists only for the platform-specific steps that need sudo +
20
+ # a system package manager.
24
21
  #
25
22
  # Flags:
26
23
  # --non-interactive skip prompts (CI safe)
@@ -72,7 +69,7 @@ MODE="install"
72
69
 
73
70
  show_usage() {
74
71
  cat <<'EOF'
75
- install.sh — BizarHarness cross-platform installer
72
+ install.sh — BizarHarness cross-platform installer (Claude Code)
76
73
 
77
74
  Usage:
78
75
  ./install.sh Interactive install (Linux/macOS)
@@ -84,9 +81,10 @@ Usage:
84
81
  ./install.sh --mode=<mode> install | update | install-only-system
85
82
 
86
83
  This script handles platform-specific system dependencies (apt/dnf/pacman/
87
- zypper on Linux, brew on macOS) and then shells to `node cli/provision.mjs`,
88
- which performs agent-file sync, plugin copy, cline.json patching,
89
- service registration, skills install, and the post-install doctor check.
84
+ zypper on Linux, brew on macOS) and then shells to
85
+ `node cli/provision-claude.mjs`, which writes ~/.claude/, registers the
86
+ Bizar MCP server, copies agents / skills / commands / hooks / rules,
87
+ and runs the post-install doctor check.
90
88
  EOF
91
89
  }
92
90
 
@@ -159,7 +157,7 @@ ensure_node() {
159
157
  action "Detected NixOS — Node.js must be installed via nix-shell"
160
158
  warn "Run the following, then re-run this installer:"
161
159
  warn " nix-shell -p nodejs python3 jq gh git"
162
- warn " node cli/provision.mjs"
160
+ warn " node cli/provision-claude.mjs"
163
161
  exit 0
164
162
  ;;
165
163
  void)
@@ -175,6 +173,29 @@ ensure_node() {
175
173
  note "Node.js installed: $(node --version)"
176
174
  }
177
175
 
176
+ # ── Claude Code install ────────────────────────────────────────────────────
177
+ install_claude_code() {
178
+ if have_cmd claude; then
179
+ note "claude $(claude --version 2>/dev/null | head -1) present"
180
+ else
181
+ section "Installing Claude Code"
182
+ if ! have_cmd npm; then
183
+ err "npm not available — install Node.js 18+ first: https://nodejs.org/"
184
+ exit 1
185
+ fi
186
+ action "Installing @anthropic-ai/claude-agent-sdk..."
187
+ dry npm install -g @anthropic-ai/claude-agent-sdk 2>&1 || \
188
+ warn "claude-agent-sdk install failed — retry later: npm install -g @anthropic-ai/claude-agent-sdk"
189
+ action "Installing @anthropic-ai/claude-code..."
190
+ dry npm install -g @anthropic-ai/claude-code 2>&1
191
+ if have_cmd claude; then
192
+ note "claude $(claude --version 2>/dev/null | head -1) installed"
193
+ else
194
+ warn "claude CLI not found on PATH after install — check npm global bin dir"
195
+ fi
196
+ fi
197
+ }
198
+
178
199
  # ── Dependency detection + install (cross-platform) ────────────────────────
179
200
  check_deps() {
180
201
  section "Checking dependencies"
@@ -194,7 +215,7 @@ install_agent_browser() {
194
215
  # the v5.x browser-harness (Python CDP wrapper). Installs via npm.
195
216
  #
196
217
  # If npm is not available, this is a soft-fail: agent-browser is
197
- # optional, and `cli/provision.mjs:ensureAgentBrowser` will retry it
218
+ # optional, and `cli/provision-claude.mjs:ensureAgentBrowser` will retry it
198
219
  # once npm is available.
199
220
  if have_cmd agent-browser; then
200
221
  local ab_ver
@@ -305,7 +326,7 @@ install_missing_deps_linux() {
305
326
  warn "NixOS detected — LightRAG and other uv tools require manual setup"
306
327
  warn " After nix-shell: nix-shell -p nodejs python3 jq gh git"
307
328
  warn " Then run: uv tool install \"lightrag-hku[api]\""
308
- warn " And re-run this installer: node cli/provision.mjs"
329
+ warn " And re-run this installer: node cli/provision-claude.mjs"
309
330
  return 0
310
331
  ;;
311
332
  esac
@@ -337,15 +358,13 @@ install_service() {
337
358
  # We still call it from here because the bash script may run standalone
338
359
  # (e.g. for first-boot provisioning before the npm package is set up).
339
360
  #
340
- # v5.xissue #7: On first install, register the service so the
341
- # dashboard auto-starts at login. On update, the running service is
342
- # stopped by the provisioner before files are replaced, then restarted
343
- # by the provisioner after — see cli/provision.mjs. This function
344
- # covers the FIRST install path only.
361
+ # v6.3.0Claude Code does NOT have an out-of-process "server" the way
362
+ # Cline did, so we skip `bizar service install` here. The dashboard
363
+ # (bizar-dash) is launched via `bizar dash start --bg` instead.
345
364
  local bin="$REPO_DIR/cli/bin.mjs"
346
365
  if [ ! -f "$bin" ]; then
347
366
  warn "cli/bin.mjs not found — service registration deferred"
348
- warn " (will complete when `bizar service install` is run later)"
367
+ warn " (will complete when \`bizar service install\` is run later)"
349
368
  return 0
350
369
  fi
351
370
  if [ "$DRY_RUN" -eq 1 ]; then
@@ -369,15 +388,15 @@ print_banner() {
369
388
  section "Install complete"
370
389
  echo ""
371
390
  echo -e "${BOLD}${CYAN}┌────────────────────────────────────────────────────────────┐${NC}"
372
- echo -e "${BOLD}${CYAN}│${NC} ${BOLD}BizarHarness ready.${NC} │"
391
+ echo -e "${BOLD}${CYAN}│${NC} ${BOLD}BizarHarness ready (Claude Code).${NC} │"
373
392
  echo -e "${BOLD}${CYAN}│${NC} │"
374
- echo -e "${BOLD}${CYAN}│${NC} ${GREEN}✓${NC} Cross-platform installer v4.4.7 │"
393
+ echo -e "${BOLD}${CYAN}│${NC} ${GREEN}✓${NC} Cross-platform installer v6.3.0 │"
375
394
  echo -e "${BOLD}${CYAN}│${NC} │"
376
395
  echo -e "${BOLD}${CYAN}│${NC} Dashboard: ${CYAN}$dashboard_url${NC} │"
377
396
  echo -e "${BOLD}${CYAN}│${NC} │"
378
397
  echo -e "${BOLD}${CYAN}│${NC} ${DIM}Next:${NC} │"
379
- echo -e "${BOLD}${CYAN}│${NC} ${DIM} 1. Restart cline to pick up new config${NC} │"
380
- echo -e "${BOLD}${CYAN}│${NC} ${DIM} 2. Run /connect in cline to add API keys${NC} │"
398
+ echo -e "${BOLD}${CYAN}│${NC} ${DIM} 1. Restart claude to pick up new config${NC} │"
399
+ echo -e "${BOLD}${CYAN}│${NC} ${DIM} 2. Run \`claude auth login\` to add API keys${NC} │"
381
400
  echo -e "${BOLD}${CYAN}│${NC} ${DIM} 3. Run 'bizar dash start' to launch the dashboard${NC} │"
382
401
  echo -e "${BOLD}${CYAN}│${NC} ${DIM} 4. Visit $dashboard_url in your browser${NC} │"
383
402
  echo -e "${BOLD}${CYAN}└────────────────────────────────────────────────────────────┘${NC}"
@@ -393,6 +412,7 @@ install_linux() {
393
412
  note "Detected Linux ($(uname -m))"
394
413
  ensure_node
395
414
  check_deps
415
+ install_claude_code
396
416
  install_missing_deps_linux
397
417
  install_agent_browser
398
418
  install_service
@@ -402,6 +422,7 @@ install_macos() {
402
422
  note "Detected macOS ($(uname -m))"
403
423
  check_deps
404
424
  install_missing_deps_macos
425
+ install_claude_code
405
426
  install_agent_browser
406
427
  install_service
407
428
  }
@@ -417,7 +438,7 @@ main() {
417
438
  fi
418
439
 
419
440
  echo ""
420
- echo -e "${BOLD}${CYAN} ⚡ BizarHarness Installer v6.0.0${NC}"
441
+ echo -e "${BOLD}${CYAN} ⚡ BizarHarness Installer v6.3.0 (Claude Code)${NC}"
421
442
  if [ "$UPDATE_MODE" -eq 1 ]; then
422
443
  echo -e " ${DIM}Update mode${NC}"
423
444
  fi
@@ -441,16 +462,17 @@ main() {
441
462
  esac
442
463
 
443
464
  # ── Hand off to the unified provisioner (Node) ─────────────────────────
444
- # All cross-OS work (agent files, plugin copy, cline.json patching,
445
- # skills install, doctor check) lives in `cli/provision.mjs:runProvision`.
446
- # It's idempotent — skipping it (e.g. via --install-only-system) is fine
447
- # for first-boot scenarios where the npm package isn't yet set up.
465
+ # All cross-OS work (agent files, command copy, ~/.claude/ settings,
466
+ # MCP server registration, skills/rules/hooks mirror) lives in
467
+ # `cli/provision-claude.mjs:runProvision`. It's idempotent — skipping
468
+ # it (e.g. via --install-only-system) is fine for first-boot scenarios
469
+ # where the npm package isn't yet set up.
448
470
  if [ "$MODE" = "install-only-system" ]; then
449
471
  note "skipped node provisioner (--mode=install-only-system)"
450
472
  exit 0
451
473
  fi
452
474
 
453
- if [ -f "$REPO_DIR/cli/provision.mjs" ]; then
475
+ if [ -f "$REPO_DIR/cli/provision-claude.mjs" ]; then
454
476
  echo ""
455
477
  section "Running unified provisioner"
456
478
  local args=(--mode "$MODE")
@@ -459,7 +481,7 @@ main() {
459
481
  [ "$NON_INTERACTIVE" -eq 1 ] && args+=(--yes)
460
482
  # `set +e` so we capture the provisioner's exit code and surface it.
461
483
  set +e
462
- node "$REPO_DIR/cli/provision.mjs" "${args[@]}"
484
+ node "$REPO_DIR/cli/provision-claude.mjs" "${args[@]}"
463
485
  local rc=$?
464
486
  set -e
465
487
  if [ "$rc" -ne 0 ]; then
@@ -468,9 +490,9 @@ main() {
468
490
  fi
469
491
  print_banner
470
492
  else
471
- warn "cli/provision.mjs not found — agent files / plugin / cline.json"
493
+ warn "cli/provision-claude.mjs not found — agent files / MCP / settings.json"
472
494
  warn " were NOT synced. Run \`bizar install\` from a checkout to fix."
473
495
  fi
474
496
  }
475
497
 
476
- main "$@"
498
+ main "$@"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@polderlabs/bizar",
3
- "version": "6.2.4",
4
- "description": "Norse-pantheon multi-agent system for cline13 agents across 4 cost tiers with cost-aware routing, plans, and a configurable agent harness. v4 ships as a single npm package bundling the dashboard server, cline plugin, and typed SDK.",
3
+ "version": "6.3.0",
4
+ "description": "Norse-pantheon multi-agent system for Claude Code 14 agents across 4 cost tiers with cost-aware routing, plans, and a configurable agent harness. Ships as a single npm package with the dashboard server, Claude Code MCP server, and typed SDK.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "bizar": "cli/bin.mjs"
@@ -9,13 +9,12 @@
9
9
  "files": [
10
10
  "cli/",
11
11
  "bizar-dash/",
12
- "plugins/",
13
12
  "packages/sdk/",
13
+ ".claude/",
14
14
  "config/",
15
15
  "templates/",
16
16
  "scripts/",
17
- "install.sh",
18
- "cli/browser-harness-up.sh"
17
+ "install.sh"
19
18
  ],
20
19
  "scripts": {
21
20
  "typecheck": "tsc --noEmit",
@@ -24,12 +23,13 @@
24
23
  "test:sdk": "node_modules/.bin/vitest run --root packages/sdk",
25
24
  "test:web": "cd bizar-dash && npx vitest run",
26
25
  "test:sdk:watch": "node_modules/.bin/vitest --root packages/sdk",
27
- "test": "npm run typecheck && npm run test:sdk && node --test cli/install.test.mjs cli/provision.test.mjs cli/commands/validate.test.mjs cli/commands/setup-provider.test.mjs cli/commands/rca.test.mjs && bun test plugins/bizar/tests/loop.test.ts plugins/bizar/tests/block.test.ts plugins/bizar/tests/stall-think.test.ts plugins/bizar/tests/tools/bg-get-comments.test.ts plugins/bizar/tests/tools/bg-spawn-delegation.test.ts plugins/bizar/tests/tools/cline-runner.test.ts plugins/bizar/tests/settings.test.ts plugins/bizar/tests/commands.test.ts plugins/bizar/tests/commands-impl.test.ts plugins/bizar/tests/tools/plan-action.test.ts plugins/bizar/tests/tools/wait-for-feedback.test.ts plugins/bizar/tests/tools/read-glyph-feedback.test.ts plugins/bizar/tests/reasoning-clean.test.ts plugins/bizar/tests/key-rotation.test.ts && node bizar-dash/tests/smoke-v2.mjs && node --test bizar-dash/tests/path-safe.test.mjs bizar-dash/tests/tmux-wrap.test.mjs bizar-dash/tests/cline-sessions-detail.test.mjs bizar-dash/tests/cline-runner.test.mjs bizar-dash/tests/mod-instructions.node.test.mjs bizar-dash/tests/mod-upgrade.node.test.mjs bizar-dash/tests/graphify-mod-spawn.node.test.mjs bizar-dash/tests/no-agent-browser.node.test.mjs bizar-dash/tests/providers-store-backup-keys.node.test.mjs bizar-dash/tests/dashboard-ports.test.mjs bizar-dash/tests/submit-feedback.test.mjs bizar-dash/tests/yaml.test.mjs bizar-dash/tests/memory-store.test.mjs bizar-dash/tests/memory-schema.test.mjs bizar-dash/tests/memory-secrets.test.mjs bizar-dash/tests/memory-git.test.mjs bizar-dash/tests/memory-sync.test.mjs bizar-dash/tests/obsidian-back-compat.test.mjs bizar-dash/tests/memory-lightrag.test.mjs bizar-dash/tests/memory-config.test.mjs bizar-dash/tests/memory-cli.test.mjs bizar-dash/tests/memory-cli-readlistdelete.test.mjs bizar-dash/tests/memory-cli-setup.test.mjs bizar-dash/tests/memory-conflicts.test.mjs bizar-dash/tests/memory-namespace.test.mjs bizar-dash/tests/memory-path-safety.test.mjs bizar-dash/tests/memory-protocol-drift.test.mjs bizar-dash/tests/memory-roundtrip.test.mjs bizar-dash/tests/cli-bugfixes.test.mjs bizar-dash/tests/server-bugfixes.test.mjs bizar-dash/tests/frontend-bugfixes.test.mjs",
26
+ "test": "npm run typecheck && npm run test:sdk && node --test cli/install.test.mjs cli/provision.test.mjs cli/commands/setup-provider.test.mjs cli/commands/rca.test.mjs && node --test bizar-dash/tests/path-safe.test.mjs",
28
27
  "build": "npm run build:sdk && npm run build:dash",
29
28
  "prepublishOnly": "npm run build"
30
29
  },
31
30
  "keywords": [
32
- "cline",
31
+ "claude-code",
32
+ "claude-agent-sdk",
33
33
  "ai-agent",
34
34
  "norse",
35
35
  "multi-agent",
@@ -37,7 +37,8 @@
37
37
  "cli",
38
38
  "platform",
39
39
  "mods",
40
- "schedules"
40
+ "schedules",
41
+ "mcp"
41
42
  ],
42
43
  "license": "MIT",
43
44
  "engines": {
@@ -45,6 +46,7 @@
45
46
  "bun": ">=1.1.0"
46
47
  },
47
48
  "dependencies": {
49
+ "@polderlabs/bizar-sdk": "^0.4.0",
48
50
  "@mdx-js/mdx": "^3.1.1",
49
51
  "@mdx-js/react": "^3.1.1",
50
52
  "@opentelemetry/api": "^1.9.1",
@@ -77,8 +79,14 @@
77
79
  "ws": "^8.18.0",
78
80
  "zod": "4.1.8"
79
81
  },
80
- "peerDependencies": {},
81
- "peerDependenciesMeta": {},
82
+ "peerDependencies": {
83
+ "@anthropic-ai/claude-agent-sdk": "*"
84
+ },
85
+ "peerDependenciesMeta": {
86
+ "@anthropic-ai/claude-agent-sdk": {
87
+ "optional": true
88
+ }
89
+ },
82
90
  "devDependencies": {
83
91
  "@testing-library/jest-dom": "^6.9.1",
84
92
  "@testing-library/react": "^16.3.2",
@@ -108,6 +116,6 @@
108
116
  },
109
117
  "homepage": "https://github.com/DrB0rk/BizarHarness#readme",
110
118
  "optionalDependencies": {
111
- "@cline/sdk": "^0.0.58"
119
+ "@anthropic-ai/claude-agent-sdk": "^0.1.0"
112
120
  }
113
121
  }
@@ -1,66 +1,70 @@
1
1
  # packages/sdk/ — Architecture
2
2
 
3
- > TypeScript SDK wrapper for the Bizar Harness. Provides typed
4
- > access to Cline events and HTTP responses. The plugin (Layer 0)
5
- > embeds ClineCore in-process and does NOT use this SDK; the
6
- > dashboard's HTTP client uses this SDK for legacy compat.
3
+ > TypeScript SDK for the Bizar Harness. Provides the Claude Code MCP
4
+ > server, memory vault, dangerous-pattern scanner, tool-call fingerprint,
5
+ > and shared helpers consumed by both the dashboard and the runtime.
6
+ > This is the only entry point into Bizar for Claude Code; the legacy
7
+ > Cline plugin runtime has been removed (v6.3.0).
7
8
 
8
9
  ## Top-level layout
9
10
 
10
11
  ```
11
12
  packages/sdk/
12
13
  ├── src/
13
- │ ├── cline.ts # HTTP client (legacy compat)
14
- │ ├── cline-events.ts # Event shape definitions
15
- │ ├── cline-types.ts # Type definitions
16
- ├── client.ts # Higher-level client wrapper
17
- │ ├── errors.ts # Discriminated error model
18
- ├── events.ts # Event stream helpers
19
- │ ├── index.ts # Public API surface
20
- ├── types.ts # Shared types
21
- │ └── version.ts # SDK version constant
22
- ├── tests/
23
- │ ├── client.test.ts # vitest
24
- │ ├── errors.test.ts
25
- │ └── events.test.ts
14
+ │ ├── index.ts # Public API surface (re-exports)
15
+ │ ├── mcp/
16
+ ├── server.ts # createBizarMcpServer / BIZAR_TOOLS
17
+ │ └── bin.ts # stdio MCP server entry (bizar-mcp)
18
+ │ ├── memory/
19
+ │ └── index.ts # Obsidian-compatible vault helpers
20
+ │ ├── dangerous-patterns.ts # 36-pattern destructive-command scanner
21
+ └── fingerprint.ts # Tool-call fingerprint (SHA256)
26
22
  └── package.json
27
23
  ```
28
24
 
29
25
  ## Public contract
30
26
 
31
27
  ```ts
32
- import { ClineSdk, parseEvent, isBizarError } from "@polderlabs/bizar-sdk";
33
-
34
- const sdk = new ClineSdk({ baseUrl: "http://127.0.0.1:4321", password });
35
- const events = await sdk.events.subscribe({ sessionID });
36
- for await (const event of events) {
37
- if (isBizarError(event)) console.error("error:", event);
38
- else console.log("event:", parseEvent(event));
39
- }
28
+ import {
29
+ // Memory vault (Obsidian-compatible markdown)
30
+ readNote, writeNote, listNotes, searchNotes,
31
+ // Dangerous-pattern scanner
32
+ checkDangerous, listDangerousPatterns,
33
+ // Tool-call fingerprint
34
+ fingerprint,
35
+ // MCP server (Claude Code's only path into the SDK)
36
+ createBizarMcpServer, BIZAR_TOOLS,
37
+ } from "@polderlabs/bizar-sdk";
40
38
  ```
41
39
 
42
40
  ## Key invariants
43
41
 
44
- - SDK is HTTP-only (legacy compat). New code uses `@cline/core`
45
- in-process for both plugin and dashboard.
46
- - Discriminated error model via `isBizarError(event)`.
47
- - Event shapes are versioned (current: `runtime.team.progress.v1`).
48
- - Tests use vitest (`bun test` doesn't pick them up — see
49
- test files for vitest config).
42
+ - This package is consumed **only** by the `bizar-mcp` stdio binary
43
+ (registered in `~/.claude/settings.json`) and by `plugins/bizar`
44
+ (back-compat shim that re-exports the SDK surface).
45
+ - Claude Code has no in-process plugin API; MCP servers are the
46
+ sole integration path. Anything that previously required Cline's
47
+ `AgentPlugin` is now expressed as MCP tools or skills.
48
+ - Memory vault is plain markdown with YAML frontmatter; the SDK
49
+ provides typed read/write/list/search so the dashboard, hooks,
50
+ and MCP tools all use the same backend.
51
+ - Discriminated error model for memory + dangerous-pattern results
52
+ (`{ ok: true, data } | { ok: false, error }`).
50
53
 
51
54
  ## Versioning
52
55
 
53
56
  - `@polderlabs/bizar-sdk` follows semver.
54
- - Beta releases: `0.x.0-beta.N` (e.g. `0.2.0-beta.4`).
55
- - Stable releases: `0.x.0` once v0.2 stabilizes.
57
+ - Current: `0.4.0` (Claude Code-native; MCP-first).
56
58
 
57
59
  ## Verification
58
60
 
59
- - `make check` — TS compile + tests (incl. vitest)
60
- - `make e2e` — SDK wrapper integration (plugin ↔ dashboard
61
- roundtrip)
61
+ - `make check` — TS compile + vitest
62
+ - `make test` — vitest over the SDK
63
+ - `bun run packages/sdk/src/mcp/bin.ts` — smoke test the MCP server
62
64
 
63
65
  ## See also
64
66
 
65
67
  - [docs/architecture.md](../../docs/architecture.md) — layer model
66
68
  - [@polderlabs/bizar-sdk on npm](https://www.npmjs.com/package/@polderlabs/bizar-sdk)
69
+ - [docs/migration-guide.md](../../docs/migration-guide.md) — v6.3.0
70
+ Claude Code migration
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@polderlabs/bizar-sdk",
3
+ "version": "0.4.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "@polderlabs/bizar-sdk",
9
+ "version": "0.4.0",
10
+ "dependencies": {
11
+ "zod": "^3.23.0"
12
+ },
13
+ "peerDependencies": {
14
+ "@anthropic-ai/claude-agent-sdk": "*"
15
+ },
16
+ "peerDependenciesMeta": {
17
+ "@anthropic-ai/claude-agent-sdk": {
18
+ "optional": true
19
+ }
20
+ }
21
+ },
22
+ "node_modules/zod": {
23
+ "version": "3.25.76",
24
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
25
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
26
+ "license": "MIT",
27
+ "funding": {
28
+ "url": "https://github.com/sponsors/colinhacks"
29
+ }
30
+ }
31
+ }
32
+ }
@@ -1,20 +1,30 @@
1
1
  {
2
2
  "name": "@polderlabs/bizar-sdk",
3
- "version": "0.3.3",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
+ "bin": {
8
+ "bizar-mcp": "dist/mcp/bin.js"
9
+ },
7
10
  "exports": {
8
11
  ".": "./dist/index.js",
9
- "./cline": "./dist/cline.js"
12
+ "./memory": "./dist/memory/index.js",
13
+ "./mcp": "./dist/mcp/server.js",
14
+ "./dangerous-patterns": "./dist/dangerous-patterns.js"
10
15
  },
11
- "files": ["dist"],
16
+ "files": [
17
+ "dist"
18
+ ],
12
19
  "peerDependencies": {
13
- "@cline/sdk": "*"
20
+ "@anthropic-ai/claude-agent-sdk": "*"
14
21
  },
15
22
  "peerDependenciesMeta": {
16
- "@cline/sdk": {
23
+ "@anthropic-ai/claude-agent-sdk": {
17
24
  "optional": true
18
25
  }
26
+ },
27
+ "dependencies": {
28
+ "zod": "^3.23.0"
19
29
  }
20
30
  }
@@ -5,20 +5,10 @@
5
5
  * + OpenFang `crates/openfang-skills/src/verify.rs` + OpenClaw
6
6
  * `src/security/external-content.ts:28-43`.
7
7
  *
8
- * Detects dangerous commands and blocks/requires approval before
9
- * tool execution. Every tool that takes a "command" or "path"
10
- * argument runs through `checkDangerous()` before being dispatched.
11
- *
12
- * Categories:
13
- * - Filesystem destruction (rm -rf, mkfs, dd, fork bombs)
14
- * - Privilege escalation (sudo, su, chmod 777, chown)
15
- * - Network exfiltration (curl to metadata, wget, nc backdoors)
16
- * - Process control (kill -9 1, pkill, shutdown)
17
- * - Crypto mining (xmrig, minerd)
18
- * - Path traversal in file paths (../../etc/passwd, ~/.ssh/)
19
- *
20
- * v6.0.0 — initial patterns. Tuned to catch the common exploits
21
- * without false positives on legitimate dev work.
8
+ * Detects dangerous commands and blocks/requires approval before tool
9
+ * execution. Every tool that takes a "command" or "path" argument runs
10
+ * through `checkDangerous()` before being dispatched. Framework-agnostic
11
+ * — used by both the SDK MCP server and any Claude Code hook scripts.
22
12
  */
23
13
 
24
14
  export type ApprovalDecision = "allow" | "require-approval" | "deny";
@@ -30,8 +20,6 @@ export interface ApprovalCheck {
30
20
  pattern?: string;
31
21
  }
32
22
 
33
- // 30+ patterns from Hermes + OpenFang + OpenClaw. Catches the common
34
- // dangerous operations in coding-agent contexts.
35
23
  const DANGEROUS_PATTERNS: Array<{ name: string; pattern: RegExp; decision: ApprovalDecision; reason: string }> = [
36
24
  // Filesystem destruction
37
25
  { name: "rm-rf-root", pattern: /\brm\s+(-\w*r\w*f\w*\s+)*\/\s*$/i, decision: "deny", reason: "Recursive delete of root filesystem" },
@@ -62,10 +50,10 @@ const DANGEROUS_PATTERNS: Array<{ name: string; pattern: RegExp; decision: Appro
62
50
  { name: "shutdown", pattern: /\b(shutdown|halt|poweroff|reboot)\b/i, decision: "deny", reason: "System shutdown" },
63
51
  { name: "init-0", pattern: /\binit\s+0\b/i, decision: "deny", reason: "init 0 (shutdown)" },
64
52
 
65
- // Crypto mining (common malware)
53
+ // Crypto mining
66
54
  { name: "xmrig", pattern: /\b(xmrig|minerd|cpuminer|cgminer)\b/i, decision: "deny", reason: "Crypto miner" },
67
55
 
68
- // Package management (often exploited)
56
+ // Package management
69
57
  { name: "pip-install-shell", pattern: /\bpip\s+install\s+.*\|\s*(ba)?sh\b/i, decision: "deny", reason: "pip install piped to shell" },
70
58
  { name: "npm-install-shell", pattern: /\bnpm\s+install\s+.*\|\s*(ba)?sh\b/i, decision: "deny", reason: "npm install piped to shell" },
71
59
 
@@ -90,15 +78,7 @@ const DANGEROUS_PATTERNS: Array<{ name: string; pattern: RegExp; decision: Appro
90
78
  { name: "system-prompt-leak", pattern: /reveal\s+(your\s+)?system\s+prompt/i, decision: "deny", reason: "Prompt extraction attempt" },
91
79
  ];
92
80
 
93
- /**
94
- * Check a tool call's arguments for dangerous patterns.
95
- * Returns a decision (allow / require-approval / deny) and a reason.
96
- *
97
- * The check is applied to the union of all string-typed arguments,
98
- * so the caller doesn't need to know which arg is the "command".
99
- */
100
81
  export function checkDangerous(args: Record<string, unknown>): ApprovalCheck {
101
- // Collect all string values from the args object
102
82
  const text = collectStrings(args);
103
83
  if (!text) return { decision: "allow" };
104
84
 
@@ -128,12 +108,10 @@ function collectStrings(value: unknown, parts: string[] = []): string {
128
108
  return parts.join("\n");
129
109
  }
130
110
 
131
- /** Get all pattern names (for audit / reporting). */
132
111
  export function listDangerousPatterns(): string[] {
133
112
  return DANGEROUS_PATTERNS.map((p) => p.name);
134
113
  }
135
114
 
136
- /** Count of patterns in each category. */
137
115
  export function getDangerousPatternStats(): {
138
116
  total: number;
139
117
  deny: number;
Binary file