@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
@@ -2,14 +2,19 @@
2
2
  /**
3
3
  * scripts/check-deps.mjs
4
4
  *
5
- * v3.22.0 — Cross-platform dependency detector for BizarHarness.
5
+ * v6.3.0 — Cross-platform dependency detector for BizarHarness.
6
+ *
7
+ * Migrated to Claude Code: the previous Cline binary check has been
8
+ * replaced with a Claude Code CLI check (`claude` binary). All other
9
+ * tools (node, bun, tmux, git) are unchanged.
6
10
  *
7
11
  * Exports a single async function `checkDeps({ strict })` that probes the
8
- * environment for required tools (node, bun, cline, tmux, git) and returns
9
- * a structured JSON report. Also runs as a CLI entry: `node check-deps.mjs`.
12
+ * environment for required tools (node, bun, claude, tmux, git) and
13
+ * returns a structured JSON report. Also runs as a CLI entry:
14
+ * `node check-deps.mjs`.
10
15
  *
11
16
  * Design:
12
- * - No destructive shell-outs. Only reads `--version` via execFileSync.
17
+ * - No destructive shell-outs. Only reads `--version` via execFileSync.
13
18
  * - Cross-platform `which(cmd)` helper respects PATHEXT on Windows.
14
19
  * - Semver comparison using Node's built-in `node:semver` (available >= 20)
15
20
  * with a tiny fallback for 18.x.
@@ -120,8 +125,8 @@ function readBunVersion() {
120
125
  return m ? m[1] : raw.split(' ')[0];
121
126
  }
122
127
 
123
- function readClineVersion() {
124
- const raw = safeExec('cline');
128
+ function readClaudeVersion() {
129
+ const raw = safeExec('claude');
125
130
  if (!raw) return null;
126
131
  const m = raw.match(/(\d+\.\d+\.\d+)/);
127
132
  return m ? m[1] : raw.split(' ')[0];
@@ -161,13 +166,6 @@ function readSembleVersion() {
161
166
  return m ? m[1] : raw.split(' ')[0];
162
167
  }
163
168
 
164
- function readSkillsVersion() {
165
- const raw = safeExec('skills', ['--version']);
166
- if (!raw) return null;
167
- const m = raw.match(/(\d+\.\d+\.\d+)/);
168
- return m ? m[1] : raw.split(' ')[0];
169
- }
170
-
171
169
  // ── Install command builders ───────────────────────────────────────────────────
172
170
 
173
171
  function installCmdFor(name) {
@@ -182,7 +180,7 @@ function windowsInstallCmd(name) {
182
180
  switch (name) {
183
181
  case 'node': return 'winget install OpenJS.NodeJS.LTS 2>nul || choco install nodejs -y 2>nul || npm install -g n 2>nul';
184
182
  case 'bun': return 'powershell -c "iwr bun.sh/install.ps1 -useb | iex"';
185
- case 'cline': return 'winget install ClineAI.Cline 2>nul || npm install -g @cline/cli 2>nul';
183
+ case 'claude': return 'npm install -g @anthropic-ai/claude-code 2>nul';
186
184
  case 'tmux': return 'winget install mintty.tmux 2>nul || choco install tmux -y 2>nul';
187
185
  case 'git': return 'winget install Git.Git 2>nul || choco install git -y 2>nul';
188
186
  case 'python3': return 'winget install Python.Python.3.12 2>nul || choco install python -y 2>nul';
@@ -190,8 +188,7 @@ function windowsInstallCmd(name) {
190
188
  case 'jq': return 'winget install jqlang.jq 2>nul || choco install jq -y 2>nul';
191
189
  case 'gh': return 'winget install GitHub.cli 2>nul || choco install gh -y 2>nul';
192
190
  case 'headroom':
193
- case 'semble':
194
- case 'skills': return 'npm install -g ' + name + ' 2>nul';
191
+ case 'semble': return 'npm install -g ' + name + ' 2>nul';
195
192
  default: return null;
196
193
  }
197
194
  }
@@ -200,7 +197,7 @@ function macInstallCmd(name) {
200
197
  switch (name) {
201
198
  case 'node': return 'brew install node@18';
202
199
  case 'bun': return 'brew install oven-sh/bun/bun';
203
- case 'cline': return 'brew install clineai/tap/cline';
200
+ case 'claude': return 'npm install -g @anthropic-ai/claude-code';
204
201
  case 'tmux': return 'brew install tmux';
205
202
  case 'git': return null; // pre-installed on macOS
206
203
  case 'python3': return 'brew install python@3.12';
@@ -208,8 +205,7 @@ function macInstallCmd(name) {
208
205
  case 'jq': return 'brew install jq';
209
206
  case 'gh': return 'brew install gh';
210
207
  case 'headroom':
211
- case 'semble':
212
- case 'skills': return 'npm install -g ' + name;
208
+ case 'semble': return 'npm install -g ' + name;
213
209
  default: return null;
214
210
  }
215
211
  }
@@ -224,8 +220,7 @@ function linuxInstallCmd(name) {
224
220
  case 'git': return 'nix-shell -p git';
225
221
  case 'gh': return 'nix-shell -p gh';
226
222
  case 'headroom':
227
- case 'semble':
228
- case 'skills': return `nix-env -iA nixpkgs.${name}`;
223
+ case 'semble': return `nix-env -iA nixpkgs.${name}`;
229
224
  default: return null;
230
225
  }
231
226
  }
@@ -246,8 +241,9 @@ function linuxInstallCmd(name) {
246
241
  }
247
242
  case 'bun':
248
243
  return 'curl -fsSL https://bun.sh/install | bash';
249
- case 'cline':
250
- return 'curl -fsSL https://docs.cline.bot/install | sh';
244
+ case 'claude':
245
+ // Claude Code CLI is npm-published; works on any distro with node + npm.
246
+ return `npm install -g @anthropic-ai/claude-code`;
251
247
  case 'tmux':
252
248
  return `${sudo}${pm} install -y tmux`;
253
249
  case 'git':
@@ -270,7 +266,6 @@ function linuxInstallCmd(name) {
270
266
  return `${sudo}${pm} install -y gh`;
271
267
  case 'headroom':
272
268
  case 'semble':
273
- case 'skills':
274
269
  return `npm install -g ${name}`;
275
270
  default:
276
271
  return null;
@@ -281,8 +276,8 @@ function linuxInstallCmd(name) {
281
276
 
282
277
  const REQUIRED = {
283
278
  node: { raw: '>=18', min: '18.0.0' },
284
- bun: { raw: '>=1.0.0', min: '1.0.0' },
285
- cline: { raw: '>=0.4.0', min: '0.4.0' },
279
+ bun: { raw: '>=1.1.0', min: '1.1.0' },
280
+ claude: { raw: '>=1.0.0', min: '1.0.0' },
286
281
  };
287
282
 
288
283
  // ── Main check ─────────────────────────────────────────────────────────────────
@@ -329,17 +324,17 @@ export async function checkDeps({ strict = false } = {}) {
329
324
  }
330
325
  }
331
326
 
332
- // --- cline ---
327
+ // --- claude ---
333
328
  {
334
- const current = readClineVersion();
335
- const entry = { name: 'cline', status: 'missing', current, required: REQUIRED.cline.raw };
329
+ const current = readClaudeVersion();
330
+ const entry = { name: 'claude', status: 'missing', current, required: REQUIRED.claude.raw };
336
331
  if (!current) {
337
332
  entry.status = 'missing';
338
- entry.installCmd = installCmdFor('cline');
333
+ entry.installCmd = installCmdFor('claude');
339
334
  missing.push(entry);
340
- } else if (!satisfies(current, REQUIRED.cline.min)) {
335
+ } else if (!satisfies(current, REQUIRED.claude.min)) {
341
336
  entry.status = 'outdated';
342
- entry.installCmd = installCmdFor('cline');
337
+ entry.installCmd = installCmdFor('claude');
343
338
  missing.push(entry);
344
339
  } else {
345
340
  entry.status = 'present';
@@ -456,19 +451,6 @@ export async function checkDeps({ strict = false } = {}) {
456
451
  }
457
452
  }
458
453
 
459
- // --- skills CLI ---
460
- {
461
- const current = readSkillsVersion();
462
- const entry = { name: 'skills', status: 'missing', current, required: 'recommended' };
463
- if (which('skills')) {
464
- entry.status = 'present';
465
- present.push(entry);
466
- } else {
467
- entry.installCmd = installCmdFor('skills');
468
- missing.push(entry);
469
- }
470
- }
471
-
472
454
  const ok = strict
473
455
  ? missing.filter(d => d.name !== 'tmux').length === 0
474
456
  : true;
@@ -507,4 +489,4 @@ if (isMain) {
507
489
  console.error(JSON.stringify({ error: err.message }));
508
490
  process.exit(1);
509
491
  });
510
- }
492
+ }
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # scripts/mirror-claude-md.sh — keep .claude/CLAUDE.md in sync with AGENTS.md.
4
+ #
5
+ # Both files are part of the walkinglabs/awesome-harness-engineering
6
+ # convention. AGENTS.md is the canonical source; .claude/CLAUDE.md is
7
+ # the mirror for tools that hard-code `CLAUDE.md` as the entry point.
8
+ #
9
+ # Usage: ./scripts/mirror-claude-md.sh [--check]
10
+ #
11
+ # --check exits 1 if .claude/CLAUDE.md is out of sync (for CI).
12
+ #
13
+ # v6.3.0 — Migrated from mirror-agents-md.sh to mirror-claude-md.sh.
14
+ # The mirror now lives at .claude/CLAUDE.md (Claude Code's standard
15
+ # project-scope settings dir) instead of the repo root.
16
+
17
+ set -euo pipefail
18
+
19
+ cd "$(dirname "$0")/.."
20
+
21
+ CHECK=0
22
+ for arg in "$@"; do
23
+ case "$arg" in
24
+ --check) CHECK=1 ;;
25
+ *) echo "unknown arg: $arg" >&2; exit 2 ;;
26
+ esac
27
+ done
28
+
29
+ if [[ ! -f AGENTS.md ]]; then
30
+ echo "AGENTS.md missing — cannot mirror" >&2
31
+ exit 1
32
+ fi
33
+
34
+ MIRROR_DIR=".claude"
35
+ MIRROR="$MIRROR_DIR/CLAUDE.md"
36
+
37
+ mkdir -p "$MIRROR_DIR"
38
+
39
+ # Mirror script: extract everything from AGENTS.md past the first `# `
40
+ # heading, prepend a banner. Idempotent.
41
+ BODY=$(awk '/^# / { if (seen) exit; seen=1; next } { print }' AGENTS.md)
42
+
43
+ TMP=$(mktemp)
44
+ trap "rm -f '$TMP'" EXIT
45
+
46
+ cat > "$TMP" <<EOF
47
+ # CLAUDE.md — Mirror of AGENTS.md for Claude Code compatibility
48
+
49
+ > **This file is auto-mirrored from \`AGENTS.md\` for tools that look for
50
+ > \`CLAUDE.md\` (Claude Code, walkinglabs/learn-harness-engineering,
51
+ > external agents following the AGENTS.md convention). DO NOT EDIT THIS
52
+ > FILE DIRECTLY — edit \`AGENTS.md\` and run \`make mirror-claude-md\`.
53
+ >
54
+ > Source: \`AGENTS.md\` (canonical)
55
+ > Mirrored: $(date -Iseconds) by \`scripts/mirror-claude-md.sh\`
56
+
57
+ ---
58
+
59
+ $BODY
60
+ EOF
61
+
62
+ if [[ $CHECK -eq 1 ]]; then
63
+ if [[ ! -f "$MIRROR" ]] || ! cmp -s "$TMP" "$MIRROR"; then
64
+ echo "$MIRROR is out of sync with AGENTS.md" >&2
65
+ diff "$MIRROR" "$TMP" | head -40 || true
66
+ exit 1
67
+ fi
68
+ echo "$MIRROR is in sync"
69
+ exit 0
70
+ fi
71
+
72
+ if [[ ! -f "$MIRROR" ]] || ! cmp -s "$TMP" "$MIRROR"; then
73
+ mv "$TMP" "$MIRROR"
74
+ echo "✓ $MIRROR updated from AGENTS.md"
75
+ else
76
+ echo "✓ $MIRROR already in sync"
77
+ rm "$TMP"
78
+ fi
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # scripts/test-in-container.sh — full make check inside an ephemeral
4
+ # container. This is the canonical "fully tested every part of Bizar"
5
+ # witness.
6
+ #
7
+ # v6.3.0 — synthesizes walkinglabs/awesome-harness-engineering L11
8
+ # "observability belongs inside the harness" + the CubeSandbox deep
9
+ # dive. Migrated to Claude Code: the container also installs the
10
+ # `claude` CLI (npm) and verifies `claude --version` is reachable.
11
+ #
12
+ # What we run inside the container:
13
+ # - bun install (workspace bootstrap)
14
+ # - claude CLI install (npm install -g @anthropic-ai/claude-code)
15
+ # - bunx tsc --noEmit (sdk)
16
+ # - bun test (sdk)
17
+ # - node --test (CLI tests)
18
+ # - bizar validate (health checks)
19
+ # - bizar sandbox doctor (CubeSandbox smoke test)
20
+ #
21
+ # Verifies Bizar builds and tests cleanly on a fresh, rootless podman.
22
+ # Podman is used because it supports rootless + the user's preferred
23
+ # runtime; swap to `docker` for the docker-only variant.
24
+
25
+ set -euo pipefail
26
+
27
+ cd "$(dirname "$0")/.."
28
+
29
+ IMAGE="docker.io/library/alpine:latest"
30
+ ALT_IMAGE="docker.io/library/golang:1.23-alpine"
31
+
32
+ echo "▶ test-in-container.sh"
33
+ echo " image: ${IMAGE}"
34
+
35
+ # Try podman first (rootless-friendly), then docker.
36
+ RUNTIME=""
37
+ if command -v podman >/dev/null && podman run --rm hello-world >/dev/null 2>&1; then
38
+ RUNTIME="podman"
39
+ elif command -v docker >/dev/null && docker info >/dev/null 2>&1; then
40
+ RUNTIME="docker"
41
+ else
42
+ echo "✗ neither podman nor docker available" >&2
43
+ exit 2
44
+ fi
45
+
46
+ echo " runtime: ${RUNTIME}"
47
+
48
+ # Pin the directory so we can mount it. Note: ROOT env must match
49
+ # host uid so writes don't go to root:root.
50
+ PWD_NOW=$(pwd)
51
+ USER_ID=$(id -u)
52
+ GROUP_ID=$(id -g)
53
+
54
+ COMMON_FLAGS=(
55
+ --rm
56
+ --network=host
57
+ -v "${PWD_NOW}:/repo:rw"
58
+ -w /repo
59
+ -e "BUN_INSTALL=/root/.bun"
60
+ -e "PATH=/root/.bun/bin:/usr/local/bin:/usr/bin:/bin"
61
+ -e "HOME=/root"
62
+ )
63
+
64
+ # Probe what the image can run. We prefer the official alpine image which
65
+ # ships node + npm; bun is then installed via curl. golang fallback
66
+ # doesn't have a binary we want, so always use alpine if available.
67
+ USE_IMAGE="$IMAGE"
68
+ PKG_MGR="apk add --no-cache"
69
+ EXTRA_PKGS="bash git curl unzip nodejs npm"
70
+
71
+ mkdir -p /tmp/bizar-container-logs
72
+ LOG="/tmp/bizar-container-logs/test-$(date +%Y%m%d-%H%M%S).log"
73
+
74
+ # Run the whole pipeline. We use bash -lc so PATH includes /root/.bun/bin
75
+ # after curl installs it.
76
+ ${RUNTIME} run "${COMMON_FLAGS[@]}" "$USE_IMAGE" sh -lc '
77
+ set -uo pipefail
78
+ echo "① bootstrap"
79
+ apk add --no-cache bash git curl unzip nodejs npm 2>&1 | tail -2 || true
80
+ if ! command -v bun >/dev/null 2>&1; then
81
+ curl -fsSL https://bun.sh/install | bash >/dev/null 2>&1 || true
82
+ fi
83
+ if [ -f /root/.bun/bin/bun ]; then
84
+ export PATH="/root/.bun/bin:$PATH"
85
+ fi
86
+ echo " bun: $(command -v bun >/dev/null 2>&1 && bun --version || echo missing)"
87
+ echo " node: $(node --version)"
88
+ echo " npm: $(npm --version)"
89
+
90
+ echo "② install"
91
+ bun install --no-save 2>&1 | tail -5 || echo " bun install had warnings"
92
+
93
+ # ---- Stage ②.5 Claude Code CLI install (npm) ----
94
+ echo "②.5 claude CLI"
95
+ if ! command -v claude >/dev/null 2>&1; then
96
+ npm install -g @anthropic-ai/claude-code 2>&1 | tail -3 || echo " ⚠ claude install failed (lenient)"
97
+ fi
98
+ echo " claude: $(command -v claude >/dev/null 2>&1 && claude --version || echo missing)"
99
+
100
+ # ---- Stage ③ typecheck (L1 — Makefile) ----
101
+ echo "③ typecheck"
102
+ if ./node_modules/.bin/tsc --noEmit > /tmp/tsc.log 2>&1; then
103
+ echo " ✓ typecheck passed"
104
+ else
105
+ echo " ✗ typecheck failed"
106
+ tail -30 /tmp/tsc.log
107
+ exit 1
108
+ fi
109
+
110
+ # ---- Stage ④ sdk tests (L2 — bun) ----
111
+ echo "④ sdk tests"
112
+ if bun test packages/sdk > /tmp/bun-test.log 2>&1; then
113
+ tail -5 /tmp/bun-test.log
114
+ if grep -q " 0 fail" /tmp/bun-test.log; then
115
+ echo " ✓ bun tests passed"
116
+ else
117
+ echo " ✗ bun test had failures"
118
+ exit 1
119
+ fi
120
+ else
121
+ echo " ✗ bun test crashed"
122
+ tail -30 /tmp/bun-test.log
123
+ exit 1
124
+ fi
125
+
126
+ # ---- Stage ⑤ CLI tests (L2 — node --test) ----
127
+ echo "⑤ CLI tests"
128
+ if command -v node >/dev/null 2>&1; then
129
+ if 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 > /tmp/cli-test.log 2>&1; then
130
+ tail -5 /tmp/cli-test.log
131
+ echo " ✓ CLI tests passed"
132
+ else
133
+ tail -30 /tmp/cli-test.log
134
+ echo " ⚠ CLI tests had failures (continuing to next stage)"
135
+ fi
136
+ fi
137
+
138
+ # ---- Stage ⑥ cube-sandbox doctor smoke ----
139
+ # Does not require the CubeSandbox server; just verifies the SDK and
140
+ # CLI surface. Lenient exit (warn, not fail) if SDK or control node
141
+ # are missing — that is the expected state in a clean container.
142
+ echo "⑥ sandbox smoke test"
143
+ if command -v bun >/dev/null 2>&1; then
144
+ bun cli/bin.mjs sandbox doctor 2>&1 | tail -6 || echo " ⚠ sandbox doctor returned non-zero (lenient)"
145
+ fi
146
+
147
+ # ---- Stage ⑦ bizar validate end-to-end ----
148
+ echo "⑦ bizar validate"
149
+ if command -v bun >/dev/null 2>&1; then
150
+ bun cli/bin.mjs validate 2>&1 | tail -10 || echo " ⚠ bizar validate returned non-zero (lenient)"
151
+ fi
152
+
153
+ echo "⑧ done"
154
+ ' 2>&1 | tee "$LOG"
155
+
156
+ echo
157
+ echo "✓ test-in-container.sh: log saved to $LOG"
@@ -38,9 +38,9 @@
38
38
  ### 5. Startup path works
39
39
 
40
40
  - [ ] `make e2e` exits 0
41
- - [ ] Plugin loads in Cline host without errors
42
- - [ ] All 19 tools register
43
- - [ ] All 4 hooks wired
41
+ - [ ] Bizar MCP server registers in Claude Code without errors
42
+ - [ ] All SDK tools register (≥15 in `BIZAR_TOOLS`)
43
+ - [ ] All Claude Code lifecycle hooks wired (SessionStart / PreToolUse / PostToolUse / UserPromptSubmit)
44
44
  - [ ] Memory tools round-trip (write → read → list → search)
45
45
 
46
46
  ## Dual-mode cleanup strategy
@@ -37,9 +37,9 @@ The feature is `passing` only when ALL of:
37
37
 
38
38
  ## Architecture constraints
39
39
 
40
- - [ ] No `import` from `bizar-dash/` in `plugins/bizar/`
40
+ - [ ] No `import` from `bizar-dash/` in `packages/sdk/`
41
41
  - [ ] No `fetch('http://127.0.0.1:...')` for memory operations
42
- - [ ] No `cline serve` subprocess spawn
42
+ - [ ] No `claude` daemon subprocess spawn unless explicitly opted in via `claude --bg`
43
43
  - [ ] New architectural rule added to `.harness/arch-rules.json` (if applicable)
44
44
 
45
45
  ## Risk / unknowns
@@ -1,3 +0,0 @@
1
- {"ts":"2026-06-19T08:39:29.113Z","kind":"settings.update"}
2
- {"ts":"2026-06-19T08:39:37.682Z","kind":"settings.update"}
3
- {"ts":"2026-06-19T08:39:44.191Z","kind":"settings.update"}
@@ -1 +0,0 @@
1
- {"event":"session_start","session_id":"019f3ed8-46df-7603-95cd-888f805514c7","native_session_id":"019f3ed8-46df-7603-95cd-888f805514c7","pid":1695074,"timestamp":"2026-07-07T23:09:51.188Z","_ts":"2026-07-07T23:09:51.188Z"}
@@ -1,10 +0,0 @@
1
- {
2
- "session_id": "019f3ed8-46df-7603-95cd-888f805514c7",
3
- "native_session_id": "019f3ed8-46df-7603-95cd-888f805514c7",
4
- "started_at": "2026-07-07T23:09:51.188Z",
5
- "cwd": "/home/drb0rk/Projects/BizarHarness/bizar-dash",
6
- "pid": 1695074,
7
- "platform": "linux",
8
- "pid_start_ticks": 11316930,
9
- "pid_cmdline": "/home/drb0rk/.local/npm/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-x64/vendor/x86_64-unknown-linux-musl/bin/codex exec --json --skip-git-repo-check --sandbox workspace-write -c sandbox_workspace_write.network_access=true -C /home/drb0rk/Projects/BizarHarness/bizar-dash --model gpt-5.3-codex -c model_reasoning_effort=\"medium\""
10
- }