@polderlabs/bizar 6.2.5 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) 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/hooks/worker-suggest.mjs +110 -0
  41. package/.claude/settings.json +125 -0
  42. package/.claude/skills/9router/SKILL.md +80 -0
  43. package/.claude/skills/9router-chat/SKILL.md +73 -0
  44. package/.claude/skills/9router-embeddings/SKILL.md +69 -0
  45. package/.claude/skills/9router-image/SKILL.md +86 -0
  46. package/.claude/skills/9router-stt/SKILL.md +79 -0
  47. package/.claude/skills/9router-tts/SKILL.md +80 -0
  48. package/.claude/skills/9router-web-fetch/SKILL.md +99 -0
  49. package/.claude/skills/9router-web-search/SKILL.md +91 -0
  50. package/.claude/skills/bizar/README.md +9 -0
  51. package/.claude/skills/bizar/SKILL.md +450 -0
  52. package/.claude/skills/cpp-coding-standards/README.md +28 -0
  53. package/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
  54. package/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
  55. package/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
  56. package/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
  57. package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
  58. package/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
  59. package/.claude/skills/cpp-testing/README.md +28 -0
  60. package/.claude/skills/cpp-testing/SKILL.md +304 -0
  61. package/.claude/skills/cpp-testing/references/coverage.md +370 -0
  62. package/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
  63. package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
  64. package/.claude/skills/cpp-testing/references/mocking.md +364 -0
  65. package/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
  66. package/.claude/skills/cubesandbox/SKILL.md +148 -0
  67. package/.claude/skills/embedded-esp-idf/README.md +41 -0
  68. package/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
  69. package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
  70. package/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
  71. package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
  72. package/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
  73. package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
  74. package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
  75. package/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
  76. package/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
  77. package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
  78. package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
  79. package/.claude/skills/glyph/SKILL.md +163 -0
  80. package/.claude/skills/harness-engineering/SKILL.md +143 -0
  81. package/.claude/skills/lightrag/SKILL.md +81 -0
  82. package/.claude/skills/memory-protocol/SKILL.md +105 -0
  83. package/.claude/skills/obsidian/SKILL.md +306 -0
  84. package/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
  85. package/.claude/skills/self-improvement/SKILL.md +64 -0
  86. package/README.md +87 -59
  87. package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js → EnvVarsSection-CW6fWKds.js} +3 -3
  88. package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js.map → EnvVarsSection-CW6fWKds.js.map} +1 -1
  89. package/bizar-dash/dist/assets/MobileChat-D7zRhU9K.js +1 -0
  90. package/bizar-dash/dist/assets/{MobileChat-BnKN_Ks_.js.map → MobileChat-D7zRhU9K.js.map} +1 -1
  91. package/bizar-dash/dist/assets/MobileSettings-K-sNsn_r.js +1 -0
  92. package/bizar-dash/dist/assets/{MobileSettings-DjCPxC-Q.js.map → MobileSettings-K-sNsn_r.js.map} +1 -1
  93. package/bizar-dash/dist/assets/{Toast-Cpl6-E63.js → Toast-WTxc3m2g.js} +1 -1
  94. package/bizar-dash/dist/assets/{Toast-Cpl6-E63.js.map → Toast-WTxc3m2g.js.map} +1 -1
  95. package/bizar-dash/dist/assets/flow-BpU0-gK2.js +1 -0
  96. package/bizar-dash/dist/assets/flow-BpU0-gK2.js.map +1 -0
  97. package/bizar-dash/dist/assets/fuzzy-l0sNRNKZ.js +1 -0
  98. package/bizar-dash/dist/assets/fuzzy-l0sNRNKZ.js.map +1 -0
  99. package/bizar-dash/dist/assets/{icons-Do5N2jmX.js → icons-B0AKnYI3.js} +98 -103
  100. package/bizar-dash/dist/assets/icons-B0AKnYI3.js.map +1 -0
  101. package/bizar-dash/dist/assets/main-C-Md3DaY.css +1 -0
  102. package/bizar-dash/dist/assets/main-CO8fIxQK.js +18 -0
  103. package/bizar-dash/dist/assets/main-CO8fIxQK.js.map +1 -0
  104. package/bizar-dash/dist/assets/markdown-w2bDDkAH.js +1 -0
  105. package/bizar-dash/dist/assets/{markdown-C6mXtQxD.js.map → markdown-w2bDDkAH.js.map} +1 -1
  106. package/bizar-dash/dist/assets/mobile-DXYCA0hC.js +1 -0
  107. package/bizar-dash/dist/assets/{mobile-CMHqtLV2.js.map → mobile-DXYCA0hC.js.map} +1 -1
  108. package/bizar-dash/dist/assets/mobile-layout-DSmtNPja.js +2 -0
  109. package/bizar-dash/dist/assets/mobile-layout-DSmtNPja.js.map +1 -0
  110. package/bizar-dash/dist/assets/react-vendor-BnuhLJ6X.css +1 -0
  111. package/bizar-dash/dist/assets/react-vendor-D3pra6w-.js +46 -0
  112. package/bizar-dash/dist/assets/react-vendor-D3pra6w-.js.map +1 -0
  113. package/bizar-dash/dist/assets/useSlashCommands-3DFLOfpk.js +2 -0
  114. package/bizar-dash/dist/assets/useSlashCommands-3DFLOfpk.js.map +1 -0
  115. package/bizar-dash/dist/assets/vendor-Di7Cp-rw.js +45 -0
  116. package/bizar-dash/dist/assets/vendor-Di7Cp-rw.js.map +1 -0
  117. package/bizar-dash/dist/index.html +12 -10
  118. package/bizar-dash/dist/mobile.html +7 -4
  119. package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  120. package/bizar-dash/src/server/api.mjs +15 -4
  121. package/bizar-dash/src/server/background-store.mjs +15 -16
  122. package/bizar-dash/src/server/bg-poller.mjs +25 -35
  123. package/bizar-dash/src/server/bg-retry.mjs +66 -194
  124. package/bizar-dash/src/server/claude-bg-spawner.mjs +390 -0
  125. package/bizar-dash/src/server/claude-info.mjs +412 -0
  126. package/bizar-dash/src/server/{cline-runner.mjs → claude-runner.mjs} +53 -48
  127. package/bizar-dash/src/server/claude-sdk.mjs +191 -0
  128. package/bizar-dash/src/server/memory-consolidator.mjs +218 -0
  129. package/bizar-dash/src/server/memory-distillation.mjs +296 -0
  130. package/bizar-dash/src/server/providers-store.mjs +22 -49
  131. package/bizar-dash/src/server/routes/background.mjs +24 -20
  132. package/bizar-dash/src/server/routes/chat.mjs +223 -326
  133. package/bizar-dash/src/server/routes/claude-session-detail.mjs +329 -0
  134. package/bizar-dash/src/server/routes/claude-sessions.mjs +259 -0
  135. package/bizar-dash/src/server/routes/distill.mjs +129 -0
  136. package/bizar-dash/src/server/routes/goal-planner.mjs +236 -0
  137. package/bizar-dash/src/server/routes/tasks.mjs +20 -28
  138. package/bizar-dash/src/server/task-delegator.mjs +76 -77
  139. package/bizar-dash/src/web/App.tsx +4 -0
  140. package/bizar-dash/src/web/components/Tag.tsx +18 -5
  141. package/bizar-dash/src/web/components/Topbar.tsx +3 -0
  142. package/bizar-dash/src/web/components/agents/CommunicationLog.tsx +126 -0
  143. package/bizar-dash/src/web/components/agents/DependencyGraph.tsx +163 -0
  144. package/bizar-dash/src/web/components/agents/QualityGates.tsx +123 -0
  145. package/bizar-dash/src/web/components/agents/RealTimeEventLog.tsx +127 -0
  146. package/bizar-dash/src/web/components/agents/RoutingDecisions.test.tsx +148 -0
  147. package/bizar-dash/src/web/components/agents/RoutingDecisions.tsx +160 -0
  148. package/bizar-dash/src/web/components/chat/useChat.ts +23 -27
  149. package/bizar-dash/src/web/components/goals/GoalInput.tsx +86 -0
  150. package/bizar-dash/src/web/components/goals/PlanVisualization.tsx +111 -0
  151. package/bizar-dash/src/web/lib/goapPlanner.ts +614 -0
  152. package/bizar-dash/src/web/lib/types.ts +25 -0
  153. package/bizar-dash/src/web/styles/agents-redesign.css +311 -0
  154. package/bizar-dash/src/web/styles/main.css +251 -0
  155. package/bizar-dash/src/web/styles/tasks-redesign.css +231 -0
  156. package/bizar-dash/src/web/ui/controls/Button.tsx +77 -0
  157. package/bizar-dash/src/web/ui/controls/Checkbox.tsx +95 -0
  158. package/bizar-dash/src/web/ui/controls/IconButton.tsx +66 -0
  159. package/bizar-dash/src/web/ui/controls/Kbd.tsx +24 -0
  160. package/bizar-dash/src/web/ui/controls/NumberInput.tsx +77 -0
  161. package/bizar-dash/src/web/ui/controls/RadioGroup.tsx +109 -0
  162. package/bizar-dash/src/web/ui/controls/SearchInput.tsx +91 -0
  163. package/bizar-dash/src/web/ui/controls/Select.tsx +92 -0
  164. package/bizar-dash/src/web/ui/controls/Slider.tsx +70 -0
  165. package/bizar-dash/src/web/ui/controls/TextInput.tsx +67 -0
  166. package/bizar-dash/src/web/ui/controls/Toggle.tsx +79 -0
  167. package/bizar-dash/src/web/ui/controls/controls.css +454 -0
  168. package/bizar-dash/src/web/ui/controls/index.ts +33 -0
  169. package/bizar-dash/src/web/ui/data/BarChart.tsx +60 -0
  170. package/bizar-dash/src/web/ui/data/DataTable.tsx +216 -0
  171. package/bizar-dash/src/web/ui/data/EmptyState.tsx +60 -0
  172. package/bizar-dash/src/web/ui/data/ErrorState.tsx +56 -0
  173. package/bizar-dash/src/web/ui/data/KeyValueList.tsx +106 -0
  174. package/bizar-dash/src/web/ui/data/LoadingState.tsx +65 -0
  175. package/bizar-dash/src/web/ui/data/Sparkline.tsx +87 -0
  176. package/bizar-dash/src/web/ui/data/StatTile.tsx +87 -0
  177. package/bizar-dash/src/web/ui/data/data.css +535 -0
  178. package/bizar-dash/src/web/ui/data/index.ts +31 -0
  179. package/bizar-dash/src/web/ui/feedback/Badge.tsx +49 -0
  180. package/bizar-dash/src/web/ui/feedback/Dialog.tsx +209 -0
  181. package/bizar-dash/src/web/ui/feedback/ProgressBar.tsx +69 -0
  182. package/bizar-dash/src/web/ui/feedback/StatusDot.tsx +50 -0
  183. package/bizar-dash/src/web/ui/feedback/Toast.tsx +200 -0
  184. package/bizar-dash/src/web/ui/feedback/Tooltip.tsx +126 -0
  185. package/bizar-dash/src/web/ui/feedback/feedback.css +314 -0
  186. package/bizar-dash/src/web/ui/feedback/index.ts +43 -0
  187. package/bizar-dash/src/web/ui/index.ts +56 -0
  188. package/bizar-dash/src/web/ui/layout/AppShell.tsx +51 -0
  189. package/bizar-dash/src/web/ui/layout/Breadcrumbs.tsx +97 -0
  190. package/bizar-dash/src/web/ui/layout/Panel.tsx +73 -0
  191. package/bizar-dash/src/web/ui/layout/PanelHeader.tsx +39 -0
  192. package/bizar-dash/src/web/ui/layout/Sidebar.tsx +131 -0
  193. package/bizar-dash/src/web/ui/layout/Tabs.tsx +133 -0
  194. package/bizar-dash/src/web/ui/layout/Topbar.tsx +42 -0
  195. package/bizar-dash/src/web/ui/layout/index.ts +33 -0
  196. package/bizar-dash/src/web/ui/layout/layout.css +413 -0
  197. package/bizar-dash/src/web/ui/navigation/CommandPalette.tsx +199 -0
  198. package/bizar-dash/src/web/ui/navigation/NavGroup.tsx +95 -0
  199. package/bizar-dash/src/web/ui/navigation/NavLink.tsx +93 -0
  200. package/bizar-dash/src/web/ui/navigation/index.ts +17 -0
  201. package/bizar-dash/src/web/ui/navigation/navigation.css +343 -0
  202. package/bizar-dash/src/web/ui/primitives/Box.tsx +91 -0
  203. package/bizar-dash/src/web/ui/primitives/Grid.tsx +49 -0
  204. package/bizar-dash/src/web/ui/primitives/Inline.tsx +55 -0
  205. package/bizar-dash/src/web/ui/primitives/Separator.tsx +46 -0
  206. package/bizar-dash/src/web/ui/primitives/Stack.tsx +54 -0
  207. package/bizar-dash/src/web/ui/primitives/VisuallyHidden.tsx +26 -0
  208. package/bizar-dash/src/web/ui/primitives/index.ts +23 -0
  209. package/bizar-dash/src/web/ui/primitives/primitives.css +183 -0
  210. package/bizar-dash/src/web/ui/styles/globals.css +86 -0
  211. package/bizar-dash/src/web/ui/styles/reset.css +125 -0
  212. package/bizar-dash/src/web/ui/styles/tokens.css +195 -0
  213. package/bizar-dash/src/web/ui/theme/ThemeProvider.tsx +142 -0
  214. package/bizar-dash/src/web/ui/theme/tokens.ts +131 -0
  215. package/bizar-dash/src/web/ui/theme/useTheme.ts +22 -0
  216. package/bizar-dash/src/web/ui/utils/cx.ts +42 -0
  217. package/bizar-dash/src/web/views/Agents.tsx +506 -266
  218. package/bizar-dash/src/web/views/Chat.tsx +8 -8
  219. package/bizar-dash/src/web/views/GoalPlanner.tsx +158 -0
  220. package/bizar-dash/src/web/views/Overview.tsx +996 -448
  221. package/bizar-dash/src/web/views/Tasks.tsx +277 -273
  222. package/bizar-dash/tests/communication-log.test.tsx +67 -0
  223. package/bizar-dash/tests/dep-graph.test.tsx +40 -0
  224. package/bizar-dash/tests/event-log.test.tsx +61 -0
  225. package/bizar-dash/tests/goal-input.test.tsx +72 -0
  226. package/bizar-dash/tests/goap-planner.test.ts +68 -0
  227. package/bizar-dash/tests/quality-gates.test.tsx +59 -0
  228. package/bizar-dash/tests/setup.ts +31 -1
  229. package/bizar-dash/tests/ui/controls/Button.test.tsx +50 -0
  230. package/bizar-dash/tests/ui/controls/Checkbox.test.tsx +44 -0
  231. package/bizar-dash/tests/ui/controls/IconButton.test.tsx +37 -0
  232. package/bizar-dash/tests/ui/controls/Kbd.test.tsx +39 -0
  233. package/bizar-dash/tests/ui/controls/NumberInput.test.tsx +56 -0
  234. package/bizar-dash/tests/ui/controls/RadioGroup.test.tsx +58 -0
  235. package/bizar-dash/tests/ui/controls/SearchInput.test.tsx +52 -0
  236. package/bizar-dash/tests/ui/controls/Select.test.tsx +66 -0
  237. package/bizar-dash/tests/ui/controls/Slider.test.tsx +41 -0
  238. package/bizar-dash/tests/ui/controls/TextInput.test.tsx +44 -0
  239. package/bizar-dash/tests/ui/controls/Toggle.test.tsx +39 -0
  240. package/bizar-dash/tests/ui/data/BarChart.test.tsx +55 -0
  241. package/bizar-dash/tests/ui/data/DataTable.test.tsx +112 -0
  242. package/bizar-dash/tests/ui/data/EmptyState.test.tsx +57 -0
  243. package/bizar-dash/tests/ui/data/ErrorState.test.tsx +47 -0
  244. package/bizar-dash/tests/ui/data/KeyValueList.test.tsx +59 -0
  245. package/bizar-dash/tests/ui/data/LoadingState.test.tsx +37 -0
  246. package/bizar-dash/tests/ui/data/Sparkline.test.tsx +56 -0
  247. package/bizar-dash/tests/ui/data/StatTile.test.tsx +69 -0
  248. package/bizar-dash/tests/ui/feedback/Badge.test.tsx +41 -0
  249. package/bizar-dash/tests/ui/feedback/Dialog.test.tsx +99 -0
  250. package/bizar-dash/tests/ui/feedback/ProgressBar.test.tsx +66 -0
  251. package/bizar-dash/tests/ui/feedback/StatusDot.test.tsx +41 -0
  252. package/bizar-dash/tests/ui/feedback/Toast.test.tsx +124 -0
  253. package/bizar-dash/tests/ui/feedback/Tooltip.test.tsx +102 -0
  254. package/bizar-dash/tests/ui/layout/AppShell.test.tsx +50 -0
  255. package/bizar-dash/tests/ui/layout/Breadcrumbs.test.tsx +85 -0
  256. package/bizar-dash/tests/ui/layout/Panel.test.tsx +52 -0
  257. package/bizar-dash/tests/ui/layout/PanelHeader.test.tsx +32 -0
  258. package/bizar-dash/tests/ui/layout/Sidebar.test.tsx +95 -0
  259. package/bizar-dash/tests/ui/layout/Tabs.test.tsx +87 -0
  260. package/bizar-dash/tests/ui/layout/Topbar.test.tsx +41 -0
  261. package/bizar-dash/tests/ui/navigation/CommandPalette.test.tsx +105 -0
  262. package/bizar-dash/tests/ui/navigation/NavGroup.test.tsx +55 -0
  263. package/bizar-dash/tests/ui/navigation/NavLink.test.tsx +61 -0
  264. package/bizar-dash/tests/ui/primitives/Box.test.tsx +49 -0
  265. package/bizar-dash/tests/ui/primitives/Grid.test.tsx +37 -0
  266. package/bizar-dash/tests/ui/primitives/Inline.test.tsx +33 -0
  267. package/bizar-dash/tests/ui/primitives/Separator.test.tsx +34 -0
  268. package/bizar-dash/tests/ui/primitives/Stack.test.tsx +45 -0
  269. package/bizar-dash/tests/ui/primitives/VisuallyHidden.test.tsx +27 -0
  270. package/bizar-dash/tests/views/Agents.test.tsx +359 -0
  271. package/bizar-dash/tests/views/Overview.test.tsx +413 -0
  272. package/bizar-dash/tests/views/Tasks.test.tsx +250 -0
  273. package/bizar-dash/vitest.config.ts +3 -1
  274. package/cli/__tests__/cost-gate.test.mjs +301 -0
  275. package/cli/__tests__/feature-list-bridge.test.mjs +371 -0
  276. package/cli/bin.mjs +55 -18
  277. package/cli/commands/claim.mjs +282 -0
  278. package/cli/commands/claude-cmd.mjs +348 -0
  279. package/cli/commands/cost.mjs +279 -0
  280. package/cli/commands/install.mjs +12 -11
  281. package/cli/commands/validate.mjs +252 -325
  282. package/cli/cost-gate.mjs +501 -0
  283. package/cli/dev-link.test.mjs +11 -11
  284. package/cli/doctor.mjs +131 -213
  285. package/cli/feature-list-bridge.mjs +400 -0
  286. package/cli/install.mjs +33 -37
  287. package/cli/install.test.mjs +9 -9
  288. package/cli/memory-constants.mjs +17 -0
  289. package/cli/provision-claude.mjs +893 -0
  290. package/cli/provision.mjs +224 -227
  291. package/cli/utils.mjs +72 -58
  292. package/cli/worker-dispatcher.mjs +259 -0
  293. package/cli/worker-dispatcher.test.mjs +204 -0
  294. package/config/AGENTS.md +28 -28
  295. package/config/trigger-patterns.json +186 -0
  296. package/install.sh +66 -44
  297. package/package.json +19 -11
  298. package/packages/sdk/ARCHITECTURE.md +40 -36
  299. package/packages/sdk/package.json +15 -5
  300. package/packages/sdk/src/agent-registry.ts +304 -0
  301. package/packages/sdk/src/consensus/byzantine.ts +587 -0
  302. package/packages/sdk/src/consensus/index.ts +147 -0
  303. package/packages/sdk/src/consensus/queen.ts +173 -0
  304. package/packages/sdk/src/consensus/types.ts +199 -0
  305. package/{plugins/bizar → packages/sdk}/src/dangerous-patterns.ts +6 -28
  306. package/packages/sdk/src/federation/audit.ts +156 -0
  307. package/packages/sdk/src/federation/budget.ts +269 -0
  308. package/packages/sdk/src/federation/envelope.ts +144 -0
  309. package/packages/sdk/src/federation/hmac.ts +160 -0
  310. package/packages/sdk/src/federation/index.ts +443 -0
  311. package/packages/sdk/src/federation/pii.ts +241 -0
  312. package/packages/sdk/src/federation/policy.ts +112 -0
  313. package/packages/sdk/src/federation/trust.ts +146 -0
  314. package/packages/sdk/src/fingerprint.ts +0 -0
  315. package/packages/sdk/src/index.ts +101 -69
  316. package/packages/sdk/src/mcp/bin.ts +51 -0
  317. package/packages/sdk/src/mcp/server.ts +848 -0
  318. package/{plugins/bizar/src/memory-vault.ts → packages/sdk/src/memory/index.ts} +18 -21
  319. package/packages/sdk/src/router/codemod-intent.ts +125 -0
  320. package/packages/sdk/src/router/index.ts +247 -0
  321. package/packages/sdk/src/router/memory-distillation-shim.mjs +18 -0
  322. package/packages/sdk/src/router/memory-distillation.ts +249 -0
  323. package/packages/sdk/src/router/model-router.ts +235 -0
  324. package/packages/sdk/src/router/q-learning-router.ts +304 -0
  325. package/packages/sdk/src/swarm-topology.ts +279 -0
  326. package/packages/sdk/tests/agent-registry.test.ts +285 -0
  327. package/packages/sdk/tests/consensus.test.ts +376 -0
  328. package/packages/sdk/tests/federation/audit.test.ts +164 -0
  329. package/packages/sdk/tests/federation/budget.test.ts +189 -0
  330. package/packages/sdk/tests/federation/envelope.test.ts +120 -0
  331. package/packages/sdk/tests/federation/hmac.test.ts +194 -0
  332. package/packages/sdk/tests/federation/orchestrator.test.ts +176 -0
  333. package/packages/sdk/tests/federation/pii.test.ts +106 -0
  334. package/packages/sdk/tests/federation/policy.test.ts +140 -0
  335. package/packages/sdk/tests/federation/trust.test.ts +124 -0
  336. package/packages/sdk/tests/mcp-tools.test.ts +204 -0
  337. package/packages/sdk/tests/memory-distillation.test.mjs +186 -0
  338. package/packages/sdk/tests/model-router.test.mjs +108 -0
  339. package/packages/sdk/tests/q-learning-router.test.mjs +100 -0
  340. package/packages/sdk/tests/router-orchestrator.test.mjs +172 -0
  341. package/packages/sdk/tests/router.test.mjs +91 -0
  342. package/packages/sdk/tests/sdk.test.mjs +172 -0
  343. package/packages/sdk/tests/swarm-topology.test.ts +258 -0
  344. package/packages/sdk/vitest.config.ts +1 -1
  345. package/scripts/bh-full-e2e.mjs +167 -368
  346. package/scripts/check-deps.mjs +28 -46
  347. package/scripts/mirror-claude-md.sh +78 -0
  348. package/scripts/test-in-container.sh +31 -9
  349. package/templates/clean-state-checklist.md +3 -3
  350. package/templates/sprint-contract.md +2 -2
  351. package/bizar-dash/.bizar/activity.log +0 -3
  352. package/bizar-dash/.omx/logs/omx-2026-07-07.jsonl +0 -1
  353. package/bizar-dash/.omx/state/session.json +0 -10
  354. package/bizar-dash/bizar-design/EXPLANATION.md +0 -307
  355. package/bizar-dash/bizar-design/INSTRUCTIONS.md +0 -149
  356. package/bizar-dash/bizar-design/canvas.html +0 -281
  357. package/bizar-dash/bizar-design/canvas.html.artifact.json +0 -19
  358. package/bizar-dash/bizar-design/components.css +0 -1665
  359. package/bizar-dash/bizar-design/components.html +0 -557
  360. package/bizar-dash/bizar-design/components.html.artifact.json +0 -19
  361. package/bizar-dash/bizar-design/desktop/agents.html +0 -74
  362. package/bizar-dash/bizar-design/desktop/agents.html.artifact.json +0 -19
  363. package/bizar-dash/bizar-design/desktop/memory.html +0 -75
  364. package/bizar-dash/bizar-design/desktop/memory.html.artifact.json +0 -19
  365. package/bizar-dash/bizar-design/desktop/metrics.html +0 -63
  366. package/bizar-dash/bizar-design/desktop/metrics.html.artifact.json +0 -19
  367. package/bizar-dash/bizar-design/desktop/overview.html +0 -95
  368. package/bizar-dash/bizar-design/desktop/overview.html.artifact.json +0 -19
  369. package/bizar-dash/bizar-design/desktop/settings.html +0 -70
  370. package/bizar-dash/bizar-design/desktop/settings.html.artifact.json +0 -19
  371. package/bizar-dash/bizar-design/icons.svg +0 -44
  372. package/bizar-dash/bizar-design/index.html +0 -192
  373. package/bizar-dash/bizar-design/index.html.artifact.json +0 -19
  374. package/bizar-dash/bizar-design/mobile/agents.html +0 -29
  375. package/bizar-dash/bizar-design/mobile/agents.html.artifact.json +0 -19
  376. package/bizar-dash/bizar-design/mobile/memory.html +0 -28
  377. package/bizar-dash/bizar-design/mobile/memory.html.artifact.json +0 -19
  378. package/bizar-dash/bizar-design/mobile/metrics.html +0 -29
  379. package/bizar-dash/bizar-design/mobile/metrics.html.artifact.json +0 -19
  380. package/bizar-dash/bizar-design/mobile/overview.html +0 -33
  381. package/bizar-dash/bizar-design/mobile/overview.html.artifact.json +0 -19
  382. package/bizar-dash/bizar-design/mobile/settings.html +0 -28
  383. package/bizar-dash/bizar-design/mobile/settings.html.artifact.json +0 -19
  384. package/bizar-dash/bizar-design/prototype.js +0 -114
  385. package/bizar-dash/bizar-design/tokens.css +0 -106
  386. package/bizar-dash/dist/assets/MobileChat-BnKN_Ks_.js +0 -1
  387. package/bizar-dash/dist/assets/MobileSettings-DjCPxC-Q.js +0 -1
  388. package/bizar-dash/dist/assets/icons-Do5N2jmX.js.map +0 -1
  389. package/bizar-dash/dist/assets/main-DYiZqMrn.js +0 -18
  390. package/bizar-dash/dist/assets/main-DYiZqMrn.js.map +0 -1
  391. package/bizar-dash/dist/assets/main-ietCEg_R.css +0 -1
  392. package/bizar-dash/dist/assets/markdown-C6mXtQxD.js +0 -1
  393. package/bizar-dash/dist/assets/mobile-CMHqtLV2.js +0 -1
  394. package/bizar-dash/dist/assets/mobile-layout-3jIhHX_p.js +0 -2
  395. package/bizar-dash/dist/assets/mobile-layout-3jIhHX_p.js.map +0 -1
  396. package/bizar-dash/dist/assets/react-vendor-Dn4wqh4Z.js +0 -40
  397. package/bizar-dash/dist/assets/react-vendor-Dn4wqh4Z.js.map +0 -1
  398. package/bizar-dash/dist/assets/useSlashCommands-DtITw8Xv.js +0 -2
  399. package/bizar-dash/dist/assets/useSlashCommands-DtITw8Xv.js.map +0 -1
  400. package/bizar-dash/dist/assets/vendor-CeHGtduv.js +0 -29
  401. package/bizar-dash/dist/assets/vendor-CeHGtduv.js.map +0 -1
  402. package/bizar-dash/node_modules/.package-lock.json +0 -6
  403. package/bizar-dash/package-lock.json +0 -6
  404. package/bizar-dash/src/server/cline-sdk.mjs +0 -132
  405. package/bizar-dash/src/server/routes/cline-session-detail.mjs +0 -559
  406. package/bizar-dash/src/server/routes/cline-sessions.mjs +0 -291
  407. package/cli/commands/cline-cmd.mjs +0 -289
  408. package/cli/commands/validate.test.mjs +0 -379
  409. package/cli/doctor.test.mjs +0 -350
  410. package/config/cline.json.template +0 -342
  411. package/packages/sdk/src/client.ts +0 -188
  412. package/packages/sdk/src/cline-events.ts +0 -134
  413. package/packages/sdk/src/cline-types.ts +0 -66
  414. package/packages/sdk/src/cline.ts +0 -339
  415. package/packages/sdk/src/errors.ts +0 -129
  416. package/packages/sdk/src/events.ts +0 -153
  417. package/packages/sdk/src/types.ts +0 -176
  418. package/packages/sdk/tests/client.test.ts +0 -217
  419. package/packages/sdk/tests/errors.test.ts +0 -108
  420. package/packages/sdk/tests/events.test.ts +0 -139
  421. package/packages/sdk/tests/fixtures/fetch-mock.ts +0 -152
  422. package/packages/sdk/tests/fixtures/sse-mock.ts +0 -30
  423. package/plugins/bizar/ARCHITECTURE.md +0 -142
  424. package/plugins/bizar/CONSTRAINTS.md +0 -67
  425. package/plugins/bizar/LICENSE +0 -21
  426. package/plugins/bizar/README.md +0 -448
  427. package/plugins/bizar/index.ts +0 -925
  428. package/plugins/bizar/package.json +0 -39
  429. package/plugins/bizar/scripts/check-forbidden-imports.sh +0 -33
  430. package/plugins/bizar/src/background-state.ts +0 -641
  431. package/plugins/bizar/src/background.ts +0 -1806
  432. package/plugins/bizar/src/cline-runner.ts +0 -203
  433. package/plugins/bizar/src/clineruntime.ts +0 -227
  434. package/plugins/bizar/src/commands-impl.ts +0 -151
  435. package/plugins/bizar/src/commands.ts +0 -1799
  436. package/plugins/bizar/src/compaction.d.mts +0 -48
  437. package/plugins/bizar/src/compaction.mjs +0 -192
  438. package/plugins/bizar/src/dashboard-client.ts +0 -233
  439. package/plugins/bizar/src/event-stream.ts +0 -606
  440. package/plugins/bizar/src/fingerprint.ts +0 -120
  441. package/plugins/bizar/src/handoff.ts +0 -79
  442. package/plugins/bizar/src/hooks/memory-flush-on-compact.ts +0 -123
  443. package/plugins/bizar/src/hooks/memory-inject.ts +0 -247
  444. package/plugins/bizar/src/hooks/memory-write-on-end.ts +0 -188
  445. package/plugins/bizar/src/hooks/skill-curator.ts +0 -180
  446. package/plugins/bizar/src/http-client.ts +0 -467
  447. package/plugins/bizar/src/key-rotation.ts +0 -218
  448. package/plugins/bizar/src/logger.ts +0 -144
  449. package/plugins/bizar/src/loop-engineering.ts +0 -241
  450. package/plugins/bizar/src/loop.ts +0 -176
  451. package/plugins/bizar/src/mistake-recovery.ts +0 -98
  452. package/plugins/bizar/src/odin.ts +0 -227
  453. package/plugins/bizar/src/options.ts +0 -470
  454. package/plugins/bizar/src/plan-fs.ts +0 -323
  455. package/plugins/bizar/src/reasoning-clean.ts +0 -454
  456. package/plugins/bizar/src/report.ts +0 -178
  457. package/plugins/bizar/src/research-prompt.ts +0 -35
  458. package/plugins/bizar/src/serve-info.ts +0 -228
  459. package/plugins/bizar/src/serve.ts +0 -496
  460. package/plugins/bizar/src/settings.ts +0 -349
  461. package/plugins/bizar/src/state.ts +0 -298
  462. package/plugins/bizar/src/tool-discipline.ts +0 -105
  463. package/plugins/bizar/src/tools/agent-browser.ts +0 -315
  464. package/plugins/bizar/src/tools/bg-collect.ts +0 -131
  465. package/plugins/bizar/src/tools/bg-get-comments.ts +0 -266
  466. package/plugins/bizar/src/tools/bg-kill.ts +0 -116
  467. package/plugins/bizar/src/tools/bg-pause.ts +0 -99
  468. package/plugins/bizar/src/tools/bg-report-progress.ts +0 -115
  469. package/plugins/bizar/src/tools/bg-resume.ts +0 -94
  470. package/plugins/bizar/src/tools/bg-send-message.ts +0 -223
  471. package/plugins/bizar/src/tools/bg-spawn.ts +0 -502
  472. package/plugins/bizar/src/tools/bg-status.ts +0 -130
  473. package/plugins/bizar/src/tools/graph-query.ts +0 -278
  474. package/plugins/bizar/src/tools/loop-engineering.ts +0 -193
  475. package/plugins/bizar/src/tools/memory-list.ts +0 -43
  476. package/plugins/bizar/src/tools/memory-read.ts +0 -69
  477. package/plugins/bizar/src/tools/memory-search.ts +0 -47
  478. package/plugins/bizar/src/tools/memory-write.ts +0 -54
  479. package/plugins/bizar/src/tools/open-kb.ts +0 -198
  480. package/plugins/bizar/src/tools/plan-action.ts +0 -785
  481. package/plugins/bizar/src/tools/read-glyph-feedback.ts +0 -191
  482. package/plugins/bizar/src/tools/sandbox.ts +0 -232
  483. package/plugins/bizar/src/tools/team-spawn.ts +0 -73
  484. package/plugins/bizar/src/tools/team-status.ts +0 -76
  485. package/plugins/bizar/src/tools/wait-for-feedback.ts +0 -415
  486. package/plugins/bizar/src/trajectory.ts +0 -104
  487. package/plugins/bizar/tests/README.md +0 -99
  488. package/plugins/bizar/tests/attach-handler-bug.test.ts +0 -169
  489. package/plugins/bizar/tests/background-state.test.ts +0 -277
  490. package/plugins/bizar/tests/background.test.ts +0 -402
  491. package/plugins/bizar/tests/block.test.ts +0 -195
  492. package/plugins/bizar/tests/canonical-key-order.test.ts +0 -75
  493. package/plugins/bizar/tests/clineruntime-config.test.ts +0 -283
  494. package/plugins/bizar/tests/commands-impl.test.ts +0 -316
  495. package/plugins/bizar/tests/commands.test.ts +0 -584
  496. package/plugins/bizar/tests/compaction.test.ts +0 -264
  497. package/plugins/bizar/tests/config.test.ts +0 -128
  498. package/plugins/bizar/tests/dashboard-client.test.ts +0 -159
  499. package/plugins/bizar/tests/dispose.test.ts +0 -336
  500. package/plugins/bizar/tests/event-stream.test.ts +0 -409
  501. package/plugins/bizar/tests/event.test.ts +0 -262
  502. package/plugins/bizar/tests/fingerprint.test.ts +0 -190
  503. package/plugins/bizar/tests/http-client.test.ts +0 -404
  504. package/plugins/bizar/tests/init-helpers.test.ts +0 -203
  505. package/plugins/bizar/tests/integration/slash-command.test.ts +0 -349
  506. package/plugins/bizar/tests/integration/tool-routing.test.ts +0 -98
  507. package/plugins/bizar/tests/key-rotation.test.ts +0 -396
  508. package/plugins/bizar/tests/loop-engineering.test.ts +0 -168
  509. package/plugins/bizar/tests/loop.test.ts +0 -397
  510. package/plugins/bizar/tests/memory-write-on-end.test.ts +0 -92
  511. package/plugins/bizar/tests/mistake-recovery.test.ts +0 -116
  512. package/plugins/bizar/tests/odin.test.ts +0 -125
  513. package/plugins/bizar/tests/options.test.ts +0 -329
  514. package/plugins/bizar/tests/reasoning-clean.test.ts +0 -422
  515. package/plugins/bizar/tests/safety.test.ts +0 -281
  516. package/plugins/bizar/tests/serve.test.ts +0 -339
  517. package/plugins/bizar/tests/settings.test.ts +0 -351
  518. package/plugins/bizar/tests/stall-think.test.ts +0 -750
  519. package/plugins/bizar/tests/state.test.ts +0 -276
  520. package/plugins/bizar/tests/tool-discipline.test.ts +0 -77
  521. package/plugins/bizar/tests/tools/agent-browser.test.ts +0 -98
  522. package/plugins/bizar/tests/tools/bg-collect.test.ts +0 -337
  523. package/plugins/bizar/tests/tools/bg-get-comments.test.ts +0 -485
  524. package/plugins/bizar/tests/tools/bg-kill.test.ts +0 -235
  525. package/plugins/bizar/tests/tools/bg-pause.test.ts +0 -61
  526. package/plugins/bizar/tests/tools/bg-report-progress.test.ts +0 -79
  527. package/plugins/bizar/tests/tools/bg-resume.test.ts +0 -40
  528. package/plugins/bizar/tests/tools/bg-send-message.test.ts +0 -116
  529. package/plugins/bizar/tests/tools/bg-spawn-delegation.test.ts +0 -147
  530. package/plugins/bizar/tests/tools/bg-spawn-http.test.ts +0 -233
  531. package/plugins/bizar/tests/tools/bg-spawn.test.ts +0 -311
  532. package/plugins/bizar/tests/tools/bg-status.test.ts +0 -217
  533. package/plugins/bizar/tests/tools/cline-runner.test.ts +0 -115
  534. package/plugins/bizar/tests/tools/plan-action.test.ts +0 -599
  535. package/plugins/bizar/tests/tools/read-glyph-feedback.test.ts +0 -253
  536. package/plugins/bizar/tests/tools/sandbox.test.ts +0 -117
  537. package/plugins/bizar/tests/tools/wait-for-feedback.test.ts +0 -390
  538. package/plugins/bizar/tests/update-deadlock.test.ts +0 -151
  539. package/plugins/bizar/tsconfig.json +0 -29
  540. package/scripts/mirror-agents-md.sh +0 -69
