@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.
- package/.claude/CLAUDE.md +15 -0
- package/.claude/agents/_shared/AGENT_BASELINE.md +168 -0
- package/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
- package/.claude/agents/_shared/SKILLS.md +109 -0
- package/.claude/agents/agent-browser.md +80 -0
- package/.claude/agents/baldr.md +49 -0
- package/.claude/agents/forseti.md +51 -0
- package/.claude/agents/frigg.md +42 -0
- package/.claude/agents/heimdall.md +33 -0
- package/.claude/agents/hermod.md +53 -0
- package/.claude/agents/mimir.md +49 -0
- package/.claude/agents/odin.md +287 -0
- package/.claude/agents/quick.md +34 -0
- package/.claude/agents/semble-search.md +50 -0
- package/.claude/agents/thor.md +53 -0
- package/.claude/agents/tyr.md +56 -0
- package/.claude/agents/vidarr.md +54 -0
- package/.claude/agents/vor.md +53 -0
- package/.claude/commands/audit.md +25 -0
- package/.claude/commands/bizar.md +22 -0
- package/.claude/commands/explain.md +17 -0
- package/.claude/commands/init.md +29 -0
- package/.claude/commands/learn.md +44 -0
- package/.claude/commands/plan.md +35 -0
- package/.claude/commands/plow-through.md +50 -0
- package/.claude/commands/pr-review.md +49 -0
- package/.claude/commands/setup-provider.md +96 -0
- package/.claude/commands/tailscale-serve.md +100 -0
- package/.claude/commands/team.md +132 -0
- package/.claude/commands/test.md +62 -0
- package/.claude/commands/validate.md +68 -0
- package/.claude/commands/visual-plan.md +24 -0
- package/.claude/hooks/README.md +92 -0
- package/.claude/hooks/posttooluse-editwrite.mjs +91 -0
- package/.claude/hooks/pretooluse-bash.mjs +81 -0
- package/.claude/hooks/pretooluse-editwrite.mjs +139 -0
- package/.claude/hooks/sessionend-recall.mjs +74 -0
- package/.claude/hooks/sessionstart-prime.mjs +80 -0
- package/.claude/hooks/userpromptsubmit-tag.mjs +80 -0
- package/.claude/settings.json +116 -0
- package/.claude/skills/9router/SKILL.md +80 -0
- package/.claude/skills/9router-chat/SKILL.md +73 -0
- package/.claude/skills/9router-embeddings/SKILL.md +69 -0
- package/.claude/skills/9router-image/SKILL.md +86 -0
- package/.claude/skills/9router-stt/SKILL.md +79 -0
- package/.claude/skills/9router-tts/SKILL.md +80 -0
- package/.claude/skills/9router-web-fetch/SKILL.md +99 -0
- package/.claude/skills/9router-web-search/SKILL.md +91 -0
- package/.claude/skills/bizar/README.md +9 -0
- package/.claude/skills/bizar/SKILL.md +450 -0
- package/.claude/skills/cpp-coding-standards/README.md +28 -0
- package/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
- package/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
- package/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
- package/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
- package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
- package/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
- package/.claude/skills/cpp-testing/README.md +28 -0
- package/.claude/skills/cpp-testing/SKILL.md +304 -0
- package/.claude/skills/cpp-testing/references/coverage.md +370 -0
- package/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
- package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
- package/.claude/skills/cpp-testing/references/mocking.md +364 -0
- package/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
- package/.claude/skills/cubesandbox/SKILL.md +148 -0
- package/.claude/skills/embedded-esp-idf/README.md +41 -0
- package/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
- package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
- package/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
- package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
- package/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
- package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
- package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
- package/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
- package/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
- package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
- package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
- package/.claude/skills/glyph/SKILL.md +163 -0
- package/.claude/skills/harness-engineering/SKILL.md +143 -0
- package/.claude/skills/lightrag/SKILL.md +81 -0
- package/.claude/skills/memory-protocol/SKILL.md +105 -0
- package/.claude/skills/obsidian/SKILL.md +306 -0
- package/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
- package/.claude/skills/self-improvement/SKILL.md +64 -0
- package/README.md +87 -59
- package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js → EnvVarsSection-B58aiJiE.js} +1 -1
- package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js.map → EnvVarsSection-B58aiJiE.js.map} +1 -1
- package/bizar-dash/dist/assets/{MobileChat-BnKN_Ks_.js → MobileChat-BJrqwVDd.js} +1 -1
- package/bizar-dash/dist/assets/{MobileChat-BnKN_Ks_.js.map → MobileChat-BJrqwVDd.js.map} +1 -1
- package/bizar-dash/dist/assets/{MobileSettings-DjCPxC-Q.js → MobileSettings-CEQNJNLJ.js} +1 -1
- package/bizar-dash/dist/assets/{MobileSettings-DjCPxC-Q.js.map → MobileSettings-CEQNJNLJ.js.map} +1 -1
- package/bizar-dash/dist/assets/{main-DYiZqMrn.js → main-IvfQAOfy.js} +1 -1
- package/bizar-dash/dist/assets/{main-DYiZqMrn.js.map → main-IvfQAOfy.js.map} +1 -1
- package/bizar-dash/dist/assets/{markdown-C6mXtQxD.js → markdown-tOLaD6nm.js} +1 -1
- package/bizar-dash/dist/assets/{markdown-C6mXtQxD.js.map → markdown-tOLaD6nm.js.map} +1 -1
- package/bizar-dash/dist/assets/{mobile-CMHqtLV2.js → mobile-DYCHcUpq.js} +1 -1
- package/bizar-dash/dist/assets/{mobile-CMHqtLV2.js.map → mobile-DYCHcUpq.js.map} +1 -1
- package/bizar-dash/dist/assets/{mobile-layout-3jIhHX_p.js → mobile-layout-CBHjpwsb.js} +2 -2
- package/bizar-dash/dist/assets/{mobile-layout-3jIhHX_p.js.map → mobile-layout-CBHjpwsb.js.map} +1 -1
- package/bizar-dash/dist/assets/{useSlashCommands-DtITw8Xv.js → useSlashCommands-Bd7_FA6U.js} +2 -2
- package/bizar-dash/dist/assets/{useSlashCommands-DtITw8Xv.js.map → useSlashCommands-Bd7_FA6U.js.map} +1 -1
- package/bizar-dash/dist/assets/{vendor-CeHGtduv.js → vendor-C843201K.js} +12 -12
- package/bizar-dash/dist/assets/vendor-C843201K.js.map +1 -0
- package/bizar-dash/dist/index.html +6 -6
- package/bizar-dash/dist/mobile.html +2 -2
- package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/bizar-dash/src/server/api.mjs +4 -4
- package/bizar-dash/src/server/background-store.mjs +15 -16
- package/bizar-dash/src/server/bg-poller.mjs +25 -35
- package/bizar-dash/src/server/bg-retry.mjs +66 -194
- package/bizar-dash/src/server/claude-bg-spawner.mjs +390 -0
- package/bizar-dash/src/server/claude-info.mjs +412 -0
- package/bizar-dash/src/server/{cline-runner.mjs → claude-runner.mjs} +53 -48
- package/bizar-dash/src/server/claude-sdk.mjs +191 -0
- package/bizar-dash/src/server/providers-store.mjs +22 -49
- package/bizar-dash/src/server/routes/background.mjs +24 -20
- package/bizar-dash/src/server/routes/chat.mjs +223 -326
- package/bizar-dash/src/server/routes/claude-session-detail.mjs +329 -0
- package/bizar-dash/src/server/routes/claude-sessions.mjs +259 -0
- package/bizar-dash/src/server/routes/tasks.mjs +20 -28
- package/bizar-dash/src/server/task-delegator.mjs +76 -77
- package/bizar-dash/src/web/components/chat/useChat.ts +23 -27
- package/bizar-dash/src/web/views/Chat.tsx +8 -8
- package/cli/bin.mjs +31 -18
- package/cli/commands/claude-cmd.mjs +348 -0
- package/cli/commands/install.mjs +12 -11
- package/cli/commands/sandbox.mjs +220 -0
- package/cli/commands/validate.mjs +252 -288
- package/cli/dev-link.test.mjs +11 -11
- package/cli/doctor.mjs +131 -213
- package/cli/install.mjs +33 -37
- package/cli/install.test.mjs +9 -9
- package/cli/provision-claude.mjs +893 -0
- package/cli/provision.mjs +330 -226
- package/cli/provision.test.mjs +102 -0
- package/cli/utils.mjs +72 -58
- package/config/AGENTS.md +28 -28
- package/config/agents/_shared/AGENT_BASELINE.md +104 -684
- package/config/skills/bizar/SKILL.md +197 -0
- package/config/skills/cubesandbox/SKILL.md +148 -0
- package/config/skills/harness-engineering/SKILL.md +142 -0
- package/install.sh +66 -44
- package/package.json +19 -11
- package/packages/sdk/ARCHITECTURE.md +40 -36
- package/packages/sdk/package-lock.json +32 -0
- package/packages/sdk/package.json +15 -5
- package/{plugins/bizar → packages/sdk}/src/dangerous-patterns.ts +6 -28
- package/packages/sdk/src/fingerprint.ts +0 -0
- package/packages/sdk/src/index.ts +38 -73
- package/packages/sdk/src/mcp/bin.ts +51 -0
- package/packages/sdk/src/mcp/server.ts +498 -0
- package/{plugins/bizar/src/memory-vault.ts → packages/sdk/src/memory/index.ts} +18 -21
- package/packages/sdk/tests/sdk.test.mjs +148 -0
- package/packages/sdk/vitest.config.ts +1 -1
- package/scripts/bh-full-e2e.mjs +166 -363
- package/scripts/check-deps.mjs +28 -46
- package/scripts/mirror-claude-md.sh +78 -0
- package/scripts/test-in-container.sh +157 -0
- package/templates/clean-state-checklist.md +3 -3
- package/templates/sprint-contract.md +2 -2
- package/bizar-dash/.bizar/activity.log +0 -3
- package/bizar-dash/.omx/logs/omx-2026-07-07.jsonl +0 -1
- package/bizar-dash/.omx/state/session.json +0 -10
- package/bizar-dash/bizar-design/EXPLANATION.md +0 -307
- package/bizar-dash/bizar-design/INSTRUCTIONS.md +0 -149
- package/bizar-dash/bizar-design/canvas.html +0 -281
- package/bizar-dash/bizar-design/canvas.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/components.css +0 -1665
- package/bizar-dash/bizar-design/components.html +0 -557
- package/bizar-dash/bizar-design/components.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/desktop/agents.html +0 -74
- package/bizar-dash/bizar-design/desktop/agents.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/desktop/memory.html +0 -75
- package/bizar-dash/bizar-design/desktop/memory.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/desktop/metrics.html +0 -63
- package/bizar-dash/bizar-design/desktop/metrics.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/desktop/overview.html +0 -95
- package/bizar-dash/bizar-design/desktop/overview.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/desktop/settings.html +0 -70
- package/bizar-dash/bizar-design/desktop/settings.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/icons.svg +0 -44
- package/bizar-dash/bizar-design/index.html +0 -192
- package/bizar-dash/bizar-design/index.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/mobile/agents.html +0 -29
- package/bizar-dash/bizar-design/mobile/agents.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/mobile/memory.html +0 -28
- package/bizar-dash/bizar-design/mobile/memory.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/mobile/metrics.html +0 -29
- package/bizar-dash/bizar-design/mobile/metrics.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/mobile/overview.html +0 -33
- package/bizar-dash/bizar-design/mobile/overview.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/mobile/settings.html +0 -28
- package/bizar-dash/bizar-design/mobile/settings.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/prototype.js +0 -114
- package/bizar-dash/bizar-design/tokens.css +0 -106
- package/bizar-dash/dist/assets/vendor-CeHGtduv.js.map +0 -1
- package/bizar-dash/node_modules/.package-lock.json +0 -6
- package/bizar-dash/package-lock.json +0 -6
- package/bizar-dash/src/server/cline-sdk.mjs +0 -132
- package/bizar-dash/src/server/routes/cline-session-detail.mjs +0 -559
- package/bizar-dash/src/server/routes/cline-sessions.mjs +0 -291
- package/cli/commands/cline-cmd.mjs +0 -289
- package/cli/commands/validate.test.mjs +0 -344
- package/cli/doctor.test.mjs +0 -350
- package/config/cline.json.template +0 -342
- package/packages/sdk/src/client.ts +0 -188
- package/packages/sdk/src/cline-events.ts +0 -134
- package/packages/sdk/src/cline-types.ts +0 -66
- package/packages/sdk/src/cline.ts +0 -339
- package/packages/sdk/src/errors.ts +0 -129
- package/packages/sdk/src/events.ts +0 -153
- package/packages/sdk/src/types.ts +0 -176
- package/packages/sdk/tests/client.test.ts +0 -217
- package/packages/sdk/tests/errors.test.ts +0 -108
- package/packages/sdk/tests/events.test.ts +0 -139
- package/packages/sdk/tests/fixtures/fetch-mock.ts +0 -152
- package/packages/sdk/tests/fixtures/sse-mock.ts +0 -30
- package/plugins/bizar/ARCHITECTURE.md +0 -142
- package/plugins/bizar/CONSTRAINTS.md +0 -67
- package/plugins/bizar/LICENSE +0 -21
- package/plugins/bizar/README.md +0 -448
- package/plugins/bizar/index.ts +0 -872
- package/plugins/bizar/package.json +0 -39
- package/plugins/bizar/scripts/check-forbidden-imports.sh +0 -33
- package/plugins/bizar/src/background-state.ts +0 -641
- package/plugins/bizar/src/background.ts +0 -1806
- package/plugins/bizar/src/cline-runner.ts +0 -203
- package/plugins/bizar/src/clineruntime.ts +0 -227
- package/plugins/bizar/src/commands-impl.ts +0 -151
- package/plugins/bizar/src/commands.ts +0 -1799
- package/plugins/bizar/src/compaction.d.mts +0 -48
- package/plugins/bizar/src/compaction.mjs +0 -192
- package/plugins/bizar/src/dashboard-client.ts +0 -233
- package/plugins/bizar/src/event-stream.ts +0 -606
- package/plugins/bizar/src/fingerprint.ts +0 -120
- package/plugins/bizar/src/handoff.ts +0 -79
- package/plugins/bizar/src/hooks/memory-flush-on-compact.ts +0 -123
- package/plugins/bizar/src/hooks/memory-inject.ts +0 -247
- package/plugins/bizar/src/hooks/memory-write-on-end.ts +0 -188
- package/plugins/bizar/src/hooks/skill-curator.ts +0 -180
- package/plugins/bizar/src/http-client.ts +0 -467
- package/plugins/bizar/src/key-rotation.ts +0 -218
- package/plugins/bizar/src/logger.ts +0 -144
- package/plugins/bizar/src/loop-engineering.ts +0 -241
- package/plugins/bizar/src/loop.ts +0 -176
- package/plugins/bizar/src/mistake-recovery.ts +0 -98
- package/plugins/bizar/src/odin.ts +0 -227
- package/plugins/bizar/src/options.ts +0 -470
- package/plugins/bizar/src/plan-fs.ts +0 -323
- package/plugins/bizar/src/reasoning-clean.ts +0 -454
- package/plugins/bizar/src/report.ts +0 -178
- package/plugins/bizar/src/research-prompt.ts +0 -35
- package/plugins/bizar/src/serve-info.ts +0 -228
- package/plugins/bizar/src/serve.ts +0 -496
- package/plugins/bizar/src/settings.ts +0 -349
- package/plugins/bizar/src/state.ts +0 -298
- package/plugins/bizar/src/tool-discipline.ts +0 -105
- package/plugins/bizar/src/tools/agent-browser.ts +0 -315
- package/plugins/bizar/src/tools/bg-collect.ts +0 -131
- package/plugins/bizar/src/tools/bg-get-comments.ts +0 -266
- package/plugins/bizar/src/tools/bg-kill.ts +0 -116
- package/plugins/bizar/src/tools/bg-pause.ts +0 -99
- package/plugins/bizar/src/tools/bg-report-progress.ts +0 -115
- package/plugins/bizar/src/tools/bg-resume.ts +0 -94
- package/plugins/bizar/src/tools/bg-send-message.ts +0 -223
- package/plugins/bizar/src/tools/bg-spawn.ts +0 -502
- package/plugins/bizar/src/tools/bg-status.ts +0 -130
- package/plugins/bizar/src/tools/graph-query.ts +0 -278
- package/plugins/bizar/src/tools/loop-engineering.ts +0 -193
- package/plugins/bizar/src/tools/memory-list.ts +0 -43
- package/plugins/bizar/src/tools/memory-read.ts +0 -69
- package/plugins/bizar/src/tools/memory-search.ts +0 -47
- package/plugins/bizar/src/tools/memory-write.ts +0 -54
- package/plugins/bizar/src/tools/open-kb.ts +0 -198
- package/plugins/bizar/src/tools/plan-action.ts +0 -785
- package/plugins/bizar/src/tools/read-glyph-feedback.ts +0 -191
- package/plugins/bizar/src/tools/team-spawn.ts +0 -73
- package/plugins/bizar/src/tools/team-status.ts +0 -76
- package/plugins/bizar/src/tools/wait-for-feedback.ts +0 -415
- package/plugins/bizar/src/trajectory.ts +0 -104
- package/plugins/bizar/tests/README.md +0 -99
- package/plugins/bizar/tests/attach-handler-bug.test.ts +0 -169
- package/plugins/bizar/tests/background-state.test.ts +0 -277
- package/plugins/bizar/tests/background.test.ts +0 -402
- package/plugins/bizar/tests/block.test.ts +0 -195
- package/plugins/bizar/tests/canonical-key-order.test.ts +0 -75
- package/plugins/bizar/tests/clineruntime-config.test.ts +0 -283
- package/plugins/bizar/tests/commands-impl.test.ts +0 -316
- package/plugins/bizar/tests/commands.test.ts +0 -584
- package/plugins/bizar/tests/compaction.test.ts +0 -264
- package/plugins/bizar/tests/config.test.ts +0 -128
- package/plugins/bizar/tests/dashboard-client.test.ts +0 -159
- package/plugins/bizar/tests/dispose.test.ts +0 -336
- package/plugins/bizar/tests/event-stream.test.ts +0 -409
- package/plugins/bizar/tests/event.test.ts +0 -262
- package/plugins/bizar/tests/fingerprint.test.ts +0 -162
- package/plugins/bizar/tests/http-client.test.ts +0 -404
- package/plugins/bizar/tests/init-helpers.test.ts +0 -203
- package/plugins/bizar/tests/integration/slash-command.test.ts +0 -349
- package/plugins/bizar/tests/integration/tool-routing.test.ts +0 -98
- package/plugins/bizar/tests/key-rotation.test.ts +0 -396
- package/plugins/bizar/tests/loop-engineering.test.ts +0 -168
- package/plugins/bizar/tests/loop.test.ts +0 -397
- package/plugins/bizar/tests/memory-write-on-end.test.ts +0 -92
- package/plugins/bizar/tests/mistake-recovery.test.ts +0 -116
- package/plugins/bizar/tests/odin.test.ts +0 -125
- package/plugins/bizar/tests/options.test.ts +0 -329
- package/plugins/bizar/tests/reasoning-clean.test.ts +0 -422
- package/plugins/bizar/tests/safety.test.ts +0 -256
- package/plugins/bizar/tests/serve.test.ts +0 -339
- package/plugins/bizar/tests/settings.test.ts +0 -351
- package/plugins/bizar/tests/stall-think.test.ts +0 -750
- package/plugins/bizar/tests/state.test.ts +0 -276
- package/plugins/bizar/tests/tool-discipline.test.ts +0 -77
- package/plugins/bizar/tests/tools/agent-browser.test.ts +0 -98
- package/plugins/bizar/tests/tools/bg-collect.test.ts +0 -337
- package/plugins/bizar/tests/tools/bg-get-comments.test.ts +0 -485
- package/plugins/bizar/tests/tools/bg-kill.test.ts +0 -235
- package/plugins/bizar/tests/tools/bg-pause.test.ts +0 -61
- package/plugins/bizar/tests/tools/bg-report-progress.test.ts +0 -79
- package/plugins/bizar/tests/tools/bg-resume.test.ts +0 -40
- package/plugins/bizar/tests/tools/bg-send-message.test.ts +0 -116
- package/plugins/bizar/tests/tools/bg-spawn-delegation.test.ts +0 -147
- package/plugins/bizar/tests/tools/bg-spawn-http.test.ts +0 -233
- package/plugins/bizar/tests/tools/bg-spawn.test.ts +0 -311
- package/plugins/bizar/tests/tools/bg-status.test.ts +0 -217
- package/plugins/bizar/tests/tools/cline-runner.test.ts +0 -115
- package/plugins/bizar/tests/tools/plan-action.test.ts +0 -599
- package/plugins/bizar/tests/tools/read-glyph-feedback.test.ts +0 -253
- package/plugins/bizar/tests/tools/wait-for-feedback.test.ts +0 -390
- package/plugins/bizar/tests/update-deadlock.test.ts +0 -151
- package/plugins/bizar/tsconfig.json +0 -29
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* src/server/task-delegator.mjs
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* v6.3.0 — Odin task delegation, REWRITTEN for Claude Code.
|
|
5
5
|
*
|
|
6
6
|
* Accepts a single "natural language" task from the user. Splits it into
|
|
7
7
|
* 1-5 subtasks via heuristic rules (an LLM call would replace this in
|
|
@@ -18,23 +18,18 @@
|
|
|
18
18
|
* Subtasks are always persisted to the regular tasks store first; the
|
|
19
19
|
* background dispatch is best-effort.
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
21
|
+
* v6.3.0 — Dispatch path replaced. The previous Cline path shell-executed
|
|
22
|
+
* `node plugins/bizar/dist/cli.js bg enqueue`, then `cline run` via
|
|
23
|
+
* cline-runner.mjs. Claude Code has no equivalent `serve` child — the
|
|
24
|
+
* new path spawns `claude -p "<prompt>"` per subtask via
|
|
25
|
+
* `claude-runner.mjs` (in-process when the SDK is available,
|
|
26
|
+
* subprocess otherwise). The dispatch is gated on `pingClaudeSdk()`
|
|
27
|
+
* (in-process SDK reachable) OR the `claude` binary on PATH.
|
|
26
28
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* 4. Write a state file under ~/.cache/bizar/bg/ so the dashboard's
|
|
32
|
-
* background-store can list and kill it.
|
|
33
|
-
*
|
|
34
|
-
* If serve-info is missing (plugin not running) we log a clear warning
|
|
35
|
-
* at startup AND surface the dispatch failure in the `/submit` response,
|
|
36
|
-
* so the user can re-dispatch manually with `/api/tasks/:id/start`
|
|
37
|
-
* after the plugin is up.
|
|
29
|
+
* If neither is available we log a clear warning at startup AND
|
|
30
|
+
* surface the dispatch failure in the `/submit` response, so the
|
|
31
|
+
* user can re-dispatch manually with `/api/tasks/:id/start`
|
|
32
|
+
* once the runtime is up.
|
|
38
33
|
*/
|
|
39
34
|
|
|
40
35
|
import { tasksStore, ALLOWED_TASK_STATUSES } from './tasks-store.mjs';
|
|
@@ -84,6 +79,7 @@ function buildPromptText(sub) {
|
|
|
84
79
|
parts.push(`Subtask ID: ${sub.id}`);
|
|
85
80
|
parts.push(`Assigned agent: ${sub.assignee || 'tyr'}`);
|
|
86
81
|
parts.push(`Parent task ID: ${sub.parent || '(none)'}`);
|
|
82
|
+
parts.push(`Runtime: Claude Code (claude -p)`);
|
|
87
83
|
return parts.join('\n');
|
|
88
84
|
}
|
|
89
85
|
|
|
@@ -460,23 +456,25 @@ export const taskDelegator = {
|
|
|
460
456
|
},
|
|
461
457
|
|
|
462
458
|
/**
|
|
463
|
-
*
|
|
464
|
-
*
|
|
465
|
-
*
|
|
466
|
-
*
|
|
467
|
-
* `
|
|
459
|
+
* v6.3.0 — Best-effort dispatch to the Claude Code runtime.
|
|
460
|
+
* Replaces the v3.5.4 Cline HTTP-serve path. Spawns one
|
|
461
|
+
* `claude -p "<prompt>"` subprocess per subtask via
|
|
462
|
+
* `claude-runner.mjs` (or, when the SDK is available,
|
|
463
|
+
* `claude-bg-spawner.mjs`'s SDK-backed path).
|
|
468
464
|
*
|
|
469
|
-
*
|
|
470
|
-
*
|
|
471
|
-
*
|
|
465
|
+
* The runner writes its output to the LogWriter's log file under
|
|
466
|
+
* `~/.cache/bizar/logs/<sessionId>.log`. The dashboard's
|
|
467
|
+
* `backgroundStore.list()` and `kill()` paths find the instance
|
|
468
|
+
* via the per-instance state file at
|
|
469
|
+
* `~/.cache/bizar/bg/<instanceId>.json`.
|
|
472
470
|
*
|
|
473
471
|
* Returns a structured `{ dispatched: string[], errors: Array<…>, warnings: Array<…> }`
|
|
474
|
-
* so the caller (and `/api/tasks/submit`) can surface failures to
|
|
475
|
-
* user instead of swallowing them.
|
|
472
|
+
* so the caller (and `/api/tasks/submit`) can surface failures to
|
|
473
|
+
* the user instead of swallowing them.
|
|
476
474
|
*
|
|
477
|
-
* v3.5.1 — Respects agents.maxParallel: caps concurrent dispatches
|
|
478
|
-
* the configured limit; overflow subtasks are queued until a
|
|
479
|
-
* frees up.
|
|
475
|
+
* v3.5.1 — Respects agents.maxParallel: caps concurrent dispatches
|
|
476
|
+
* to the configured limit; overflow subtasks are queued until a
|
|
477
|
+
* slot frees up.
|
|
480
478
|
*
|
|
481
479
|
* @returns {Promise<{ dispatched: string[], errors: Array<{ subtaskId: string, kind: string, message: string }>, warnings: string[] }>}
|
|
482
480
|
*/
|
|
@@ -503,29 +501,32 @@ export const taskDelegator = {
|
|
|
503
501
|
const runningCount = await runningBgCount();
|
|
504
502
|
const slotsAvailable = Math.max(0, maxParallel - runningCount);
|
|
505
503
|
|
|
506
|
-
//
|
|
507
|
-
//
|
|
508
|
-
//
|
|
509
|
-
//
|
|
510
|
-
//
|
|
511
|
-
|
|
512
|
-
|
|
504
|
+
// v6.3.0 — Verify the Claude Code runtime is reachable. We
|
|
505
|
+
// accept either the in-process SDK or the `claude` binary on
|
|
506
|
+
// PATH. `pingClaudeSdk()` probes the SDK; `claude -v` on PATH
|
|
507
|
+
// is the subprocess fallback. When neither is available we
|
|
508
|
+
// mark subtasks as `dispatchPending: true` so the UI surfaces
|
|
509
|
+
// "Awaiting dispatch" and `/api/tasks/:id/start` can retry
|
|
510
|
+
// after the user installs Claude Code.
|
|
511
|
+
let claudeAvailable = false;
|
|
513
512
|
try {
|
|
514
|
-
const {
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
513
|
+
const { pingClaudeSdk } = await import('./claude-sdk.mjs');
|
|
514
|
+
claudeAvailable = await pingClaudeSdk();
|
|
515
|
+
} catch {
|
|
516
|
+
claudeAvailable = false;
|
|
517
|
+
}
|
|
518
|
+
if (!claudeAvailable) {
|
|
519
|
+
try {
|
|
520
|
+
const { spawnSync } = await import('node:child_process');
|
|
521
|
+
const probe = spawnSync('claude', ['-v'], { stdio: 'ignore', timeout: 1500 });
|
|
522
|
+
claudeAvailable = probe.status === 0;
|
|
523
|
+
} catch {
|
|
524
|
+
claudeAvailable = false;
|
|
525
525
|
}
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
|
|
526
|
+
}
|
|
527
|
+
if (!claudeAvailable) {
|
|
528
|
+
result.warnings.push('claude runtime not reachable — neither the @anthropic-ai/claude-agent-sdk nor the `claude` binary on PATH. Tasks will be marked queued; retry via POST /api/tasks/:id/start once Claude Code is installed.');
|
|
529
|
+
console.warn('[task-delegator] claude runtime unreachable — dispatch will be deferred.');
|
|
529
530
|
}
|
|
530
531
|
|
|
531
532
|
// Split: first N get dispatched now, rest are queued.
|
|
@@ -549,13 +550,13 @@ export const taskDelegator = {
|
|
|
549
550
|
});
|
|
550
551
|
}
|
|
551
552
|
|
|
552
|
-
//
|
|
553
|
-
//
|
|
554
|
-
// -
|
|
555
|
-
//
|
|
556
|
-
//
|
|
557
|
-
// -
|
|
558
|
-
// it.
|
|
553
|
+
// v6.3.0 — Per-subtask dispatch path. We collect errors instead
|
|
554
|
+
// of swallowing them. Two failure modes:
|
|
555
|
+
// - claudeAvailable=false: mark dispatchPending so the UI
|
|
556
|
+
// shows "Awaiting dispatch" and `/api/tasks/:id/start` can
|
|
557
|
+
// retry.
|
|
558
|
+
// - spawn failure: record error message so the API response
|
|
559
|
+
// carries it.
|
|
559
560
|
for (const sub of toDispatch) {
|
|
560
561
|
const startedAt = new Date().toISOString();
|
|
561
562
|
let bgInstanceId = null;
|
|
@@ -563,21 +564,19 @@ export const taskDelegator = {
|
|
|
563
564
|
let dispatchError = null;
|
|
564
565
|
let dispatchPending = false;
|
|
565
566
|
|
|
566
|
-
//
|
|
567
|
-
//
|
|
568
|
-
//
|
|
569
|
-
//
|
|
570
|
-
|
|
571
|
-
// and capture its output to the LogWriter's log file. The
|
|
572
|
-
// plugin's cline-runner.ts and this dashboard's
|
|
573
|
-
// cline-runner.mjs share the same wire format.
|
|
574
|
-
if (serveInfo && serveReachable) {
|
|
567
|
+
// v6.3.0 — Active dispatch path. Spawn one `claude -p` (or
|
|
568
|
+
// `claude --bg` for long-running sessions) subprocess per
|
|
569
|
+
// subtask via claude-runner.mjs. Capture the sessionId from
|
|
570
|
+
// the runner's JSON-line stream.
|
|
571
|
+
if (claudeAvailable) {
|
|
575
572
|
try {
|
|
576
|
-
const { spawnAgent } = await import('./
|
|
577
|
-
//
|
|
578
|
-
//
|
|
579
|
-
//
|
|
580
|
-
|
|
573
|
+
const { spawnAgent } = await import('./claude-runner.mjs');
|
|
574
|
+
// v6.3.0 — Prefer the bg-spawner's SDK-backed path when
|
|
575
|
+
// the SDK is reachable; fall back to the print-mode
|
|
576
|
+
// subprocess otherwise. We always pass `background: false`
|
|
577
|
+
// here so the runner returns a sessionId synchronously;
|
|
578
|
+
// the bg-spawner is used separately by the Active tab.
|
|
579
|
+
const dispatchWorktree = projectRoot || '';
|
|
581
580
|
const promptText = buildPromptText(sub);
|
|
582
581
|
|
|
583
582
|
// Predict the bg instance id (deterministic, derived from
|
|
@@ -597,14 +596,14 @@ export const taskDelegator = {
|
|
|
597
596
|
});
|
|
598
597
|
|
|
599
598
|
if (!spawnRes.ok || !spawnRes.sessionId) {
|
|
600
|
-
dispatchError = spawnRes.error || '
|
|
599
|
+
dispatchError = spawnRes.error || 'claude -p failed before reporting session id';
|
|
601
600
|
} else {
|
|
602
601
|
sessionId = spawnRes.sessionId;
|
|
603
602
|
bgInstanceId = predictedInstanceId;
|
|
604
603
|
|
|
605
604
|
// v3.5.5 — Wrap the agent run in a tmux session so
|
|
606
605
|
// operators can `tmux attach -t bizar-bg-<id>` and watch
|
|
607
|
-
// the
|
|
606
|
+
// the claude process in real time.
|
|
608
607
|
try {
|
|
609
608
|
const tmuxRes = backgroundStore.spawnTmuxFor(
|
|
610
609
|
`bg_${sessionId.slice(0, 16)}`,
|
|
@@ -623,9 +622,9 @@ export const taskDelegator = {
|
|
|
623
622
|
dispatchError = err instanceof Error ? err.message : String(err);
|
|
624
623
|
}
|
|
625
624
|
} else {
|
|
626
|
-
//
|
|
627
|
-
// dispatchPending flag. The UI surfaces this
|
|
628
|
-
// retry via POST /api/tasks/:id/start.
|
|
625
|
+
// Claude Code not available — leave the subtask marked
|
|
626
|
+
// queued with a dispatchPending flag. The UI surfaces this
|
|
627
|
+
// and the user can retry via POST /api/tasks/:id/start.
|
|
629
628
|
dispatchPending = true;
|
|
630
629
|
}
|
|
631
630
|
|
|
@@ -1,33 +1,29 @@
|
|
|
1
1
|
// src/components/chat/useChat.ts — shared chat state: messages, sessions,
|
|
2
2
|
// send, polling, SSE, session-state tracking.
|
|
3
3
|
//
|
|
4
|
-
//
|
|
4
|
+
// v6.3.0 — Claude Code migration. Supports two parallel message streams:
|
|
5
5
|
// - bizar (GET /api/chat)
|
|
6
|
-
// -
|
|
6
|
+
// - claude (GET /api/claude-sessions/:id/messages + SSE)
|
|
7
7
|
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
// Changes from v3.22:
|
|
16
|
-
// * SSE has automatic reconnect-with-backoff (1s → 30s, doubled on
|
|
17
|
-
// each error up to a cap). Closes cleanly on unmount and on
|
|
18
|
-
// session-switch (no leaked EventSource).
|
|
8
|
+
// Changes from v4.2.5:
|
|
9
|
+
// * Endpoint prefix changed: `/api/claude-sessions/*` → `/api/claude-sessions/*`
|
|
10
|
+
// * SSE event type names changed to match the Claude SDK envelope
|
|
11
|
+
// (`message.part.updated` → `delta`/`text_delta`, etc.)
|
|
12
|
+
// * Server no longer needs the `clineErrorInfo` 503 path; the
|
|
13
|
+
// `claudeErrorInfo` field stays for parity but the dashboard
|
|
14
|
+
// mostly sees 502s now (claude CLI not on PATH / spawn failed).
|
|
19
15
|
// * Optimistic send uses a stable `msg_*` ID and is deduped when
|
|
20
|
-
//
|
|
21
|
-
// * `
|
|
16
|
+
// claude echoes the message back via SDK events.
|
|
17
|
+
// * `claudeMessages` keeps server-provided IDs distinct from
|
|
22
18
|
// optimistic IDs so the merge is unambiguous (server echo
|
|
23
19
|
// replaces optimistic by matching messageID; otherwise both stick
|
|
24
20
|
// around briefly until the user/session state catches up).
|
|
25
|
-
// * `onSend` routes to `/
|
|
26
|
-
//
|
|
21
|
+
// * `onSend` routes to `/claude-sessions/:id/send` when a
|
|
22
|
+
// claude session is active, `/chat` otherwise. Errors surface
|
|
27
23
|
// via toast + we always remove the optimistic placeholder.
|
|
28
24
|
// * Sessions are managed by source:
|
|
29
25
|
// - `bizarSessions` → local .jsonl store, POST /chat/sessions
|
|
30
|
-
// - `
|
|
26
|
+
// - `claudeSessions` → Claude Code, GET /claude-sessions
|
|
31
27
|
// The rail shows both side-by-side with a source indicator and
|
|
32
28
|
// uses separate rename/delete endpoints per source.
|
|
33
29
|
// * All async actions surface a single `busy: { create, send, rename, delete }`
|
|
@@ -68,7 +64,7 @@ export interface ChatBusyState {
|
|
|
68
64
|
|
|
69
65
|
/**
|
|
70
66
|
* Structured error envelope surfaced by `loadClineSession` when
|
|
71
|
-
* the upstream `/api/
|
|
67
|
+
* the upstream `/api/claude-sessions/:id/messages` call fails.
|
|
72
68
|
*
|
|
73
69
|
* - `code` mirrors the server's `error` field (`plugin_offline`,
|
|
74
70
|
* `directory_unknown`, `cline_error`, `bad_request`).
|
|
@@ -286,7 +282,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
|
|
|
286
282
|
const refreshClineSessions = useCallback(async () => {
|
|
287
283
|
try {
|
|
288
284
|
const data = await api.get<{ sessions: ChatSession[] }>(
|
|
289
|
-
'/
|
|
285
|
+
'/claude-sessions',
|
|
290
286
|
);
|
|
291
287
|
// Enrich with source marker.
|
|
292
288
|
const enriched: ChatSession[] = (data.sessions || []).map((s) => ({
|
|
@@ -333,8 +329,8 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
|
|
|
333
329
|
// optional, but harmless).
|
|
334
330
|
const tok = api.getToken();
|
|
335
331
|
const url = tok
|
|
336
|
-
? `/api/
|
|
337
|
-
: `/api/
|
|
332
|
+
? `/api/claude-sessions/${encodeURIComponent(id)}/stream?token=${encodeURIComponent(tok)}`
|
|
333
|
+
: `/api/claude-sessions/${encodeURIComponent(id)}/stream`;
|
|
338
334
|
|
|
339
335
|
sseCurrentSessionIdRef.current = id;
|
|
340
336
|
sseAutoReconnectRef.current = true;
|
|
@@ -628,7 +624,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
|
|
|
628
624
|
|
|
629
625
|
try {
|
|
630
626
|
const data = await api.get<{ messages: ChatMessage[] }>(
|
|
631
|
-
`/
|
|
627
|
+
`/claude-sessions/${encodeURIComponent(id)}/messages`,
|
|
632
628
|
);
|
|
633
629
|
setClineMessages(data.messages || []);
|
|
634
630
|
} catch (err) {
|
|
@@ -735,7 +731,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
|
|
|
735
731
|
agent: string;
|
|
736
732
|
directory: string;
|
|
737
733
|
createdAt: number;
|
|
738
|
-
}>('/
|
|
734
|
+
}>('/claude-sessions/new', { agent });
|
|
739
735
|
await refreshClineSessions();
|
|
740
736
|
// Open the newly created session right away so the user is
|
|
741
737
|
// dropped into a fresh empty thread, not stuck on the
|
|
@@ -814,7 +810,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
|
|
|
814
810
|
setBusy((b) => ({ ...b, send: true }));
|
|
815
811
|
try {
|
|
816
812
|
await api.post<{ ok: boolean; messageId: string }>(
|
|
817
|
-
`/
|
|
813
|
+
`/claude-sessions/${encodeURIComponent(sid)}/send`,
|
|
818
814
|
{
|
|
819
815
|
message: trimmed,
|
|
820
816
|
agent,
|
|
@@ -976,7 +972,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
|
|
|
976
972
|
const isCline = clineSessions.some((s) => s.id === id);
|
|
977
973
|
if (isCline) {
|
|
978
974
|
await api.patch<{ id: string; title: string }>(
|
|
979
|
-
`/
|
|
975
|
+
`/claude-sessions/${encodeURIComponent(id)}`,
|
|
980
976
|
{ title: trimmed },
|
|
981
977
|
);
|
|
982
978
|
setClineSessions((cur) =>
|
|
@@ -1012,7 +1008,7 @@ export function useChat(snapshot: Snapshot, settings: Settings, initialTaskId?:
|
|
|
1012
1008
|
try {
|
|
1013
1009
|
const isCline = clineSessions.some((s) => s.id === id);
|
|
1014
1010
|
if (isCline) {
|
|
1015
|
-
await api.del(`/
|
|
1011
|
+
await api.del(`/claude-sessions/${encodeURIComponent(id)}`);
|
|
1016
1012
|
setClineSessions((cur) => cur.filter((s) => s.id !== id));
|
|
1017
1013
|
if (activeClineSessionId === id) {
|
|
1018
1014
|
closeClineSession();
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
// src/views/Chat.tsx — desktop chat view (
|
|
1
|
+
// src/views/Chat.tsx — desktop chat view (v6.3.0 design).
|
|
2
2
|
//
|
|
3
|
-
//
|
|
3
|
+
// v6.3.0 — Claude Code migration:
|
|
4
4
|
// * 3-column grid preserved (rail / thread / info).
|
|
5
5
|
// * Composer goes through `chat.onSend`, which transparently routes
|
|
6
6
|
// to the right backend endpoint based on `activeSource`:
|
|
7
|
-
// -
|
|
7
|
+
// - claude session active → POST /api/claude-sessions/:id/send
|
|
8
8
|
// - otherwise → POST /api/chat
|
|
9
9
|
// * "New session" button calls `chat.onCreateSession` which tries
|
|
10
|
-
// POST /api/
|
|
11
|
-
// fully-fledged
|
|
12
|
-
// falling back to the local jsonl store when the
|
|
13
|
-
//
|
|
14
|
-
// * Top-of-thread badge shows the active source ("
|
|
10
|
+
// POST /api/claude-sessions/new first (so the new session is a
|
|
11
|
+
// fully-fledged Claude Code session, scoped to the active worktree),
|
|
12
|
+
// falling back to the local jsonl store when the claude CLI is
|
|
13
|
+
// not on PATH.
|
|
14
|
+
// * Top-of-thread badge shows the active source ("claude" or
|
|
15
15
|
// "bizar chat") so the user always knows where messages are going.
|
|
16
16
|
// * Info panel gets session metadata + rename/delete actions.
|
|
17
17
|
//
|
package/cli/bin.mjs
CHANGED
|
@@ -78,7 +78,7 @@ if (
|
|
|
78
78
|
// ── Banner ─────────────────────────────────────────────────────────────────────
|
|
79
79
|
|
|
80
80
|
function showBanner() {
|
|
81
|
-
console.log(chalk.bold.cyan(' ᛭ Bizar — Norse Pantheon Agent System for
|
|
81
|
+
console.log(chalk.bold.cyan(' ᛭ Bizar — Norse Pantheon Agent System for Claude Code'));
|
|
82
82
|
console.log();
|
|
83
83
|
}
|
|
84
84
|
|
|
@@ -97,7 +97,7 @@ function showHelp() {
|
|
|
97
97
|
export [target] Export agents/rules to another harness
|
|
98
98
|
artifact <subcommand> Manage visual artifacts
|
|
99
99
|
test-gate Detect & run the project's test suite
|
|
100
|
-
update Auto-update everything (
|
|
100
|
+
update Auto-update everything (claude + bizar + dash + sdk)
|
|
101
101
|
service Manage the background service daemon
|
|
102
102
|
dash <subcommand> Manage the dashboard (start/stop/status/cleanup/tui)
|
|
103
103
|
memory <subcommand> Manage project memory (Bizar Memory Service)
|
|
@@ -109,7 +109,7 @@ function showHelp() {
|
|
|
109
109
|
usage Show compact usage analytics summary (24h rolling)
|
|
110
110
|
doctor Check the BizarHarness install for health issues
|
|
111
111
|
repair Fix common install issues
|
|
112
|
-
dev-link Symlink local
|
|
112
|
+
dev-link Symlink local SDK source into Claude Code's plugin dir
|
|
113
113
|
dev-unlink Remove the dev symlink and restore the deployed copy
|
|
114
114
|
heads-up <subcommand> Manage pre-push / pre-release heads-ups
|
|
115
115
|
bg <subcommand> Manage background agents (list/view/kill/logs)
|
|
@@ -118,7 +118,7 @@ function showHelp() {
|
|
|
118
118
|
marketplace <subcommand> Browse and install plugins from the public marketplace
|
|
119
119
|
agent-browser Install / update / verify the agent-browser CLI
|
|
120
120
|
agent-browser-up Start Chromium for agent-browser (start/stop/status)
|
|
121
|
-
providers detect Auto-detect provider API keys from env +
|
|
121
|
+
providers detect Auto-detect provider API keys from env + ~/.claude/settings.json
|
|
122
122
|
clip <subcommand> Manage web clipper saved clips (list/delete/configure)
|
|
123
123
|
ocr <subcommand> OCR operations on images (list/process/configure)
|
|
124
124
|
digest Manage weekly digests (list/view/generate)
|
|
@@ -129,14 +129,14 @@ function showHelp() {
|
|
|
129
129
|
eval Evaluate AI agent outputs against golden fixtures
|
|
130
130
|
plan [v6.0.0+] Reserved for future plan management
|
|
131
131
|
validate Validate the Bizar install (21 checks)
|
|
132
|
-
setup-provider Configure a provider in
|
|
133
|
-
config Show current
|
|
134
|
-
history List session history (pass-through to
|
|
135
|
-
hub Manage the local hub daemon (pass-through to
|
|
136
|
-
hook Handle a hook payload from stdin (pass-through to
|
|
137
|
-
team Spawn an agent team from CLI (wraps
|
|
132
|
+
setup-provider Configure a provider in ~/.claude/settings.json (since v6.2.2 installer doesn't touch providers)
|
|
133
|
+
config Show current Claude Code configuration (pass-through to claude config)
|
|
134
|
+
history List session history (pass-through to claude history)
|
|
135
|
+
hub Manage the local hub daemon (pass-through to claude hub)
|
|
136
|
+
hook Handle a hook payload from stdin (pass-through to claude hook)
|
|
137
|
+
team Spawn an agent team from CLI (wraps claude --team-name)
|
|
138
138
|
subagent Spawn a read-only research subagent from CLI
|
|
139
|
-
rca Analyze a GitHub issue (
|
|
139
|
+
rca Analyze a GitHub issue (Claude Code CLI sample)
|
|
140
140
|
|
|
141
141
|
Examples:
|
|
142
142
|
bizar install
|
|
@@ -151,8 +151,7 @@ function showHelp() {
|
|
|
151
151
|
|
|
152
152
|
Install:
|
|
153
153
|
npm install -g @polderlabs/bizar
|
|
154
|
-
npm install -g @
|
|
155
|
-
npm install -g @polderlabs/bizar-plugin
|
|
154
|
+
npm install -g @anthropic-ai/claude-code
|
|
156
155
|
`);
|
|
157
156
|
}
|
|
158
157
|
|
|
@@ -548,15 +547,15 @@ async function main() {
|
|
|
548
547
|
case 'hook':
|
|
549
548
|
case 'team':
|
|
550
549
|
case 'subagent': {
|
|
551
|
-
// v6.
|
|
552
|
-
// These live in cli/commands/
|
|
553
|
-
const mod = await importCommand('
|
|
550
|
+
// v6.3.0 — Pass-through wrappers for Claude Code CLI commands.
|
|
551
|
+
// These live in cli/commands/claude-cmd.mjs.
|
|
552
|
+
const mod = await importCommand('claude-cmd');
|
|
554
553
|
if (!mod) {
|
|
555
|
-
console.error(chalk.red(` ✗ Could not load
|
|
554
|
+
console.error(chalk.red(` ✗ Could not load claude-cmd module`));
|
|
556
555
|
process.exit(EXIT_ERROR);
|
|
557
556
|
return;
|
|
558
557
|
}
|
|
559
|
-
dbg('loaded command module:', '
|
|
558
|
+
dbg('loaded command module:', 'claude-cmd');
|
|
560
559
|
const found = await mod.run(cmd, cmdArgs, isHelpRequest);
|
|
561
560
|
if (!found) {
|
|
562
561
|
console.error(chalk.red(` ✗ Unknown command: ${cmd}`));
|
|
@@ -584,6 +583,20 @@ async function main() {
|
|
|
584
583
|
break;
|
|
585
584
|
}
|
|
586
585
|
|
|
586
|
+
case 'sandbox': {
|
|
587
|
+
// v6.3.0 — CubeSandbox (E2B-compatible KVM microVM) wrapper.
|
|
588
|
+
// Subcommands: doctor | run | list | kill | install-template | config
|
|
589
|
+
const mod = await importCommand('sandbox');
|
|
590
|
+
if (!mod) {
|
|
591
|
+
console.error(chalk.red(` ✗ Could not load sandbox command module`));
|
|
592
|
+
process.exit(EXIT_ERROR);
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
dbg('loaded command module:', 'sandbox');
|
|
596
|
+
await mod.runSandbox(cmdArgs);
|
|
597
|
+
break;
|
|
598
|
+
}
|
|
599
|
+
|
|
587
600
|
default: {
|
|
588
601
|
console.error(chalk.red(` ✗ Unknown command: ${cmd}`));
|
|
589
602
|
showHelp();
|