@sienklogic/plan-build-run 2.11.0 → 2.12.1
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/CHANGELOG.md +1102 -220
- package/CLAUDE.md +54 -34
- package/LICENSE +2 -1
- package/README.md +261 -182
- package/agents/pbr-audit.md +266 -0
- package/agents/pbr-codebase-mapper.md +236 -0
- package/agents/pbr-debugger.md +312 -0
- package/agents/pbr-dev-sync.md +220 -0
- package/agents/pbr-executor.md +591 -0
- package/agents/pbr-general.md +191 -0
- package/agents/pbr-integration-checker.md +237 -0
- package/agents/pbr-intel-updater.md +296 -0
- package/agents/pbr-nyquist-auditor.md +252 -0
- package/agents/pbr-plan-checker.md +312 -0
- package/agents/pbr-planner.md +539 -0
- package/agents/pbr-researcher.md +314 -0
- package/agents/pbr-roadmapper.md +346 -0
- package/agents/pbr-synthesizer.md +271 -0
- package/agents/pbr-ui-checker.md +202 -0
- package/agents/pbr-ui-researcher.md +223 -0
- package/agents/pbr-verifier.md +495 -0
- package/bin/install.js +2752 -0
- package/commands/pbr/add-phase.md +75 -0
- package/commands/pbr/add-todo.md +8 -0
- package/commands/pbr/audit-milestone.md +8 -0
- package/commands/pbr/audit.md +5 -0
- package/commands/pbr/autonomous.md +5 -0
- package/commands/pbr/begin.md +5 -0
- package/commands/pbr/build.md +5 -0
- package/commands/pbr/check-todos.md +8 -0
- package/commands/pbr/complete-milestone.md +8 -0
- package/commands/pbr/config.md +5 -0
- package/commands/pbr/continue.md +5 -0
- package/commands/pbr/dashboard.md +5 -0
- package/commands/pbr/debug.md +5 -0
- package/commands/pbr/discuss-phase.md +6 -0
- package/commands/pbr/discuss.md +5 -0
- package/commands/pbr/do.md +5 -0
- package/commands/pbr/execute-phase.md +6 -0
- package/commands/pbr/explore.md +5 -0
- package/commands/pbr/health.md +5 -0
- package/commands/pbr/help.md +5 -0
- package/commands/pbr/import.md +5 -0
- package/commands/pbr/insert-phase.md +65 -0
- package/commands/pbr/intel.md +5 -0
- package/commands/pbr/join-discord.md +11 -0
- package/commands/pbr/list-phase-assumptions.md +69 -0
- package/commands/pbr/map-codebase.md +6 -0
- package/commands/pbr/milestone.md +5 -0
- package/commands/pbr/new-milestone.md +8 -0
- package/commands/pbr/new-project.md +6 -0
- package/commands/pbr/note.md +5 -0
- package/commands/pbr/pause-work.md +5 -0
- package/commands/pbr/pause.md +5 -0
- package/commands/pbr/plan-milestone-gaps.md +7 -0
- package/commands/pbr/plan-phase.md +6 -0
- package/commands/pbr/plan.md +5 -0
- package/commands/pbr/profile-user.md +5 -0
- package/commands/pbr/profile.md +5 -0
- package/commands/pbr/progress.md +6 -0
- package/commands/pbr/quick.md +5 -0
- package/commands/pbr/reapply-patches.md +47 -0
- package/commands/pbr/release.md +6 -0
- package/commands/pbr/remove-phase.md +66 -0
- package/commands/pbr/research-phase.md +59 -0
- package/commands/pbr/resume-work.md +5 -0
- package/commands/pbr/resume.md +5 -0
- package/commands/pbr/review.md +5 -0
- package/commands/pbr/scan.md +5 -0
- package/commands/pbr/session-report.md +5 -0
- package/commands/pbr/set-profile.md +6 -0
- package/commands/pbr/settings.md +5 -0
- package/commands/pbr/setup.md +5 -0
- package/commands/pbr/ship.md +5 -0
- package/commands/pbr/status.md +5 -0
- package/commands/pbr/statusline.md +5 -0
- package/commands/pbr/test.md +5 -0
- package/commands/pbr/todo.md +5 -0
- package/commands/pbr/ui-phase.md +5 -0
- package/commands/pbr/ui-review.md +5 -0
- package/commands/pbr/undo.md +5 -0
- package/commands/pbr/update.md +37 -0
- package/commands/pbr/validate-phase.md +5 -0
- package/commands/pbr/verify-work.md +6 -0
- package/dashboard/bin/cli.cjs +96 -0
- package/dashboard/bin/stop.cjs +129 -0
- package/dashboard/eslint.config.js +37 -0
- package/dashboard/index.html +20 -0
- package/dashboard/package.json +28 -23
- package/dashboard/server/index.js +136 -0
- package/dashboard/server/lib/frontmatter.js +92 -0
- package/dashboard/server/middleware/static.js +35 -0
- package/dashboard/server/package.json +16 -0
- package/dashboard/server/routes/agents.js +213 -0
- package/dashboard/server/routes/config.js +64 -0
- package/dashboard/server/routes/health.js +95 -0
- package/dashboard/server/routes/memory.js +107 -0
- package/dashboard/server/routes/planning.js +234 -0
- package/dashboard/server/routes/progress.js +77 -0
- package/dashboard/server/routes/projects.js +36 -0
- package/dashboard/server/routes/requirements.js +40 -0
- package/dashboard/server/routes/roadmap.js +69 -0
- package/dashboard/server/routes/status.js +25 -0
- package/dashboard/server/routes/telemetry.js +171 -0
- package/dashboard/server/services/file-watcher.js +105 -0
- package/dashboard/server/services/planning-reader.js +741 -0
- package/dashboard/server/test/cli.test.js +34 -0
- package/dashboard/server/test/frontmatter.test.js +104 -0
- package/dashboard/server/test/isolation.test.js +32 -0
- package/dashboard/server/test/planning-reader.test.js +151 -0
- package/dashboard/server/test/routes.test.js +91 -0
- package/dashboard/server/test/ws.test.js +81 -0
- package/dashboard/server/ws.js +96 -0
- package/dashboard/src/App.jsx +154 -0
- package/dashboard/src/components/charts/BudgetBars.jsx +42 -0
- package/dashboard/src/components/charts/ContextRadar.jsx +34 -0
- package/dashboard/src/components/charts/PhaseDonut.jsx +66 -0
- package/dashboard/src/components/charts/SuccessTrend.jsx +45 -0
- package/dashboard/src/components/charts/TokenChart.jsx +55 -0
- package/dashboard/src/components/charts/index.js +5 -0
- package/dashboard/src/components/config/CfgSection.jsx +93 -0
- package/dashboard/src/components/layout/Header.jsx +89 -0
- package/dashboard/src/components/layout/ProjectSwitcher.jsx +160 -0
- package/dashboard/src/components/layout/Sidebar.jsx +161 -0
- package/dashboard/src/components/ui/AutoModeBanner.jsx +138 -0
- package/dashboard/src/components/ui/BackButton.jsx +27 -0
- package/dashboard/src/components/ui/Badge.jsx +27 -0
- package/dashboard/src/components/ui/Card.jsx +23 -0
- package/dashboard/src/components/ui/ChartTooltip.jsx +48 -0
- package/dashboard/src/components/ui/CheckpointBox.jsx +110 -0
- package/dashboard/src/components/ui/CodeBlock.jsx +27 -0
- package/dashboard/src/components/ui/ConfidenceBadge.jsx +20 -0
- package/dashboard/src/components/ui/ConfirmModal.jsx +161 -0
- package/dashboard/src/components/ui/ConnectionBanner.jsx +60 -0
- package/dashboard/src/components/ui/ErrorBoundary.jsx +106 -0
- package/dashboard/src/components/ui/ErrorBox.jsx +107 -0
- package/dashboard/src/components/ui/KeyValue.jsx +33 -0
- package/dashboard/src/components/ui/LoadingSkeleton.jsx +84 -0
- package/dashboard/src/components/ui/MetricCard.jsx +58 -0
- package/dashboard/src/components/ui/NextUpBlock.jsx +92 -0
- package/dashboard/src/components/ui/NumberInput.jsx +44 -0
- package/dashboard/src/components/ui/PBRBanner.jsx +47 -0
- package/dashboard/src/components/ui/PipelineView.jsx +130 -0
- package/dashboard/src/components/ui/ProgressBar.jsx +28 -0
- package/dashboard/src/components/ui/ProgressDisplay.jsx +47 -0
- package/dashboard/src/components/ui/QualityGateBadge.jsx +15 -0
- package/dashboard/src/components/ui/SectionTitle.jsx +35 -0
- package/dashboard/src/components/ui/SelectInput.jsx +45 -0
- package/dashboard/src/components/ui/StatusDot.jsx +51 -0
- package/dashboard/src/components/ui/StatusSymbol.jsx +49 -0
- package/dashboard/src/components/ui/TabBar.jsx +41 -0
- package/dashboard/src/components/ui/TextInput.jsx +42 -0
- package/dashboard/src/components/ui/Toast.jsx +117 -0
- package/dashboard/src/components/ui/Toggle.jsx +70 -0
- package/dashboard/src/components/ui/index.js +29 -0
- package/dashboard/src/hooks/useDocumentTitle.js +16 -0
- package/dashboard/src/hooks/useFetch.js +50 -0
- package/dashboard/src/hooks/useToast.jsx +43 -0
- package/dashboard/src/hooks/useWebSocket.js +103 -0
- package/dashboard/src/lib/api.js +112 -0
- package/dashboard/src/lib/configSchema.js +189 -0
- package/dashboard/src/lib/constants.js +18 -0
- package/dashboard/src/main.jsx +15 -0
- package/dashboard/src/pages/AgentsPage.jsx +191 -0
- package/dashboard/src/pages/ConfigPage.jsx +298 -0
- package/dashboard/src/pages/HooksPage.jsx +412 -0
- package/dashboard/src/pages/LiveFeed.jsx +274 -0
- package/dashboard/src/pages/MemoryPage.jsx +107 -0
- package/dashboard/src/pages/OnboardingPage.jsx +117 -0
- package/dashboard/src/pages/Overview.jsx +360 -0
- package/dashboard/src/pages/PhaseDetailView.jsx +216 -0
- package/dashboard/src/pages/PlanningPage.jsx +181 -0
- package/dashboard/src/pages/ProgressPage.jsx +249 -0
- package/dashboard/src/pages/RoadmapPage.jsx +251 -0
- package/dashboard/src/pages/Telemetry.jsx +113 -0
- package/dashboard/src/pages/planning/DecisionsTab.jsx +153 -0
- package/dashboard/src/pages/planning/FilesTab.jsx +420 -0
- package/dashboard/src/pages/planning/MilestoneDetail.jsx +319 -0
- package/dashboard/src/pages/planning/MilestonesTab.jsx +151 -0
- package/dashboard/src/pages/planning/NotesTab.jsx +251 -0
- package/dashboard/src/pages/planning/PhasesTab.jsx +218 -0
- package/dashboard/src/pages/planning/QuickTab.jsx +50 -0
- package/dashboard/src/pages/planning/ResearchTab.jsx +103 -0
- package/dashboard/src/pages/planning/TodosTab.jsx +297 -0
- package/dashboard/src/theme/ThemeProvider.jsx +38 -0
- package/dashboard/src/theme/tokens.js +17 -0
- package/dashboard/tests/components/ConfirmModal.test.jsx +179 -0
- package/dashboard/tests/components/ConnectionBanner.test.jsx +37 -0
- package/dashboard/tests/components/ErrorBoundary.test.jsx +59 -0
- package/dashboard/tests/components/LoadingSkeleton.test.jsx +46 -0
- package/dashboard/tests/components/ToastContainer.test.jsx +47 -0
- package/dashboard/tests/components/Toggle.test.jsx +61 -0
- package/dashboard/tests/hooks/useFetch.test.jsx +77 -0
- package/dashboard/tests/hooks/useToast.test.jsx +78 -0
- package/dashboard/tests/hooks/useWebSocket.test.jsx +128 -0
- package/dashboard/tests/pages/ConfigPage.test.jsx +199 -0
- package/dashboard/tests/pages/PlanningPage.test.jsx +119 -0
- package/dashboard/tests/pages/planning/FilesTab.test.jsx +198 -0
- package/dashboard/tests/pages/planning/NotesTab.test.jsx +178 -0
- package/dashboard/tests/pages/planning/TodosTab.test.jsx +188 -0
- package/dashboard/tests/performance.test.jsx +46 -0
- package/dashboard/tests/routes/config.test.js +98 -0
- package/dashboard/tests/routes/health.test.js +40 -0
- package/dashboard/tests/routes/planning.test.js +112 -0
- package/dashboard/tests/routes/roadmap.test.js +91 -0
- package/dashboard/tests/routes/status.test.js +131 -0
- package/dashboard/tests/server/planning-reader.test.js +153 -0
- package/dashboard/tests/setup.js +7 -0
- package/dashboard/vite.config.js +41 -0
- package/hooks/dist/auto-continue.js +277 -0
- package/hooks/dist/block-skill-self-read.js +80 -0
- package/hooks/dist/check-agent-state-write.js +63 -0
- package/hooks/dist/check-config-change.js +188 -0
- package/hooks/dist/check-dangerous-commands.js +185 -0
- package/hooks/dist/check-doc-sprawl.js +102 -0
- package/hooks/dist/check-phase-boundary.js +191 -0
- package/hooks/dist/check-plan-format.js +227 -0
- package/hooks/dist/check-roadmap-sync.js +503 -0
- package/hooks/dist/check-skill-workflow.js +354 -0
- package/hooks/dist/check-state-sync.js +637 -0
- package/hooks/dist/check-subagent-output.js +401 -0
- package/hooks/dist/check-summary-gate.js +199 -0
- package/hooks/dist/context-bridge.js +406 -0
- package/hooks/dist/context-budget-check.js +442 -0
- package/hooks/dist/context-quality.js +271 -0
- package/hooks/dist/enforce-pbr-workflow.js +277 -0
- package/hooks/dist/event-handler.js +203 -0
- package/hooks/dist/event-logger.js +125 -0
- package/hooks/dist/hook-logger.js +112 -0
- package/hooks/dist/hook-server-client.js +342 -0
- package/hooks/dist/hook-server.js +352 -0
- package/hooks/dist/hooks-schema.json +85 -0
- package/hooks/dist/hooks.json +309 -0
- package/hooks/dist/instructions-loaded.js +107 -0
- package/hooks/dist/intel-queue.js +152 -0
- package/hooks/dist/intercept-plan-mode.js +50 -0
- package/hooks/dist/log-notification.js +125 -0
- package/hooks/dist/log-subagent.js +306 -0
- package/hooks/dist/log-tool-failure.js +140 -0
- package/hooks/dist/milestone-learnings.js +569 -0
- package/hooks/dist/pbr-tools.js +5 -0
- package/hooks/dist/post-bash-triage.js +152 -0
- package/hooks/dist/post-compact.js +135 -0
- package/hooks/dist/post-write-dispatch.js +277 -0
- package/hooks/dist/post-write-quality.js +208 -0
- package/hooks/dist/pre-bash-dispatch.js +158 -0
- package/hooks/dist/pre-write-dispatch.js +165 -0
- package/hooks/dist/progress-tracker.js +198 -0
- package/hooks/dist/prompt-routing.js +209 -0
- package/hooks/dist/run-hook.js +144 -0
- package/hooks/dist/session-cleanup.js +617 -0
- package/hooks/dist/session-tracker.js +124 -0
- package/hooks/dist/status-line.js +793 -0
- package/hooks/dist/suggest-compact.js +296 -0
- package/hooks/dist/sync-context-to-claude.js +100 -0
- package/hooks/dist/task-completed.js +206 -0
- package/hooks/dist/track-context-budget.js +405 -0
- package/hooks/dist/trust-tracker.js +193 -0
- package/hooks/dist/validate-commit.js +270 -0
- package/hooks/dist/validate-skill-args.js +222 -0
- package/hooks/dist/validate-task.js +272 -0
- package/hooks/dist/worktree-create.js +144 -0
- package/hooks/dist/worktree-remove.js +147 -0
- package/package.json +59 -40
- package/plan-build-run/bin/config-schema.json +1416 -0
- package/plan-build-run/bin/dashboard-launch.cjs +114 -0
- package/plan-build-run/bin/event-logger.cjs +92 -0
- package/plan-build-run/bin/lib/alternatives.cjs +198 -0
- package/plan-build-run/bin/lib/auto-cleanup.cjs +7 -0
- package/plan-build-run/bin/lib/build.cjs +717 -0
- package/plan-build-run/bin/lib/circuit-state.cjs +133 -0
- package/plan-build-run/bin/lib/commands.cjs +482 -0
- package/plan-build-run/bin/lib/config.cjs +770 -0
- package/plan-build-run/bin/lib/context.cjs +216 -0
- package/plan-build-run/bin/lib/contextual-help.cjs +207 -0
- package/plan-build-run/bin/lib/core.cjs +1563 -0
- package/plan-build-run/bin/lib/decisions.cjs +194 -0
- package/plan-build-run/bin/lib/frontmatter.cjs +299 -0
- package/plan-build-run/bin/lib/gates/advisories.cjs +129 -0
- package/plan-build-run/bin/lib/gates/build-dependency.cjs +115 -0
- package/plan-build-run/bin/lib/gates/build-executor.cjs +104 -0
- package/plan-build-run/bin/lib/gates/doc-existence.cjs +46 -0
- package/plan-build-run/bin/lib/gates/helpers.cjs +93 -0
- package/plan-build-run/bin/lib/gates/inline-execution.cjs +185 -0
- package/plan-build-run/bin/lib/gates/milestone-complete.cjs +136 -0
- package/plan-build-run/bin/lib/gates/milestone-summary.cjs +119 -0
- package/plan-build-run/bin/lib/gates/plan-executor.cjs +36 -0
- package/plan-build-run/bin/lib/gates/quick-executor.cjs +76 -0
- package/plan-build-run/bin/lib/gates/review-planner.cjs +61 -0
- package/plan-build-run/bin/lib/gates/review-verifier.cjs +69 -0
- package/plan-build-run/bin/lib/graph-cli.cjs +89 -0
- package/plan-build-run/bin/lib/graph.cjs +554 -0
- package/plan-build-run/bin/lib/health-phase06.cjs +120 -0
- package/plan-build-run/bin/lib/health.cjs +133 -0
- package/plan-build-run/bin/lib/history.cjs +147 -0
- package/plan-build-run/bin/lib/hypothesis-runner.cjs +127 -0
- package/plan-build-run/bin/lib/impact-analysis.cjs +319 -0
- package/plan-build-run/bin/lib/incidents.cjs +190 -0
- package/plan-build-run/bin/lib/init.cjs +367 -0
- package/plan-build-run/bin/lib/intel.cjs +653 -0
- package/plan-build-run/bin/lib/learnings.cjs +511 -0
- package/plan-build-run/bin/lib/local-llm/health.cjs +12 -0
- package/plan-build-run/bin/lib/local-llm/index.cjs +89 -0
- package/plan-build-run/bin/lib/local-llm/metrics.cjs +20 -0
- package/plan-build-run/bin/lib/local-llm/operations/classify-artifact.cjs +4 -0
- package/plan-build-run/bin/lib/local-llm/operations/classify-commit.cjs +4 -0
- package/plan-build-run/bin/lib/local-llm/operations/classify-error.cjs +4 -0
- package/plan-build-run/bin/lib/local-llm/operations/classify-file-intent.cjs +4 -0
- package/plan-build-run/bin/lib/local-llm/operations/triage-test-output.cjs +12 -0
- package/plan-build-run/bin/lib/local-llm/operations/validate-task.cjs +4 -0
- package/plan-build-run/bin/lib/migrate.cjs +298 -0
- package/plan-build-run/bin/lib/milestone.cjs +306 -0
- package/plan-build-run/bin/lib/negative-knowledge.cjs +194 -0
- package/plan-build-run/bin/lib/onboarding-generator.cjs +288 -0
- package/plan-build-run/bin/lib/parse-args.cjs +134 -0
- package/plan-build-run/bin/lib/patterns.cjs +272 -0
- package/plan-build-run/bin/lib/phase.cjs +1021 -0
- package/plan-build-run/bin/lib/post-hoc.cjs +160 -0
- package/plan-build-run/bin/lib/preview.cjs +174 -0
- package/plan-build-run/bin/lib/progress-visualization.cjs +296 -0
- package/plan-build-run/bin/lib/quick-init.cjs +131 -0
- package/plan-build-run/bin/lib/reference.cjs +234 -0
- package/plan-build-run/bin/lib/requirements.cjs +153 -0
- package/plan-build-run/bin/lib/reverse-spec.cjs +259 -0
- package/plan-build-run/bin/lib/roadmap.cjs +1097 -0
- package/plan-build-run/bin/lib/security-scan.cjs +200 -0
- package/plan-build-run/bin/lib/skill-section.cjs +98 -0
- package/plan-build-run/bin/lib/spec-diff.cjs +209 -0
- package/plan-build-run/bin/lib/spec-engine.cjs +189 -0
- package/plan-build-run/bin/lib/spot-check.cjs +510 -0
- package/plan-build-run/bin/lib/state.cjs +1050 -0
- package/plan-build-run/bin/lib/status-render.cjs +527 -0
- package/plan-build-run/bin/lib/step-verify.cjs +149 -0
- package/plan-build-run/bin/lib/suggest-next.cjs +316 -0
- package/plan-build-run/bin/lib/team-composer.cjs +85 -0
- package/plan-build-run/bin/lib/team-coordinator.cjs +151 -0
- package/plan-build-run/bin/lib/template.cjs +222 -0
- package/plan-build-run/bin/lib/templates.cjs +362 -0
- package/plan-build-run/bin/lib/test-selection.cjs +163 -0
- package/plan-build-run/bin/lib/todo.cjs +300 -0
- package/plan-build-run/bin/lib/validation.cjs +187 -0
- package/plan-build-run/bin/lib/verify.cjs +1451 -0
- package/plan-build-run/bin/pbr-tools.cjs +1877 -0
- package/plan-build-run/references/CLAUDE.md +7 -0
- package/plan-build-run/references/agent-contracts.md +326 -0
- package/plan-build-run/references/agent-teams.md +54 -0
- package/plan-build-run/references/behavioral-contexts.md +53 -0
- package/plan-build-run/references/checkpoints.md +776 -0
- package/plan-build-run/references/config-reference.md +613 -0
- package/plan-build-run/references/continuation-format.md +249 -0
- package/plan-build-run/references/debugging/CLAUDE.md +7 -0
- package/plan-build-run/references/decimal-phase-calculation.md +65 -0
- package/plan-build-run/references/git-integration.md +309 -0
- package/plan-build-run/references/git-planning-commit.md +38 -0
- package/plan-build-run/references/model-profile-resolution.md +34 -0
- package/plan-build-run/references/model-profiles.md +182 -0
- package/plan-build-run/references/model-selection.md +53 -0
- package/plan-build-run/references/phase-argument-parsing.md +61 -0
- package/plan-build-run/references/plan-authoring.md +246 -0
- package/plan-build-run/references/plan-format.md +351 -0
- package/plan-build-run/references/planning-config.md +200 -0
- package/plan-build-run/references/questioning.md +162 -0
- package/plan-build-run/references/reading-verification.md +127 -0
- package/plan-build-run/references/stub-patterns.md +160 -0
- package/plan-build-run/references/tdd.md +263 -0
- package/plan-build-run/references/ui-brand.md +187 -0
- package/plan-build-run/references/verification-overrides.md +38 -0
- package/plan-build-run/references/verification-patterns.md +612 -0
- package/plan-build-run/references/wave-execution.md +52 -0
- package/plan-build-run/skills/audit/SKILL.md +347 -0
- package/plan-build-run/skills/autonomous/SKILL.md +460 -0
- package/plan-build-run/skills/begin/SKILL.md +926 -0
- package/plan-build-run/skills/begin/templates/PROJECT.md.tmpl +33 -0
- package/plan-build-run/skills/begin/templates/REQUIREMENTS.md.tmpl +18 -0
- package/plan-build-run/skills/begin/templates/STATE.md.tmpl +48 -0
- package/plan-build-run/skills/begin/templates/config.json.tmpl +451 -0
- package/plan-build-run/skills/begin/templates/project-CONTEXT.md.tmpl +19 -0
- package/plan-build-run/skills/begin/templates/researcher-prompt.md.tmpl +47 -0
- package/plan-build-run/skills/begin/templates/roadmap-prompt.md.tmpl +49 -0
- package/plan-build-run/skills/begin/templates/synthesis-prompt.md.tmpl +44 -0
- package/plan-build-run/skills/build/SKILL.md +1655 -0
- package/plan-build-run/skills/build/templates/continuation-prompt.md.tmpl +26 -0
- package/plan-build-run/skills/build/templates/executor-prompt.md.tmpl +70 -0
- package/plan-build-run/skills/build/templates/inline-verifier-prompt.md.tmpl +33 -0
- package/plan-build-run/skills/config/SKILL.md +357 -0
- package/plan-build-run/skills/continue/SKILL.md +266 -0
- package/plan-build-run/skills/dashboard/SKILL.md +12 -0
- package/plan-build-run/skills/debug/SKILL.md +573 -0
- package/plan-build-run/skills/debug/templates/continuation-prompt.md.tmpl +27 -0
- package/plan-build-run/skills/debug/templates/initial-investigation-prompt.md.tmpl +34 -0
- package/plan-build-run/skills/discuss/SKILL.md +489 -0
- package/plan-build-run/skills/discuss/templates/CONTEXT.md.tmpl +61 -0
- package/plan-build-run/skills/discuss/templates/decision-categories.md +9 -0
- package/plan-build-run/skills/discuss/templates/project-CONTEXT.md.tmpl +19 -0
- package/plan-build-run/skills/do/SKILL.md +165 -0
- package/plan-build-run/skills/explore/SKILL.md +449 -0
- package/plan-build-run/skills/health/SKILL.md +332 -0
- package/plan-build-run/skills/health/templates/check-pattern.md.tmpl +30 -0
- package/plan-build-run/skills/health/templates/output-format.md.tmpl +63 -0
- package/plan-build-run/skills/help/SKILL.md +236 -0
- package/plan-build-run/skills/import/SKILL.md +827 -0
- package/plan-build-run/skills/intel/SKILL.md +131 -0
- package/plan-build-run/skills/milestone/SKILL.md +825 -0
- package/plan-build-run/skills/milestone/templates/audit-output.md.tmpl +76 -0
- package/plan-build-run/skills/milestone/templates/complete-output.md.tmpl +32 -0
- package/plan-build-run/skills/milestone/templates/edge-cases.md +54 -0
- package/plan-build-run/skills/milestone/templates/gaps-output.md.tmpl +25 -0
- package/plan-build-run/skills/milestone/templates/integration-checker-prompt.md.tmpl +25 -0
- package/plan-build-run/skills/milestone/templates/new-output.md.tmpl +29 -0
- package/plan-build-run/skills/milestone/templates/stats-file.md.tmpl +30 -0
- package/plan-build-run/skills/note/SKILL.md +221 -0
- package/plan-build-run/skills/pause/SKILL.md +259 -0
- package/plan-build-run/skills/pause/templates/continue-here.md.tmpl +71 -0
- package/plan-build-run/skills/plan/SKILL.md +852 -0
- package/plan-build-run/skills/plan/decimal-phase-calc.md +98 -0
- package/plan-build-run/skills/plan/templates/checker-prompt.md.tmpl +21 -0
- package/plan-build-run/skills/plan/templates/completion-output.md.tmpl +27 -0
- package/plan-build-run/skills/plan/templates/gap-closure-prompt.md.tmpl +32 -0
- package/plan-build-run/skills/plan/templates/planner-prompt.md.tmpl +38 -0
- package/plan-build-run/skills/plan/templates/prompt-partials/phase-project-context.md.tmpl +21 -0
- package/plan-build-run/skills/plan/templates/researcher-prompt.md.tmpl +19 -0
- package/plan-build-run/skills/plan/templates/revision-prompt.md.tmpl +23 -0
- package/plan-build-run/skills/profile/SKILL.md +173 -0
- package/plan-build-run/skills/profile-user/SKILL.md +220 -0
- package/plan-build-run/skills/quick/SKILL.md +727 -0
- package/plan-build-run/skills/release/SKILL.md +206 -0
- package/plan-build-run/skills/resume/SKILL.md +499 -0
- package/plan-build-run/skills/review/SKILL.md +763 -0
- package/plan-build-run/skills/review/templates/debugger-prompt.md.tmpl +60 -0
- package/plan-build-run/skills/review/templates/gap-planner-prompt.md.tmpl +40 -0
- package/plan-build-run/skills/review/templates/verifier-prompt.md.tmpl +115 -0
- package/plan-build-run/skills/scan/SKILL.md +330 -0
- package/plan-build-run/skills/scan/templates/mapper-prompt.md.tmpl +201 -0
- package/plan-build-run/skills/session-report/SKILL.md +128 -0
- package/plan-build-run/skills/setup/SKILL.md +246 -0
- package/plan-build-run/skills/shared/agent-type-resolution.md +20 -0
- package/plan-build-run/skills/shared/commit-planning-docs.md +43 -0
- package/plan-build-run/skills/shared/config-loading.md +102 -0
- package/plan-build-run/skills/shared/context-budget.md +105 -0
- package/plan-build-run/skills/shared/context-loader-task.md +91 -0
- package/plan-build-run/skills/shared/digest-select.md +79 -0
- package/plan-build-run/skills/shared/domain-probes.md +125 -0
- package/plan-build-run/skills/shared/error-reporting.md +59 -0
- package/plan-build-run/skills/shared/gate-prompts.md +390 -0
- package/plan-build-run/skills/shared/phase-argument-parsing.md +45 -0
- package/plan-build-run/skills/shared/revision-loop.md +81 -0
- package/plan-build-run/skills/shared/state-update.md +154 -0
- package/plan-build-run/skills/shared/universal-anti-patterns.md +59 -0
- package/plan-build-run/skills/ship/SKILL.md +154 -0
- package/plan-build-run/skills/status/SKILL.md +520 -0
- package/plan-build-run/skills/statusline/SKILL.md +151 -0
- package/plan-build-run/skills/test/SKILL.md +254 -0
- package/plan-build-run/skills/todo/SKILL.md +285 -0
- package/plan-build-run/skills/ui-phase/SKILL.md +177 -0
- package/plan-build-run/skills/ui-review/SKILL.md +204 -0
- package/plan-build-run/skills/undo/SKILL.md +216 -0
- package/plan-build-run/skills/validate-phase/SKILL.md +358 -0
- package/plan-build-run/templates/CLAUDE.md +7 -0
- package/plan-build-run/templates/DEBUG.md +164 -0
- package/plan-build-run/templates/UAT.md +247 -0
- package/plan-build-run/templates/VALIDATION.md +76 -0
- package/plan-build-run/templates/codebase/architecture.md +255 -0
- package/plan-build-run/templates/codebase/concerns.md +310 -0
- package/plan-build-run/templates/codebase/conventions.md +307 -0
- package/plan-build-run/templates/codebase/integrations.md +280 -0
- package/plan-build-run/templates/codebase/stack.md +186 -0
- package/plan-build-run/templates/codebase/structure.md +285 -0
- package/plan-build-run/templates/codebase/testing.md +480 -0
- package/plan-build-run/templates/config.json +37 -0
- package/plan-build-run/templates/context.md +297 -0
- package/plan-build-run/templates/continue-here.md +78 -0
- package/plan-build-run/templates/crud-flow-verification.md +277 -0
- package/plan-build-run/templates/debug-subagent-prompt.md +91 -0
- package/plan-build-run/templates/deferred-items.md +19 -0
- package/plan-build-run/templates/discovery.md +146 -0
- package/plan-build-run/templates/milestone-archive.md +123 -0
- package/plan-build-run/templates/milestone.md +115 -0
- package/plan-build-run/templates/phase-prompt.md +569 -0
- package/plan-build-run/templates/planner-subagent-prompt.md +117 -0
- package/plan-build-run/templates/project.md +184 -0
- package/plan-build-run/templates/requirements.md +231 -0
- package/plan-build-run/templates/research-outputs/ARCHITECTURE.md.tmpl +86 -0
- package/plan-build-run/templates/research-outputs/FEATURES.md.tmpl +77 -0
- package/plan-build-run/templates/research-outputs/PITFALLS.md.tmpl +65 -0
- package/plan-build-run/templates/research-outputs/STACK.md.tmpl +80 -0
- package/plan-build-run/templates/research-project/ARCHITECTURE.md +204 -0
- package/plan-build-run/templates/research-project/FEATURES.md +147 -0
- package/plan-build-run/templates/research-project/PITFALLS.md +200 -0
- package/plan-build-run/templates/research-project/STACK.md +120 -0
- package/plan-build-run/templates/research-project/SUMMARY.md +170 -0
- package/plan-build-run/templates/research.md +552 -0
- package/plan-build-run/templates/retrospective.md +54 -0
- package/plan-build-run/templates/roadmap.md +202 -0
- package/plan-build-run/templates/seed.md +16 -0
- package/plan-build-run/templates/state.md +176 -0
- package/plan-build-run/templates/summary-complex.md +59 -0
- package/plan-build-run/templates/summary-minimal.md +41 -0
- package/plan-build-run/templates/summary-standard.md +48 -0
- package/plan-build-run/templates/summary.md +248 -0
- package/plan-build-run/templates/user-setup.md +311 -0
- package/plan-build-run/templates/verification-report.md +322 -0
- package/plan-build-run/workflows/add-phase.md +111 -0
- package/plan-build-run/workflows/add-todo.md +157 -0
- package/plan-build-run/workflows/audit-milestone.md +241 -0
- package/plan-build-run/workflows/check-todos.md +176 -0
- package/plan-build-run/workflows/complete-milestone.md +644 -0
- package/plan-build-run/workflows/diagnose-issues.md +219 -0
- package/plan-build-run/workflows/discovery-phase.md +289 -0
- package/plan-build-run/workflows/discuss-phase.md +429 -0
- package/plan-build-run/workflows/execute-phase.md +439 -0
- package/plan-build-run/workflows/execute-plan.md +437 -0
- package/plan-build-run/workflows/explore.md +150 -0
- package/plan-build-run/workflows/help.md +470 -0
- package/plan-build-run/workflows/insert-phase.md +129 -0
- package/plan-build-run/workflows/list-phase-assumptions.md +178 -0
- package/plan-build-run/workflows/map-codebase.md +327 -0
- package/plan-build-run/workflows/new-milestone.md +373 -0
- package/plan-build-run/workflows/new-project.md +1009 -0
- package/plan-build-run/workflows/note.md +90 -0
- package/plan-build-run/workflows/pause-work.md +122 -0
- package/plan-build-run/workflows/plan-milestone-gaps.md +256 -0
- package/plan-build-run/workflows/plan-phase.md +376 -0
- package/plan-build-run/workflows/progress.md +431 -0
- package/plan-build-run/workflows/quick.md +230 -0
- package/plan-build-run/workflows/remove-phase.md +154 -0
- package/plan-build-run/workflows/research-phase.md +74 -0
- package/plan-build-run/workflows/resume-project.md +306 -0
- package/plan-build-run/workflows/set-profile.md +80 -0
- package/plan-build-run/workflows/settings.md +145 -0
- package/plan-build-run/workflows/transition.md +539 -0
- package/plan-build-run/workflows/update.md +212 -0
- package/plan-build-run/workflows/verify-phase.md +226 -0
- package/plan-build-run/workflows/verify-work.md +465 -0
- package/plugins/pbr/.claude-plugin/plugin.json +1 -1
- package/plugins/pbr/CLAUDE.md +19 -0
- package/plugins/pbr/UI-CONSISTENCY-GAPS.md +1 -1
- package/plugins/pbr/agents/audit.md +285 -0
- package/plugins/pbr/agents/codebase-mapper.md +110 -18
- package/plugins/pbr/agents/debugger.md +231 -29
- package/plugins/pbr/agents/dev-sync.md +206 -0
- package/plugins/pbr/agents/executor.md +601 -39
- package/plugins/pbr/agents/general.md +71 -6
- package/plugins/pbr/agents/integration-checker.md +146 -30
- package/plugins/pbr/agents/intel-updater.md +333 -0
- package/plugins/pbr/agents/nyquist-auditor.md +253 -0
- package/plugins/pbr/agents/plan-checker.md +177 -60
- package/plugins/pbr/agents/planner.md +404 -42
- package/plugins/pbr/agents/researcher.md +239 -36
- package/plugins/pbr/agents/roadmapper.md +384 -0
- package/plugins/pbr/agents/synthesizer.md +169 -26
- package/plugins/pbr/agents/ui-checker.md +203 -0
- package/plugins/pbr/agents/ui-researcher.md +224 -0
- package/plugins/pbr/agents/verifier.md +452 -48
- package/plugins/pbr/commands/add-phase.md +75 -0
- package/plugins/pbr/commands/add-todo.md +8 -0
- package/plugins/pbr/commands/audit-milestone.md +8 -0
- package/plugins/pbr/commands/audit.md +5 -0
- package/plugins/pbr/commands/autonomous.md +5 -0
- package/plugins/pbr/commands/begin.md +1 -1
- package/plugins/pbr/commands/build.md +1 -1
- package/plugins/pbr/commands/check-todos.md +8 -0
- package/plugins/pbr/commands/complete-milestone.md +8 -0
- package/plugins/pbr/commands/config.md +2 -2
- package/plugins/pbr/commands/continue.md +1 -1
- package/plugins/pbr/commands/dashboard.md +1 -1
- package/plugins/pbr/commands/debug.md +1 -1
- package/plugins/pbr/commands/discuss-phase.md +6 -0
- package/plugins/pbr/commands/discuss.md +1 -1
- package/plugins/pbr/commands/do.md +5 -0
- package/plugins/pbr/commands/execute-phase.md +6 -0
- package/plugins/pbr/commands/explore.md +1 -1
- package/plugins/pbr/commands/health.md +1 -1
- package/plugins/pbr/commands/help.md +1 -1
- package/plugins/pbr/commands/import.md +2 -2
- package/plugins/pbr/commands/insert-phase.md +65 -0
- package/plugins/pbr/commands/intel.md +5 -0
- package/plugins/pbr/commands/join-discord.md +11 -0
- package/plugins/pbr/commands/list-phase-assumptions.md +69 -0
- package/plugins/pbr/commands/map-codebase.md +6 -0
- package/plugins/pbr/commands/milestone.md +1 -1
- package/plugins/pbr/commands/new-milestone.md +8 -0
- package/plugins/pbr/commands/new-project.md +6 -0
- package/plugins/pbr/commands/note.md +1 -1
- package/plugins/pbr/commands/pause-work.md +5 -0
- package/plugins/pbr/commands/pause.md +1 -1
- package/plugins/pbr/commands/plan-milestone-gaps.md +7 -0
- package/plugins/pbr/commands/plan-phase.md +6 -0
- package/plugins/pbr/commands/plan.md +1 -1
- package/plugins/pbr/commands/profile-user.md +5 -0
- package/plugins/pbr/commands/profile.md +5 -0
- package/plugins/pbr/commands/progress.md +6 -0
- package/plugins/pbr/commands/quick.md +2 -2
- package/plugins/pbr/commands/reapply-patches.md +47 -0
- package/plugins/pbr/commands/release.md +6 -0
- package/plugins/pbr/commands/remove-phase.md +66 -0
- package/plugins/pbr/commands/research-phase.md +59 -0
- package/plugins/pbr/commands/resume-work.md +5 -0
- package/plugins/pbr/commands/resume.md +1 -1
- package/plugins/pbr/commands/review.md +1 -1
- package/plugins/pbr/commands/scan.md +1 -1
- package/plugins/pbr/commands/session-report.md +5 -0
- package/plugins/pbr/commands/set-profile.md +6 -0
- package/plugins/pbr/commands/settings.md +5 -0
- package/plugins/pbr/commands/setup.md +2 -2
- package/plugins/pbr/commands/ship.md +5 -0
- package/plugins/pbr/commands/status.md +1 -1
- package/plugins/pbr/commands/statusline.md +1 -1
- package/plugins/pbr/commands/test.md +5 -0
- package/plugins/pbr/commands/todo.md +2 -2
- package/plugins/pbr/commands/ui-phase.md +5 -0
- package/plugins/pbr/commands/ui-review.md +5 -0
- package/plugins/pbr/commands/undo.md +5 -0
- package/plugins/pbr/commands/update.md +37 -0
- package/plugins/pbr/commands/validate-phase.md +5 -0
- package/plugins/pbr/commands/verify-work.md +6 -0
- package/plugins/pbr/dashboard/package-lock.json +6 -0
- package/plugins/pbr/hooks/hooks.json +102 -13
- package/plugins/pbr/references/agent-contracts.md +37 -8
- package/plugins/pbr/references/agent-teams.md +3 -3
- package/plugins/pbr/references/archive/checkpoints.md +189 -0
- package/plugins/pbr/references/archive/context-quality-tiers.md +45 -0
- package/plugins/pbr/references/archive/pbr-rules.md +194 -0
- package/plugins/pbr/references/archive/verification-patterns.md +277 -0
- package/plugins/pbr/references/config-reference.md +182 -10
- package/plugins/pbr/references/continuation-format.md +1 -0
- package/plugins/pbr/references/deviation-rules.md +12 -0
- package/plugins/pbr/references/git-integration.md +110 -27
- package/plugins/pbr/references/hook-ordering.md +89 -0
- package/plugins/pbr/references/limitations.md +106 -0
- package/plugins/pbr/references/model-profiles.md +90 -7
- package/plugins/pbr/references/model-selection.md +1 -1
- package/plugins/pbr/references/node-repair.md +48 -0
- package/plugins/pbr/references/pbr-tools-cli.md +132 -2
- package/plugins/pbr/references/plan-authoring.md +65 -0
- package/plugins/pbr/references/plan-format.md +161 -10
- package/plugins/pbr/references/pretooluse-jsonl-behavior.md +58 -0
- package/plugins/pbr/references/questioning.md +138 -49
- package/plugins/pbr/references/reading-verification.md +4 -4
- package/plugins/pbr/references/signal-files.md +41 -0
- package/plugins/pbr/references/tmux-setup.md +288 -0
- package/plugins/pbr/references/ui-brand.md +449 -0
- package/plugins/pbr/references/worktree-sparse-checkout.md +86 -0
- package/plugins/pbr/scripts/architecture-guard.js +257 -0
- package/plugins/pbr/scripts/audit-checks/behavioral-compliance.js +2098 -0
- package/plugins/pbr/scripts/audit-checks/error-analysis.js +895 -0
- package/plugins/pbr/scripts/audit-checks/feature-verification.js +723 -0
- package/plugins/pbr/scripts/audit-checks/index.js +433 -0
- package/plugins/pbr/scripts/audit-checks/infrastructure.js +816 -0
- package/plugins/pbr/scripts/audit-checks/quality-metrics.js +452 -0
- package/plugins/pbr/scripts/audit-checks/session-quality.js +980 -0
- package/plugins/pbr/scripts/audit-checks/si-agent-hook-config-checks.js +467 -0
- package/plugins/pbr/scripts/audit-checks/si-cross-cutting-checks.js +272 -0
- package/plugins/pbr/scripts/audit-checks/si-skill-checks.js +424 -0
- package/plugins/pbr/scripts/audit-checks/workflow-compliance.js +1210 -0
- package/plugins/pbr/scripts/audit-dimensions.js +552 -0
- package/plugins/pbr/scripts/auto-continue.js +211 -32
- package/plugins/pbr/scripts/block-skill-self-read.js +85 -0
- package/plugins/pbr/scripts/check-agent-state-write.js +74 -0
- package/plugins/pbr/scripts/check-config-change.js +188 -0
- package/plugins/pbr/scripts/check-cross-plugin-sync.js +93 -0
- package/plugins/pbr/scripts/check-dangerous-commands.js +9 -5
- package/plugins/pbr/scripts/check-direct-state-write.js +37 -0
- package/plugins/pbr/scripts/check-phase-boundary.js +2 -8
- package/plugins/pbr/scripts/check-plan-format.js +149 -274
- package/plugins/pbr/scripts/check-roadmap-sync.js +175 -10
- package/plugins/pbr/scripts/check-skill-workflow.js +38 -34
- package/plugins/pbr/scripts/check-state-sync.js +344 -216
- package/plugins/pbr/scripts/check-subagent-output.js +297 -256
- package/plugins/pbr/scripts/check-summary-gate.js +1 -1
- package/plugins/pbr/scripts/config-schema.json +1252 -95
- package/plugins/pbr/scripts/context-bridge.js +439 -0
- package/plugins/pbr/scripts/context-budget-check.js +89 -9
- package/plugins/pbr/scripts/context-quality.js +272 -0
- package/plugins/pbr/scripts/enforce-pbr-workflow.js +277 -0
- package/plugins/pbr/scripts/event-handler.js +129 -77
- package/plugins/pbr/scripts/event-logger.js +61 -26
- package/plugins/pbr/scripts/feedback-loop.js +172 -0
- package/plugins/pbr/scripts/graph-update.js +199 -0
- package/plugins/pbr/scripts/hook-logger.js +76 -35
- package/plugins/pbr/scripts/hook-server-client.js +258 -0
- package/plugins/pbr/scripts/hook-server.js +334 -0
- package/plugins/pbr/scripts/hooks-schema.json +5 -1
- package/plugins/pbr/scripts/instructions-loaded.js +107 -0
- package/plugins/pbr/scripts/intel-queue.js +152 -0
- package/plugins/pbr/scripts/intent-router.cjs +147 -0
- package/plugins/pbr/scripts/intercept-plan-mode.js +52 -0
- package/plugins/pbr/scripts/lib/alternatives.js +203 -0
- package/plugins/pbr/scripts/lib/auto-cleanup.js +221 -0
- package/plugins/pbr/scripts/lib/auto-verify.js +103 -0
- package/plugins/pbr/scripts/lib/autonomy.js +91 -0
- package/plugins/pbr/scripts/lib/build.js +719 -0
- package/plugins/pbr/scripts/lib/ci-fix-loop.js +228 -0
- package/plugins/pbr/scripts/lib/circuit-state.js +133 -0
- package/plugins/pbr/scripts/lib/config.js +901 -0
- package/plugins/pbr/scripts/lib/context.js +254 -0
- package/plugins/pbr/scripts/lib/convention-detector.js +413 -0
- package/plugins/pbr/scripts/lib/core.js +939 -0
- package/plugins/pbr/scripts/lib/dashboard-launch.js +170 -0
- package/plugins/pbr/scripts/lib/decision-extraction.js +267 -0
- package/plugins/pbr/scripts/lib/dependency-break.js +147 -0
- package/plugins/pbr/scripts/lib/format-validators.js +947 -0
- package/plugins/pbr/scripts/lib/gates/advisories.js +129 -0
- package/plugins/pbr/scripts/lib/gates/build-dependency.js +115 -0
- package/plugins/pbr/scripts/lib/gates/build-executor.js +104 -0
- package/plugins/pbr/scripts/lib/gates/doc-existence.js +46 -0
- package/plugins/pbr/scripts/lib/gates/helpers.js +141 -0
- package/plugins/pbr/scripts/lib/gates/inline-execution.js +185 -0
- package/plugins/pbr/scripts/lib/gates/milestone-complete.js +136 -0
- package/plugins/pbr/scripts/lib/gates/milestone-summary.js +119 -0
- package/plugins/pbr/scripts/lib/gates/multi-phase-loader.js +147 -0
- package/plugins/pbr/scripts/lib/gates/plan-executor.js +36 -0
- package/plugins/pbr/scripts/lib/gates/quick-executor.js +76 -0
- package/plugins/pbr/scripts/lib/gates/review-planner.js +61 -0
- package/plugins/pbr/scripts/lib/gates/review-verifier.js +69 -0
- package/plugins/pbr/scripts/lib/gates/rich-agent-context.js +143 -0
- package/plugins/pbr/scripts/lib/health-checks.js +215 -0
- package/plugins/pbr/scripts/lib/history.js +150 -0
- package/plugins/pbr/scripts/lib/init.js +302 -0
- package/plugins/pbr/scripts/lib/learnings.js +432 -0
- package/plugins/pbr/scripts/lib/migrate.js +169 -0
- package/plugins/pbr/scripts/lib/parse-args.js +134 -0
- package/plugins/pbr/scripts/lib/pattern-routing.js +55 -0
- package/plugins/pbr/scripts/lib/phase.js +935 -0
- package/plugins/pbr/scripts/lib/pre-research.js +133 -0
- package/plugins/pbr/scripts/lib/preview.js +174 -0
- package/plugins/pbr/scripts/lib/quick-init.js +131 -0
- package/plugins/pbr/scripts/lib/reference.js +236 -0
- package/plugins/pbr/scripts/lib/resolve-root.js +66 -0
- package/plugins/pbr/scripts/lib/roadmap.js +784 -0
- package/plugins/pbr/scripts/lib/session-briefing.js +879 -0
- package/plugins/pbr/scripts/lib/skill-section.js +99 -0
- package/plugins/pbr/scripts/lib/smart-next-task.js +225 -0
- package/plugins/pbr/scripts/lib/snapshot-manager.js +225 -0
- package/plugins/pbr/scripts/lib/spot-check.js +509 -0
- package/plugins/pbr/scripts/lib/state.js +565 -0
- package/plugins/pbr/scripts/lib/status-render.js +511 -0
- package/plugins/pbr/scripts/lib/step-verify.js +149 -0
- package/plugins/pbr/scripts/lib/subagent-validators.js +1010 -0
- package/plugins/pbr/scripts/lib/suggest-next.js +316 -0
- package/plugins/pbr/scripts/lib/tech-debt-scanner.js +116 -0
- package/plugins/pbr/scripts/lib/test-cache.js +54 -0
- package/plugins/pbr/scripts/lib/todo.js +300 -0
- package/plugins/pbr/scripts/lib/trust-gate.js +84 -0
- package/plugins/pbr/scripts/local-llm/client.js +237 -0
- package/plugins/pbr/scripts/local-llm/health.js +220 -0
- package/plugins/pbr/scripts/local-llm/metrics.js +340 -0
- package/plugins/pbr/scripts/local-llm/operations/classify-artifact.js +76 -0
- package/plugins/pbr/scripts/local-llm/operations/classify-commit.js +137 -0
- package/plugins/pbr/scripts/local-llm/operations/classify-error.js +75 -0
- package/plugins/pbr/scripts/local-llm/operations/classify-file-intent.js +171 -0
- package/plugins/pbr/scripts/local-llm/operations/score-source.js +72 -0
- package/plugins/pbr/scripts/local-llm/operations/summarize-context.js +62 -0
- package/plugins/pbr/scripts/local-llm/operations/triage-test-output.js +72 -0
- package/plugins/pbr/scripts/local-llm/operations/validate-task.js +59 -0
- package/plugins/pbr/scripts/local-llm/router.js +101 -0
- package/plugins/pbr/scripts/local-llm/shadow.js +60 -0
- package/plugins/pbr/scripts/local-llm/threshold-tuner.js +118 -0
- package/plugins/pbr/scripts/log-subagent.js +129 -26
- package/plugins/pbr/scripts/log-tool-failure.js +58 -5
- package/plugins/pbr/scripts/milestone-learnings.js +569 -0
- package/plugins/pbr/scripts/package.json +1 -0
- package/plugins/pbr/scripts/pbr-tools.js +1361 -1214
- package/plugins/pbr/scripts/post-bash-triage.js +163 -0
- package/plugins/pbr/scripts/post-compact.js +135 -0
- package/plugins/pbr/scripts/post-hoc.js +286 -0
- package/plugins/pbr/scripts/post-write-dispatch.js +315 -30
- package/plugins/pbr/scripts/post-write-quality.js +3 -3
- package/plugins/pbr/scripts/pre-bash-dispatch.js +81 -4
- package/plugins/pbr/scripts/pre-write-dispatch.js +76 -20
- package/plugins/pbr/scripts/progress-tracker.js +145 -277
- package/plugins/pbr/scripts/quick-status.js +179 -0
- package/plugins/pbr/scripts/record-incident.js +37 -0
- package/plugins/pbr/scripts/risk-classifier.cjs +123 -0
- package/plugins/pbr/scripts/run-hook.js +49 -8
- package/plugins/pbr/scripts/session-cleanup.js +379 -7
- package/plugins/pbr/scripts/session-tracker.js +124 -0
- package/plugins/pbr/scripts/status-line.js +540 -27
- package/plugins/pbr/scripts/suggest-compact.js +183 -7
- package/plugins/pbr/scripts/sync-context-to-claude.js +100 -0
- package/plugins/pbr/scripts/task-completed.js +125 -3
- package/plugins/pbr/scripts/test/config.test.js +126 -0
- package/plugins/pbr/scripts/test/cross-platform.test.js +131 -0
- package/plugins/pbr/scripts/test/fixtures/config.json +20 -0
- package/plugins/pbr/scripts/test/fixtures/plan.md +54 -0
- package/plugins/pbr/scripts/test/fixtures/project.md +30 -0
- package/plugins/pbr/scripts/test/fixtures/roadmap.md +55 -0
- package/plugins/pbr/scripts/test/fixtures/state.md +60 -0
- package/plugins/pbr/scripts/test/fixtures/summary.md +35 -0
- package/plugins/pbr/scripts/test/fixtures.test.js +184 -0
- package/plugins/pbr/scripts/test/phase.test.js +142 -0
- package/plugins/pbr/scripts/test/roadmap.test.js +96 -0
- package/plugins/pbr/scripts/test/state.test.js +163 -0
- package/plugins/pbr/scripts/track-context-budget.js +323 -88
- package/plugins/pbr/scripts/trust-tracker.js +193 -0
- package/plugins/pbr/scripts/validate-commit.js +76 -11
- package/plugins/pbr/scripts/validate-skill-args.js +18 -14
- package/plugins/pbr/scripts/validate-task.js +93 -614
- package/plugins/pbr/scripts/worktree-create.js +144 -0
- package/plugins/pbr/scripts/worktree-remove.js +147 -0
- package/plugins/pbr/skills/audit/SKILL.md +478 -0
- package/plugins/pbr/skills/autonomous/SKILL.md +460 -0
- package/plugins/pbr/skills/begin/SKILL.md +447 -142
- package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +1 -2
- package/plugins/pbr/skills/begin/templates/config.json.tmpl +423 -36
- package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +28 -0
- package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +26 -3
- package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +33 -5
- package/plugins/pbr/skills/build/SKILL.md +1010 -327
- package/plugins/pbr/skills/build/templates/continuation-prompt.md.tmpl +26 -0
- package/plugins/pbr/skills/build/templates/executor-prompt.md.tmpl +77 -0
- package/plugins/pbr/skills/build/templates/inline-verifier-prompt.md.tmpl +33 -0
- package/plugins/pbr/skills/config/SKILL.md +108 -9
- package/plugins/pbr/skills/continue/SKILL.md +118 -19
- package/plugins/pbr/skills/dashboard/SKILL.md +21 -9
- package/plugins/pbr/skills/debug/SKILL.md +62 -10
- package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +12 -1
- package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +12 -5
- package/plugins/pbr/skills/discuss/SKILL.md +155 -23
- package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +21 -1
- package/plugins/pbr/skills/do/SKILL.md +119 -24
- package/plugins/pbr/skills/explore/SKILL.md +83 -16
- package/plugins/pbr/skills/health/SKILL.md +74 -17
- package/plugins/pbr/skills/help/SKILL.md +123 -39
- package/plugins/pbr/skills/import/SKILL.md +327 -13
- package/plugins/pbr/skills/intel/SKILL.md +131 -0
- package/plugins/pbr/skills/milestone/SKILL.md +342 -260
- package/plugins/pbr/skills/milestone/templates/audit-output.md.tmpl +76 -0
- package/plugins/pbr/skills/milestone/templates/complete-output.md.tmpl +32 -0
- package/plugins/pbr/skills/milestone/templates/edge-cases.md +54 -0
- package/plugins/pbr/skills/milestone/templates/gaps-output.md.tmpl +25 -0
- package/plugins/pbr/skills/milestone/templates/integration-checker-prompt.md.tmpl +25 -0
- package/plugins/pbr/skills/milestone/templates/new-output.md.tmpl +29 -0
- package/plugins/pbr/skills/note/SKILL.md +10 -2
- package/plugins/pbr/skills/pause/SKILL.md +51 -7
- package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +33 -52
- package/plugins/pbr/skills/plan/SKILL.md +418 -268
- package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +5 -2
- package/plugins/pbr/skills/plan/templates/completion-output.md.tmpl +27 -0
- package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +21 -5
- package/plugins/pbr/skills/profile/SKILL.md +183 -0
- package/plugins/pbr/skills/profile-user/SKILL.md +224 -0
- package/plugins/pbr/skills/quick/SKILL.md +440 -95
- package/plugins/pbr/skills/release/SKILL.md +206 -0
- package/plugins/pbr/skills/resume/SKILL.md +122 -27
- package/plugins/pbr/skills/review/SKILL.md +219 -154
- package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +7 -0
- package/plugins/pbr/skills/scan/SKILL.md +36 -12
- package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +1 -1
- package/plugins/pbr/skills/session-report/SKILL.md +128 -0
- package/plugins/pbr/skills/setup/SKILL.md +149 -202
- package/plugins/pbr/skills/shared/agent-context-enrichment.md +21 -0
- package/plugins/pbr/skills/shared/agent-type-resolution.md +20 -0
- package/plugins/pbr/skills/shared/commit-planning-docs.md +8 -0
- package/plugins/pbr/skills/shared/context-budget.md +66 -1
- package/plugins/pbr/skills/shared/context-loader-task.md +15 -8
- package/plugins/pbr/skills/shared/digest-select.md +2 -2
- package/plugins/pbr/skills/shared/domain-probes.md +1 -1
- package/plugins/pbr/skills/shared/error-reporting.md +38 -60
- package/plugins/pbr/skills/shared/gate-prompts.md +4 -2
- package/plugins/pbr/skills/shared/memory-capture.md +48 -0
- package/plugins/pbr/skills/shared/phase-argument-parsing.md +4 -4
- package/plugins/pbr/skills/shared/revision-loop.md +24 -6
- package/plugins/pbr/skills/shared/state-update.md +47 -54
- package/plugins/pbr/skills/shared/universal-anti-patterns.md +27 -4
- package/plugins/pbr/skills/ship/SKILL.md +154 -0
- package/plugins/pbr/skills/status/SKILL.md +201 -53
- package/plugins/pbr/skills/test/SKILL.md +254 -0
- package/plugins/pbr/skills/todo/SKILL.md +13 -11
- package/plugins/pbr/skills/ui-phase/SKILL.md +179 -0
- package/plugins/pbr/skills/ui-review/SKILL.md +206 -0
- package/plugins/pbr/skills/undo/SKILL.md +218 -0
- package/plugins/pbr/skills/validate-phase/SKILL.md +358 -0
- package/plugins/pbr/templates/CONTEXT.md.tmpl +45 -20
- package/plugins/pbr/templates/DISCOVERY.md.tmpl +29 -0
- package/plugins/pbr/templates/HANDOFF.json.tmpl +30 -0
- package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +18 -2
- package/plugins/pbr/templates/KNOWLEDGE.md.tmpl +39 -0
- package/plugins/pbr/templates/MILESTONE-AUDIT.md.tmpl +44 -0
- package/plugins/pbr/templates/PROJECT.md.tmpl +126 -0
- package/plugins/pbr/templates/REQUIREMENTS.md.tmpl +96 -0
- package/plugins/pbr/templates/RETROSPECTIVE.md.tmpl +43 -0
- package/plugins/pbr/templates/ROADMAP.md.tmpl +108 -14
- package/plugins/pbr/templates/SUMMARY-complex.md.tmpl +133 -0
- package/plugins/pbr/templates/SUMMARY-minimal.md.tmpl +55 -0
- package/plugins/pbr/templates/SUMMARY.md.tmpl +21 -0
- package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +49 -13
- package/plugins/pbr/templates/project-CONTEXT.md.tmpl +59 -0
- package/plugins/pbr/templates/research-outputs/ARCHITECTURE.md.tmpl +91 -0
- package/plugins/pbr/templates/research-outputs/FEATURES.md.tmpl +64 -0
- package/plugins/pbr/templates/research-outputs/PITFALLS.md.tmpl +50 -0
- package/plugins/pbr/templates/research-outputs/STACK.md.tmpl +63 -0
- package/plugins/pbr/templates/research-outputs/SUMMARY.md.tmpl +98 -0
- package/scripts/build-hooks.js +61 -0
- package/scripts/check-ci.js +100 -0
- package/scripts/clean-changelog.js +362 -0
- package/scripts/generate-derivatives.js +581 -0
- package/scripts/posttest.js +93 -0
- package/scripts/release.js +196 -0
- package/scripts/run-tests.cjs +29 -0
- package/dashboard/bin/cli.js +0 -25
- package/dashboard/public/css/layout.css +0 -472
- package/dashboard/public/css/status-colors.css +0 -98
- package/dashboard/public/js/htmx-title.js +0 -5
- package/dashboard/public/js/sidebar-toggle.js +0 -20
- package/dashboard/src/app.js +0 -78
- package/dashboard/src/middleware/errorHandler.js +0 -52
- package/dashboard/src/middleware/notFoundHandler.js +0 -9
- package/dashboard/src/repositories/planning.repository.js +0 -130
- package/dashboard/src/routes/events.routes.js +0 -40
- package/dashboard/src/routes/index.routes.js +0 -31
- package/dashboard/src/routes/pages.routes.js +0 -308
- package/dashboard/src/server.js +0 -42
- package/dashboard/src/services/dashboard.service.js +0 -309
- package/dashboard/src/services/milestone.service.js +0 -154
- package/dashboard/src/services/phase.service.js +0 -226
- package/dashboard/src/services/project.service.js +0 -57
- package/dashboard/src/services/roadmap.service.js +0 -171
- package/dashboard/src/services/sse.service.js +0 -58
- package/dashboard/src/services/todo.service.js +0 -254
- package/dashboard/src/services/watcher.service.js +0 -48
- package/dashboard/src/views/coming-soon.ejs +0 -11
- package/dashboard/src/views/error.ejs +0 -13
- package/dashboard/src/views/index.ejs +0 -5
- package/dashboard/src/views/layout.ejs +0 -1
- package/dashboard/src/views/milestone-detail.ejs +0 -5
- package/dashboard/src/views/milestones.ejs +0 -5
- package/dashboard/src/views/partials/dashboard-content.ejs +0 -77
- package/dashboard/src/views/partials/footer.ejs +0 -3
- package/dashboard/src/views/partials/head.ejs +0 -27
- package/dashboard/src/views/partials/header.ejs +0 -12
- package/dashboard/src/views/partials/layout-bottom.ejs +0 -15
- package/dashboard/src/views/partials/layout-top.ejs +0 -8
- package/dashboard/src/views/partials/milestone-detail-content.ejs +0 -19
- package/dashboard/src/views/partials/milestones-content.ejs +0 -44
- package/dashboard/src/views/partials/phase-content.ejs +0 -189
- package/dashboard/src/views/partials/phase-doc-content.ejs +0 -38
- package/dashboard/src/views/partials/phases-content.ejs +0 -117
- package/dashboard/src/views/partials/roadmap-content.ejs +0 -142
- package/dashboard/src/views/partials/sidebar.ejs +0 -46
- package/dashboard/src/views/partials/todo-create-content.ejs +0 -53
- package/dashboard/src/views/partials/todo-detail-content.ejs +0 -38
- package/dashboard/src/views/partials/todos-content.ejs +0 -53
- package/dashboard/src/views/phase-detail.ejs +0 -5
- package/dashboard/src/views/phase-doc.ejs +0 -5
- package/dashboard/src/views/phases.ejs +0 -5
- package/dashboard/src/views/roadmap.ejs +0 -5
- package/dashboard/src/views/todo-create.ejs +0 -5
- package/dashboard/src/views/todo-detail.ejs +0 -5
- package/dashboard/src/views/todos.ejs +0 -5
- package/plugins/copilot-pbr/CHANGELOG.md +0 -19
- package/plugins/copilot-pbr/README.md +0 -129
- package/plugins/copilot-pbr/agents/codebase-mapper.agent.md +0 -151
- package/plugins/copilot-pbr/agents/debugger.agent.md +0 -172
- package/plugins/copilot-pbr/agents/executor.agent.md +0 -267
- package/plugins/copilot-pbr/agents/general.agent.md +0 -88
- package/plugins/copilot-pbr/agents/integration-checker.agent.md +0 -119
- package/plugins/copilot-pbr/agents/plan-checker.agent.md +0 -199
- package/plugins/copilot-pbr/agents/planner.agent.md +0 -238
- package/plugins/copilot-pbr/agents/researcher.agent.md +0 -186
- package/plugins/copilot-pbr/agents/synthesizer.agent.md +0 -126
- package/plugins/copilot-pbr/agents/verifier.agent.md +0 -228
- package/plugins/copilot-pbr/hooks/hooks.json +0 -144
- package/plugins/copilot-pbr/plugin.json +0 -30
- package/plugins/copilot-pbr/references/agent-anti-patterns.md +0 -25
- package/plugins/copilot-pbr/references/agent-contracts.md +0 -297
- package/plugins/copilot-pbr/references/agent-interactions.md +0 -135
- package/plugins/copilot-pbr/references/agent-teams.md +0 -55
- package/plugins/copilot-pbr/references/checkpoints.md +0 -158
- package/plugins/copilot-pbr/references/common-bug-patterns.md +0 -14
- package/plugins/copilot-pbr/references/config-reference.md +0 -442
- package/plugins/copilot-pbr/references/continuation-format.md +0 -213
- package/plugins/copilot-pbr/references/deviation-rules.md +0 -113
- package/plugins/copilot-pbr/references/git-integration.md +0 -227
- package/plugins/copilot-pbr/references/integration-patterns.md +0 -118
- package/plugins/copilot-pbr/references/model-profiles.md +0 -100
- package/plugins/copilot-pbr/references/model-selection.md +0 -32
- package/plugins/copilot-pbr/references/pbr-rules.md +0 -195
- package/plugins/copilot-pbr/references/pbr-tools-cli.md +0 -285
- package/plugins/copilot-pbr/references/plan-authoring.md +0 -182
- package/plugins/copilot-pbr/references/plan-format.md +0 -288
- package/plugins/copilot-pbr/references/planning-config.md +0 -214
- package/plugins/copilot-pbr/references/questioning.md +0 -215
- package/plugins/copilot-pbr/references/reading-verification.md +0 -128
- package/plugins/copilot-pbr/references/stub-patterns.md +0 -161
- package/plugins/copilot-pbr/references/subagent-coordination.md +0 -120
- package/plugins/copilot-pbr/references/ui-formatting.md +0 -444
- package/plugins/copilot-pbr/references/verification-patterns.md +0 -199
- package/plugins/copilot-pbr/references/wave-execution.md +0 -96
- package/plugins/copilot-pbr/rules/pbr-workflow.mdc +0 -48
- package/plugins/copilot-pbr/setup.ps1 +0 -93
- package/plugins/copilot-pbr/setup.sh +0 -93
- package/plugins/copilot-pbr/skills/begin/SKILL.md +0 -589
- package/plugins/copilot-pbr/skills/begin/templates/PROJECT.md.tmpl +0 -34
- package/plugins/copilot-pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +0 -19
- package/plugins/copilot-pbr/skills/begin/templates/STATE.md.tmpl +0 -50
- package/plugins/copilot-pbr/skills/begin/templates/config.json.tmpl +0 -64
- package/plugins/copilot-pbr/skills/begin/templates/researcher-prompt.md.tmpl +0 -20
- package/plugins/copilot-pbr/skills/begin/templates/roadmap-prompt.md.tmpl +0 -31
- package/plugins/copilot-pbr/skills/begin/templates/synthesis-prompt.md.tmpl +0 -17
- package/plugins/copilot-pbr/skills/build/SKILL.md +0 -955
- package/plugins/copilot-pbr/skills/config/SKILL.md +0 -250
- package/plugins/copilot-pbr/skills/continue/SKILL.md +0 -159
- package/plugins/copilot-pbr/skills/dashboard/SKILL.md +0 -43
- package/plugins/copilot-pbr/skills/debug/SKILL.md +0 -508
- package/plugins/copilot-pbr/skills/debug/templates/continuation-prompt.md.tmpl +0 -17
- package/plugins/copilot-pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +0 -28
- package/plugins/copilot-pbr/skills/discuss/SKILL.md +0 -353
- package/plugins/copilot-pbr/skills/discuss/templates/CONTEXT.md.tmpl +0 -62
- package/plugins/copilot-pbr/skills/discuss/templates/decision-categories.md +0 -10
- package/plugins/copilot-pbr/skills/do/SKILL.md +0 -66
- package/plugins/copilot-pbr/skills/explore/SKILL.md +0 -373
- package/plugins/copilot-pbr/skills/health/SKILL.md +0 -274
- package/plugins/copilot-pbr/skills/health/templates/check-pattern.md.tmpl +0 -31
- package/plugins/copilot-pbr/skills/health/templates/output-format.md.tmpl +0 -64
- package/plugins/copilot-pbr/skills/help/SKILL.md +0 -152
- package/plugins/copilot-pbr/skills/import/SKILL.md +0 -502
- package/plugins/copilot-pbr/skills/milestone/SKILL.md +0 -745
- package/plugins/copilot-pbr/skills/milestone/templates/audit-report.md.tmpl +0 -49
- package/plugins/copilot-pbr/skills/milestone/templates/stats-file.md.tmpl +0 -31
- package/plugins/copilot-pbr/skills/note/SKILL.md +0 -213
- package/plugins/copilot-pbr/skills/pause/SKILL.md +0 -247
- package/plugins/copilot-pbr/skills/pause/templates/continue-here.md.tmpl +0 -72
- package/plugins/copilot-pbr/skills/plan/SKILL.md +0 -662
- package/plugins/copilot-pbr/skills/plan/templates/checker-prompt.md.tmpl +0 -22
- package/plugins/copilot-pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +0 -33
- package/plugins/copilot-pbr/skills/plan/templates/planner-prompt.md.tmpl +0 -39
- package/plugins/copilot-pbr/skills/plan/templates/researcher-prompt.md.tmpl +0 -20
- package/plugins/copilot-pbr/skills/plan/templates/revision-prompt.md.tmpl +0 -24
- package/plugins/copilot-pbr/skills/quick/SKILL.md +0 -376
- package/plugins/copilot-pbr/skills/resume/SKILL.md +0 -399
- package/plugins/copilot-pbr/skills/review/SKILL.md +0 -653
- package/plugins/copilot-pbr/skills/review/templates/debugger-prompt.md.tmpl +0 -61
- package/plugins/copilot-pbr/skills/review/templates/gap-planner-prompt.md.tmpl +0 -41
- package/plugins/copilot-pbr/skills/review/templates/verifier-prompt.md.tmpl +0 -116
- package/plugins/copilot-pbr/skills/scan/SKILL.md +0 -299
- package/plugins/copilot-pbr/skills/scan/templates/mapper-prompt.md.tmpl +0 -202
- package/plugins/copilot-pbr/skills/setup/SKILL.md +0 -296
- package/plugins/copilot-pbr/skills/shared/commit-planning-docs.md +0 -36
- package/plugins/copilot-pbr/skills/shared/config-loading.md +0 -103
- package/plugins/copilot-pbr/skills/shared/context-budget.md +0 -41
- package/plugins/copilot-pbr/skills/shared/context-loader-task.md +0 -87
- package/plugins/copilot-pbr/skills/shared/digest-select.md +0 -80
- package/plugins/copilot-pbr/skills/shared/domain-probes.md +0 -126
- package/plugins/copilot-pbr/skills/shared/error-reporting.md +0 -81
- package/plugins/copilot-pbr/skills/shared/gate-prompts.md +0 -389
- package/plugins/copilot-pbr/skills/shared/phase-argument-parsing.md +0 -46
- package/plugins/copilot-pbr/skills/shared/progress-display.md +0 -53
- package/plugins/copilot-pbr/skills/shared/revision-loop.md +0 -82
- package/plugins/copilot-pbr/skills/shared/state-loading.md +0 -63
- package/plugins/copilot-pbr/skills/shared/state-update.md +0 -162
- package/plugins/copilot-pbr/skills/shared/universal-anti-patterns.md +0 -38
- package/plugins/copilot-pbr/skills/status/SKILL.md +0 -362
- package/plugins/copilot-pbr/skills/statusline/SKILL.md +0 -149
- package/plugins/copilot-pbr/skills/todo/SKILL.md +0 -279
- package/plugins/copilot-pbr/templates/CONTEXT.md.tmpl +0 -53
- package/plugins/copilot-pbr/templates/INTEGRATION-REPORT.md.tmpl +0 -152
- package/plugins/copilot-pbr/templates/RESEARCH-SUMMARY.md.tmpl +0 -98
- package/plugins/copilot-pbr/templates/ROADMAP.md.tmpl +0 -41
- package/plugins/copilot-pbr/templates/SUMMARY.md.tmpl +0 -82
- package/plugins/copilot-pbr/templates/VERIFICATION-DETAIL.md.tmpl +0 -117
- package/plugins/copilot-pbr/templates/codebase/ARCHITECTURE.md.tmpl +0 -98
- package/plugins/copilot-pbr/templates/codebase/CONCERNS.md.tmpl +0 -93
- package/plugins/copilot-pbr/templates/codebase/CONVENTIONS.md.tmpl +0 -104
- package/plugins/copilot-pbr/templates/codebase/INTEGRATIONS.md.tmpl +0 -78
- package/plugins/copilot-pbr/templates/codebase/STACK.md.tmpl +0 -78
- package/plugins/copilot-pbr/templates/codebase/STRUCTURE.md.tmpl +0 -80
- package/plugins/copilot-pbr/templates/codebase/TESTING.md.tmpl +0 -107
- package/plugins/copilot-pbr/templates/continue-here.md.tmpl +0 -74
- package/plugins/copilot-pbr/templates/prompt-partials/phase-project-context.md.tmpl +0 -38
- package/plugins/copilot-pbr/templates/research/ARCHITECTURE.md.tmpl +0 -124
- package/plugins/copilot-pbr/templates/research/STACK.md.tmpl +0 -71
- package/plugins/copilot-pbr/templates/research/SUMMARY.md.tmpl +0 -112
- package/plugins/copilot-pbr/templates/research-outputs/phase-research.md.tmpl +0 -81
- package/plugins/copilot-pbr/templates/research-outputs/project-research.md.tmpl +0 -99
- package/plugins/copilot-pbr/templates/research-outputs/synthesis.md.tmpl +0 -36
- package/plugins/cursor-pbr/.cursor-plugin/plugin.json +0 -32
- package/plugins/cursor-pbr/CHANGELOG.md +0 -15
- package/plugins/cursor-pbr/README.md +0 -118
- package/plugins/cursor-pbr/agents/codebase-mapper.md +0 -150
- package/plugins/cursor-pbr/agents/debugger.md +0 -171
- package/plugins/cursor-pbr/agents/executor.md +0 -266
- package/plugins/cursor-pbr/agents/general.md +0 -87
- package/plugins/cursor-pbr/agents/integration-checker.md +0 -118
- package/plugins/cursor-pbr/agents/plan-checker.md +0 -198
- package/plugins/cursor-pbr/agents/planner.md +0 -237
- package/plugins/cursor-pbr/agents/researcher.md +0 -185
- package/plugins/cursor-pbr/agents/synthesizer.md +0 -125
- package/plugins/cursor-pbr/agents/verifier.md +0 -227
- package/plugins/cursor-pbr/assets/.gitkeep +0 -0
- package/plugins/cursor-pbr/assets/logo.svg +0 -21
- package/plugins/cursor-pbr/hooks/hooks.json +0 -203
- package/plugins/cursor-pbr/references/agent-anti-patterns.md +0 -25
- package/plugins/cursor-pbr/references/agent-contracts.md +0 -297
- package/plugins/cursor-pbr/references/agent-interactions.md +0 -135
- package/plugins/cursor-pbr/references/agent-teams.md +0 -55
- package/plugins/cursor-pbr/references/checkpoints.md +0 -158
- package/plugins/cursor-pbr/references/common-bug-patterns.md +0 -14
- package/plugins/cursor-pbr/references/config-reference.md +0 -442
- package/plugins/cursor-pbr/references/continuation-format.md +0 -213
- package/plugins/cursor-pbr/references/deviation-rules.md +0 -113
- package/plugins/cursor-pbr/references/git-integration.md +0 -227
- package/plugins/cursor-pbr/references/integration-patterns.md +0 -118
- package/plugins/cursor-pbr/references/model-profiles.md +0 -100
- package/plugins/cursor-pbr/references/model-selection.md +0 -32
- package/plugins/cursor-pbr/references/pbr-rules.md +0 -195
- package/plugins/cursor-pbr/references/pbr-tools-cli.md +0 -285
- package/plugins/cursor-pbr/references/plan-authoring.md +0 -182
- package/plugins/cursor-pbr/references/plan-format.md +0 -288
- package/plugins/cursor-pbr/references/planning-config.md +0 -214
- package/plugins/cursor-pbr/references/questioning.md +0 -215
- package/plugins/cursor-pbr/references/reading-verification.md +0 -128
- package/plugins/cursor-pbr/references/stub-patterns.md +0 -161
- package/plugins/cursor-pbr/references/subagent-coordination.md +0 -120
- package/plugins/cursor-pbr/references/ui-formatting.md +0 -444
- package/plugins/cursor-pbr/references/verification-patterns.md +0 -199
- package/plugins/cursor-pbr/references/wave-execution.md +0 -96
- package/plugins/cursor-pbr/rules/pbr-workflow.mdc +0 -48
- package/plugins/cursor-pbr/setup.ps1 +0 -78
- package/plugins/cursor-pbr/setup.sh +0 -83
- package/plugins/cursor-pbr/skills/begin/SKILL.md +0 -589
- package/plugins/cursor-pbr/skills/begin/templates/PROJECT.md.tmpl +0 -34
- package/plugins/cursor-pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +0 -19
- package/plugins/cursor-pbr/skills/begin/templates/STATE.md.tmpl +0 -50
- package/plugins/cursor-pbr/skills/begin/templates/config.json.tmpl +0 -64
- package/plugins/cursor-pbr/skills/begin/templates/researcher-prompt.md.tmpl +0 -20
- package/plugins/cursor-pbr/skills/begin/templates/roadmap-prompt.md.tmpl +0 -31
- package/plugins/cursor-pbr/skills/begin/templates/synthesis-prompt.md.tmpl +0 -17
- package/plugins/cursor-pbr/skills/build/SKILL.md +0 -956
- package/plugins/cursor-pbr/skills/config/SKILL.md +0 -252
- package/plugins/cursor-pbr/skills/continue/SKILL.md +0 -159
- package/plugins/cursor-pbr/skills/dashboard/SKILL.md +0 -44
- package/plugins/cursor-pbr/skills/debug/SKILL.md +0 -512
- package/plugins/cursor-pbr/skills/debug/templates/continuation-prompt.md.tmpl +0 -17
- package/plugins/cursor-pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +0 -28
- package/plugins/cursor-pbr/skills/discuss/SKILL.md +0 -354
- package/plugins/cursor-pbr/skills/discuss/templates/CONTEXT.md.tmpl +0 -62
- package/plugins/cursor-pbr/skills/discuss/templates/decision-categories.md +0 -10
- package/plugins/cursor-pbr/skills/do/SKILL.md +0 -67
- package/plugins/cursor-pbr/skills/explore/SKILL.md +0 -376
- package/plugins/cursor-pbr/skills/health/SKILL.md +0 -274
- package/plugins/cursor-pbr/skills/health/templates/check-pattern.md.tmpl +0 -31
- package/plugins/cursor-pbr/skills/health/templates/output-format.md.tmpl +0 -64
- package/plugins/cursor-pbr/skills/help/SKILL.md +0 -152
- package/plugins/cursor-pbr/skills/import/SKILL.md +0 -505
- package/plugins/cursor-pbr/skills/milestone/SKILL.md +0 -746
- package/plugins/cursor-pbr/skills/milestone/templates/audit-report.md.tmpl +0 -49
- package/plugins/cursor-pbr/skills/milestone/templates/stats-file.md.tmpl +0 -31
- package/plugins/cursor-pbr/skills/note/SKILL.md +0 -214
- package/plugins/cursor-pbr/skills/pause/SKILL.md +0 -248
- package/plugins/cursor-pbr/skills/pause/templates/continue-here.md.tmpl +0 -72
- package/plugins/cursor-pbr/skills/plan/SKILL.md +0 -663
- package/plugins/cursor-pbr/skills/plan/templates/checker-prompt.md.tmpl +0 -22
- package/plugins/cursor-pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +0 -33
- package/plugins/cursor-pbr/skills/plan/templates/planner-prompt.md.tmpl +0 -39
- package/plugins/cursor-pbr/skills/plan/templates/researcher-prompt.md.tmpl +0 -20
- package/plugins/cursor-pbr/skills/plan/templates/revision-prompt.md.tmpl +0 -24
- package/plugins/cursor-pbr/skills/quick/SKILL.md +0 -376
- package/plugins/cursor-pbr/skills/resume/SKILL.md +0 -399
- package/plugins/cursor-pbr/skills/review/SKILL.md +0 -654
- package/plugins/cursor-pbr/skills/review/templates/debugger-prompt.md.tmpl +0 -61
- package/plugins/cursor-pbr/skills/review/templates/gap-planner-prompt.md.tmpl +0 -41
- package/plugins/cursor-pbr/skills/review/templates/verifier-prompt.md.tmpl +0 -116
- package/plugins/cursor-pbr/skills/scan/SKILL.md +0 -300
- package/plugins/cursor-pbr/skills/scan/templates/mapper-prompt.md.tmpl +0 -202
- package/plugins/cursor-pbr/skills/setup/SKILL.md +0 -296
- package/plugins/cursor-pbr/skills/shared/commit-planning-docs.md +0 -36
- package/plugins/cursor-pbr/skills/shared/config-loading.md +0 -103
- package/plugins/cursor-pbr/skills/shared/context-budget.md +0 -41
- package/plugins/cursor-pbr/skills/shared/context-loader-task.md +0 -87
- package/plugins/cursor-pbr/skills/shared/digest-select.md +0 -80
- package/plugins/cursor-pbr/skills/shared/domain-probes.md +0 -126
- package/plugins/cursor-pbr/skills/shared/error-reporting.md +0 -81
- package/plugins/cursor-pbr/skills/shared/gate-prompts.md +0 -389
- package/plugins/cursor-pbr/skills/shared/phase-argument-parsing.md +0 -46
- package/plugins/cursor-pbr/skills/shared/progress-display.md +0 -53
- package/plugins/cursor-pbr/skills/shared/revision-loop.md +0 -82
- package/plugins/cursor-pbr/skills/shared/state-loading.md +0 -63
- package/plugins/cursor-pbr/skills/shared/state-update.md +0 -162
- package/plugins/cursor-pbr/skills/shared/universal-anti-patterns.md +0 -38
- package/plugins/cursor-pbr/skills/status/SKILL.md +0 -362
- package/plugins/cursor-pbr/skills/statusline/SKILL.md +0 -150
- package/plugins/cursor-pbr/skills/todo/SKILL.md +0 -280
- package/plugins/cursor-pbr/templates/CONTEXT.md.tmpl +0 -53
- package/plugins/cursor-pbr/templates/INTEGRATION-REPORT.md.tmpl +0 -152
- package/plugins/cursor-pbr/templates/RESEARCH-SUMMARY.md.tmpl +0 -98
- package/plugins/cursor-pbr/templates/ROADMAP.md.tmpl +0 -41
- package/plugins/cursor-pbr/templates/SUMMARY.md.tmpl +0 -82
- package/plugins/cursor-pbr/templates/VERIFICATION-DETAIL.md.tmpl +0 -117
- package/plugins/cursor-pbr/templates/codebase/ARCHITECTURE.md.tmpl +0 -98
- package/plugins/cursor-pbr/templates/codebase/CONCERNS.md.tmpl +0 -93
- package/plugins/cursor-pbr/templates/codebase/CONVENTIONS.md.tmpl +0 -104
- package/plugins/cursor-pbr/templates/codebase/INTEGRATIONS.md.tmpl +0 -78
- package/plugins/cursor-pbr/templates/codebase/STACK.md.tmpl +0 -78
- package/plugins/cursor-pbr/templates/codebase/STRUCTURE.md.tmpl +0 -80
- package/plugins/cursor-pbr/templates/codebase/TESTING.md.tmpl +0 -107
- package/plugins/cursor-pbr/templates/continue-here.md.tmpl +0 -74
- package/plugins/cursor-pbr/templates/prompt-partials/phase-project-context.md.tmpl +0 -38
- package/plugins/cursor-pbr/templates/research/ARCHITECTURE.md.tmpl +0 -124
- package/plugins/cursor-pbr/templates/research/STACK.md.tmpl +0 -71
- package/plugins/cursor-pbr/templates/research/SUMMARY.md.tmpl +0 -112
- package/plugins/cursor-pbr/templates/research-outputs/phase-research.md.tmpl +0 -81
- package/plugins/cursor-pbr/templates/research-outputs/project-research.md.tmpl +0 -99
- package/plugins/cursor-pbr/templates/research-outputs/synthesis.md.tmpl +0 -36
- package/plugins/pbr/references/agent-interactions.md +0 -134
- package/plugins/pbr/references/checkpoints.md +0 -157
- package/plugins/pbr/references/pbr-rules.md +0 -194
- package/plugins/pbr/references/planning-config.md +0 -213
- package/plugins/pbr/references/subagent-coordination.md +0 -119
- package/plugins/pbr/references/ui-formatting.md +0 -444
- package/plugins/pbr/references/verification-patterns.md +0 -198
- package/plugins/pbr/scripts/validate-plugin-structure.js +0 -183
- package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +0 -48
- package/plugins/pbr/skills/shared/progress-display.md +0 -53
- package/plugins/pbr/skills/shared/state-loading.md +0 -62
- package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +0 -97
- package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +0 -124
- package/plugins/pbr/templates/research/STACK.md.tmpl +0 -71
- package/plugins/pbr/templates/research/SUMMARY.md.tmpl +0 -112
- package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +0 -81
- package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +0 -99
- package/plugins/pbr/templates/research-outputs/synthesis.md.tmpl +0 -36
- /package/plugins/pbr/references/{agent-anti-patterns.md → archive/agent-anti-patterns.md} +0 -0
|
@@ -0,0 +1,901 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lib/config.js — Config operations for Plan-Build-Run tools.
|
|
3
|
+
*
|
|
4
|
+
* Handles loading, caching, validating, and resolving depth profiles
|
|
5
|
+
* for .planning/config.json.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const fs = require('fs');
|
|
9
|
+
const path = require('path');
|
|
10
|
+
const { validateObject, lockedFileUpdate } = require('./core');
|
|
11
|
+
const { CURRENT_SCHEMA_VERSION } = require('./migrate');
|
|
12
|
+
|
|
13
|
+
// --- Config defaults (all sections with schema defaults) ---
|
|
14
|
+
|
|
15
|
+
const CONFIG_DEFAULTS = {
|
|
16
|
+
version: 2,
|
|
17
|
+
schema_version: 3,
|
|
18
|
+
context_strategy: 'aggressive',
|
|
19
|
+
mode: 'interactive',
|
|
20
|
+
depth: 'standard',
|
|
21
|
+
session_phase_limit: 3,
|
|
22
|
+
session_cycling: 'compact',
|
|
23
|
+
context_window_tokens: 200000,
|
|
24
|
+
agent_checkpoint_pct: 50,
|
|
25
|
+
ceremony_level: 'auto',
|
|
26
|
+
orchestrator_budget_pct: 25,
|
|
27
|
+
skip_rag_max_lines: 50000,
|
|
28
|
+
features: {
|
|
29
|
+
structured_planning: true,
|
|
30
|
+
goal_verification: true,
|
|
31
|
+
integration_verification: true,
|
|
32
|
+
context_isolation: true,
|
|
33
|
+
atomic_commits: true,
|
|
34
|
+
session_persistence: true,
|
|
35
|
+
research_phase: true,
|
|
36
|
+
plan_checking: true,
|
|
37
|
+
tdd_mode: false,
|
|
38
|
+
status_line: true,
|
|
39
|
+
auto_continue: false,
|
|
40
|
+
auto_advance: false,
|
|
41
|
+
team_discussions: false,
|
|
42
|
+
inline_verify: false,
|
|
43
|
+
enhanced_session_start: true,
|
|
44
|
+
extended_context: false,
|
|
45
|
+
context_quality_scoring: true,
|
|
46
|
+
skip_rag: false,
|
|
47
|
+
zero_friction_quick: true,
|
|
48
|
+
post_hoc_artifacts: true,
|
|
49
|
+
inline_simple_tasks: true,
|
|
50
|
+
rich_agent_prompts: true,
|
|
51
|
+
multi_phase_awareness: true,
|
|
52
|
+
decision_journal: true,
|
|
53
|
+
negative_knowledge: true,
|
|
54
|
+
living_requirements: true,
|
|
55
|
+
trust_tracking: true,
|
|
56
|
+
confidence_calibration: true,
|
|
57
|
+
natural_language_routing: true,
|
|
58
|
+
adaptive_ceremony: true,
|
|
59
|
+
graduated_verification: true,
|
|
60
|
+
self_verification: true,
|
|
61
|
+
agent_feedback_loop: true,
|
|
62
|
+
session_metrics: true,
|
|
63
|
+
convention_memory: true,
|
|
64
|
+
mental_model_snapshots: true,
|
|
65
|
+
smart_next_task: true,
|
|
66
|
+
dependency_break_detection: true,
|
|
67
|
+
pre_research: true,
|
|
68
|
+
pattern_routing: true,
|
|
69
|
+
tech_debt_surfacing: true,
|
|
70
|
+
agent_teams: false,
|
|
71
|
+
competing_hypotheses: false,
|
|
72
|
+
dynamic_teams: false,
|
|
73
|
+
machine_executable_plans: false,
|
|
74
|
+
spec_diffing: true,
|
|
75
|
+
reverse_spec: false,
|
|
76
|
+
predictive_impact: true,
|
|
77
|
+
progress_visualization: true,
|
|
78
|
+
contextual_help: true,
|
|
79
|
+
team_onboarding: false,
|
|
80
|
+
multi_layer_validation: false,
|
|
81
|
+
regression_prevention: true,
|
|
82
|
+
security_scanning: true,
|
|
83
|
+
architecture_graph: true,
|
|
84
|
+
architecture_guard: true,
|
|
85
|
+
incident_journal: true
|
|
86
|
+
},
|
|
87
|
+
validation_passes: ['correctness', 'security'],
|
|
88
|
+
autonomy: { level: 'supervised', max_retries: 2, error_strategy: 'retry' },
|
|
89
|
+
models: {
|
|
90
|
+
researcher: 'sonnet',
|
|
91
|
+
planner: 'sonnet',
|
|
92
|
+
executor: 'sonnet',
|
|
93
|
+
verifier: 'sonnet',
|
|
94
|
+
integration_checker: 'sonnet',
|
|
95
|
+
debugger: 'inherit',
|
|
96
|
+
mapper: 'sonnet',
|
|
97
|
+
synthesizer: 'haiku',
|
|
98
|
+
complexity_map: { simple: 'haiku', medium: 'sonnet', complex: 'inherit' }
|
|
99
|
+
},
|
|
100
|
+
model_profiles: {},
|
|
101
|
+
parallelization: {
|
|
102
|
+
enabled: false,
|
|
103
|
+
plan_level: false,
|
|
104
|
+
task_level: false,
|
|
105
|
+
max_concurrent_agents: 3,
|
|
106
|
+
min_plans_for_parallel: 2,
|
|
107
|
+
use_teams: false
|
|
108
|
+
},
|
|
109
|
+
teams: {
|
|
110
|
+
planning_roles: ['architect', 'security-reviewer', 'test-designer'],
|
|
111
|
+
review_roles: ['functional-reviewer', 'security-auditor', 'performance-analyst'],
|
|
112
|
+
synthesis_model: 'sonnet',
|
|
113
|
+
coordination: 'file-based'
|
|
114
|
+
},
|
|
115
|
+
planning: {
|
|
116
|
+
commit_docs: false,
|
|
117
|
+
max_tasks_per_plan: 3,
|
|
118
|
+
search_gitignored: false,
|
|
119
|
+
multi_phase: false
|
|
120
|
+
},
|
|
121
|
+
git: {
|
|
122
|
+
branching: 'none',
|
|
123
|
+
commit_format: '{type}({phase}-{plan}): {description}',
|
|
124
|
+
phase_branch_template: 'pbr/phase-{phase}-{slug}',
|
|
125
|
+
milestone_branch_template: 'pbr/{milestone}-{slug}',
|
|
126
|
+
mode: 'enabled',
|
|
127
|
+
auto_pr: false
|
|
128
|
+
},
|
|
129
|
+
ci: { gate_enabled: false, wait_timeout_seconds: 120 },
|
|
130
|
+
gates: {
|
|
131
|
+
confirm_project: true,
|
|
132
|
+
confirm_roadmap: true,
|
|
133
|
+
confirm_plan: true,
|
|
134
|
+
confirm_execute: false,
|
|
135
|
+
confirm_transition: true,
|
|
136
|
+
issues_review: false,
|
|
137
|
+
confirm_research: false,
|
|
138
|
+
confirm_seeds: false,
|
|
139
|
+
confirm_deferred: false,
|
|
140
|
+
confirm_commit_docs: false,
|
|
141
|
+
auto_checkpoints: false,
|
|
142
|
+
checkpoint_auto_resolve: 'none'
|
|
143
|
+
},
|
|
144
|
+
safety: {
|
|
145
|
+
always_confirm_destructive: true,
|
|
146
|
+
always_confirm_external_services: true,
|
|
147
|
+
enforce_phase_boundaries: true
|
|
148
|
+
},
|
|
149
|
+
timeouts: {
|
|
150
|
+
task_default_ms: 300000,
|
|
151
|
+
build_max_ms: 600000,
|
|
152
|
+
verify_max_ms: 300000
|
|
153
|
+
},
|
|
154
|
+
hooks: {
|
|
155
|
+
autoFormat: false,
|
|
156
|
+
typeCheck: false,
|
|
157
|
+
detectConsoleLogs: true,
|
|
158
|
+
blockDocSprawl: true,
|
|
159
|
+
compactThreshold: 50
|
|
160
|
+
},
|
|
161
|
+
prd: { auto_extract: false },
|
|
162
|
+
depth_profiles: {},
|
|
163
|
+
debug: { max_hypothesis_rounds: 5 },
|
|
164
|
+
developer_profile: { enabled: false, inject_prompts: false },
|
|
165
|
+
spinner_tips: { tips: [], exclude_defaults: false },
|
|
166
|
+
dashboard: { auto_launch: false, port: 3141 },
|
|
167
|
+
status_line: {
|
|
168
|
+
sections: ['phase', 'plan', 'status', 'context'],
|
|
169
|
+
brand_text: 'PBR',
|
|
170
|
+
max_status_length: 80,
|
|
171
|
+
context_bar: {
|
|
172
|
+
width: 20,
|
|
173
|
+
thresholds: { green: 50, yellow: 75 },
|
|
174
|
+
chars: { filled: '\u2588', empty: '\u2591' }
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
workflow: {
|
|
178
|
+
enforce_pbr_skills: 'advisory',
|
|
179
|
+
inline_execution: false,
|
|
180
|
+
inline_max_tasks: 2,
|
|
181
|
+
inline_context_cap_pct: 40,
|
|
182
|
+
phase_boundary_clear: 'off',
|
|
183
|
+
autonomous: false,
|
|
184
|
+
speculative_planning: false,
|
|
185
|
+
phase_replay: false,
|
|
186
|
+
inline_max_files: 5,
|
|
187
|
+
inline_max_lines: 50,
|
|
188
|
+
max_phases_in_context: 3
|
|
189
|
+
},
|
|
190
|
+
hook_server: { enabled: false, port: 19836, event_log: true },
|
|
191
|
+
local_llm: { enabled: false },
|
|
192
|
+
intel: { enabled: false, auto_update: false, inject_on_start: false },
|
|
193
|
+
context_ledger: { enabled: false, stale_after_minutes: 60 },
|
|
194
|
+
learnings: { enabled: false, read_depth: 3, cross_project_knowledge: false },
|
|
195
|
+
verification: { confidence_gate: false, confidence_threshold: 1 },
|
|
196
|
+
context_budget: { threshold_curve: 'linear' },
|
|
197
|
+
ui: { enabled: false },
|
|
198
|
+
worktree: { sparse_paths: [] }
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Deep-merge defaults into a config object. User values take precedence.
|
|
203
|
+
* For nested objects, merges recursively. Scalars from config take precedence over defaults.
|
|
204
|
+
* Arrays from config take precedence (no merging of array elements).
|
|
205
|
+
*
|
|
206
|
+
* @param {object} config - The user's config (values override defaults)
|
|
207
|
+
* @param {object} defaults - Default values to fill in
|
|
208
|
+
* @returns {object} Config with all missing fields populated from defaults
|
|
209
|
+
*/
|
|
210
|
+
function configEnsureComplete(config, defaults) {
|
|
211
|
+
if (!defaults) defaults = CONFIG_DEFAULTS;
|
|
212
|
+
const result = { ...config };
|
|
213
|
+
for (const [key, defaultValue] of Object.entries(defaults)) {
|
|
214
|
+
if (result[key] === undefined) {
|
|
215
|
+
// Key not in config — use default (deep clone objects/arrays)
|
|
216
|
+
result[key] = (typeof defaultValue === 'object' && defaultValue !== null)
|
|
217
|
+
? JSON.parse(JSON.stringify(defaultValue))
|
|
218
|
+
: defaultValue;
|
|
219
|
+
} else if (
|
|
220
|
+
typeof defaultValue === 'object' && defaultValue !== null && !Array.isArray(defaultValue) &&
|
|
221
|
+
typeof result[key] === 'object' && result[key] !== null && !Array.isArray(result[key])
|
|
222
|
+
) {
|
|
223
|
+
// Both are objects — merge recursively (config values take precedence)
|
|
224
|
+
result[key] = configEnsureComplete(result[key], defaultValue);
|
|
225
|
+
}
|
|
226
|
+
// Scalar or array in config already set — config wins
|
|
227
|
+
}
|
|
228
|
+
return result;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// --- Cached config loader ---
|
|
232
|
+
|
|
233
|
+
let _configCache = null;
|
|
234
|
+
let _configMtime = 0;
|
|
235
|
+
let _configPath = null;
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Load config.json with in-process mtime-based caching.
|
|
239
|
+
* Returns the parsed config object, or null if not found / parse error.
|
|
240
|
+
* Cache invalidates when file mtime changes or path differs.
|
|
241
|
+
*
|
|
242
|
+
* @param {string} [dir] - Path to .planning directory (defaults to PBR_PROJECT_ROOT/.planning or cwd/.planning)
|
|
243
|
+
* @returns {object|null} Parsed config or null
|
|
244
|
+
*/
|
|
245
|
+
function configLoad(dir) {
|
|
246
|
+
const planningDir = dir || path.join(process.env.PBR_PROJECT_ROOT || process.cwd(), '.planning');
|
|
247
|
+
const configPath = path.join(planningDir, 'config.json');
|
|
248
|
+
try {
|
|
249
|
+
if (!fs.existsSync(configPath)) return null;
|
|
250
|
+
const stat = fs.statSync(configPath);
|
|
251
|
+
const mtime = stat.mtimeMs;
|
|
252
|
+
if (_configCache && mtime === _configMtime && configPath === _configPath) {
|
|
253
|
+
return _configCache;
|
|
254
|
+
}
|
|
255
|
+
_configCache = configEnsureComplete(JSON.parse(fs.readFileSync(configPath, 'utf8')));
|
|
256
|
+
_configMtime = mtime;
|
|
257
|
+
_configPath = configPath;
|
|
258
|
+
return _configCache;
|
|
259
|
+
} catch (_e) {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Clear the configLoad() in-process cache.
|
|
266
|
+
* Useful in tests where multiple temp directories are used in rapid succession.
|
|
267
|
+
*/
|
|
268
|
+
function configClearCache() {
|
|
269
|
+
_configCache = null;
|
|
270
|
+
_configMtime = 0;
|
|
271
|
+
_configPath = null;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Validate config.json against schema. Accepts a preloaded config object
|
|
276
|
+
* or reads from the default planningDir.
|
|
277
|
+
*
|
|
278
|
+
* @param {object} [preloadedConfig] - Pre-parsed config object. If omitted, reads from disk.
|
|
279
|
+
* @param {string} [planningDir] - Path to .planning directory (used when reading from disk)
|
|
280
|
+
* @returns {{ valid: boolean, errors: string[], warnings: string[] }}
|
|
281
|
+
*/
|
|
282
|
+
function configValidate(preloadedConfig, planningDir) {
|
|
283
|
+
let config;
|
|
284
|
+
if (preloadedConfig) {
|
|
285
|
+
config = preloadedConfig;
|
|
286
|
+
} else {
|
|
287
|
+
const dir = planningDir || path.join(process.env.PBR_PROJECT_ROOT || process.cwd(), '.planning');
|
|
288
|
+
const configPath = path.join(dir, 'config.json');
|
|
289
|
+
if (!fs.existsSync(configPath)) {
|
|
290
|
+
return { valid: false, errors: ['config.json not found'], warnings: [] };
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
try {
|
|
294
|
+
config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
295
|
+
} catch (e) {
|
|
296
|
+
return { valid: false, errors: [`config.json is not valid JSON: ${e.message}`], warnings: [] };
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
const schema = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'config-schema.json'), 'utf8'));
|
|
301
|
+
const warnings = [];
|
|
302
|
+
const errors = [];
|
|
303
|
+
|
|
304
|
+
// Strip _guide_* and _comment_* keys before validation (they're documentation, not config)
|
|
305
|
+
const configForValidation = {};
|
|
306
|
+
for (const [k, v] of Object.entries(config)) {
|
|
307
|
+
if (!k.startsWith('_guide') && !k.startsWith('_comment')) {
|
|
308
|
+
if (typeof v === 'object' && v !== null && !Array.isArray(v)) {
|
|
309
|
+
const inner = {};
|
|
310
|
+
for (const [ik, iv] of Object.entries(v)) {
|
|
311
|
+
if (!ik.startsWith('_comment')) inner[ik] = iv;
|
|
312
|
+
}
|
|
313
|
+
configForValidation[k] = inner;
|
|
314
|
+
} else {
|
|
315
|
+
configForValidation[k] = v;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
validateObject(configForValidation, schema, '', errors, warnings);
|
|
321
|
+
|
|
322
|
+
// Schema version check — detect outdated or future config format
|
|
323
|
+
if (config.schema_version && config.schema_version > CURRENT_SCHEMA_VERSION) {
|
|
324
|
+
warnings.push(`config.json schema_version (${config.schema_version}) is newer than this PBR version supports (${CURRENT_SCHEMA_VERSION}). Some fields may be ignored. Consider updating PBR.`);
|
|
325
|
+
} else if (!config.schema_version || config.schema_version < CURRENT_SCHEMA_VERSION) {
|
|
326
|
+
warnings.push(`config.json schema is outdated. Run: node pbr-tools.js migrate`);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// Local LLM endpoint must be localhost-only for security
|
|
330
|
+
if (config.local_llm && config.local_llm.enabled === true && config.local_llm.endpoint) {
|
|
331
|
+
try {
|
|
332
|
+
const parsed = new URL(config.local_llm.endpoint);
|
|
333
|
+
const hostname = parsed.hostname.toLowerCase();
|
|
334
|
+
const localhostNames = ['localhost', '127.0.0.1', '::1', '[::1]'];
|
|
335
|
+
if (!localhostNames.includes(hostname)) {
|
|
336
|
+
errors.push(
|
|
337
|
+
`local_llm.endpoint must be a localhost address (localhost, 127.0.0.1, or ::1). ` +
|
|
338
|
+
`Got: "${hostname}". Non-localhost endpoints are not supported for security reasons.`
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
} catch (_urlErr) {
|
|
342
|
+
errors.push(`local_llm.endpoint is not a valid URL: "${config.local_llm.endpoint}"`);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// Semantic conflict detection — logical contradictions that pass schema validation
|
|
347
|
+
// Clear contradictions -> errors; ambiguous/preference issues -> warnings
|
|
348
|
+
if (config.mode === 'autonomous' && config.gates) {
|
|
349
|
+
const activeGates = Object.entries(config.gates || {}).filter(([, v]) => v === true).map(([k]) => k);
|
|
350
|
+
if (activeGates.length > 0) {
|
|
351
|
+
errors.push(`mode=autonomous with active gates (${activeGates.join(', ')}): gates are unreachable in autonomous mode`);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
if (config.features && config.features.auto_continue && config.mode === 'interactive') {
|
|
355
|
+
warnings.push('features.auto_continue=true with mode=interactive: auto_continue only fires in autonomous mode');
|
|
356
|
+
}
|
|
357
|
+
if (config.parallelization) {
|
|
358
|
+
if (config.parallelization.enabled === false && config.parallelization.plan_level === true) {
|
|
359
|
+
warnings.push('parallelization.enabled=false with plan_level=true: plan_level is ignored when parallelization is disabled');
|
|
360
|
+
}
|
|
361
|
+
if (config.parallelization.max_concurrent_agents === 1 && config.teams && config.teams.coordination) {
|
|
362
|
+
errors.push('parallelization.max_concurrent_agents=1 with teams.coordination set: teams require concurrent agents to be useful');
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
return {
|
|
367
|
+
valid: errors.length === 0,
|
|
368
|
+
errors,
|
|
369
|
+
warnings
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Built-in depth profile defaults. These define the effective settings
|
|
375
|
+
* for each depth level. User config.depth_profiles overrides these.
|
|
376
|
+
*/
|
|
377
|
+
const DEPTH_PROFILE_DEFAULTS = {
|
|
378
|
+
quick: {
|
|
379
|
+
'features.research_phase': false,
|
|
380
|
+
'features.plan_checking': false,
|
|
381
|
+
'features.goal_verification': false,
|
|
382
|
+
'features.inline_verify': false,
|
|
383
|
+
'scan.mapper_count': 2,
|
|
384
|
+
'scan.mapper_areas': ['tech', 'arch'],
|
|
385
|
+
'debug.max_hypothesis_rounds': 3
|
|
386
|
+
},
|
|
387
|
+
standard: {
|
|
388
|
+
'features.research_phase': true,
|
|
389
|
+
'features.plan_checking': true,
|
|
390
|
+
'features.goal_verification': true,
|
|
391
|
+
'features.inline_verify': false,
|
|
392
|
+
'scan.mapper_count': 4,
|
|
393
|
+
'scan.mapper_areas': ['tech', 'arch', 'quality', 'concerns'],
|
|
394
|
+
'debug.max_hypothesis_rounds': 5
|
|
395
|
+
},
|
|
396
|
+
comprehensive: {
|
|
397
|
+
'features.research_phase': true,
|
|
398
|
+
'features.plan_checking': true,
|
|
399
|
+
'features.goal_verification': true,
|
|
400
|
+
'features.inline_verify': true,
|
|
401
|
+
'scan.mapper_count': 4,
|
|
402
|
+
'scan.mapper_areas': ['tech', 'arch', 'quality', 'concerns'],
|
|
403
|
+
'debug.max_hypothesis_rounds': 10
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Resolve the effective depth profile for the current config.
|
|
409
|
+
* Merges built-in defaults with any user overrides from config.depth_profiles.
|
|
410
|
+
*
|
|
411
|
+
* @param {object|null} config - Parsed config.json (from configLoad). If null, returns 'standard' defaults.
|
|
412
|
+
* @returns {{ depth: string, profile: object }} The resolved depth name and flattened profile settings.
|
|
413
|
+
*/
|
|
414
|
+
function resolveDepthProfile(config) {
|
|
415
|
+
const depth = (config && config.depth) || 'standard';
|
|
416
|
+
const defaults = DEPTH_PROFILE_DEFAULTS[depth] || DEPTH_PROFILE_DEFAULTS.standard;
|
|
417
|
+
|
|
418
|
+
// Merge user overrides if present
|
|
419
|
+
const userOverrides = (config && config.depth_profiles && config.depth_profiles[depth]) || {};
|
|
420
|
+
const profile = { ...defaults, ...userOverrides };
|
|
421
|
+
|
|
422
|
+
return { depth, profile };
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
// --- User-level defaults ---
|
|
426
|
+
|
|
427
|
+
const USER_DEFAULTS_PATH = path.join(
|
|
428
|
+
process.env.HOME || process.env.USERPROFILE || '',
|
|
429
|
+
'.claude',
|
|
430
|
+
'pbr-defaults.json'
|
|
431
|
+
);
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Load user-level defaults from ~/.claude/pbr-defaults.json.
|
|
435
|
+
* Returns null if file doesn't exist or is invalid.
|
|
436
|
+
*
|
|
437
|
+
* @returns {object|null} User defaults or null
|
|
438
|
+
*/
|
|
439
|
+
function loadUserDefaults() {
|
|
440
|
+
try {
|
|
441
|
+
if (!fs.existsSync(USER_DEFAULTS_PATH)) return null;
|
|
442
|
+
return JSON.parse(fs.readFileSync(USER_DEFAULTS_PATH, 'utf8'));
|
|
443
|
+
} catch (_e) {
|
|
444
|
+
return null;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Save current project config as user-level defaults.
|
|
450
|
+
* Only saves portable keys (excludes project-specific state).
|
|
451
|
+
*
|
|
452
|
+
* @param {object} config - Current project config.json contents
|
|
453
|
+
* @returns {{ saved: boolean, path: string, keys: string[] }}
|
|
454
|
+
*/
|
|
455
|
+
function saveUserDefaults(config) {
|
|
456
|
+
const portableKeys = [
|
|
457
|
+
'mode', 'depth', 'context_strategy', 'context_window_tokens',
|
|
458
|
+
'features', 'models', 'parallelization',
|
|
459
|
+
'planning', 'git', 'gates', 'safety',
|
|
460
|
+
'hooks', 'dashboard', 'status_line'
|
|
461
|
+
];
|
|
462
|
+
|
|
463
|
+
const defaults = {};
|
|
464
|
+
for (const key of portableKeys) {
|
|
465
|
+
if (config[key] !== undefined) {
|
|
466
|
+
defaults[key] = config[key];
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
const dir = path.dirname(USER_DEFAULTS_PATH);
|
|
471
|
+
if (!fs.existsSync(dir)) {
|
|
472
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
473
|
+
}
|
|
474
|
+
fs.writeFileSync(USER_DEFAULTS_PATH, JSON.stringify(defaults, null, 2), 'utf8');
|
|
475
|
+
|
|
476
|
+
return {
|
|
477
|
+
saved: true,
|
|
478
|
+
path: USER_DEFAULTS_PATH,
|
|
479
|
+
keys: Object.keys(defaults)
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* Deep-merge user defaults into a base config.
|
|
485
|
+
* User defaults provide values only where the base config doesn't already set them.
|
|
486
|
+
* For nested objects, merges recursively. Scalars from base take precedence.
|
|
487
|
+
*
|
|
488
|
+
* @param {object} base - The base config (project defaults from setup)
|
|
489
|
+
* @param {object} userDefaults - User-level defaults from ~/.claude/pbr-defaults.json
|
|
490
|
+
* @returns {object} Merged config
|
|
491
|
+
*/
|
|
492
|
+
function mergeUserDefaults(base, userDefaults) {
|
|
493
|
+
if (!userDefaults) return base;
|
|
494
|
+
|
|
495
|
+
const result = { ...base };
|
|
496
|
+
for (const [key, value] of Object.entries(userDefaults)) {
|
|
497
|
+
if (result[key] === undefined) {
|
|
498
|
+
// Key not in base — use user default
|
|
499
|
+
result[key] = value;
|
|
500
|
+
} else if (
|
|
501
|
+
typeof value === 'object' && value !== null && !Array.isArray(value) &&
|
|
502
|
+
typeof result[key] === 'object' && result[key] !== null && !Array.isArray(result[key])
|
|
503
|
+
) {
|
|
504
|
+
// Both are objects — merge recursively (base values take precedence)
|
|
505
|
+
result[key] = mergeUserDefaults(result[key], value);
|
|
506
|
+
}
|
|
507
|
+
// Scalar in base already set — base wins
|
|
508
|
+
}
|
|
509
|
+
return result;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* Resolve a config object with defaults applied for graduated verification,
|
|
514
|
+
* self-verification, and autonomy settings.
|
|
515
|
+
*
|
|
516
|
+
* @param {string} [dir] - Path to .planning directory
|
|
517
|
+
* @returns {object} Config with defaults applied (never null — returns defaults object if no config found)
|
|
518
|
+
*/
|
|
519
|
+
function resolveConfig(dir) {
|
|
520
|
+
const config = configLoad(dir) || {};
|
|
521
|
+
|
|
522
|
+
// Apply feature defaults
|
|
523
|
+
if (!config.features) config.features = {};
|
|
524
|
+
if (config.features.graduated_verification === undefined) config.features.graduated_verification = true;
|
|
525
|
+
if (config.features.self_verification === undefined) config.features.self_verification = true;
|
|
526
|
+
|
|
527
|
+
// Apply autonomy defaults
|
|
528
|
+
if (!config.autonomy) config.autonomy = {};
|
|
529
|
+
if (config.autonomy.level === undefined) config.autonomy.level = 'supervised';
|
|
530
|
+
|
|
531
|
+
return config;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
// --- Config guide comments (injected into formatted output) ---
|
|
535
|
+
|
|
536
|
+
/**
|
|
537
|
+
* Canonical section order and guide comments for config.json.
|
|
538
|
+
* Each entry: [guideKey, guide lines array, ...config keys in this section]
|
|
539
|
+
* Config keys are written in alphabetical order within each section.
|
|
540
|
+
*/
|
|
541
|
+
const CONFIG_SECTIONS = [
|
|
542
|
+
{
|
|
543
|
+
guide: '_guide_meta',
|
|
544
|
+
lines: [
|
|
545
|
+
'schema_version: config schema version for migration detection',
|
|
546
|
+
'version: planning format version (v2 is current)'
|
|
547
|
+
],
|
|
548
|
+
keys: ['schema_version', 'version']
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
guide: '_guide_core',
|
|
552
|
+
lines: [
|
|
553
|
+
'ceremony_level: auto|low|medium|high — override risk-based ceremony (auto = classifier decides)',
|
|
554
|
+
'context_strategy: aggressive|balanced|conservative — how aggressively PBR manages context budget',
|
|
555
|
+
'depth: quick|standard|comprehensive — thoroughness of research, planning, and verification',
|
|
556
|
+
'mode: interactive|autonomous — interactive pauses at gates, autonomous runs hands-free'
|
|
557
|
+
],
|
|
558
|
+
keys: ['ceremony_level', 'context_strategy', 'depth', 'mode']
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
guide: '_guide_context_window',
|
|
562
|
+
lines: [
|
|
563
|
+
'agent_checkpoint_pct: 40-80 — context % where agents checkpoint and return',
|
|
564
|
+
'context_window_tokens: 100k-2M — your model\'s context size, scales all thresholds',
|
|
565
|
+
'orchestrator_budget_pct: 15-50 — % of context reserved for orchestrator (higher = more inline work)',
|
|
566
|
+
'session_cycling: tmux|compact-first|compact|manual — what happens when phase limit is reached',
|
|
567
|
+
'session_phase_limit: 0-20 — max phases per session before auto-pause (0 = disabled)',
|
|
568
|
+
'skip_rag_max_lines: projects under this LOC can load entire codebase into context',
|
|
569
|
+
'',
|
|
570
|
+
'--- 1M CONTEXT (Opus 4.6) RECOMMENDED VALUES ---',
|
|
571
|
+
'context_window_tokens: 1000000',
|
|
572
|
+
'agent_checkpoint_pct: 70 (default 50 for 200k models)',
|
|
573
|
+
'orchestrator_budget_pct: 35 (default 25 for 200k models)',
|
|
574
|
+
'session_phase_limit: 10 (default 3 for 200k, scales: 3@200k, 6@500k, 10@1M)',
|
|
575
|
+
'session_cycling: compact-first (try /compact before cycling sessions)',
|
|
576
|
+
'context_budget.threshold_curve: adaptive (shifts warnings up: 60/75/85 vs 50/70/85)',
|
|
577
|
+
'workflow.inline_context_cap_pct: 50 (500k tokens before forcing subagent delegation)',
|
|
578
|
+
'workflow.inline_max_files: 10, inline_max_lines: 100, inline_max_tasks: 3',
|
|
579
|
+
'workflow.max_phases_in_context: 6 (hold 6 phase plans simultaneously)',
|
|
580
|
+
'debug.max_hypothesis_rounds: 8 (longer investigation chains)'
|
|
581
|
+
],
|
|
582
|
+
keys: ['agent_checkpoint_pct', 'context_window_tokens', 'orchestrator_budget_pct', 'session_cycling', 'session_phase_limit', 'skip_rag_max_lines']
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
guide: '_guide_autonomy',
|
|
586
|
+
lines: [
|
|
587
|
+
'autonomy.level: supervised|guided|collaborative|adaptive — progressive autonomy control',
|
|
588
|
+
'gates.confirm_*: pause for user confirmation (all false in autonomous mode)',
|
|
589
|
+
'gates.auto_checkpoints: auto-resolve checkpoint:human-verify tasks during build',
|
|
590
|
+
'gates.checkpoint_auto_resolve: none|verify-only|verify-and-decision|all',
|
|
591
|
+
'safety.always_confirm_destructive: always ask before destructive git ops',
|
|
592
|
+
'safety.always_confirm_external_services: always ask before calling external APIs',
|
|
593
|
+
'safety.enforce_phase_boundaries: prevent agents from working outside assigned phase'
|
|
594
|
+
],
|
|
595
|
+
keys: ['autonomy', 'gates', 'safety']
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
guide: '_guide_features',
|
|
599
|
+
lines: [
|
|
600
|
+
'--- CORE WORKFLOW ---',
|
|
601
|
+
'atomic_commits: one commit per task (not batched)',
|
|
602
|
+
'context_isolation: heavy work delegated to subagents to protect main context',
|
|
603
|
+
'session_persistence: persist state across sessions via STATE.md',
|
|
604
|
+
'structured_planning: use phased planning with ROADMAP + plan files',
|
|
605
|
+
'',
|
|
606
|
+
'--- RESEARCH & PLANNING ---',
|
|
607
|
+
'machine_executable_plans: programmatic task execution from parsed plans',
|
|
608
|
+
'plan_checking: validate plans via plan-checker agent before execution',
|
|
609
|
+
'pre_research: speculatively research upcoming phases at 70%+ completion',
|
|
610
|
+
'research_phase: run researcher agent before planning',
|
|
611
|
+
'reverse_spec: generate specs from existing code',
|
|
612
|
+
'spec_diffing: semantic diff when plans change',
|
|
613
|
+
'',
|
|
614
|
+
'--- EXECUTION ---',
|
|
615
|
+
'inline_simple_tasks: simple tasks (<N files, <N lines) run inline without subagent',
|
|
616
|
+
'post_hoc_artifacts: auto-generate SUMMARY.md from git history after execution',
|
|
617
|
+
'tdd_mode: red-green-refactor (3 commits per task instead of 1)',
|
|
618
|
+
'zero_friction_quick: skip pre-execution ceremony for quick tasks',
|
|
619
|
+
'',
|
|
620
|
+
'--- VERIFICATION ---',
|
|
621
|
+
'agent_feedback_loop: verification results feed back into executor prompts',
|
|
622
|
+
'confidence_calibration: confidence scores based on historical agent accuracy',
|
|
623
|
+
'goal_verification: run verifier agent after builds to check goals met',
|
|
624
|
+
'graduated_verification: trust-based verification depth (light/standard/thorough)',
|
|
625
|
+
'inline_verify: per-task verification after each commit (+10-20s per plan)',
|
|
626
|
+
'integration_verification: cross-phase integration checks',
|
|
627
|
+
'multi_layer_validation: parallel BugBot-style review passes',
|
|
628
|
+
'self_verification: executor self-checks before presenting output',
|
|
629
|
+
'trust_tracking: trust scores per agent type and task category',
|
|
630
|
+
'',
|
|
631
|
+
'--- AUTOMATION ---',
|
|
632
|
+
'auto_advance: chain build, review, plan automatically (requires autonomous mode)',
|
|
633
|
+
'auto_continue: write .auto-next signal on phase completion for chaining',
|
|
634
|
+
'',
|
|
635
|
+
'--- CONTEXT & SESSION ---',
|
|
636
|
+
'context_quality_scoring: track signal-to-noise ratio in context',
|
|
637
|
+
'enhanced_session_start: structured context injection at session start (~500 tokens)',
|
|
638
|
+
'mental_model_snapshots: capture working context at session end for instant resume',
|
|
639
|
+
'multi_phase_awareness: hold multiple phase plans simultaneously in context',
|
|
640
|
+
'rich_agent_prompts: enrich agent prompts with full project context',
|
|
641
|
+
'session_metrics: show metrics dashboard at session end',
|
|
642
|
+
'skip_rag: load entire codebase for small projects (under skip_rag_max_lines)',
|
|
643
|
+
'status_line: show PBR status bar in session UI',
|
|
644
|
+
'',
|
|
645
|
+
'--- KNOWLEDGE & INTELLIGENCE ---',
|
|
646
|
+
'adaptive_ceremony: risk-based ceremony adjustment per task',
|
|
647
|
+
'convention_memory: auto-detect and store project conventions',
|
|
648
|
+
'decision_journal: record WHY decisions were made in .planning/decisions/',
|
|
649
|
+
'dependency_break_detection: warn when upstream changes invalidate downstream plans',
|
|
650
|
+
'living_requirements: auto-update requirement status as phases complete',
|
|
651
|
+
'natural_language_routing: intent detection in /pbr:do',
|
|
652
|
+
'negative_knowledge: track what failed and why in .planning/negative-knowledge/',
|
|
653
|
+
'pattern_routing: file modification patterns trigger specialized agents',
|
|
654
|
+
'smart_next_task: dependency graph analysis for auto-continue suggestions',
|
|
655
|
+
'tech_debt_surfacing: surface tech debt in status dashboard',
|
|
656
|
+
'',
|
|
657
|
+
'--- QUALITY & SECURITY ---',
|
|
658
|
+
'architecture_graph: live module dependency tracking',
|
|
659
|
+
'architecture_guard: warn on dependency violations',
|
|
660
|
+
'predictive_impact: impact analysis using architecture graph',
|
|
661
|
+
'regression_prevention: smart test selection from changed files',
|
|
662
|
+
'security_scanning: OWASP-style scanning of changed files during build',
|
|
663
|
+
'',
|
|
664
|
+
'--- UI & VISUALIZATION ---',
|
|
665
|
+
'contextual_help: activity-specific suggestions based on current state',
|
|
666
|
+
'progress_visualization: phase dependency graph and timeline in dashboard',
|
|
667
|
+
'',
|
|
668
|
+
'--- TEAMS (disabled by default) ---',
|
|
669
|
+
'agent_teams: parallel worktree-based agent teams',
|
|
670
|
+
'competing_hypotheses: multiple approaches for complex problems',
|
|
671
|
+
'dynamic_teams: dynamic team composition per task',
|
|
672
|
+
'team_discussions: multi-perspective planning discussions',
|
|
673
|
+
'team_onboarding: generate onboarding guide from project docs'
|
|
674
|
+
],
|
|
675
|
+
keys: ['features']
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
guide: '_guide_models',
|
|
679
|
+
lines: [
|
|
680
|
+
'Per-agent model: sonnet|opus|haiku|inherit',
|
|
681
|
+
'complexity_map: auto-select model by task difficulty',
|
|
682
|
+
'model_profiles: custom named presets (e.g. \'budget\' using haiku everywhere)'
|
|
683
|
+
],
|
|
684
|
+
keys: ['models', 'model_profiles']
|
|
685
|
+
},
|
|
686
|
+
{
|
|
687
|
+
guide: '_guide_parallelization',
|
|
688
|
+
lines: [
|
|
689
|
+
'enabled: allow parallel plan execution within a wave',
|
|
690
|
+
'max_concurrent_agents: 1-10 — max simultaneous executor subagents',
|
|
691
|
+
'min_plans_for_parallel: minimum plans in a wave to trigger parallel execution',
|
|
692
|
+
'plan_level: parallelize at plan level (multiple plans in same wave)',
|
|
693
|
+
'task_level: parallelize at task level within a plan (not currently used)',
|
|
694
|
+
'use_teams: use Agent Teams for coordination (discussion only, never execution)',
|
|
695
|
+
'teams.*: roles and coordination strategy for team discussions'
|
|
696
|
+
],
|
|
697
|
+
keys: ['parallelization', 'teams']
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
guide: '_guide_workflow',
|
|
701
|
+
lines: [
|
|
702
|
+
'autonomous: enable /pbr:autonomous for hands-free multi-phase execution',
|
|
703
|
+
'enforce_pbr_skills: advisory|block|off — PBR workflow compliance enforcement',
|
|
704
|
+
'inline_context_cap_pct: context % above which always spawn subagent',
|
|
705
|
+
'inline_execution: trivial plans execute inline without subagent',
|
|
706
|
+
'inline_max_files: max files for inline execution eligibility',
|
|
707
|
+
'inline_max_lines: max estimated lines of change for inline execution',
|
|
708
|
+
'inline_max_tasks: max tasks for inline execution eligibility',
|
|
709
|
+
'max_phases_in_context: max phase plans held simultaneously by orchestrator',
|
|
710
|
+
'phase_boundary_clear: recommend|enforce|off — /clear at phase boundaries',
|
|
711
|
+
'phase_replay: failed verification triggers replay with enriched context',
|
|
712
|
+
'speculative_planning: plan phase N+1 while executor runs phase N'
|
|
713
|
+
],
|
|
714
|
+
keys: ['workflow']
|
|
715
|
+
},
|
|
716
|
+
{
|
|
717
|
+
guide: '_guide_git',
|
|
718
|
+
lines: [
|
|
719
|
+
'git.auto_pr: create GitHub PR after successful phase verification',
|
|
720
|
+
'git.branching: none|phase|milestone|disabled — branching strategy',
|
|
721
|
+
'git.commit_format: commit message template with {type}, {phase}, {plan}, {description}',
|
|
722
|
+
'git.mode: enabled|disabled — disabled skips all git operations',
|
|
723
|
+
'ci.gate_enabled: block wave advancement until CI passes',
|
|
724
|
+
'ci.wait_timeout_seconds: max seconds to wait for CI completion',
|
|
725
|
+
'planning.commit_docs: commit SUMMARY/VERIFICATION after builds',
|
|
726
|
+
'planning.max_tasks_per_plan: 1-10 — keeps plans focused and atomic',
|
|
727
|
+
'planning.multi_phase: enable --through flag for multi-phase planning',
|
|
728
|
+
'planning.search_gitignored: include gitignored files in codebase scanning'
|
|
729
|
+
],
|
|
730
|
+
keys: ['ci', 'git', 'planning']
|
|
731
|
+
},
|
|
732
|
+
{
|
|
733
|
+
guide: '_guide_verification',
|
|
734
|
+
lines: [
|
|
735
|
+
'validation_passes: which review passes run with multi_layer_validation',
|
|
736
|
+
' options: correctness, security, performance, style, tests, accessibility, docs, deps',
|
|
737
|
+
'verification.confidence_gate: skip verification if executor reports 100% completion + tests pass',
|
|
738
|
+
'verification.confidence_threshold: 0.5-1.0 — minimum confidence to skip verification'
|
|
739
|
+
],
|
|
740
|
+
keys: ['validation_passes', 'verification']
|
|
741
|
+
},
|
|
742
|
+
{
|
|
743
|
+
guide: '_guide_context_budget',
|
|
744
|
+
lines: [
|
|
745
|
+
'context_budget.threshold_curve: linear|adaptive — warning threshold scaling',
|
|
746
|
+
' linear = fixed 50/70/85%, adaptive = shifts up for 1M context (60/75/85%)',
|
|
747
|
+
'context_ledger.enabled: track what files are in context and when they go stale',
|
|
748
|
+
'context_ledger.stale_after_minutes: 5-1440 — minutes before a read is considered stale'
|
|
749
|
+
],
|
|
750
|
+
keys: ['context_budget', 'context_ledger']
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
guide: '_guide_hooks',
|
|
754
|
+
lines: [
|
|
755
|
+
'hook_server.enabled: route hooks through persistent HTTP server (faster than per-hook processes)',
|
|
756
|
+
'hook_server.port: TCP port for hook server (localhost only)',
|
|
757
|
+
'hooks.autoFormat: run auto-formatting after file writes',
|
|
758
|
+
'hooks.blockDocSprawl: block creation of excessive documentation files',
|
|
759
|
+
'hooks.compactThreshold: 10-200 — context % at which to suggest compaction',
|
|
760
|
+
'hooks.detectConsoleLogs: warn when console.log statements are added',
|
|
761
|
+
'hooks.typeCheck: run type checking after file writes'
|
|
762
|
+
],
|
|
763
|
+
keys: ['hook_server', 'hooks']
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
guide: '_guide_intelligence',
|
|
767
|
+
lines: [
|
|
768
|
+
'intel.enabled: persistent codebase intelligence (architecture maps, file graph)',
|
|
769
|
+
'intel.auto_update: PostToolUse hooks queue intel updates on code changes',
|
|
770
|
+
'intel.inject_on_start: inject architecture summary into session context at start',
|
|
771
|
+
'learnings.enabled: cross-phase knowledge transfer via LEARNINGS.md',
|
|
772
|
+
'learnings.read_depth: 1-20 — how many prior phases\' learnings the planner reads',
|
|
773
|
+
'learnings.cross_project_knowledge: copy learnings to ~/.claude/pbr-knowledge/ for reuse'
|
|
774
|
+
],
|
|
775
|
+
keys: ['intel', 'learnings']
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
guide: '_guide_tools',
|
|
779
|
+
lines: [
|
|
780
|
+
'dashboard: web UI for browsing .planning/ state (default port 3141)',
|
|
781
|
+
'debug.max_hypothesis_rounds: 1-20 — max hypothesis cycles for /pbr:debug',
|
|
782
|
+
'depth_profiles: override built-in quick/standard/comprehensive defaults',
|
|
783
|
+
'developer_profile: behavioral profiling from session history + prompt injection',
|
|
784
|
+
'local_llm: offload classification tasks to local Ollama instance',
|
|
785
|
+
'prd.auto_extract: skip confirmation gate during PRD import',
|
|
786
|
+
'spinner_tips: custom messages shown during agent execution',
|
|
787
|
+
'status_line: status bar appearance (sections, branding, context bar)',
|
|
788
|
+
'timeouts: task/build/verify timeout limits in milliseconds',
|
|
789
|
+
'ui.enabled: enable UI design pipeline (/pbr:ui-phase, /pbr:ui-review)',
|
|
790
|
+
'worktree.sparse_paths: glob patterns for sparse checkout in agent worktrees'
|
|
791
|
+
],
|
|
792
|
+
keys: ['dashboard', 'debug', 'depth_profiles', 'developer_profile', 'local_llm', 'prd', 'spinner_tips', 'status_line', 'timeouts', 'ui', 'worktree']
|
|
793
|
+
}
|
|
794
|
+
];
|
|
795
|
+
|
|
796
|
+
/**
|
|
797
|
+
* Sort object keys alphabetically, recursing into nested objects.
|
|
798
|
+
* Arrays are left as-is.
|
|
799
|
+
*
|
|
800
|
+
* @param {*} obj - Value to sort
|
|
801
|
+
* @returns {*} Sorted copy
|
|
802
|
+
*/
|
|
803
|
+
function sortKeys(obj) {
|
|
804
|
+
if (obj === null || typeof obj !== 'object' || Array.isArray(obj)) return obj;
|
|
805
|
+
const sorted = {};
|
|
806
|
+
for (const key of Object.keys(obj).sort()) {
|
|
807
|
+
sorted[key] = sortKeys(obj[key]);
|
|
808
|
+
}
|
|
809
|
+
return sorted;
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
/**
|
|
813
|
+
* Format a config object into the canonical section-ordered, guide-commented JSON string.
|
|
814
|
+
* Strips any existing _guide_* / _comment_* keys, applies defaults for missing fields,
|
|
815
|
+
* then rebuilds in section order with guide comments and alphabetized keys.
|
|
816
|
+
*
|
|
817
|
+
* @param {object} config - Config object to format
|
|
818
|
+
* @returns {string} Formatted JSON string
|
|
819
|
+
*/
|
|
820
|
+
function configFormat(config) {
|
|
821
|
+
// 1. Strip guide/comment keys and ensure all defaults present
|
|
822
|
+
const clean = {};
|
|
823
|
+
for (const [k, v] of Object.entries(config)) {
|
|
824
|
+
if (!k.startsWith('_guide') && !k.startsWith('_comment')) {
|
|
825
|
+
clean[k] = v;
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
// Also strip _comment keys from features if present
|
|
829
|
+
if (clean.features) {
|
|
830
|
+
const cleanFeatures = {};
|
|
831
|
+
for (const [k, v] of Object.entries(clean.features)) {
|
|
832
|
+
if (!k.startsWith('_comment')) cleanFeatures[k] = v;
|
|
833
|
+
}
|
|
834
|
+
clean.features = cleanFeatures;
|
|
835
|
+
}
|
|
836
|
+
const full = configEnsureComplete(clean);
|
|
837
|
+
|
|
838
|
+
// 2. Build ordered output object
|
|
839
|
+
const output = {};
|
|
840
|
+
const placed = new Set();
|
|
841
|
+
|
|
842
|
+
for (const section of CONFIG_SECTIONS) {
|
|
843
|
+
// Add guide comment
|
|
844
|
+
output[section.guide] = section.lines;
|
|
845
|
+
|
|
846
|
+
// Add config keys in alphabetical order
|
|
847
|
+
for (const key of section.keys) {
|
|
848
|
+
if (full[key] !== undefined) {
|
|
849
|
+
output[key] = sortKeys(full[key]);
|
|
850
|
+
placed.add(key);
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
// 3. Add any remaining keys not covered by sections (future-proofing)
|
|
856
|
+
const remaining = Object.keys(full).filter(k => !placed.has(k) && !k.startsWith('_'));
|
|
857
|
+
if (remaining.length > 0) {
|
|
858
|
+
for (const key of remaining.sort()) {
|
|
859
|
+
output[key] = sortKeys(full[key]);
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
return JSON.stringify(output, null, 2) + '\n';
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
/**
|
|
867
|
+
* Write config.json in the canonical formatted style with guide comments.
|
|
868
|
+
* Ensures all defaults are present and sections are properly ordered.
|
|
869
|
+
*
|
|
870
|
+
* @param {string} planningDir - Path to .planning directory
|
|
871
|
+
* @param {object} config - Config object to write
|
|
872
|
+
*/
|
|
873
|
+
function configWrite(planningDir, config) {
|
|
874
|
+
const configPath = path.join(planningDir, 'config.json');
|
|
875
|
+
const formatted = configFormat(config);
|
|
876
|
+
const result = lockedFileUpdate(configPath, () => formatted);
|
|
877
|
+
if (!result.success) {
|
|
878
|
+
// Fallback: write without lock (availability over consistency)
|
|
879
|
+
fs.writeFileSync(configPath, formatted, 'utf8');
|
|
880
|
+
}
|
|
881
|
+
// Invalidate cache so next configLoad() picks up changes
|
|
882
|
+
configClearCache();
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
module.exports = {
|
|
886
|
+
configLoad,
|
|
887
|
+
configClearCache,
|
|
888
|
+
configValidate,
|
|
889
|
+
configEnsureComplete,
|
|
890
|
+
configFormat,
|
|
891
|
+
configWrite,
|
|
892
|
+
CONFIG_DEFAULTS,
|
|
893
|
+
CONFIG_SECTIONS,
|
|
894
|
+
resolveConfig,
|
|
895
|
+
resolveDepthProfile,
|
|
896
|
+
DEPTH_PROFILE_DEFAULTS,
|
|
897
|
+
loadUserDefaults,
|
|
898
|
+
saveUserDefaults,
|
|
899
|
+
mergeUserDefaults,
|
|
900
|
+
USER_DEFAULTS_PATH
|
|
901
|
+
};
|