@@ -1,203 +0,0 @@
1
- /**
2
- * plugins/bizar/src/cline-runner.ts
3
- *
4
- * v5.5.1 — DEAD CODE stub.
5
- *
6
- * Background agents no longer run as `cline run` subprocesses. They
7
- * run as long-lived cline serve SDK sessions, managed by the
8
- * Bizar dashboard (`bizar-dash/src/server/bg-spawner.mjs`). The plugin
9
- * delegates to the dashboard via HTTP (`bg-spawn.ts`,
10
- * `bg-send-message.ts`, …) instead of spawning anything directly.
11
- *
12
- * This module is kept as a stub for two reasons:
13
- *
14
- * 1. `buildClineRunArgs` and the `SpawnAgentOptions` type are
15
- * still imported by `plugins/bizar/tests/tools/cline-runner.test.ts`
16
- * and serve as a regression pin for the argv layout that USED to
17
- * be passed to `Bun.spawn`. The test suite stays green because
18
- * the pure helpers are unchanged.
19
- *
20
- * 2. A handful of function names (`isAlive`, `killAgent`, …) are
21
- * imported elsewhere (`background.ts`) as a future-proofing hook.
22
- * We replace the implementations with no-op / error stubs so any
23
- * leftover call gets a clear, deliberate response instead of
24
- * silently succeeding.
25
- *
26
- * If something imports `spawnAgent`, it now gets back `{ ok: false,
27
- * error: "spawnAgent removed in v5.5.1" }`. This forces callers to the
28
- * dashboard path; nothing in the plugin should be calling this anymore.
29
- */
30
- import type { Subprocess } from "bun";
31
-
32
- export type AgentState =
33
- | "starting"
34
- | "running"
35
- | "paused"
36
- | "done"
37
- | "failed"
38
- | "killed";
39
-
40
- export interface AgentStatus {
41
- state: AgentState;
42
- sessionId?: string;
43
- processId: number;
44
- startedAt: number;
45
- endedAt?: number;
46
- exitCode?: number;
47
- error?: string;
48
- }
49
-
50
- export interface SpawnAgentOptions {
51
- /** The prompt to send. */
52
- prompt: string;
53
- /** Agent name (mimir, thor, …) — used as the session title prefix. */
54
- agent: string;
55
- /** Optional model override in "providerID/modelID" format. */
56
- model?: { providerID: string; modelID: string };
57
- /** Working directory for the cline run. */
58
- worktree: string;
59
- /** Absolute path to the log file (the LogWriter's output path). */
60
- logPath: string;
61
- /** Optional session title (defaults to `bgr:<agent>`). */
62
- title?: string;
63
- /** Extra env vars to pass through. */
64
- env?: Record<string, string>;
65
- /** How long to wait for the sessionId to appear in stderr (ms). */
66
- sessionIdTimeoutMs?: number;
67
- }
68
-
69
- export interface SpawnAgentResult {
70
- ok: boolean;
71
- sessionId?: string;
72
- processId?: number;
73
- error?: string;
74
- }
75
-
76
- type ExitCallback = (status: AgentStatus) => void;
77
-
78
- /**
79
- * v5.5.1 — Pure helper, UNCHANGED. Kept around so the regression test
80
- * that pins the argv layout still passes. (The argv used to be passed
81
- * to `Bun.spawn`; v5.5.1 no longer spawns anything, but the wire format
82
- * is a useful reference and may be reused if we ever revive subprocess
83
- * mode.)
84
- *
85
- * @param opts
86
- * @returns argv that USED to be passed to `Bun.spawn(["cline", "run", …])`
87
- */
88
- export function buildClineRunArgs(opts: SpawnAgentOptions): string[] {
89
- if (!opts.agent) {
90
- throw new Error("bizar_spawn_background: agent is required");
91
- }
92
- const args: string[] = [
93
- "cline",
94
- "run",
95
- "--dir", opts.worktree,
96
- "--print-logs",
97
- "--log-level", "INFO",
98
- "--title", opts.title || `bgr:${opts.agent}:${Date.now()}`,
99
- "--agent", opts.agent,
100
- ];
101
- if (opts.model) {
102
- args.push("--model", `${opts.model.providerID}/${opts.model.modelID}`);
103
- }
104
- args.push("--", opts.prompt);
105
- return args;
106
- }
107
-
108
- /**
109
- * v5.5.1 — STUB. Background agents run on the cline serve SDK,
110
- * not as `cline run` subprocesses. Returns an error directing the
111
- * caller to the dashboard HTTP API.
112
- *
113
- * The plugin's `bg-spawn.ts` no longer calls this; it's kept for any
114
- * late caller we missed.
115
- */
116
- export async function spawnAgent(_opts: SpawnAgentOptions): Promise<SpawnAgentResult> {
117
- return {
118
- ok: false,
119
- error:
120
- "spawnAgent removed in v5.5.1 — bg agents now run as cline serve sessions " +
121
- "managed by the Bizar dashboard. POST /api/background instead. " +
122
- "See plugins/bizar/src/tools/bg-spawn.ts.",
123
- };
124
- }
125
-
126
- /**
127
- * v5.5.1 — STUB. Returns null because there is no in-process subprocess
128
- * registry to look up.
129
- */
130
- export function getStatus(_processId: number): AgentStatus | null {
131
- return null;
132
- }
133
-
134
- /**
135
- * v5.5.1 — STUB. The real exit subscription lives on the dashboard side.
136
- * Returns a no-op unsubscribe.
137
- */
138
- export function onExit(_processId: number, _cb: ExitCallback): () => void {
139
- return () => undefined;
140
- }
141
-
142
- /**
143
- * v5.5.1 — STUB. Kill is now a dashboard-side operation
144
- * (`sdk.sessions.abort`). The plugin's `bg-kill.ts` posts to the
145
- * dashboard HTTP API; this function is here only as a fallback that
146
- * always reports "no such process tracked" so the dashboard's view of
147
- * the world is the source of truth.
148
- */
149
- export function killAgent(
150
- _processId: number,
151
- _signal: "SIGTERM" | "SIGKILL" = "SIGTERM",
152
- ): { ok: boolean; error?: string } {
153
- return { ok: true, error: "no_such_process_tracked_v5_5_1_use_dashboard_delete" };
154
- }
155
-
156
- /**
157
- * v5.5.1 — STUB. Pause is an output-pause at the dashboard side now.
158
- * The plugin's `bg-pause.ts` posts to the dashboard; this stub returns
159
- * `unsupported` so a leftover caller gets a clear signal.
160
- */
161
- export function pauseAgent(_processId: number): { ok: boolean; error?: string } {
162
- return { ok: false, error: "pause_via_dashboard_v5_5_1" };
163
- }
164
-
165
- /**
166
- * v5.5.1 — STUB. Same as `pauseAgent` — dashboard-side only.
167
- */
168
- export function resumeAgent(_processId: number): { ok: boolean; error?: string } {
169
- return { ok: false, error: "resume_via_dashboard_v5_5_1" };
170
- }
171
-
172
- /**
173
- * v5.5.1 — STUB. Returns false because there is no in-process PID
174
- * registry. Liveness is owned by the dashboard; the plugin's state
175
- * reconciliation code already uses this as a probe and falls back to
176
- * "fail closed" when the answer is false.
177
- */
178
- export function isAlive(processId: number): boolean {
179
- if (!Number.isFinite(processId) || processId <= 0) return false;
180
- return false;
181
- }
182
-
183
- /**
184
- * v5.5.1 — STUB. Returns an empty list — the runner registry is gone.
185
- */
186
- export function list(): AgentStatus[] {
187
- return [];
188
- }
189
-
190
- /**
191
- * v5.5.1 — STUB. Clears nothing (the registry is empty). Kept for the
192
- * test suite that imports it.
193
- */
194
- export function _resetForTests(): void {
195
- // no-op — the in-memory registry was removed.
196
- }
197
-
198
- /**
199
- * v5.5.1 — STUB. Returns an empty record because no agent is tracked
200
- * here. Provided so the module typechecks in callers that still reach
201
- * for a status record shape.
202
- */
203
- export type { Subprocess };
@@ -1,227 +0,0 @@
1
- /**
2
- * clineruntime.ts
3
- *
4
- * v6.0.0 — In-process ClineCore wrapper. Replaces the old ServeLifecycle
5
- * (subprocess spawn), HttpClient (HTTP), and EventStream (SSE) with a
6
- * single object that talks to ClineCore via direct function calls.
7
- *
8
- * Cline runs in-process now: there is no `cline serve` child, no port,
9
- * no password, no serve-info file. The plugin embeds ClineCore and uses
10
- * it directly.
11
- *
12
- * v6.0.1 — `startSession` accepts `execution` (passed straight into
13
- * Cline's `AgentExecutionConfig`) and an
14
- * `onConsecutiveMistakeLimitReached` recovery callback. The harness
15
- * also defaults `execution.maxConsecutiveMistakes` so the bundled CLI's
16
- * tight 3-strike abort does not kill sessions on the first malformed
17
- * tool call.
18
- *
19
- * Public surface:
20
- * - start() — boot ClineCore (idempotent)
21
- * - startSession(opts) — create a session; returns sessionId
22
- * - send(opts) — mid-flight prompt
23
- * - abort(opts) — abort a session
24
- * - subscribe(opts, cb) — events for a session; returns unsubscribe
25
- * - stop() — teardown
26
- */
27
-
28
- import type { ClineCore, CoreSessionEvent } from "@cline/core";
29
- import type {
30
- ConsecutiveMistakeLimitContext,
31
- ConsecutiveMistakeLimitDecision,
32
- } from "@cline/shared";
33
- import type { Logger } from "./logger.js";
34
-
35
- type ClineCoreLike = Pick<ClineCore, "start" | "send" | "abort" | "stop" | "subscribe" | "dispose">;
36
-
37
- export interface ClineRuntimeOptions {
38
- logger: Logger;
39
- clientName?: string;
40
- backendMode?: "auto" | "local" | "hub" | "remote";
41
- /**
42
- * Default `execution.maxConsecutiveMistakes` applied to every session
43
- * started by this runtime. Picked up from the plugin's normalized
44
- * options (see `options.ts`). Per-session overrides via
45
- * `StartSessionOpts.execution.maxConsecutiveMistakes` win.
46
- */
47
- defaultMaxConsecutiveMistakes?: number;
48
- /**
49
- * Recovery callback used for every session started by this runtime.
50
- * Built once at construction time (it is stateless) and applied
51
- * unless the caller overrides via
52
- * `StartSessionOpts.onConsecutiveMistakeLimitReached`. The harness
53
- * passes `buildMistakeRecovery({ onRecovery })` from
54
- * `mistake-recovery.ts` here so a single malformed tool call does
55
- * not abort the session.
56
- */
57
- defaultOnConsecutiveMistakeLimitReached?: (
58
- ctx: ConsecutiveMistakeLimitContext,
59
- ) => Promise<ConsecutiveMistakeLimitDecision> | ConsecutiveMistakeLimitDecision;
60
- }
61
-
62
- export interface StartSessionOpts {
63
- sessionId?: string;
64
- providerId: string;
65
- modelId: string;
66
- apiKey?: string;
67
- baseUrl?: string;
68
- workspaceRoot: string;
69
- systemPrompt?: string;
70
- prompt: string;
71
- sessionMetadata?: Record<string, unknown>;
72
- source?: string;
73
- /**
74
- * Forwarded to ClineCore as `config.execution`. If supplied, the
75
- * runtime overrides `execution.maxConsecutiveMistakes` with
76
- * `runtime.defaultMaxConsecutiveMistakes` *only* when the caller
77
- * didn't set it explicitly. Other fields (`reminderAfterIterations`,
78
- * `reminderText`, `loopDetection`) pass through as-is.
79
- */
80
- execution?: {
81
- maxConsecutiveMistakes?: number;
82
- reminderAfterIterations?: number;
83
- reminderText?: string;
84
- loopDetection?:
85
- | false
86
- | { softThreshold?: number; hardThreshold?: number };
87
- };
88
- /**
89
- * Forwarded to ClineCore as `config.onConsecutiveMistakeLimitReached`.
90
- * Used by `mistake-recovery.ts` to keep the session alive on
91
- * recoverable mistakes (`invalid_tool_call`, `tool_execution_failed`)
92
- * and stop on infra failures (`api_error`).
93
- */
94
- onConsecutiveMistakeLimitReached?: (
95
- ctx: ConsecutiveMistakeLimitContext,
96
- ) => Promise<ConsecutiveMistakeLimitDecision> | ConsecutiveMistakeLimitDecision;
97
- }
98
-
99
- export interface SendOpts { sessionId: string; prompt: string; }
100
- export interface AbortOpts { sessionId: string; reason?: string; }
101
- export interface SubscribeOpts { sessionId: string; }
102
-
103
- export type SessionEventHandler = (event: CoreSessionEvent) => void;
104
- export type UnsubscribeFn = () => void;
105
-
106
- export class ClineRuntime {
107
- private readonly logger: Logger;
108
- private readonly clientName: string;
109
- private readonly backendMode: "auto" | "local" | "hub" | "remote";
110
- private readonly defaultMaxConsecutiveMistakes?: number;
111
- private readonly defaultOnConsecutiveMistakeLimitReached?: (
112
- ctx: ConsecutiveMistakeLimitContext,
113
- ) => Promise<ConsecutiveMistakeLimitDecision> | ConsecutiveMistakeLimitDecision;
114
- private core: ClineCoreLike | null = null;
115
- private startingPromise: Promise<ClineCoreLike> | null = null;
116
-
117
- constructor(opts: ClineRuntimeOptions) {
118
- this.logger = opts.logger;
119
- this.clientName = opts.clientName ?? "bizar-plugin";
120
- this.backendMode = opts.backendMode ?? "local";
121
- if (typeof opts.defaultMaxConsecutiveMistakes === "number" && Number.isFinite(opts.defaultMaxConsecutiveMistakes)) {
122
- this.defaultMaxConsecutiveMistakes = Math.max(3, Math.floor(opts.defaultMaxConsecutiveMistakes));
123
- }
124
- if (typeof opts.defaultOnConsecutiveMistakeLimitReached === "function") {
125
- this.defaultOnConsecutiveMistakeLimitReached = opts.defaultOnConsecutiveMistakeLimitReached;
126
- }
127
- }
128
-
129
- async start(): Promise<void> {
130
- if (this.core) return;
131
- if (this.startingPromise) { await this.startingPromise; return; }
132
- this.startingPromise = (async () => {
133
- const cline = await import("@cline/core");
134
- const core = await cline.ClineCore.create({ clientName: this.clientName, backendMode: this.backendMode });
135
- this.core = core;
136
- this.logger.info(`bizar: ClineCore ready (clientName=${this.clientName}, backend=${this.backendMode})`);
137
- return core;
138
- })();
139
- try { await this.startingPromise; } finally { this.startingPromise = null; }
140
- }
141
-
142
- private async ensure(): Promise<ClineCoreLike> {
143
- if (this.core) return this.core;
144
- await this.start();
145
- if (!this.core) throw new Error("clineruntime: ClineCore failed to start");
146
- return this.core;
147
- }
148
-
149
- async startSession(opts: StartSessionOpts): Promise<string> {
150
- const core = await this.ensure();
151
- const execution = this.buildExecution(opts.execution);
152
- const recovery = opts.onConsecutiveMistakeLimitReached
153
- ?? this.defaultOnConsecutiveMistakeLimitReached;
154
- const config: Parameters<ClineCore["start"]>[0]["config"] = {
155
- providerId: opts.providerId,
156
- modelId: opts.modelId,
157
- apiKey: opts.apiKey,
158
- baseUrl: opts.baseUrl,
159
- systemPrompt: opts.systemPrompt ?? "",
160
- workspaceRoot: opts.workspaceRoot,
161
- cwd: opts.workspaceRoot,
162
- enableTools: true,
163
- enableSpawnAgent: true,
164
- enableAgentTeams: true,
165
- ...(execution ? { execution } : {}),
166
- ...(recovery ? { onConsecutiveMistakeLimitReached: recovery } : {}),
167
- };
168
- const started = await core.start({
169
- config: config as Parameters<ClineCore["start"]>[0]["config"],
170
- prompt: opts.prompt,
171
- source: opts.source,
172
- sessionMetadata: opts.sessionMetadata,
173
- ...(opts.sessionId ? { sessionId: opts.sessionId } : {}),
174
- });
175
- return started.sessionId;
176
- }
177
-
178
- /**
179
- * Merge caller's `execution` block with the runtime default
180
- * (`defaultMaxConsecutiveMistakes`).
181
- *
182
- * v6.2.4 — Plugin's defaultMaxConsecutiveMistakes is now a FLOOR,
183
- * not a default. The Cline CLI's `--retries` flag defaults to 3
184
- * and previously silently overrode our 6 (or higher) — leading
185
- * to premature session aborts after just 3 tool errors. Now we
186
- * use Math.max(plugin_default, caller_value) so the user can
187
- * still raise the limit with `--retries 15`, but the plugin's
188
- * higher default is honored on plain `cline` invocations.
189
- *
190
- * Returns `undefined` when neither is set, so the optional field
191
- * stays out of the config payload.
192
- */
193
- private buildExecution(
194
- callerExecution: StartSessionOpts["execution"],
195
- ): StartSessionOpts["execution"] | undefined {
196
- if (!callerExecution && this.defaultMaxConsecutiveMistakes === undefined) return undefined;
197
- const callerMax = callerExecution?.maxConsecutiveMistakes;
198
- const pluginMax = this.defaultMaxConsecutiveMistakes;
199
- const max =
200
- callerMax !== undefined && pluginMax !== undefined
201
- ? Math.max(callerMax, pluginMax)
202
- : callerMax ?? pluginMax;
203
- return { ...callerExecution, ...(max !== undefined ? { maxConsecutiveMistakes: max } : {}) };
204
- }
205
-
206
- async send(opts: SendOpts): Promise<void> {
207
- const core = await this.ensure();
208
- await (core.send as unknown as (input: { sessionId: string; prompt: string }) => Promise<unknown>)({ sessionId: opts.sessionId, prompt: opts.prompt });
209
- }
210
-
211
- async abort(opts: AbortOpts): Promise<void> {
212
- const core = await this.ensure();
213
- await core.abort(opts.sessionId, opts.reason);
214
- }
215
-
216
- subscribe(opts: SubscribeOpts, handler: SessionEventHandler): UnsubscribeFn {
217
- if (!this.core) throw new Error("clineruntime: subscribe() called before start()");
218
- return (this.core.subscribe as (l: SessionEventHandler, o?: SubscribeOpts) => UnsubscribeFn)(handler, opts);
219
- }
220
-
221
- async stop(): Promise<void> {
222
- if (!this.core) return;
223
- try { await this.core.dispose(); }
224
- catch (err) { this.logger.warn(`bizar: ClineCore.dispose failed: ${err instanceof Error ? err.message : String(err)}`); }
225
- this.core = null;
226
- }
227
- }
@@ -1,151 +0,0 @@
1
- /**
2
- * commands-impl.ts
3
- *
4
- * v0.5.0 — Side-effect executor for slash commands.
5
- *
6
- * Phase 2 (Cline SDK port) — replaces OpenCode's ToolContext and
7
- * ToolDefinition with Cline's AgentToolContext and AgentTool.
8
- *
9
- * The `commands.ts` module is a pure parser: given a user message, it
10
- * returns a `SlashCommandResult` describing what the chat hook should
11
- * do. This module implements the "do" half:
12
- *
13
- * - `executeSideEffect` — dispatches `create_plan`,
14
- * `list_plans`, `open_plan_url`, and `tool_invocation` to the
15
- * right handler.
16
- * - `executeToolInvocation` — builds a synthetic `AgentToolContext`,
17
- * pre-validates args against the tool's Zod schema, and invokes
18
- * the tool's `execute()` directly.
19
- * - `buildSyntheticToolContext` — constructs the `AgentToolContext`
20
- * shape Cline's tool framework requires.
21
- * - `validateToolArgs` — wraps the tool's inputSchema into
22
- * a `z.object(...)` and runs `safeParse`.
23
- */
24
-
25
- import { z } from "zod";
26
- import type { AgentTool, AgentToolContext } from "@cline/sdk";
27
-
28
- import type { Logger } from "./logger.js";
29
- import type { DefaultTemplate } from "./settings.js";
30
- import type { SideEffect } from "./commands.js";
31
- import { createPlan as fsCreatePlan, listPlans as fsListPlans } from "./plan-fs.js";
32
-
33
- export interface ExecutorContext {
34
- worktree: string;
35
- directory: string;
36
- logger: Logger;
37
- }
38
-
39
- export interface ExecuteOptions {
40
- tools: Record<string, AgentTool>;
41
- defaultTemplate: DefaultTemplate;
42
- defaultPort: number;
43
- }
44
-
45
- export interface ExecuteResult {
46
- responseOverride?: string;
47
- responseSuffix?: string;
48
- }
49
-
50
- export async function executeSideEffect(sideEffect: SideEffect, ctx: ExecutorContext, opts: ExecuteOptions): Promise<ExecuteResult> {
51
- try {
52
- switch (sideEffect.kind) {
53
- case "create_plan": return await executeCreatePlan(sideEffect, ctx, opts);
54
- case "list_plans": return await executeListPlans(sideEffect, ctx, opts);
55
- case "open_plan_url": return await executeOpenPlanUrl(sideEffect, ctx, opts);
56
- case "launch_dashboard": return await executeLaunchDashboard(sideEffect, ctx, opts);
57
- case "tool_invocation": return await executeToolInvocation(sideEffect, ctx, opts);
58
- default: {
59
- const _exhaustive: never = sideEffect;
60
- return { responseOverride: `Unknown side-effect: ${String(_exhaustive)}` };
61
- }
62
- }
63
- } catch (err: unknown) {
64
- const msg = err instanceof Error ? err.message : String(err);
65
- ctx.logger.warn(`bizar: executeSideEffect crashed: ${msg}`);
66
- return { responseOverride: `Command failed: ${msg}` };
67
- }
68
- }
69
-
70
- async function executeCreatePlan(sideEffect: Extract<SideEffect, { kind: "create_plan" }>, ctx: ExecutorContext, opts: ExecuteOptions): Promise<ExecuteResult> {
71
- const template = sideEffect.template ?? opts.defaultTemplate;
72
- try {
73
- const result = await fsCreatePlan(ctx.worktree, sideEffect.slug, { template, logger: ctx.logger });
74
- if (!result.ok) return { responseOverride: `Failed to create plan: ${result.error}` };
75
- return { responseOverride: `Created plan "${sideEffect.slug}" using the "${template}" template.` };
76
- } catch (err: unknown) {
77
- const msg = err instanceof Error ? err.message : String(err);
78
- return { responseOverride: `Failed to create plan: ${msg}` };
79
- }
80
- }
81
-
82
- async function executeListPlans(_sideEffect: Extract<SideEffect, { kind: "list_plans" }>, ctx: ExecutorContext, _opts: ExecuteOptions): Promise<ExecuteResult> {
83
- try {
84
- const plans = await fsListPlans(ctx.worktree, ctx.logger);
85
- if (plans.length === 0) return { responseOverride: "No plans found. Use /plan create <slug> to start one." };
86
- const lines = plans.map((p) => `- ${p.slug} [${p.status ?? "draft"}] — ${p.slug}`);
87
- return { responseOverride: `Plans (${plans.length}):\n${lines.join("\n")}` };
88
- } catch (err: unknown) {
89
- const msg = err instanceof Error ? err.message : String(err);
90
- return { responseOverride: `Failed to list plans: ${msg}` };
91
- }
92
- }
93
-
94
- async function executeLaunchDashboard(sideEffect: Extract<SideEffect, { kind: "launch_dashboard" }>, _ctx: ExecutorContext, _opts: ExecuteOptions): Promise<ExecuteResult> {
95
- return { responseOverride: `Launch dashboard at http://127.0.0.1:${sideEffect.defaultPort}/` };
96
- }
97
-
98
- async function executeOpenPlanUrl(sideEffect: Extract<SideEffect, { kind: "open_plan_url" }>, _ctx: ExecutorContext, opts: ExecuteOptions): Promise<ExecuteResult> {
99
- return { responseOverride: `Open plan: http://127.0.0.1:${opts.defaultPort}/plans/${sideEffect.slug}` };
100
- }
101
-
102
- export async function executeToolInvocation(sideEffect: Extract<SideEffect, { kind: "tool_invocation" }>, ctx: ExecutorContext, opts: ExecuteOptions): Promise<ExecuteResult> {
103
- const { toolName, args } = sideEffect;
104
- const tool = opts.tools[toolName];
105
- if (tool === undefined) {
106
- const known = Object.keys(opts.tools).sort().join(", ");
107
- return { responseOverride: `Tool "${toolName}" is not registered in this plugin. Available tools: ${known || "(none)"}.` };
108
- }
109
- const validation = validateToolArgs(tool, args);
110
- if (!validation.ok) return { responseOverride: `Invalid arguments for ${toolName}: ${validation.error}` };
111
- const syntheticCtx = buildSyntheticToolContext(ctx);
112
- try {
113
- const result = await tool.execute(validation.args, syntheticCtx);
114
- return { responseOverride: stringifyToolResult(result) };
115
- } catch (err: unknown) {
116
- const msg = err instanceof Error ? err.message : String(err);
117
- ctx.logger.warn(`bizar: tool ${toolName} crashed: ${msg}`);
118
- return { responseOverride: `Tool ${toolName} failed: ${msg}` };
119
- }
120
- }
121
-
122
- export function buildSyntheticToolContext(ctx: ExecutorContext): AgentToolContext {
123
- return { agentId: "slash-command", sessionId: "slash-command", runId: `slash-command-${Date.now()}`, iteration: 0, signal: new AbortController().signal, metadata: { worktree: ctx.worktree, directory: ctx.directory, parentAgent: "" } } as unknown as AgentToolContext;
124
- }
125
-
126
- export function validateToolArgs(tool: AgentTool, args: unknown): { ok: true; args: Record<string, unknown> } | { ok: false; error: string } {
127
- try {
128
- const rawShape = (tool.inputSchema ?? {}) as z.ZodRawShape;
129
- const schema = z.object(rawShape);
130
- const result = schema.safeParse(args);
131
- if (result.success) return { ok: true, args: result.data as Record<string, unknown> };
132
- const first = result.error.issues[0];
133
- const where = first?.path && first.path.length > 0 ? first.path.join(".") : "(root)";
134
- return { ok: false, error: `${where}: ${first?.message ?? "validation failed"}` };
135
- } catch (err: unknown) {
136
- const msg = err instanceof Error ? err.message : String(err);
137
- return { ok: false, error: `schema error: ${msg}` };
138
- }
139
- }
140
-
141
- function stringifyToolResult(result: unknown): string {
142
- if (typeof result === "string") return result;
143
- if (result === null || result === undefined) return "";
144
- const r = result as { output?: unknown };
145
- if (r && typeof r === "object" && "output" in r) {
146
- if (typeof r.output === "string") return r.output;
147
- try { return JSON.stringify(r.output, null, 2); } catch { return String(r.output); }
148
- }
149
- if (typeof result === "object") { try { return JSON.stringify(result, null, 2); } catch { return String(result); } }
150
- return String(result);
151
- }