agent-bober 0.12.0 → 0.17.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-plugin/marketplace.json +20 -0
- package/.claude-plugin/plugin.json +2 -2
- package/CHANGELOG.md +243 -0
- package/README.md +238 -5
- package/agents/bober-architect.md +72 -0
- package/agents/bober-code-reviewer.md +238 -0
- package/agents/bober-curator.md +49 -0
- package/agents/bober-deployer.md +267 -0
- package/agents/bober-diagnoser.md +289 -0
- package/agents/bober-documenter.md +129 -0
- package/agents/bober-evaluator.md +135 -1
- package/agents/bober-generator.md +80 -3
- package/agents/bober-planner.md +47 -1
- package/agents/bober-postmortemer.md +185 -0
- package/agents/bober-researcher.md +38 -0
- package/dist/cli/commands/approve.d.ts +17 -0
- package/dist/cli/commands/approve.d.ts.map +1 -0
- package/dist/cli/commands/approve.js +64 -0
- package/dist/cli/commands/approve.js.map +1 -0
- package/dist/cli/commands/audit-show.d.ts +14 -0
- package/dist/cli/commands/audit-show.d.ts.map +1 -0
- package/dist/cli/commands/audit-show.js +85 -0
- package/dist/cli/commands/audit-show.js.map +1 -0
- package/dist/cli/commands/config.d.ts +10 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +73 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/graph.d.ts +8 -0
- package/dist/cli/commands/graph.d.ts.map +1 -0
- package/dist/cli/commands/graph.js +219 -0
- package/dist/cli/commands/graph.js.map +1 -0
- package/dist/cli/commands/impact.d.ts +19 -0
- package/dist/cli/commands/impact.d.ts.map +1 -0
- package/dist/cli/commands/impact.js +191 -0
- package/dist/cli/commands/impact.js.map +1 -0
- package/dist/cli/commands/incident.d.ts +19 -0
- package/dist/cli/commands/incident.d.ts.map +1 -0
- package/dist/cli/commands/incident.js +324 -0
- package/dist/cli/commands/incident.js.map +1 -0
- package/dist/cli/commands/init.js +40 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list-approvals.d.ts +16 -0
- package/dist/cli/commands/list-approvals.d.ts.map +1 -0
- package/dist/cli/commands/list-approvals.js +57 -0
- package/dist/cli/commands/list-approvals.js.map +1 -0
- package/dist/cli/commands/memory.d.ts +14 -0
- package/dist/cli/commands/memory.d.ts.map +1 -0
- package/dist/cli/commands/memory.js +132 -0
- package/dist/cli/commands/memory.js.map +1 -0
- package/dist/cli/commands/onboard.d.ts +3 -0
- package/dist/cli/commands/onboard.d.ts.map +1 -0
- package/dist/cli/commands/onboard.js +190 -0
- package/dist/cli/commands/onboard.js.map +1 -0
- package/dist/cli/commands/playbook.d.ts +17 -0
- package/dist/cli/commands/playbook.d.ts.map +1 -0
- package/dist/cli/commands/playbook.js +123 -0
- package/dist/cli/commands/playbook.js.map +1 -0
- package/dist/cli/commands/postmortem.d.ts +12 -0
- package/dist/cli/commands/postmortem.d.ts.map +1 -0
- package/dist/cli/commands/postmortem.js +67 -0
- package/dist/cli/commands/postmortem.js.map +1 -0
- package/dist/cli/commands/reject.d.ts +17 -0
- package/dist/cli/commands/reject.d.ts.map +1 -0
- package/dist/cli/commands/reject.js +52 -0
- package/dist/cli/commands/reject.js.map +1 -0
- package/dist/cli/commands/rollback.d.ts +21 -0
- package/dist/cli/commands/rollback.d.ts.map +1 -0
- package/dist/cli/commands/rollback.js +90 -0
- package/dist/cli/commands/rollback.js.map +1 -0
- package/dist/cli/commands/run.d.ts +9 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +29 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/telemetry.d.ts +16 -0
- package/dist/cli/commands/telemetry.d.ts.map +1 -0
- package/dist/cli/commands/telemetry.js +152 -0
- package/dist/cli/commands/telemetry.js.map +1 -0
- package/dist/cli/commands/worktree.d.ts +12 -0
- package/dist/cli/commands/worktree.d.ts.map +1 -0
- package/dist/cli/commands/worktree.js +57 -0
- package/dist/cli/commands/worktree.js.map +1 -0
- package/dist/cli/index.js +56 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +41 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +25 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/config/role-providers.d.ts +29 -0
- package/dist/config/role-providers.d.ts.map +1 -0
- package/dist/config/role-providers.js +115 -0
- package/dist/config/role-providers.js.map +1 -0
- package/dist/config/schema.d.ts +1350 -61
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +189 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/contracts/eval-result.d.ts +112 -56
- package/dist/contracts/eval-result.d.ts.map +1 -1
- package/dist/contracts/eval-result.js +3 -0
- package/dist/contracts/eval-result.js.map +1 -1
- package/dist/contracts/sprint-contract.d.ts +30 -30
- package/dist/fleet/aggregator.d.ts +5 -0
- package/dist/fleet/aggregator.d.ts.map +1 -0
- package/dist/fleet/aggregator.js +39 -0
- package/dist/fleet/aggregator.js.map +1 -0
- package/dist/fleet/child-config.d.ts +12 -0
- package/dist/fleet/child-config.d.ts.map +1 -0
- package/dist/fleet/child-config.js +38 -0
- package/dist/fleet/child-config.js.map +1 -0
- package/dist/fleet/coordinator.d.ts +25 -0
- package/dist/fleet/coordinator.d.ts.map +1 -0
- package/dist/fleet/coordinator.js +40 -0
- package/dist/fleet/coordinator.js.map +1 -0
- package/dist/fleet/index.d.ts +40 -0
- package/dist/fleet/index.d.ts.map +1 -0
- package/dist/fleet/index.js +117 -0
- package/dist/fleet/index.js.map +1 -0
- package/dist/fleet/manifest.d.ts +51 -0
- package/dist/fleet/manifest.d.ts.map +1 -0
- package/dist/fleet/manifest.js +32 -0
- package/dist/fleet/manifest.js.map +1 -0
- package/dist/fleet/reporter.d.ts +32 -0
- package/dist/fleet/reporter.d.ts.map +1 -0
- package/dist/fleet/reporter.js +71 -0
- package/dist/fleet/reporter.js.map +1 -0
- package/dist/fleet/runner.d.ts +48 -0
- package/dist/fleet/runner.d.ts.map +1 -0
- package/dist/fleet/runner.js +104 -0
- package/dist/fleet/runner.js.map +1 -0
- package/dist/fleet/scaffolder.d.ts +12 -0
- package/dist/fleet/scaffolder.d.ts.map +1 -0
- package/dist/fleet/scaffolder.js +82 -0
- package/dist/fleet/scaffolder.js.map +1 -0
- package/dist/fleet/types.d.ts +21 -0
- package/dist/fleet/types.d.ts.map +1 -0
- package/dist/fleet/types.js +2 -0
- package/dist/fleet/types.js.map +1 -0
- package/dist/graph/artifact-store.d.ts +14 -0
- package/dist/graph/artifact-store.d.ts.map +1 -0
- package/dist/graph/artifact-store.js +100 -0
- package/dist/graph/artifact-store.js.map +1 -0
- package/dist/graph/cli.d.ts +53 -0
- package/dist/graph/cli.d.ts.map +1 -0
- package/dist/graph/cli.js +181 -0
- package/dist/graph/cli.js.map +1 -0
- package/dist/graph/client.d.ts +64 -0
- package/dist/graph/client.d.ts.map +1 -0
- package/dist/graph/client.js +216 -0
- package/dist/graph/client.js.map +1 -0
- package/dist/graph/fallback.d.ts +13 -0
- package/dist/graph/fallback.d.ts.map +1 -0
- package/dist/graph/fallback.js +57 -0
- package/dist/graph/fallback.js.map +1 -0
- package/dist/graph/hook-handler.d.ts +50 -0
- package/dist/graph/hook-handler.d.ts.map +1 -0
- package/dist/graph/hook-handler.js +217 -0
- package/dist/graph/hook-handler.js.map +1 -0
- package/dist/graph/incidents.d.ts +59 -0
- package/dist/graph/incidents.d.ts.map +1 -0
- package/dist/graph/incidents.js +22 -0
- package/dist/graph/incidents.js.map +1 -0
- package/dist/graph/mcp-client.d.ts +51 -0
- package/dist/graph/mcp-client.d.ts.map +1 -0
- package/dist/graph/mcp-client.js +285 -0
- package/dist/graph/mcp-client.js.map +1 -0
- package/dist/graph/onboarding-composer.d.ts +30 -0
- package/dist/graph/onboarding-composer.d.ts.map +1 -0
- package/dist/graph/onboarding-composer.js +275 -0
- package/dist/graph/onboarding-composer.js.map +1 -0
- package/dist/graph/pipeline-lifecycle.d.ts +95 -0
- package/dist/graph/pipeline-lifecycle.d.ts.map +1 -0
- package/dist/graph/pipeline-lifecycle.js +341 -0
- package/dist/graph/pipeline-lifecycle.js.map +1 -0
- package/dist/graph/preflight-budgets.d.ts +52 -0
- package/dist/graph/preflight-budgets.d.ts.map +1 -0
- package/dist/graph/preflight-budgets.js +78 -0
- package/dist/graph/preflight-budgets.js.map +1 -0
- package/dist/graph/preflight-injector.d.ts +130 -0
- package/dist/graph/preflight-injector.d.ts.map +1 -0
- package/dist/graph/preflight-injector.js +618 -0
- package/dist/graph/preflight-injector.js.map +1 -0
- package/dist/graph/prereq.d.ts +12 -0
- package/dist/graph/prereq.d.ts.map +1 -0
- package/dist/graph/prereq.js +61 -0
- package/dist/graph/prereq.js.map +1 -0
- package/dist/graph/prompts.d.ts +42 -0
- package/dist/graph/prompts.d.ts.map +1 -0
- package/dist/graph/prompts.js +80 -0
- package/dist/graph/prompts.js.map +1 -0
- package/dist/graph/sandbox.d.ts +19 -0
- package/dist/graph/sandbox.d.ts.map +1 -0
- package/dist/graph/sandbox.js +25 -0
- package/dist/graph/sandbox.js.map +1 -0
- package/dist/graph/token-usage.d.ts +21 -0
- package/dist/graph/token-usage.d.ts.map +1 -0
- package/dist/graph/token-usage.js +22 -0
- package/dist/graph/token-usage.js.map +1 -0
- package/dist/graph/types.d.ts +129 -0
- package/dist/graph/types.d.ts.map +1 -0
- package/dist/graph/types.js +12 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/incident/orchestrator.d.ts +168 -0
- package/dist/incident/orchestrator.d.ts.map +1 -0
- package/dist/incident/orchestrator.js +279 -0
- package/dist/incident/orchestrator.js.map +1 -0
- package/dist/incident/playbook-search.d.ts +67 -0
- package/dist/incident/playbook-search.d.ts.map +1 -0
- package/dist/incident/playbook-search.js +288 -0
- package/dist/incident/playbook-search.js.map +1 -0
- package/dist/incident/postmortem.d.ts +44 -0
- package/dist/incident/postmortem.d.ts.map +1 -0
- package/dist/incident/postmortem.js +486 -0
- package/dist/incident/postmortem.js.map +1 -0
- package/dist/incident/resolution-verify.d.ts +186 -0
- package/dist/incident/resolution-verify.d.ts.map +1 -0
- package/dist/incident/resolution-verify.js +210 -0
- package/dist/incident/resolution-verify.js.map +1 -0
- package/dist/incident/rollback.d.ts +137 -0
- package/dist/incident/rollback.d.ts.map +1 -0
- package/dist/incident/rollback.js +328 -0
- package/dist/incident/rollback.js.map +1 -0
- package/dist/incident/timeline.d.ts +147 -0
- package/dist/incident/timeline.d.ts.map +1 -0
- package/dist/incident/timeline.js +452 -0
- package/dist/incident/timeline.js.map +1 -0
- package/dist/incident/types.d.ts +335 -0
- package/dist/incident/types.d.ts.map +1 -0
- package/dist/incident/types.js +158 -0
- package/dist/incident/types.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/event-stream.d.ts +46 -0
- package/dist/mcp/event-stream.d.ts.map +1 -0
- package/dist/mcp/event-stream.js +421 -0
- package/dist/mcp/event-stream.js.map +1 -0
- package/dist/mcp/external-client.d.ts +38 -0
- package/dist/mcp/external-client.d.ts.map +1 -0
- package/dist/mcp/external-client.js +121 -0
- package/dist/mcp/external-client.js.map +1 -0
- package/dist/mcp/run-manager.d.ts +74 -9
- package/dist/mcp/run-manager.d.ts.map +1 -1
- package/dist/mcp/run-manager.js +127 -31
- package/dist/mcp/run-manager.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +56 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/abort-run.d.ts +2 -0
- package/dist/mcp/tools/abort-run.d.ts.map +1 -0
- package/dist/mcp/tools/abort-run.js +62 -0
- package/dist/mcp/tools/abort-run.js.map +1 -0
- package/dist/mcp/tools/anchor.js +1 -1
- package/dist/mcp/tools/anchor.js.map +1 -1
- package/dist/mcp/tools/approve-checkpoint.d.ts +2 -0
- package/dist/mcp/tools/approve-checkpoint.d.ts.map +1 -0
- package/dist/mcp/tools/approve-checkpoint.js +70 -0
- package/dist/mcp/tools/approve-checkpoint.js.map +1 -0
- package/dist/mcp/tools/brownfield.js +1 -1
- package/dist/mcp/tools/brownfield.js.map +1 -1
- package/dist/mcp/tools/get-project-state.d.ts +2 -0
- package/dist/mcp/tools/get-project-state.d.ts.map +1 -0
- package/dist/mcp/tools/get-project-state.js +107 -0
- package/dist/mcp/tools/get-project-state.js.map +1 -0
- package/dist/mcp/tools/get-run-status.d.ts +2 -0
- package/dist/mcp/tools/get-run-status.d.ts.map +1 -0
- package/dist/mcp/tools/get-run-status.js +40 -0
- package/dist/mcp/tools/get-run-status.js.map +1 -0
- package/dist/mcp/tools/graph-schemas.d.ts +100 -0
- package/dist/mcp/tools/graph-schemas.d.ts.map +1 -0
- package/dist/mcp/tools/graph-schemas.js +39 -0
- package/dist/mcp/tools/graph-schemas.js.map +1 -0
- package/dist/mcp/tools/graph.d.ts +19 -0
- package/dist/mcp/tools/graph.d.ts.map +1 -0
- package/dist/mcp/tools/graph.js +263 -0
- package/dist/mcp/tools/graph.js.map +1 -0
- package/dist/mcp/tools/incident.d.ts +2 -0
- package/dist/mcp/tools/incident.d.ts.map +1 -0
- package/dist/mcp/tools/incident.js +246 -0
- package/dist/mcp/tools/incident.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +38 -18
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +74 -18
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/init.d.ts.map +1 -1
- package/dist/mcp/tools/init.js +2 -0
- package/dist/mcp/tools/init.js.map +1 -1
- package/dist/mcp/tools/list-active-runs.d.ts +2 -0
- package/dist/mcp/tools/list-active-runs.d.ts.map +1 -0
- package/dist/mcp/tools/list-active-runs.js +35 -0
- package/dist/mcp/tools/list-active-runs.js.map +1 -0
- package/dist/mcp/tools/list-pending-approvals.d.ts +2 -0
- package/dist/mcp/tools/list-pending-approvals.d.ts.map +1 -0
- package/dist/mcp/tools/list-pending-approvals.js +40 -0
- package/dist/mcp/tools/list-pending-approvals.js.map +1 -0
- package/dist/mcp/tools/list-projects.d.ts +2 -0
- package/dist/mcp/tools/list-projects.d.ts.map +1 -0
- package/dist/mcp/tools/list-projects.js +101 -0
- package/dist/mcp/tools/list-projects.js.map +1 -0
- package/dist/mcp/tools/list-specs.d.ts +2 -0
- package/dist/mcp/tools/list-specs.d.ts.map +1 -0
- package/dist/mcp/tools/list-specs.js +48 -0
- package/dist/mcp/tools/list-specs.js.map +1 -0
- package/dist/mcp/tools/playbook.d.ts +2 -0
- package/dist/mcp/tools/playbook.d.ts.map +1 -0
- package/dist/mcp/tools/playbook.js +104 -0
- package/dist/mcp/tools/playbook.js.map +1 -0
- package/dist/mcp/tools/postmortem.d.ts +2 -0
- package/dist/mcp/tools/postmortem.d.ts.map +1 -0
- package/dist/mcp/tools/postmortem.js +75 -0
- package/dist/mcp/tools/postmortem.js.map +1 -0
- package/dist/mcp/tools/react.js +1 -1
- package/dist/mcp/tools/react.js.map +1 -1
- package/dist/mcp/tools/reject-checkpoint.d.ts +2 -0
- package/dist/mcp/tools/reject-checkpoint.d.ts.map +1 -0
- package/dist/mcp/tools/reject-checkpoint.js +79 -0
- package/dist/mcp/tools/reject-checkpoint.js.map +1 -0
- package/dist/mcp/tools/rollback.d.ts +2 -0
- package/dist/mcp/tools/rollback.d.ts.map +1 -0
- package/dist/mcp/tools/rollback.js +78 -0
- package/dist/mcp/tools/rollback.js.map +1 -0
- package/dist/mcp/tools/run-in-worktree.d.ts +2 -0
- package/dist/mcp/tools/run-in-worktree.d.ts.map +1 -0
- package/dist/mcp/tools/run-in-worktree.js +90 -0
- package/dist/mcp/tools/run-in-worktree.js.map +1 -0
- package/dist/mcp/tools/run.js +1 -1
- package/dist/mcp/tools/run.js.map +1 -1
- package/dist/mcp/tools/solidity.js +1 -1
- package/dist/mcp/tools/solidity.js.map +1 -1
- package/dist/mcp/tools/status.d.ts.map +1 -1
- package/dist/mcp/tools/status.js +11 -0
- package/dist/mcp/tools/status.js.map +1 -1
- package/dist/mcp/tools/subscribe-events.d.ts +2 -0
- package/dist/mcp/tools/subscribe-events.d.ts.map +1 -0
- package/dist/mcp/tools/subscribe-events.js +48 -0
- package/dist/mcp/tools/subscribe-events.js.map +1 -0
- package/dist/mcp/tools/unsubscribe-events.d.ts +2 -0
- package/dist/mcp/tools/unsubscribe-events.d.ts.map +1 -0
- package/dist/mcp/tools/unsubscribe-events.js +45 -0
- package/dist/mcp/tools/unsubscribe-events.js.map +1 -0
- package/dist/orchestrator/agent-loader.d.ts +16 -0
- package/dist/orchestrator/agent-loader.d.ts.map +1 -1
- package/dist/orchestrator/agent-loader.js +30 -0
- package/dist/orchestrator/agent-loader.js.map +1 -1
- package/dist/orchestrator/agentic-loop.d.ts +51 -0
- package/dist/orchestrator/agentic-loop.d.ts.map +1 -1
- package/dist/orchestrator/agentic-loop.js +123 -4
- package/dist/orchestrator/agentic-loop.js.map +1 -1
- package/dist/orchestrator/arch-lenses.d.ts +7 -0
- package/dist/orchestrator/arch-lenses.d.ts.map +1 -0
- package/dist/orchestrator/arch-lenses.js +22 -0
- package/dist/orchestrator/arch-lenses.js.map +1 -0
- package/dist/orchestrator/architect-agent.d.ts +16 -0
- package/dist/orchestrator/architect-agent.d.ts.map +1 -1
- package/dist/orchestrator/architect-agent.js +546 -9
- package/dist/orchestrator/architect-agent.js.map +1 -1
- package/dist/orchestrator/checkpoints/audit.d.ts +128 -0
- package/dist/orchestrator/checkpoints/audit.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/audit.js +272 -0
- package/dist/orchestrator/checkpoints/audit.js.map +1 -0
- package/dist/orchestrator/checkpoints/feedback-router.d.ts +213 -0
- package/dist/orchestrator/checkpoints/feedback-router.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/feedback-router.js +438 -0
- package/dist/orchestrator/checkpoints/feedback-router.js.map +1 -0
- package/dist/orchestrator/checkpoints/index.d.ts +11 -0
- package/dist/orchestrator/checkpoints/index.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/index.js +12 -0
- package/dist/orchestrator/checkpoints/index.js.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/cli.d.ts +35 -0
- package/dist/orchestrator/checkpoints/mechanisms/cli.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/cli.js +153 -0
- package/dist/orchestrator/checkpoints/mechanisms/cli.js.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/disk.d.ts +34 -0
- package/dist/orchestrator/checkpoints/mechanisms/disk.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/disk.js +139 -0
- package/dist/orchestrator/checkpoints/mechanisms/disk.js.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/pr.d.ts +141 -0
- package/dist/orchestrator/checkpoints/mechanisms/pr.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/pr.js +445 -0
- package/dist/orchestrator/checkpoints/mechanisms/pr.js.map +1 -0
- package/dist/orchestrator/checkpoints/noop.d.ts +12 -0
- package/dist/orchestrator/checkpoints/noop.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/noop.js +13 -0
- package/dist/orchestrator/checkpoints/noop.js.map +1 -0
- package/dist/orchestrator/checkpoints/registry.d.ts +48 -0
- package/dist/orchestrator/checkpoints/registry.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/registry.js +89 -0
- package/dist/orchestrator/checkpoints/registry.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/_util.d.ts +50 -0
- package/dist/orchestrator/checkpoints/renderers/_util.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/_util.js +137 -0
- package/dist/orchestrator/checkpoints/renderers/_util.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/code-review.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/code-review.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/code-review.js +66 -0
- package/dist/orchestrator/checkpoints/renderers/code-review.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/curator-briefing.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/curator-briefing.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/curator-briefing.js +40 -0
- package/dist/orchestrator/checkpoints/renderers/curator-briefing.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/eval-result.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/eval-result.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/eval-result.js +54 -0
- package/dist/orchestrator/checkpoints/renderers/eval-result.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/generator-diff.d.ts +49 -0
- package/dist/orchestrator/checkpoints/renderers/generator-diff.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/generator-diff.js +154 -0
- package/dist/orchestrator/checkpoints/renderers/generator-diff.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/pipeline-summary.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/pipeline-summary.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/pipeline-summary.js +59 -0
- package/dist/orchestrator/checkpoints/renderers/pipeline-summary.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/plan.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/plan.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/plan.js +34 -0
- package/dist/orchestrator/checkpoints/renderers/plan.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/registry.d.ts +43 -0
- package/dist/orchestrator/checkpoints/renderers/registry.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/registry.js +83 -0
- package/dist/orchestrator/checkpoints/renderers/registry.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/research.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/research.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/research.js +39 -0
- package/dist/orchestrator/checkpoints/renderers/research.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-contract.d.ts +20 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-contract.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-contract.js +57 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-contract.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-summary.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-summary.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-summary.js +38 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-summary.js.map +1 -0
- package/dist/orchestrator/checkpoints/sites.d.ts +22 -0
- package/dist/orchestrator/checkpoints/sites.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/sites.js +57 -0
- package/dist/orchestrator/checkpoints/sites.js.map +1 -0
- package/dist/orchestrator/checkpoints/types.d.ts +51 -0
- package/dist/orchestrator/checkpoints/types.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/types.js +9 -0
- package/dist/orchestrator/checkpoints/types.js.map +1 -0
- package/dist/orchestrator/code-reviewer-agent.d.ts +50 -0
- package/dist/orchestrator/code-reviewer-agent.d.ts.map +1 -0
- package/dist/orchestrator/code-reviewer-agent.js +283 -0
- package/dist/orchestrator/code-reviewer-agent.js.map +1 -0
- package/dist/orchestrator/curator-agent.d.ts.map +1 -1
- package/dist/orchestrator/curator-agent.js +60 -9
- package/dist/orchestrator/curator-agent.js.map +1 -1
- package/dist/orchestrator/deploy/classify.d.ts +31 -0
- package/dist/orchestrator/deploy/classify.d.ts.map +1 -0
- package/dist/orchestrator/deploy/classify.js +109 -0
- package/dist/orchestrator/deploy/classify.js.map +1 -0
- package/dist/orchestrator/deploy/execute.d.ts +45 -0
- package/dist/orchestrator/deploy/execute.d.ts.map +1 -0
- package/dist/orchestrator/deploy/execute.js +146 -0
- package/dist/orchestrator/deploy/execute.js.map +1 -0
- package/dist/orchestrator/deploy/executor.d.ts +22 -0
- package/dist/orchestrator/deploy/executor.d.ts.map +1 -0
- package/dist/orchestrator/deploy/executor.js +31 -0
- package/dist/orchestrator/deploy/executor.js.map +1 -0
- package/dist/orchestrator/deploy/index.d.ts +21 -0
- package/dist/orchestrator/deploy/index.d.ts.map +1 -0
- package/dist/orchestrator/deploy/index.js +21 -0
- package/dist/orchestrator/deploy/index.js.map +1 -0
- package/dist/orchestrator/deploy/resolve.d.ts +51 -0
- package/dist/orchestrator/deploy/resolve.d.ts.map +1 -0
- package/dist/orchestrator/deploy/resolve.js +53 -0
- package/dist/orchestrator/deploy/resolve.js.map +1 -0
- package/dist/orchestrator/deploy/spawn.d.ts +60 -0
- package/dist/orchestrator/deploy/spawn.d.ts.map +1 -0
- package/dist/orchestrator/deploy/spawn.js +62 -0
- package/dist/orchestrator/deploy/spawn.js.map +1 -0
- package/dist/orchestrator/deploy/types.d.ts +98 -0
- package/dist/orchestrator/deploy/types.d.ts.map +1 -0
- package/dist/orchestrator/deploy/types.js +39 -0
- package/dist/orchestrator/deploy/types.js.map +1 -0
- package/dist/orchestrator/documenter-agent.d.ts +57 -0
- package/dist/orchestrator/documenter-agent.d.ts.map +1 -0
- package/dist/orchestrator/documenter-agent.js +195 -0
- package/dist/orchestrator/documenter-agent.js.map +1 -0
- package/dist/orchestrator/environment.d.ts +45 -0
- package/dist/orchestrator/environment.d.ts.map +1 -0
- package/dist/orchestrator/environment.js +151 -0
- package/dist/orchestrator/environment.js.map +1 -0
- package/dist/orchestrator/eval-lenses.d.ts +7 -0
- package/dist/orchestrator/eval-lenses.d.ts.map +1 -0
- package/dist/orchestrator/eval-lenses.js +19 -0
- package/dist/orchestrator/eval-lenses.js.map +1 -0
- package/dist/orchestrator/eval-persist.d.ts +25 -0
- package/dist/orchestrator/eval-persist.d.ts.map +1 -0
- package/dist/orchestrator/eval-persist.js +74 -0
- package/dist/orchestrator/eval-persist.js.map +1 -0
- package/dist/orchestrator/evaluator-agent.d.ts +23 -0
- package/dist/orchestrator/evaluator-agent.d.ts.map +1 -1
- package/dist/orchestrator/evaluator-agent.js +80 -10
- package/dist/orchestrator/evaluator-agent.js.map +1 -1
- package/dist/orchestrator/generator-agent.d.ts.map +1 -1
- package/dist/orchestrator/generator-agent.js +53 -8
- package/dist/orchestrator/generator-agent.js.map +1 -1
- package/dist/orchestrator/memory/distill.d.ts +60 -0
- package/dist/orchestrator/memory/distill.d.ts.map +1 -0
- package/dist/orchestrator/memory/distill.js +177 -0
- package/dist/orchestrator/memory/distill.js.map +1 -0
- package/dist/orchestrator/memory/eval-source.d.ts +20 -0
- package/dist/orchestrator/memory/eval-source.d.ts.map +1 -0
- package/dist/orchestrator/memory/eval-source.js +88 -0
- package/dist/orchestrator/memory/eval-source.js.map +1 -0
- package/dist/orchestrator/memory/retrieve.d.ts +45 -0
- package/dist/orchestrator/memory/retrieve.d.ts.map +1 -0
- package/dist/orchestrator/memory/retrieve.js +102 -0
- package/dist/orchestrator/memory/retrieve.js.map +1 -0
- package/dist/orchestrator/model-resolver.d.ts.map +1 -1
- package/dist/orchestrator/model-resolver.js +15 -1
- package/dist/orchestrator/model-resolver.js.map +1 -1
- package/dist/orchestrator/observability/index.d.ts +12 -0
- package/dist/orchestrator/observability/index.d.ts.map +1 -0
- package/dist/orchestrator/observability/index.js +12 -0
- package/dist/orchestrator/observability/index.js.map +1 -0
- package/dist/orchestrator/observability/merge.d.ts +73 -0
- package/dist/orchestrator/observability/merge.d.ts.map +1 -0
- package/dist/orchestrator/observability/merge.js +110 -0
- package/dist/orchestrator/observability/merge.js.map +1 -0
- package/dist/orchestrator/pipeline.d.ts +31 -0
- package/dist/orchestrator/pipeline.d.ts.map +1 -1
- package/dist/orchestrator/pipeline.js +267 -5
- package/dist/orchestrator/pipeline.js.map +1 -1
- package/dist/orchestrator/planner-agent.d.ts +22 -1
- package/dist/orchestrator/planner-agent.d.ts.map +1 -1
- package/dist/orchestrator/planner-agent.js +165 -8
- package/dist/orchestrator/planner-agent.js.map +1 -1
- package/dist/orchestrator/research-agent.d.ts.map +1 -1
- package/dist/orchestrator/research-agent.js +48 -11
- package/dist/orchestrator/research-agent.js.map +1 -1
- package/dist/orchestrator/tools/handlers.d.ts +16 -0
- package/dist/orchestrator/tools/handlers.d.ts.map +1 -1
- package/dist/orchestrator/tools/handlers.js +30 -5
- package/dist/orchestrator/tools/handlers.js.map +1 -1
- package/dist/orchestrator/tools/index.d.ts +84 -1
- package/dist/orchestrator/tools/index.d.ts.map +1 -1
- package/dist/orchestrator/tools/index.js +164 -1
- package/dist/orchestrator/tools/index.js.map +1 -1
- package/dist/orchestrator/tools/schemas.js +5 -5
- package/dist/orchestrator/tools/schemas.js.map +1 -1
- package/dist/orchestrator/workflow/args-builder.d.ts +35 -0
- package/dist/orchestrator/workflow/args-builder.d.ts.map +1 -0
- package/dist/orchestrator/workflow/args-builder.js +142 -0
- package/dist/orchestrator/workflow/args-builder.js.map +1 -0
- package/dist/orchestrator/workflow/budget.d.ts +57 -0
- package/dist/orchestrator/workflow/budget.d.ts.map +1 -0
- package/dist/orchestrator/workflow/budget.js +80 -0
- package/dist/orchestrator/workflow/budget.js.map +1 -0
- package/dist/orchestrator/workflow/conformance.d.ts +27 -0
- package/dist/orchestrator/workflow/conformance.d.ts.map +1 -0
- package/dist/orchestrator/workflow/conformance.js +111 -0
- package/dist/orchestrator/workflow/conformance.js.map +1 -0
- package/dist/orchestrator/workflow/eligibility.d.ts +8 -0
- package/dist/orchestrator/workflow/eligibility.d.ts.map +1 -0
- package/dist/orchestrator/workflow/eligibility.js +10 -0
- package/dist/orchestrator/workflow/eligibility.js.map +1 -0
- package/dist/orchestrator/workflow/engine.d.ts +10 -0
- package/dist/orchestrator/workflow/engine.d.ts.map +1 -0
- package/dist/orchestrator/workflow/engine.js +2 -0
- package/dist/orchestrator/workflow/engine.js.map +1 -0
- package/dist/orchestrator/workflow/errors.d.ts +13 -0
- package/dist/orchestrator/workflow/errors.d.ts.map +1 -0
- package/dist/orchestrator/workflow/errors.js +26 -0
- package/dist/orchestrator/workflow/errors.js.map +1 -0
- package/dist/orchestrator/workflow/flusher.d.ts +19 -0
- package/dist/orchestrator/workflow/flusher.d.ts.map +1 -0
- package/dist/orchestrator/workflow/flusher.js +81 -0
- package/dist/orchestrator/workflow/flusher.js.map +1 -0
- package/dist/orchestrator/workflow/interpreter.d.ts +48 -0
- package/dist/orchestrator/workflow/interpreter.d.ts.map +1 -0
- package/dist/orchestrator/workflow/interpreter.js +92 -0
- package/dist/orchestrator/workflow/interpreter.js.map +1 -0
- package/dist/orchestrator/workflow/pure-sprint.d.ts +65 -0
- package/dist/orchestrator/workflow/pure-sprint.d.ts.map +1 -0
- package/dist/orchestrator/workflow/pure-sprint.js +82 -0
- package/dist/orchestrator/workflow/pure-sprint.js.map +1 -0
- package/dist/orchestrator/workflow/reconciler.d.ts +15 -0
- package/dist/orchestrator/workflow/reconciler.d.ts.map +1 -0
- package/dist/orchestrator/workflow/reconciler.js +65 -0
- package/dist/orchestrator/workflow/reconciler.js.map +1 -0
- package/dist/orchestrator/workflow/resume-cursor.d.ts +10 -0
- package/dist/orchestrator/workflow/resume-cursor.d.ts.map +1 -0
- package/dist/orchestrator/workflow/resume-cursor.js +25 -0
- package/dist/orchestrator/workflow/resume-cursor.js.map +1 -0
- package/dist/orchestrator/workflow/retry.d.ts +50 -0
- package/dist/orchestrator/workflow/retry.d.ts.map +1 -0
- package/dist/orchestrator/workflow/retry.js +100 -0
- package/dist/orchestrator/workflow/retry.js.map +1 -0
- package/dist/orchestrator/workflow/scheduler.d.ts +87 -0
- package/dist/orchestrator/workflow/scheduler.d.ts.map +1 -0
- package/dist/orchestrator/workflow/scheduler.js +158 -0
- package/dist/orchestrator/workflow/scheduler.js.map +1 -0
- package/dist/orchestrator/workflow/selector.d.ts +26 -0
- package/dist/orchestrator/workflow/selector.d.ts.map +1 -0
- package/dist/orchestrator/workflow/selector.js +54 -0
- package/dist/orchestrator/workflow/selector.js.map +1 -0
- package/dist/orchestrator/workflow/synthesizer.d.ts +52 -0
- package/dist/orchestrator/workflow/synthesizer.d.ts.map +1 -0
- package/dist/orchestrator/workflow/synthesizer.js +75 -0
- package/dist/orchestrator/workflow/synthesizer.js.map +1 -0
- package/dist/orchestrator/workflow/ts-engine.d.ts +13 -0
- package/dist/orchestrator/workflow/ts-engine.d.ts.map +1 -0
- package/dist/orchestrator/workflow/ts-engine.js +14 -0
- package/dist/orchestrator/workflow/ts-engine.js.map +1 -0
- package/dist/orchestrator/workflow/types.d.ts +55 -0
- package/dist/orchestrator/workflow/types.d.ts.map +1 -0
- package/dist/orchestrator/workflow/types.js +3 -0
- package/dist/orchestrator/workflow/types.js.map +1 -0
- package/dist/orchestrator/workflow/workflow-engine.d.ts +31 -0
- package/dist/orchestrator/workflow/workflow-engine.d.ts.map +1 -0
- package/dist/orchestrator/workflow/workflow-engine.js +70 -0
- package/dist/orchestrator/workflow/workflow-engine.js.map +1 -0
- package/dist/orchestrator/worktree.d.ts +18 -0
- package/dist/orchestrator/worktree.d.ts.map +1 -0
- package/dist/orchestrator/worktree.js +129 -0
- package/dist/orchestrator/worktree.js.map +1 -0
- package/dist/providers/anthropic.d.ts +8 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +135 -11
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/claude-code.d.ts +44 -0
- package/dist/providers/claude-code.d.ts.map +1 -0
- package/dist/providers/claude-code.js +143 -0
- package/dist/providers/claude-code.js.map +1 -0
- package/dist/providers/factory.d.ts +16 -2
- package/dist/providers/factory.d.ts.map +1 -1
- package/dist/providers/factory.js +101 -14
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/google.js +32 -3
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/index.d.ts +4 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +3 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +28 -3
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/preflight.d.ts +22 -0
- package/dist/providers/preflight.d.ts.map +1 -0
- package/dist/providers/preflight.js +54 -0
- package/dist/providers/preflight.js.map +1 -0
- package/dist/providers/structured.d.ts +130 -0
- package/dist/providers/structured.d.ts.map +1 -0
- package/dist/providers/structured.js +205 -0
- package/dist/providers/structured.js.map +1 -0
- package/dist/providers/types.d.ts +53 -2
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/state/approval-state.d.ts +74 -0
- package/dist/state/approval-state.d.ts.map +1 -0
- package/dist/state/approval-state.js +127 -0
- package/dist/state/approval-state.js.map +1 -0
- package/dist/state/history-rotation.d.ts +17 -0
- package/dist/state/history-rotation.d.ts.map +1 -0
- package/dist/state/history-rotation.js +84 -0
- package/dist/state/history-rotation.js.map +1 -0
- package/dist/state/history.d.ts +16 -4
- package/dist/state/history.d.ts.map +1 -1
- package/dist/state/history.js +62 -20
- package/dist/state/history.js.map +1 -1
- package/dist/state/index.d.ts +4 -1
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +5 -2
- package/dist/state/index.js.map +1 -1
- package/dist/state/memory.d.ts +60 -0
- package/dist/state/memory.d.ts.map +1 -0
- package/dist/state/memory.js +242 -0
- package/dist/state/memory.js.map +1 -0
- package/dist/state/review-state.d.ts +15 -0
- package/dist/state/review-state.d.ts.map +1 -0
- package/dist/state/review-state.js +51 -0
- package/dist/state/review-state.js.map +1 -0
- package/dist/state/run-state.d.ts +39 -0
- package/dist/state/run-state.d.ts.map +1 -0
- package/dist/state/run-state.js +101 -0
- package/dist/state/run-state.js.map +1 -0
- package/dist/telemetry/emit.d.ts +41 -0
- package/dist/telemetry/emit.d.ts.map +1 -0
- package/dist/telemetry/emit.js +65 -0
- package/dist/telemetry/emit.js.map +1 -0
- package/dist/utils/git.d.ts +27 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +50 -0
- package/dist/utils/git.js.map +1 -1
- package/hooks/hooks.json +27 -1
- package/hooks/session-start +42 -0
- package/package.json +13 -6
- package/scripts/check-prereqs.sh +12 -0
- package/scripts/e2e-graph-smoke.sh +167 -0
- package/scripts/graph-hook.mjs +151 -0
- package/scripts/run-kpi-gate.mjs +245 -0
- package/scripts/spike-claude-code-provider.mjs +66 -0
- package/scripts/spike-deepseek.mjs +63 -0
- package/scripts/sync-skills.mjs +4 -1
- package/scripts/sync-targets.json +12 -0
- package/scripts/update-all.mjs +255 -0
- package/skills/bober.architect/SKILL.md +13 -0
- package/skills/bober.architect/references/arch-lens-panel.md +126 -0
- package/skills/bober.code-review/SKILL.md +186 -0
- package/skills/bober.debug/SKILL.md +300 -0
- package/skills/bober.deploy/SKILL.md +262 -0
- package/skills/bober.diagnose/SKILL.md +254 -0
- package/skills/bober.eval/SKILL.md +9 -0
- package/skills/bober.eval/references/lens-panel.md +115 -0
- package/skills/bober.graph/SKILL.md +85 -0
- package/skills/bober.impact/SKILL.md +101 -0
- package/skills/bober.incident/SKILL.md +245 -0
- package/skills/bober.onboard/SKILL.md +84 -0
- package/skills/bober.plan/SKILL.md +16 -0
- package/skills/bober.postmortem/SKILL.md +231 -0
- package/skills/bober.run/SKILL.md +23 -4
- package/skills/bober.run/references/lens-panel.md +115 -0
- package/skills/bober.runbook/SKILL.md +335 -0
- package/skills/bober.sprint/SKILL.md +44 -2
- package/skills/bober.sprint/references/lens-panel.md +115 -0
- package/skills/bober.using-bober/SKILL.md +133 -0
- package/skills/bober.verify/SKILL.md +143 -0
- package/skills/shared/arch-lens-panel.md +126 -0
- package/skills/shared/lens-panel.md +115 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
|
|
3
|
+
"name": "agent-bober",
|
|
4
|
+
"description": "Marketplace for the Bober multi-agent harness — installs the bober plugin (24 skills + 10 subagents) so updates propagate via `/plugin update` instead of per-project copies.",
|
|
5
|
+
"owner": {
|
|
6
|
+
"name": "BOBER3r"
|
|
7
|
+
},
|
|
8
|
+
"plugins": [
|
|
9
|
+
{
|
|
10
|
+
"name": "bober",
|
|
11
|
+
"description": "Generator-Evaluator multi-agent harness for building applications autonomously with Claude. Researcher → Planner → Curator → Generator → Evaluator pipeline with a tokensave code-graph, incident/runbook tooling, and stack-specific workflows (React, Solidity, Anchor).",
|
|
12
|
+
"author": {
|
|
13
|
+
"name": "BOBER3r"
|
|
14
|
+
},
|
|
15
|
+
"category": "development",
|
|
16
|
+
"homepage": "https://agentbober.com",
|
|
17
|
+
"source": "./"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bober",
|
|
3
3
|
"description": "Generator-Evaluator multi-agent harness for building applications autonomously with Claude",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.15.0",
|
|
5
5
|
"author": { "name": "BOBER3r" },
|
|
6
|
-
"homepage": "https://
|
|
6
|
+
"homepage": "https://agentbober.com",
|
|
7
7
|
"repository": "https://github.com/BOBER3r/agent-bober",
|
|
8
8
|
"license": "MIT"
|
|
9
9
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,249 @@ All notable changes to `agent-bober` will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.17.0] — 2026-06-13
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Per-sprint documenter** ([#41](https://github.com/BOBER3r/agent-bober/pull/41)): a new `documenter` agent spawned after a sprint's evaluator returns PASS — it writes a concise record of what the sprint built and finds & updates the existing docs (README, ADRs, CLAUDE.md, module docs) while the change is fresh, instead of batching all docs into a final sprint. Documentation only (never touches application code or tests) and **advisory** — a documenter failure or timeout never downgrades the already-passed sprint. On by default; configure via the `documenter` config section (`enabled`, `model`, `maxTurns`, `timeoutMs`).
|
|
15
|
+
- **`simplicity` lens** ([#39](https://github.com/BOBER3r/agent-bober/pull/39)): a complexity-only (YAGNI) lens added to both the evaluator (`evaluator.panel`) and architect (`architect.panel`) lens panels. It surfaces reinvented standard-library code, dependencies doing what a native platform feature already does, single-implementation abstractions, dead flexibility, and logic that could be materially shorter — and is explicitly forbidden from ever flagging a test, a validation at a trust boundary, error handling, security, or accessibility as deletable. Mirrored in `skills/shared/{lens-panel,arch-lens-panel}.md` with the existing drift/parity gates.
|
|
16
|
+
- **`bober:` ceiling-comment convention** ([#39](https://github.com/BOBER3r/agent-bober/pull/39)): the generator marks a deliberate simplification that has a known ceiling with a `bober:` comment naming the ceiling **and** the upgrade path (e.g. `// bober: global lock, per-account locks if throughput matters`). The code-reviewer treats a marked shortcut as intent and an unmarked shortcut with an obvious ceiling as a finding; the evaluator treats a marked simplification as not-a-smell (scoped strictly to code-quality, never to the test/verification discipline).
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **Stale plugin `.claude/` copies**: regenerated the `bober-planner` agent + `bober-plan` command and the `bober-documenter` agent copies that had drifted from their canonical `agents/` / `skills/` sources (the planner's bounded-lessons-index step and the new documenter agent were missing from the plugin surface). Run `npm run update-all` to keep these in sync.
|
|
21
|
+
- **Untracked plugin agent/command copies now committed**: the `bober-diagnoser`, `bober-deployer`, and `bober-postmortemer` incident agents and the `bober-graph` / `bober-impact` / `bober-onboard` commands existed on disk but were never tracked, so they did not ship on the plugin surface for everyone. They are now committed (canonical sources were already tracked); all six are provider-agnostic and honour the configured provider (Anthropic / DeepSeek / OpenAI-compatible).
|
|
22
|
+
|
|
23
|
+
## [0.16.0] — 2026-06-04
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- **Multi-provider support — DeepSeek** ([#21](https://github.com/BOBER3r/agent-bober/pull/21), [#24](https://github.com/BOBER3r/agent-bober/pull/24)): DeepSeek is now a first-class provider via the built-in `openai-compat` adapter pointed at `https://api.deepseek.com`. Shorthands `deepseek` / `deepseek-v4-pro` / `deepseek-v4-flash` auto-set the endpoint; set `DEEPSEEK_API_KEY`. Supports **all** roles including tool-calling (curator, generator, evaluator, code-reviewer). See [`docs/providers.md`](docs/providers.md).
|
|
28
|
+
- **Multi-provider support — claude-code (subscription)** ([#21](https://github.com/BOBER3r/agent-bober/pull/21), [#24](https://github.com/BOBER3r/agent-bober/pull/24)): a no-API-key `ClaudeCodeAdapter` that shells out to the `claude` CLI on your Claude subscription (`binary` / `timeoutMs` overrides). Planner and researcher roles only — tool-using roles fall back to another configured provider (role-aware fallback).
|
|
29
|
+
- **Evaluator lens panel** ([#25](https://github.com/BOBER3r/agent-bober/pull/25), [#26](https://github.com/BOBER3r/agent-bober/pull/26)): opt-in `evaluator.panel` runs the evaluation across multiple independent lenses (`correctness`, `security`, `regression`, `quality`) with bounded fan-out and a reconcile step, emitting per-lens verdict telemetry. Off by default — byte-identical behavior when disabled.
|
|
30
|
+
- **Architect lens panel** ([#27](https://github.com/BOBER3r/agent-bober/pull/27)): opt-in `architect.panel` gates the architecture approach-selection and review checkpoints into bounded per-lens fan-out (`scalability`, `security`, `cost`, `operability`, `maintainability`, `reversibility`) with a fail-closed reconcile. Off by default.
|
|
31
|
+
- **Native lens-panel surface**: an optional `lensVerdicts` field on the evaluator result schema plus lens-aware evaluator/architect agent modes and a parity/drift gate, so the Claude Code plugin surface mirrors the TypeScript panel behavior. Canonical references at `skills/shared/lens-panel.md` and `skills/shared/arch-lens-panel.md`.
|
|
32
|
+
- **Config-selectable orchestration engine**: `pipeline.engine` (`'ts'` | `'skill'` | `'workflow'`, default `'ts'`) selects the pipeline orchestration engine behind an engine-selection seam, with an eligibility probe that downgrades `workflow` → `ts` when ineligible or in `careful` mode. No behavior change on the default `ts` path.
|
|
33
|
+
- **Graph telemetry + `update-all`** ([#19](https://github.com/BOBER3r/agent-bober/pull/19), [#20](https://github.com/BOBER3r/agent-bober/pull/20)): tokensave code-graph preflight telemetry written to `.bober/history.jsonl`, and an `update-all` sync flow (`npm run update-all`) that keeps the CLI, skills, agents, and plugin marketplace in sync.
|
|
34
|
+
- **Preset-aware slash-command installation** ([#11](https://github.com/BOBER3r/agent-bober/pull/11), [#12](https://github.com/BOBER3r/agent-bober/pull/12)) *(shipped in 0.12.0, documented here)*: `bober init` now installs only the universal commands plus the commands relevant to the chosen preset, instead of every command.
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
|
|
38
|
+
- **Plugin PostToolUse hooks schema** ([#22](https://github.com/BOBER3r/agent-bober/pull/22), [#23](https://github.com/BOBER3r/agent-bober/pull/23)): PostToolUse hooks are now wrapped in the required `hooks[]` array so the Claude Code plugin loads them correctly.
|
|
39
|
+
|
|
40
|
+
## [0.15.0] — 2026-05-29
|
|
41
|
+
|
|
42
|
+
### Added
|
|
43
|
+
|
|
44
|
+
- **Claude Opus 4.8 support** ([#17](https://github.com/BOBER3r/agent-bober/pull/17)): the `opus` shorthand now resolves to `claude-opus-4-8` (1M context, adaptive thinking); added an `opus-4-7` shorthand to pin the previous model.
|
|
45
|
+
- **`@anthropic-ai/sdk` upgraded `0.39.0` → `0.100.1`** to expose the Opus 4.8 request fields, with zero adapter behavior change.
|
|
46
|
+
- **Anthropic prompt caching** (pattern borrowed from nousresearch/hermes-agent): ephemeral `cache_control` breakpoints on the system prompt + recent messages (system-and-last-3, capped at 4 per request), behind `providerConfig.promptCaching` — default **on** for Anthropic, no-op for other providers.
|
|
47
|
+
- **`effort` control**: optional `ChatParams.effort` (`low` | `medium` | `high` | `xhigh` | `max`) forwarded as top-level `output_config.effort`; omitted when unset so the API default (`high` on Opus 4.8) applies. Non-Anthropic adapters ignore it.
|
|
48
|
+
- **Mid-conversation system blocks**: a `SystemUpdateMessage` message variant renders to an Anthropic `mid_conv_system` content block with optional ephemeral `cache_control`; OpenAI and Google adapters handle it best-effort without error.
|
|
49
|
+
- **`bober_list_pending_approvals`**: List all pending careful-flow checkpoints awaiting human
|
|
50
|
+
approval. Accepts optional `{ projectPath?: string }` (must be absolute when supplied; defaults
|
|
51
|
+
to cwd). Returns `[{ checkpointId, ageMs, prompt }]` — identical shape to `bober list-approvals
|
|
52
|
+
--json`. Backed by the new shared `listPendingApprovals(projectRoot)` helper in
|
|
53
|
+
`src/state/approval-state.ts`.
|
|
54
|
+
- **`bober_approve_checkpoint`**: Approve a pending checkpoint over MCP by writing
|
|
55
|
+
`.bober/approvals/<id>.approved.json` with the same payload shape as `bober approve`
|
|
56
|
+
(`{ approvedAt, approverId, editDelta? }`). Accepts `{ checkpointId, projectPath?, editDelta? }`.
|
|
57
|
+
Guards with `pendingExists` before writing. Returns `{ approvedAt, checkpointId }`.
|
|
58
|
+
- **`bober_reject_checkpoint`**: Reject a pending checkpoint over MCP by writing
|
|
59
|
+
`.bober/approvals/<id>.rejected.json` with the same payload shape as `bober reject`
|
|
60
|
+
(`{ rejectedAt, rejecterId, feedback }`). Accepts `{ checkpointId, projectPath?, feedback }`
|
|
61
|
+
(feedback required and non-empty). Guards with `pendingExists` before writing.
|
|
62
|
+
Returns `{ rejectedAt, checkpointId }`.
|
|
63
|
+
- **`bober_list_projects`**: Enumerate bober projects under one or more search roots.
|
|
64
|
+
Accepts `{ searchRoots: string[] }`. Walks each root one level deep; returns
|
|
65
|
+
`[{ projectPath, name, mode?, hasActiveRuns, lastRunAt? }]` for every directory
|
|
66
|
+
containing `bober.config.json`. Unreadable roots are skipped with a stderr warning.
|
|
67
|
+
READ-ONLY — does not instantiate RunManager; reads `.bober/runs/*/state.json` directly.
|
|
68
|
+
- **`bober_list_specs`**: List PlanSpecs in a project. Accepts `{ projectPath }`.
|
|
69
|
+
Reads `.bober/specs/*.json` with loose parsing (invalid files silently skipped).
|
|
70
|
+
Returns `[{ specId, title, status, sprintCount, completedAt? }]`.
|
|
71
|
+
- **`bober_get_project_state`**: Aggregate per-project state counts for the cockpit sidebar.
|
|
72
|
+
Accepts `{ projectPath }`. Returns `{ configExists, activeRunCount, lastRunAt?,
|
|
73
|
+
openIncidentCount, pendingApprovalCount, specCount, mode? }`. READ-ONLY — does not
|
|
74
|
+
instantiate RunManager.
|
|
75
|
+
- All six new tools accept an optional `projectPath` (required for discovery tools; optional
|
|
76
|
+
for approval tools). When supplied, `projectPath` must be absolute — a relative path returns
|
|
77
|
+
a soft-error JSON `{ error: "projectPath must be absolute" }` rather than throwing.
|
|
78
|
+
- **`listPendingApprovals(projectRoot)`** helper extracted from
|
|
79
|
+
`src/cli/commands/list-approvals.ts` into `src/state/approval-state.ts`. Both the CLI and
|
|
80
|
+
the MCP tool `bober_list_pending_approvals` share this helper. Exported from
|
|
81
|
+
`src/state/index.ts` as `listPendingApprovals` / `PendingApprovalRow`.
|
|
82
|
+
- **`readRunStatesFromDisk(projectRoot)`** helper added to `src/state/run-state.ts` as a
|
|
83
|
+
named alias for `listRunStateFiles`. Exported from `src/state/index.ts`. Cockpit discovery
|
|
84
|
+
tools use it to enumerate run states for arbitrary project roots without touching the
|
|
85
|
+
RunManager singleton.
|
|
86
|
+
- MCP tool count: **23 → 29**.
|
|
87
|
+
|
|
88
|
+
- **`bober_run_in_worktree`**: Start a pipeline inside an isolated git worktree on a new branch.
|
|
89
|
+
Input: `{ task: string, allowDirty?: boolean, keepOnSuccess?: boolean }`. Returns
|
|
90
|
+
`{ runId, branch, worktreePath, status: 'running' }` immediately (fire-and-forget like `bober_run`).
|
|
91
|
+
Multiple worktree runs can execute concurrently on the same project. Use `bober_get_run_status`
|
|
92
|
+
to track progress.
|
|
93
|
+
- **`bober worktree run <task>`** CLI subcommand mirroring the MCP tool. Flags:
|
|
94
|
+
`--allow-dirty` (skip uncommitted-changes guard), `--keep-on-success` (retain worktree after success).
|
|
95
|
+
Prints `{ runId, branch, worktreePath, projectRoot }` JSON to stdout.
|
|
96
|
+
- **`runInWorktree(task, projectRoot, config, opts)`** (`src/orchestrator/worktree.ts`): the shared helper
|
|
97
|
+
the CLI and MCP tool both use. Creates a git worktree under `<pipeline.worktreeRoot>/<runId>` on a
|
|
98
|
+
branch derived from `generator.branchPattern`, runs the pipeline inside it, and on success removes
|
|
99
|
+
the worktree per `pipeline.cleanupWorktreeOnSuccess`. On failure (or if `--keep-on-success`/`keepOnSuccess`)
|
|
100
|
+
the worktree is retained for debugging and its path is printed to stderr.
|
|
101
|
+
- **`pipeline.worktreeRoot`** config field: directory (relative to projectRoot) under which
|
|
102
|
+
worktrees are created. Default `.bober/worktrees`.
|
|
103
|
+
- **`pipeline.cleanupWorktreeOnSuccess`** config field: when true (default), remove the worktree
|
|
104
|
+
via `git worktree remove` after a successful run. On failure the worktree is always retained.
|
|
105
|
+
- **`RunState.worktreePath`** and **`RunState.branch`** optional fields. Populated by `runInWorktree`
|
|
106
|
+
before the pipeline starts; surfaced in `bober_get_run_status` output.
|
|
107
|
+
- **`RunManager.startRun(task, projectRoot, config, pipelineFn?, opts?)`** signature extended with
|
|
108
|
+
optional `opts: { runId?, worktreePath?, branch? }`. Existing 3- and 4-arg callers are unchanged.
|
|
109
|
+
- **`git.ts`** helpers: `addWorktree`, `removeWorktree`, `isClean` shelling out to git CLI (no new deps).
|
|
110
|
+
|
|
111
|
+
### Follow-ups (documented, NOT implemented this sprint)
|
|
112
|
+
|
|
113
|
+
- Garbage collection of orphaned worktrees from prior failed runs (`bober worktree prune`).
|
|
114
|
+
- Worktree-aware bober_status (the cockpit uses bober_get_run_status by runId instead).
|
|
115
|
+
- Cross-worktree merge automation.
|
|
116
|
+
|
|
117
|
+
- **`bober_subscribe_events`**: Subscribe to runId-scoped live events. Input: `{ runId: string, since?: string }`. Returns `{ subscriptionId, status: 'subscribed', startedAt }`. The server begins emitting `bober/events` notifications for every line appended to `.bober/history.jsonl` or `.bober/telemetry/<date>.jsonl` whose `runId` matches the subscription. The optional `since` parameter triggers a one-time backfill of pre-existing events with `timestamp > since`.
|
|
118
|
+
- **`bober_unsubscribe_events`**: Unsubscribe from a runId-scoped event stream. Input: `{ subscriptionId: string }`. Releases file-watch handles when no other subscription is watching the same files. Returns `{ subscriptionId, status: 'unsubscribed' }` or a soft-error `{ error: 'Subscription not found: <id>' }`.
|
|
119
|
+
- **`EventStreamManager`** (`src/mcp/event-stream.ts`): In-process class that tails `.bober/history.jsonl` and `.bober/telemetry/<date>.jsonl` using `fs.watch`. One file-watch handle is shared across all subscriptions watching the same file (reference-counted). Date roll-over is detected via a polling interval (5 s, `unref()`'d). Lines without an extractable `runId` (top-level or `details.runId`) are silently skipped. Per-subscription bounded queue (default 1000) drops the oldest events on overflow; a single `bober/events.dropped` notification with `{ subscriptionId, dropped: N }` is emitted once per overflow window. All diagnostic output is routed to `process.stderr` (stdout is reserved for the MCP JSON-RPC transport).
|
|
120
|
+
- **`pipeline.eventQueueBound`** config field: per-subscription bounded queue limit. Default `1000`, minimum `1`. Readable by the server from `bober.config.json` and passed to `EventStreamManager` at startup.
|
|
121
|
+
- **`bober_list_active_runs`**: Lists all runs tracked by the RunManager. Accepts optional `{ status?: 'running'|'completed'|'failed'|'aborted' }` filter. Returns a JSON array of RunState objects. Omit the filter to get all runs regardless of status.
|
|
122
|
+
- **`bober_get_run_status`**: Fetches the full RunState for a specific run by `runId`. Input: `{ runId: string }` (required). Returns the complete RunState JSON or `{ error: 'Run not found: <runId>' }` when the runId is unknown.
|
|
123
|
+
- **`bober_abort_run`**: Aborts a currently running pipeline run. Input: `{ runId: string, reason?: string }`. Flips `status` to `'aborted'`, persists `abortedAt` and `abortReason` to `state.json`, and returns `{ runId, status: 'aborted', abortedAt }`. Returns `{ error: 'Run not found: <runId>' }` for unknown runs, `{ error: 'Run is not active' }` for non-running runs. Note: this sprint flips state only; forceful in-flight subprocess termination (SIGTERM propagation) is deferred to a future hardening sprint.
|
|
124
|
+
- **`RunState.status`** type union widened to include `'aborted'`; new optional fields `abortedAt?: string` and `abortReason?: string` added.
|
|
125
|
+
|
|
126
|
+
## [0.14.0] — 2026-05-25
|
|
127
|
+
|
|
128
|
+
Bober Vision — agent-bober becomes a four-mode software engineering teammate
|
|
129
|
+
instead of a single-mode autopilot. The pipeline you already know is Mode 1;
|
|
130
|
+
the other three modes share its scaffolding (planner, evaluator, audit log)
|
|
131
|
+
but pause at different boundaries and operate at different blast radii.
|
|
132
|
+
|
|
133
|
+
The headline change: it is now safe to delegate production-touching work.
|
|
134
|
+
Careful-flow gates every meaningful boundary; Diagnose has a native vocabulary
|
|
135
|
+
for incidents; Postmortem auto-synthesizes from the audit trail.
|
|
136
|
+
|
|
137
|
+
See [VISION.md](./VISION.md) for the full design rationale and example flows.
|
|
138
|
+
|
|
139
|
+
### Added
|
|
140
|
+
|
|
141
|
+
- **Mode 1 — Autopilot** (unchanged): the existing generator-evaluator loop.
|
|
142
|
+
Use for spikes and greenfield. `bober run`.
|
|
143
|
+
- **Mode 2 — Careful-flow**: checkpoint-gated execution. Every
|
|
144
|
+
research/plan/sprint boundary surfaces a diff and waits for approval via
|
|
145
|
+
CLI prompt, disk marker (`.bober/approvals/*.pending.json`), or GitHub PR.
|
|
146
|
+
Per-run audit log at `.bober/audits/<runId>.jsonl`. New CLI:
|
|
147
|
+
`bober approve <checkpointId>`, `bober reject <checkpointId>`,
|
|
148
|
+
`bober list-approvals`, `bober audit-show <runId>`.
|
|
149
|
+
- **Mode 3 — Diagnose**: production-incident response. Generic observability
|
|
150
|
+
MCP plugin slots (any MCP server matching the schema can supply metrics
|
|
151
|
+
and logs). Structured incident timeline at `.bober/incidents/<id>/`.
|
|
152
|
+
Change-management gates around destructive actions. Playbook library
|
|
153
|
+
searchable by symptom. New CLI: `bober incident [start|status|end|list|abort]`,
|
|
154
|
+
`bober rollback <incidentId>`, `bober playbook [list|show|search]`.
|
|
155
|
+
- **Mode 4 — Postmortem**: auto-synthesized from incident artifacts when an
|
|
156
|
+
incident transitions to `resolved`. Every claim has an inline citation
|
|
157
|
+
back to timeline/changelog/observations. Required sections enforced
|
|
158
|
+
(TL;DR, Impact, Timeline, Root Cause 5-Whys, Contributing Factors, What
|
|
159
|
+
Went Well, What Went Wrong, Action Items). New CLI:
|
|
160
|
+
`bober postmortem [generate|show] <incidentId>`.
|
|
161
|
+
- **Behavioral discipline foundation** (verbatim port of obra/superpowers):
|
|
162
|
+
Iron Laws, Red Flags, Rationalization-Prevention tables, SessionStart
|
|
163
|
+
bootstrap, anti-pattern catalog, AGENTS.md contract. Surfaces as 9 new
|
|
164
|
+
universal skills: `bober.using-bober`, `bober.verify`, `bober.debug`,
|
|
165
|
+
`bober.code-review`, `bober.incident`, `bober.diagnose`, `bober.deploy`,
|
|
166
|
+
`bober.runbook`, `bober.postmortem`. Installed by `agent-bober init` and
|
|
167
|
+
copied to `.claude/commands/`.
|
|
168
|
+
- **4 new agent definitions** in `agents/`: `bober-code-reviewer`,
|
|
169
|
+
`bober-diagnoser`, `bober-deployer`, `bober-postmortemer`.
|
|
170
|
+
- **Opt-in local-only telemetry** (default OFF). When enabled, writes mode-0600
|
|
171
|
+
JSONL events to `.bober/telemetry/<date>.jsonl`. ESLint rule
|
|
172
|
+
(`no-restricted-imports` + `no-restricted-globals`) scoped to
|
|
173
|
+
`src/telemetry/**` blocks all network primitives at lint time. Privacy
|
|
174
|
+
invariant: only IDs, counts, durations, and enums in payloads; never
|
|
175
|
+
user-content strings. New CLI: `bober telemetry [status|purge|export]`.
|
|
176
|
+
- **Config schema migration**: `bober config migrate` rewrites an existing
|
|
177
|
+
`bober.config.json` to explicitly include all new vision-era fields with
|
|
178
|
+
default values. Back-compat parsing handles missing fields automatically —
|
|
179
|
+
the migrate command is informative, not required.
|
|
180
|
+
- **Mode + checkpoint config**: `pipeline.mode` (`autopilot` | `careful`,
|
|
181
|
+
default `autopilot`), `pipeline.checkpointMechanism` (`noop` | `disk` |
|
|
182
|
+
`cli` | `github-pr`, default `noop`). All optional; absence means autopilot.
|
|
183
|
+
- **End-to-end correctness gate**: `tests/e2e/four-modes.test.ts` (11 tests)
|
|
184
|
+
exercises all four modes on a fixture project. Uses the real
|
|
185
|
+
`DiskCheckpointMechanism` (not a mock), spawns the real
|
|
186
|
+
`ExternalMcpServer` subprocess for the MCP protocol boundary, runs the
|
|
187
|
+
real incident lifecycle including `verifyResolution`, and validates the
|
|
188
|
+
auto-generated postmortem against the required-sections + citation rules.
|
|
189
|
+
|
|
190
|
+
### Changed
|
|
191
|
+
|
|
192
|
+
- `src/cli/commands/init.ts`: `UNIVERSAL_COMMANDS` extended with the 9 new
|
|
193
|
+
vision skills. `agentFiles` extended with the 4 new agent definitions.
|
|
194
|
+
All vision-era surfaces now ship with every brownfield/preset init.
|
|
195
|
+
- `VISION.md`, `README.md`, `AGENTS.md` updated to document the four modes,
|
|
196
|
+
the careful-flow mechanisms, the incident lifecycle, the telemetry
|
|
197
|
+
guarantee, and the slash-command set.
|
|
198
|
+
|
|
199
|
+
### Tests
|
|
200
|
+
|
|
201
|
+
563 → **1115 tests passing** across 82 test files (4 pre-existing skipped).
|
|
202
|
+
New test coverage includes: incident timeline + state machine, resolution
|
|
203
|
+
verification, rollback (full + per-step gates), postmortem section/citation
|
|
204
|
+
assertions, playbook search, careful-flow integration, observability MCP
|
|
205
|
+
spawn, deployer change classification + ChangeEntry recording, config
|
|
206
|
+
schema back-compat, telemetry writer (mode-0600, default-off, concurrency,
|
|
207
|
+
privacy), CLI subcommands for config/telemetry.
|
|
208
|
+
|
|
209
|
+
### Backward compatibility
|
|
210
|
+
|
|
211
|
+
- Existing `bober.config.json` files (pre-vision) parse cleanly with the
|
|
212
|
+
extended schema — all new fields are optional and default to current
|
|
213
|
+
autopilot behavior. No migration required.
|
|
214
|
+
- Existing CLI surface (`bober plan`, `bober sprint`, `bober eval`,
|
|
215
|
+
`bober run`, `bober graph`, etc.) is unchanged.
|
|
216
|
+
- Telemetry defaults OFF. No network egress under any condition; enforced
|
|
217
|
+
statically by ESLint and verified at runtime.
|
|
218
|
+
|
|
219
|
+
## [0.13.0] — 2026-05-24
|
|
220
|
+
|
|
221
|
+
Graph (tokensave) integration — user-facing CLI commands and slash-command skills for code-graph workflows.
|
|
222
|
+
|
|
223
|
+
### Added
|
|
224
|
+
|
|
225
|
+
- **`agent-bober graph [init|sync|status]`** — manage the code graph index.
|
|
226
|
+
- `init`: runs `tokensave init`, writes `.bober/graph/manifest.json`. Exits 2 with platform-aware install hint when tokensave is missing.
|
|
227
|
+
- `sync [--force]`: re-indexes changed files (full re-index with `--force`). Updates manifest.
|
|
228
|
+
- `status [--json]`: prints `{ready, indexedFileCount, tokensaveVersion, lastSyncedHeadSha, stale}`. Human-readable or JSON.
|
|
229
|
+
- **`agent-bober onboard`** — generate 5 onboarding markdown files in `.bober/onboarding/` using the code graph (architecture overview, hotspots, knowledge gaps, communities, README). Prints a summary table on completion.
|
|
230
|
+
- **`agent-bober impact <symbol|file>`** — analyse the impact radius of a symbol or file. Writes `.bober/graph/impact/<slug>.md` with sections `# Impact: <target>`, `## Affected symbols`, `## Tests covering this symbol`.
|
|
231
|
+
- **3 new universal skills** (installed in all presets and brownfield):
|
|
232
|
+
- `skills/bober.graph/SKILL.md` (`/bober-graph`) — code graph management
|
|
233
|
+
- `skills/bober.onboard/SKILL.md` (`/bober-onboard`) — onboarding doc generation
|
|
234
|
+
- `skills/bober.impact/SKILL.md` (`/bober-impact`) — impact analysis (with `argument-hint: <symbol|file>`)
|
|
235
|
+
- **`scripts/e2e-graph-smoke.sh`** — end-to-end smoke test script (gates on tokensave binary availability).
|
|
236
|
+
- Architecture document: [`.bober/architecture/arch-20260524-port-code-review-graph-architecture.md`](.bober/architecture/arch-20260524-port-code-review-graph-architecture.md)
|
|
237
|
+
|
|
238
|
+
### Changed
|
|
239
|
+
|
|
240
|
+
- All 3 graph commands respect `graph.enabled=false` — exit 1 with message: *"Graph integration is disabled. Enable via `graph.enabled: true` in bober.config.json."*
|
|
241
|
+
- `src/cli/commands/init.ts` skill map: `bober.graph`, `bober.onboard`, `bober.impact` added to `UNIVERSAL_COMMANDS` — included in every preset and brownfield init.
|
|
242
|
+
|
|
243
|
+
### KPI gate result
|
|
244
|
+
|
|
245
|
+
60% combined reduction (synthetic-fixture baseline; real-pipeline measurement via `node scripts/run-kpi-gate.mjs`).
|
|
246
|
+
|
|
247
|
+
### Tests
|
|
248
|
+
|
|
249
|
+
549 → **563 tests passing** (added 14 tests: slug derivation, command success paths, disabled-graph paths, skill bundle frontmatter, init.ts skill inclusion).
|
|
250
|
+
|
|
8
251
|
## [0.12.0] — 2026-04-17
|
|
9
252
|
|
|
10
253
|
Tuned for Claude Opus 4.7 — the model now follows instructions literally and
|
package/README.md
CHANGED
|
@@ -48,8 +48,42 @@ You describe a feature
|
|
|
48
48
|
|
|
49
49
|
---
|
|
50
50
|
|
|
51
|
+
## Operating Modes
|
|
52
|
+
|
|
53
|
+
agent-bober operates in four modes — pick the one that matches your situation. See
|
|
54
|
+
[VISION.md](./VISION.md) for full documentation, worked examples, and configuration details.
|
|
55
|
+
|
|
56
|
+
| Mode | When to Use | Entry Point |
|
|
57
|
+
|------|-------------|-------------|
|
|
58
|
+
| **Autopilot** | Feature spikes, greenfield work, no production risk | `bober run` |
|
|
59
|
+
| **Careful-Flow** | Production behavior changes, want checkpoint approval | `bober run --mode careful` |
|
|
60
|
+
| **Diagnose** | Production system is broken right now | `bober incident start` |
|
|
61
|
+
| **Postmortem** | After resolving an incident, generate a retrospective | `bober postmortem generate` |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
51
65
|
## Installation
|
|
52
66
|
|
|
67
|
+
There are two ways to run agent-bober, and they are complementary:
|
|
68
|
+
|
|
69
|
+
- **Claude Code plugin** — the skills (`/bober-run`, `/bober-plan`, …) and subagents, running on your Claude Code subscription. No npm or API key required.
|
|
70
|
+
- **npm package** — the standalone CLI + MCP server (`agent-bober`), which calls LLM providers directly (anthropic / deepseek / claude-code) and powers headless, CI, and programmatic runs.
|
|
71
|
+
|
|
72
|
+
For the full feature set, install both.
|
|
73
|
+
|
|
74
|
+
### Claude Code Plugin
|
|
75
|
+
|
|
76
|
+
Install the plugin from its marketplace, then install `bober`:
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
/plugin marketplace add BOBER3r/agent-bober
|
|
80
|
+
/plugin install bober@agent-bober
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
This installs 24 skills + 10 subagents. Update later with `/plugin update bober`. The plugin runs the Researcher → Planner → Curator → Generator → Evaluator pipeline as Claude Code subagents on your Claude subscription — provider selection (the [Capability Matrix](#capability-matrix)) does **not** apply in this mode.
|
|
84
|
+
|
|
85
|
+
### npm CLI / MCP Server
|
|
86
|
+
|
|
53
87
|
```bash
|
|
54
88
|
# Install globally
|
|
55
89
|
npm install -g agent-bober
|
|
@@ -58,10 +92,12 @@ npm install -g agent-bober
|
|
|
58
92
|
npx agent-bober init
|
|
59
93
|
```
|
|
60
94
|
|
|
95
|
+
This is required to use the DeepSeek / claude-code providers, run bober headlessly or in CI, or expose the MCP server. A few plugin skills (`bober.plan`, `bober.sprint`, `bober.impact`, `bober.onboard`, `bober.graph`) also shell out to the `agent-bober` CLI, so installing it unlocks their full behavior. Graph features additionally require the separate [`tokensave`](#graph-tokensave-integration) binary.
|
|
96
|
+
|
|
61
97
|
agent-bober works in multiple environments:
|
|
62
98
|
|
|
63
|
-
- **Claude Code** -- Plugin with
|
|
64
|
-
- **Cursor / Windsurf** -- MCP server with
|
|
99
|
+
- **Claude Code** -- Plugin with 20+ slash commands (`/bober-plan`, `/bober-run`, etc.) — install via the marketplace above
|
|
100
|
+
- **Cursor / Windsurf** -- MCP server with 37 tools in the chat interface
|
|
65
101
|
- **Any MCP-compatible IDE** -- MCP server via stdio transport
|
|
66
102
|
- **Any terminal** -- CLI commands (`npx agent-bober run "feature"`)
|
|
67
103
|
|
|
@@ -114,6 +150,52 @@ Specialized workflows:
|
|
|
114
150
|
|
|
115
151
|
---
|
|
116
152
|
|
|
153
|
+
## Graph (Tokensave) Integration
|
|
154
|
+
|
|
155
|
+
> **Optional.** The graph is an opt-in enhancement — agent-bober's core pipeline (Researcher → Planner → Curator → Generator → Evaluator) works fully without it. Enable it only if you want semantic code search, impact analysis, and auto-generated onboarding docs.
|
|
156
|
+
|
|
157
|
+
agent-bober integrates with [tokensave](https://github.com/aovestdipaperino/tokensave) to build a structural code graph that powers semantic search, impact analysis, and automated onboarding documentation.
|
|
158
|
+
|
|
159
|
+
**Prerequisite — install the `tokensave` binary.** It is a native Rust binary, **not** an npm package, so `npm install -g agent-bober` does **not** install it. Install it separately:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# macOS (Homebrew)
|
|
163
|
+
brew install aovestdipaperino/tap/tokensave
|
|
164
|
+
# Windows (Scoop)
|
|
165
|
+
scoop bucket add tokensave https://github.com/aovestdipaperino/scoop-bucket && scoop install tokensave
|
|
166
|
+
# Any platform (Cargo / Rust)
|
|
167
|
+
cargo install tokensave
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Required version range: **`>=6.0.0-beta.1 <7.0.0`**. agent-bober verifies this on `agent-bober graph init` and prints the correct install hint if `tokensave` is missing or out of range. If the binary is absent, graph features degrade gracefully and the rest of the pipeline is unaffected.
|
|
171
|
+
|
|
172
|
+
Once `tokensave` is installed, enable the graph by adding a `graph` section to `bober.config.json`:
|
|
173
|
+
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"graph": {
|
|
177
|
+
"enabled": true,
|
|
178
|
+
"languageTier": "core"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Once enabled, three new CLI commands and slash commands become available:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
agent-bober graph init # Initialise the graph index
|
|
187
|
+
agent-bober graph sync # Re-index changed files (--force for full re-index)
|
|
188
|
+
agent-bober graph status # Check graph status (--json for machine-readable)
|
|
189
|
+
agent-bober onboard # Generate .bober/onboarding/ documentation
|
|
190
|
+
agent-bober impact <symbol> # Analyse impact radius and test coverage
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
In Claude Code, the same workflows are available as slash commands: `/bober-graph`, `/bober-onboard`, `/bober-impact`.
|
|
194
|
+
|
|
195
|
+
For architecture details see: [`.bober/architecture/arch-20260524-port-code-review-graph-architecture.md`](.bober/architecture/arch-20260524-port-code-review-graph-architecture.md)
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
117
199
|
## Multi-Provider Support
|
|
118
200
|
|
|
119
201
|
agent-bober is **provider-agnostic**. Use any LLM provider for any agent role. Mix and match providers freely -- use one for planning, another for generation, a local model for evaluation.
|
|
@@ -129,6 +211,32 @@ agent-bober is **provider-agnostic**. Use any LLM provider for any agent role. M
|
|
|
129
211
|
|
|
130
212
|
Shorthands resolve to the latest model version automatically. You can also pass any full model ID directly -- it will be sent to the provider as-is.
|
|
131
213
|
|
|
214
|
+
### Capability Matrix
|
|
215
|
+
|
|
216
|
+
> **This matrix applies to the standalone CLI / programmatic provider layer only** (`npx agent-bober run …`), where bober calls each provider's API directly. It does **not** apply to the **Claude Code plugin**: when you run a skill like `/bober-run` inside Claude Code, the roles are spawned as Claude Code subagents on your Claude subscription, so provider selection (including `claude-code`) does not apply. See [Claude Code Plugin](#claude-code-plugin) below.
|
|
217
|
+
|
|
218
|
+
| Role | anthropic (default) | deepseek (openai-compat) | claude-code (subscription) |
|
|
219
|
+
| ---------------------- | -------------------- | ------------------------ | -------------------------- |
|
|
220
|
+
| planner | yes | yes | yes (no tools needed) |
|
|
221
|
+
| researcher (phase 1/2) | yes | yes | yes (no tools needed) |
|
|
222
|
+
| curator | yes | yes (tools) | no (runs own loop) |
|
|
223
|
+
| generator | yes | yes (tools) | no (runs own loop) |
|
|
224
|
+
| evaluator | yes | yes (tools) | no (runs own loop) |
|
|
225
|
+
| code-reviewer | yes | yes (tools) | no (runs own loop) |
|
|
226
|
+
| documenter | yes | yes (tools) | no (runs own loop) |
|
|
227
|
+
|
|
228
|
+
**DeepSeek prerequisites:** `npm install openai` (optional peer dep) and set `DEEPSEEK_API_KEY` in
|
|
229
|
+
your environment. DeepSeek supports all roles including tool-calling roles (curator, generator,
|
|
230
|
+
evaluator, code-reviewer).
|
|
231
|
+
|
|
232
|
+
**claude-code prerequisites:** An active Claude subscription (Pro/Max/Team) and the `claude` CLI
|
|
233
|
+
on PATH. claude-code is **planner and researcher only** — it cannot be used for tool-using roles
|
|
234
|
+
because the `claude -p` interface does not support tool-calling. As of the **2026-06-15 ToS update**,
|
|
235
|
+
programmatic subscription use is metered (Agent-SDK credit, billed at API rates, no rollover).
|
|
236
|
+
Each `claude -p` call injects approximately **40,000 tokens of system-prompt overhead**.
|
|
237
|
+
|
|
238
|
+
See [`docs/providers.md`](docs/providers.md) for copy-paste config snippets for each provider.
|
|
239
|
+
|
|
132
240
|
### Configuration
|
|
133
241
|
|
|
134
242
|
Set providers per agent role in `bober.config.json`:
|
|
@@ -163,11 +271,18 @@ npx agent-bober run "feature" --provider openai
|
|
|
163
271
|
|
|
164
272
|
Provider SDKs (`openai`, `@google/generative-ai`) are **optional peer dependencies** -- install only what you use. Only `@anthropic-ai/sdk` is required by default.
|
|
165
273
|
|
|
274
|
+
### Anthropic features (Claude Opus 4.8)
|
|
275
|
+
|
|
276
|
+
- **Latest model by default.** The `opus` shorthand resolves to **`claude-opus-4-8`** (1M context, adaptive thinking). Pin the previous generation with the `opus-4-7` shorthand.
|
|
277
|
+
- **Prompt caching, on by default.** Multi-turn Anthropic calls reuse a cached system + recent-message prefix (ephemeral `cache_control`, system-and-last-3 strategy), cutting input-token cost. Disable per role with `"providerConfig": { "promptCaching": false }`.
|
|
278
|
+
- **Effort control.** Set `effort` (`low` | `medium` | `high` | `xhigh` | `max`) to trade latency/cost against depth; when omitted, the API default applies (`high` on Opus 4.8). Other providers ignore it.
|
|
279
|
+
- **Mid-conversation system updates.** Instructions can be revised mid-task without breaking the prompt cache (Anthropic `mid_conv_system` blocks).
|
|
280
|
+
|
|
166
281
|
---
|
|
167
282
|
|
|
168
283
|
## MCP Server (Cursor, Windsurf, etc.)
|
|
169
284
|
|
|
170
|
-
agent-bober includes an MCP (Model Context Protocol) server that exposes
|
|
285
|
+
agent-bober includes an MCP (Model Context Protocol) server that exposes **37 tools** across pipeline, run-management, careful-flow approvals, multi-project discovery, incident response, and graph in any MCP-compatible IDE.
|
|
171
286
|
|
|
172
287
|
### Setup for Cursor
|
|
173
288
|
|
|
@@ -218,6 +333,13 @@ Add to your Windsurf MCP configuration:
|
|
|
218
333
|
| `bober_spec` | read | Read the current PlanSpec |
|
|
219
334
|
| `bober_principles` | read/write | Read or set project principles |
|
|
220
335
|
| `bober_config` | read/write | Read or update `bober.config.json` |
|
|
336
|
+
| `bober_list_pending_approvals` · `bober_approve_checkpoint` · `bober_reject_checkpoint` | careful-flow | List / approve / reject checkpoint approvals (careful mode) |
|
|
337
|
+
| `bober_list_active_runs` · `bober_get_run_status` · `bober_abort_run` · `bober_run_in_worktree` | run-mgmt | Manage concurrent and isolated-worktree runs |
|
|
338
|
+
| `bober_subscribe_events` · `bober_unsubscribe_events` | events | Live run event stream |
|
|
339
|
+
| `bober_get_project_state` · `bober_list_projects` · `bober_list_specs` | discovery | Multi-project state + spec discovery |
|
|
340
|
+
| `bober_incident_start` · `bober_incident_status` · `bober_incident_list` · `bober_incident_abort` · `bober_rollback_start` · `bober_postmortem_get` · `bober_playbook_search` · `bober_playbook_list` | incident | Diagnose, roll back, postmortem, and search playbooks |
|
|
341
|
+
|
|
342
|
+
*(37 tools total — the rows above summarize the additional categories beyond the core pipeline tools.)*
|
|
221
343
|
|
|
222
344
|
---
|
|
223
345
|
|
|
@@ -286,6 +408,20 @@ The `/bober-principles` command also triggers auto-discovery when called with no
|
|
|
286
408
|
| `/bober-anchor` | Solana program workflow |
|
|
287
409
|
| `/bober-brownfield` | Existing codebase workflow |
|
|
288
410
|
| `/bober-playwright` | Set up Playwright E2E testing, generate tests, debug failures |
|
|
411
|
+
| `/bober-code-review` | Advisory review of the sprint diff against the contract + anti-pattern catalog |
|
|
412
|
+
| `/bober-verify` | Verification-before-completion -- run checks and confirm output before claiming success |
|
|
413
|
+
| `/bober-debug` | Systematic debugging -- reproduce, isolate, hypothesize, fix, verify |
|
|
414
|
+
| `/bober-graph` | Manage the code graph index -- init, sync, status (requires tokensave) |
|
|
415
|
+
| `/bober-impact` | Analyse the impact radius and test coverage of a symbol or file |
|
|
416
|
+
| `/bober-onboard` | Generate onboarding docs from the code graph |
|
|
417
|
+
| `/bober-incident` | Run the incident lifecycle -- diagnose, deploy, verify, postmortem |
|
|
418
|
+
| `/bober-diagnose` | Investigate a production incident -- evidence at boundaries, hypothesize-and-disprove |
|
|
419
|
+
| `/bober-deploy` | Execute a remediation action with blast-radius classification + change-management gates |
|
|
420
|
+
| `/bober-runbook` | Execute a step-by-step recovery procedure with pre/postcondition gates |
|
|
421
|
+
| `/bober-postmortem` | Synthesize an evidence-cited postmortem from incident artifacts |
|
|
422
|
+
| `/bober-using-bober` | Establishes how to find and use bober skills (loaded at conversation start) |
|
|
423
|
+
|
|
424
|
+
> **Preset-aware install:** `bober init <preset>` installs the universal commands above plus only the stack-specific commands matching your preset or mode -- e.g. `/bober-solidity` is added for a `solidity` project, `/bober-react` and `/bober-playwright` for `nextjs`/`react-vite`, and `/bober-brownfield` for an existing codebase. The Claude Code plugin (`/plugin install`) always ships the full set.
|
|
289
425
|
|
|
290
426
|
### CLI
|
|
291
427
|
|
|
@@ -300,6 +436,39 @@ npx agent-bober run "feature" # Full autonomous loop
|
|
|
300
436
|
npx agent-bober mcp # Start MCP server (Cursor/Windsurf)
|
|
301
437
|
```
|
|
302
438
|
|
|
439
|
+
#### New Commands (Sprints 9–25)
|
|
440
|
+
|
|
441
|
+
The following commands were added after the initial release. Full reference in [COMMANDS.md](./COMMANDS.md).
|
|
442
|
+
|
|
443
|
+
```bash
|
|
444
|
+
# Checkpoint approval (careful-flow mode)
|
|
445
|
+
npx agent-bober list-approvals # List pending checkpoints
|
|
446
|
+
npx agent-bober approve <checkpointId> # Approve a checkpoint
|
|
447
|
+
npx agent-bober approve <checkpointId> --edit <file> # Approve with edit delta
|
|
448
|
+
npx agent-bober reject <checkpointId> # Reject a checkpoint
|
|
449
|
+
npx agent-bober audit show <runId> # Show audit log for a run
|
|
450
|
+
|
|
451
|
+
# Incident response
|
|
452
|
+
npx agent-bober incident start '<symptom>' --severity S2 # Start incident
|
|
453
|
+
npx agent-bober incident status <incidentId> # Check status
|
|
454
|
+
npx agent-bober incident end <incidentId> --verified # Mark resolved
|
|
455
|
+
npx agent-bober incident list # List all incidents
|
|
456
|
+
npx agent-bober incident abort <incidentId> --reason "..." # Abort incident
|
|
457
|
+
|
|
458
|
+
# Rollback
|
|
459
|
+
npx agent-bober rollback <incidentId> --dry-run # Preview rollback plan
|
|
460
|
+
npx agent-bober rollback <incidentId> # Execute rollback
|
|
461
|
+
|
|
462
|
+
# Postmortem
|
|
463
|
+
npx agent-bober postmortem generate <incidentId> # Generate retrospective
|
|
464
|
+
npx agent-bober postmortem show <incidentId> # Print retrospective
|
|
465
|
+
|
|
466
|
+
# Playbooks
|
|
467
|
+
npx agent-bober playbook list # List all playbooks
|
|
468
|
+
npx agent-bober playbook show <name> # Show playbook content
|
|
469
|
+
npx agent-bober playbook search '<symptom>' # Search by symptom
|
|
470
|
+
```
|
|
471
|
+
|
|
303
472
|
#### Clarification gating
|
|
304
473
|
|
|
305
474
|
When the planner can't fully decompose a feature without more information, it stops with `status: "needs-clarification"` instead of fabricating sprints. The CLI surfaces the open questions and you resolve them via `plan answer`. After the last question is answered the spec auto-promotes to `status: "ready"` and the next `sprint`/`run` proceeds. See the **Architecture** section for the full lifecycle.
|
|
@@ -342,6 +511,32 @@ agent-bober run "Build a complete dashboard with auth, CRUD, and charts" --provi
|
|
|
342
511
|
|
|
343
512
|
---
|
|
344
513
|
|
|
514
|
+
## Lens Panels (multi-perspective evaluation & architecture)
|
|
515
|
+
|
|
516
|
+
Both the **evaluator** and the **architect** can run as a *lens panel* -- fanning a single decision out across several independent perspectives, then reconciling them into one verdict. Panels are **opt-in and off by default**; when disabled, behavior is byte-identical to the single-pass path.
|
|
517
|
+
|
|
518
|
+
- **Evaluator panel** (`evaluator.panel`): runs each sprint evaluation through the built-in lenses **correctness**, **security**, **regression**, **quality**, and **simplicity**, with bounded fan-out and a reconcile step, recording per-lens verdicts as telemetry.
|
|
519
|
+
- **Architect panel** (`architect.panel`): gates the architecture approach-selection and review checkpoints through the built-in lenses **scalability**, **security**, **cost**, **operability**, **maintainability**, **reversibility**, and **simplicity**, with a fail-closed reconcile.
|
|
520
|
+
|
|
521
|
+
The **simplicity** lens is a complexity-only perspective (YAGNI): it hunts code that reinvents the standard library, dependencies doing what a native platform feature already does, single-implementation abstractions, dead flexibility, and logic that could be materially shorter — while being explicitly forbidden from ever recommending the removal of a test, a validation at a trust boundary, error handling, security, or accessibility. It pairs with a generator convention: deliberate simplifications with a known ceiling are marked with a `bober:` comment naming the ceiling **and** the upgrade path (e.g. `// bober: global lock, per-account locks if throughput matters`), so a shortcut reads as an auditable choice rather than an oversight — and the code-reviewer treats a marked shortcut as intent, an unmarked one with an obvious ceiling as a finding.
|
|
522
|
+
|
|
523
|
+
Enable a panel and (optionally) restrict or override the lenses:
|
|
524
|
+
|
|
525
|
+
```jsonc
|
|
526
|
+
{
|
|
527
|
+
"evaluator": {
|
|
528
|
+
"panel": { "enabled": true, "lenses": ["correctness", "security"], "maxConcurrent": 4 }
|
|
529
|
+
},
|
|
530
|
+
"architect": {
|
|
531
|
+
"panel": { "enabled": true } // empty "lenses" => all built-ins
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
Leave `lenses` empty to use the full built-in set; `maxConcurrent` bounds how many lenses run in parallel (default 4). The same panels are available on the Claude Code plugin surface via the lens-aware evaluator/architect agents.
|
|
537
|
+
|
|
538
|
+
---
|
|
539
|
+
|
|
345
540
|
## Configuration
|
|
346
541
|
|
|
347
542
|
All configuration lives in `bober.config.json` at your project root. The `init` command creates this file from a template, and you can customize it afterward.
|
|
@@ -405,7 +600,31 @@ All configuration lives in `bober.config.json` at your project root. The `init`
|
|
|
405
600
|
{ "type": "playwright","required": false }
|
|
406
601
|
],
|
|
407
602
|
"maxIterations": 3, // Max rework cycles per sprint
|
|
408
|
-
"plugins": []
|
|
603
|
+
"plugins": [], // Custom evaluator plugin paths
|
|
604
|
+
"panel": { // Multi-lens evaluation (opt-in, off by default)
|
|
605
|
+
"enabled": false, // Run the evaluator across multiple lenses
|
|
606
|
+
"lenses": [], // [] = built-ins: correctness, security, regression, quality, simplicity
|
|
607
|
+
"maxConcurrent": 4 // Max lenses evaluated in parallel
|
|
608
|
+
}
|
|
609
|
+
},
|
|
610
|
+
|
|
611
|
+
// -- Documenter (per-sprint docs, on by default) -----
|
|
612
|
+
"documenter": {
|
|
613
|
+
"enabled": true, // Spawn a doc subagent after each sprint passes; set false to skip
|
|
614
|
+
"model": "sonnet", // Model for the documentation pass
|
|
615
|
+
"maxTurns": 20, // Max tool-use turns for the doc pass
|
|
616
|
+
"timeoutMs": 300000, // Advisory: a documenter timeout never downgrades the passed sprint
|
|
617
|
+
"provider": "anthropic", // Optional provider override
|
|
618
|
+
"endpoint": null // Custom base URL (for openai-compat)
|
|
619
|
+
},
|
|
620
|
+
|
|
621
|
+
// -- Architect (lens panel, opt-in) ------------------
|
|
622
|
+
"architect": {
|
|
623
|
+
"panel": {
|
|
624
|
+
"enabled": false, // Multi-lens architecture review (off by default)
|
|
625
|
+
"lenses": [], // [] = built-ins: scalability, security, cost, operability, maintainability, reversibility, simplicity
|
|
626
|
+
"maxConcurrent": 4
|
|
627
|
+
}
|
|
409
628
|
},
|
|
410
629
|
|
|
411
630
|
// -- Sprint ------------------------------------------
|
|
@@ -417,6 +636,7 @@ All configuration lives in `bober.config.json` at your project root. The `init`
|
|
|
417
636
|
|
|
418
637
|
// -- Pipeline ----------------------------------------
|
|
419
638
|
"pipeline": {
|
|
639
|
+
"engine": "ts", // Orchestration engine: "ts" (default) | "skill" | "workflow"
|
|
420
640
|
"researchPhase": true, // Run two-phase research before planning (default: true)
|
|
421
641
|
"architectPhase": false, // Run solution architecture phase before planning (default: false)
|
|
422
642
|
"maxIterations": 20, // Max total iterations across all sprints
|
|
@@ -671,7 +891,11 @@ To debug failing E2E tests:
|
|
|
671
891
|
|
|
|
672
892
|
pass? ----+---- fail?
|
|
673
893
|
| |
|
|
674
|
-
[
|
|
894
|
+
[Documenter] [Rework Loop]
|
|
895
|
+
(writes/updates
|
|
896
|
+
docs; advisory)
|
|
897
|
+
|
|
|
898
|
+
[Next Sprint]
|
|
675
899
|
|
|
|
676
900
|
v
|
|
677
901
|
All sprints done
|
|
@@ -693,6 +917,13 @@ Each agent runs as a **multi-turn agentic loop** with tool access via the unifie
|
|
|
693
917
|
- **Curator** (default: Claude Opus): Read-only codebase analysis scoped to a single sprint. For each sprint contract, reads the target files, extracts relevant code sections, inventories existing utilities the generator must reuse, identifies affected files and tests, gathers testing patterns, and produces a structured Sprint Briefing saved to `.bober/briefings/`. Runs once per sprint before the generator. Configurable via `curator` section in config.
|
|
694
918
|
- **Generator** (default: Claude Sonnet): Full tool access (`bash`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`). Receives the Sprint Briefing (curated patterns, utils, impact analysis) plus the sprint contract and principles -- no research, design, or outline artifacts (context distillation). Starts coding immediately instead of exploring the codebase.
|
|
695
919
|
- **Evaluator** (default: Claude Sonnet): Read-only + bash tools (`bash`, `read_file`, `glob`, `grep` -- deliberately NO write/edit). Independently verifies by running the dev server, taking Playwright screenshots, executing tests, and inspecting code. Cannot fix bugs -- only report them with precise feedback.
|
|
920
|
+
- **Documenter** (default: Claude Sonnet): Spawned after a sprint's evaluator returns PASS, while the change is fresh. Writes a concise record of what the sprint built and finds & updates the existing docs that are now stale (README, ADRs, CLAUDE.md, module docs). Documentation only -- never touches application code or tests, and its result is **advisory**: a documenter failure or timeout never downgrades the already-passed sprint. On by default; configurable via the `documenter` section (set `enabled: false` to skip).
|
|
921
|
+
|
|
922
|
+
Beyond the build pipeline, agent-bober ships a set of **operations subagents** for the incident lifecycle (invoked via `/bober-incident`, `/bober-diagnose`, `/bober-deploy`, `/bober-runbook`, and `/bober-postmortem`). Like every pipeline agent they run through the same provider-agnostic `LLMClient` layer, so they honour whatever provider you configure (Anthropic, DeepSeek, or any OpenAI-compatible endpoint):
|
|
923
|
+
|
|
924
|
+
- **Diagnoser** (default: Claude Sonnet): Read-only incident investigator. Gathers evidence at component boundaries and forms hypotheses with both supporting AND contradicting evidence, emitting a structured DiagnosisResult -- never writes code, never deploys.
|
|
925
|
+
- **Deployer** (default: Claude Sonnet): Executes a remediation action classified by blast radius. Risky actions are gated behind a Tier 2 checkpoint, and a ChangeEntry with a required inverse is recorded BEFORE execution.
|
|
926
|
+
- **Postmortemer** (default: Claude Sonnet): Read-only synthesizer that turns the incident's recorded artifacts into an evidence-cited postmortem -- chronological timeline, 5-Whys, contributing factors, and action items. Pure offline synthesis, no live observability access.
|
|
696
927
|
|
|
697
928
|
The separation ensures that:
|
|
698
929
|
1. The Generator cannot "mark its own homework" -- an independent evaluation step with its own tool access catches issues through actual runtime verification, not just reading the generator's self-report.
|
|
@@ -747,6 +978,8 @@ bash scripts/run-eval.sh /path/to/project
|
|
|
747
978
|
|
|
748
979
|
## Contributing
|
|
749
980
|
|
|
981
|
+
See [AGENTS.md](./AGENTS.md) for contributor discipline including the anti-slop pre-PR checklist.
|
|
982
|
+
|
|
750
983
|
Contributions are welcome. To set up the development environment:
|
|
751
984
|
|
|
752
985
|
```bash
|