agileflow 3.4.3 → 4.0.0-alpha.2
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 +238 -473
- package/README.md +22 -114
- package/bin/agileflow.js +15 -0
- package/bin/hooks/pre-bash.js +35 -0
- package/bin/hooks/pre-compact.js +34 -0
- package/bin/hooks/pre-edit.js +32 -0
- package/bin/hooks/pre-write.js +32 -0
- package/bin/hooks/session-start.js +42 -0
- package/bin/hooks/stop.js +34 -0
- package/content/plugins/ads/plugin.yaml +14 -0
- package/content/plugins/audit/plugin.yaml +14 -0
- package/content/plugins/core/hooks/babysit-mentor-injector.js +55 -0
- package/content/plugins/core/hooks/context-loader.js +169 -0
- package/content/plugins/core/hooks/damage-control-bash.js +78 -0
- package/content/plugins/core/hooks/damage-control-edit.js +76 -0
- package/content/plugins/core/hooks/damage-control-patterns.yaml +100 -0
- package/content/plugins/core/hooks/damage-control-write.js +72 -0
- package/content/plugins/core/hooks/pre-compact-state.js +90 -0
- package/content/plugins/core/hooks/session-welcome.js +19 -0
- package/content/plugins/core/plugin.yaml +82 -0
- package/content/plugins/core/skills/agileflow-adr/SKILL.md +179 -0
- package/content/plugins/core/skills/agileflow-babysit-mentor/SKILL.md +144 -0
- package/content/plugins/core/skills/agileflow-epic-planner/SKILL.md +179 -0
- package/content/plugins/core/skills/agileflow-status-updater/SKILL.md +132 -0
- package/content/plugins/core/skills/agileflow-story-writer/SKILL.md +200 -0
- package/content/plugins/council/plugin.yaml +14 -0
- package/content/plugins/seo/plugin.yaml +14 -0
- package/package.json +29 -49
- package/src/cli/commands/doctor.js +159 -0
- package/src/cli/commands/hook.js +80 -0
- package/src/cli/commands/setup.js +292 -0
- package/src/cli/commands/status.js +47 -0
- package/src/cli/commands/update.js +83 -0
- package/src/cli/index.js +73 -0
- package/src/cli/wizard/behaviors-picker.js +108 -0
- package/src/cli/wizard/ide-picker.js +57 -0
- package/src/cli/wizard/personalization.js +64 -0
- package/src/cli/wizard/plugin-picker.js +106 -0
- package/src/lib/hash.js +41 -0
- package/src/runtime/config/defaults.js +61 -0
- package/src/runtime/config/loader.js +117 -0
- package/src/runtime/config/schema.json +99 -0
- package/src/runtime/config/writer.js +55 -0
- package/src/runtime/hooks/aggregator.js +157 -0
- package/src/runtime/hooks/chain.js +93 -0
- package/src/runtime/hooks/logger.js +68 -0
- package/src/runtime/hooks/manifest-loader.js +228 -0
- package/src/runtime/hooks/orchestrator.js +322 -0
- package/src/runtime/ide/capabilities.js +111 -0
- package/src/runtime/ide/claude-code-settings.js +234 -0
- package/src/runtime/ide/claude-code-skills.js +202 -0
- package/src/runtime/installer/file-index.js +112 -0
- package/src/runtime/installer/install.js +329 -0
- package/src/runtime/installer/stash.js +61 -0
- package/src/runtime/installer/sync-engine.js +205 -0
- package/src/runtime/plugins/registry.js +132 -0
- package/src/runtime/plugins/resolver.js +138 -0
- package/src/runtime/plugins/validator.js +196 -0
- package/src/runtime/skills/validator.js +335 -0
- package/lib/README.md +0 -178
- package/lib/api-routes.js +0 -625
- package/lib/api-server.js +0 -278
- package/lib/cache-provider.js +0 -155
- package/lib/codebase-indexer.js +0 -819
- package/lib/colors.generated.js +0 -117
- package/lib/colors.js +0 -341
- package/lib/consent.js +0 -232
- package/lib/content-sanitizer.js +0 -464
- package/lib/correlation.js +0 -277
- package/lib/drivers/claude-driver.ts +0 -312
- package/lib/drivers/codex-driver.ts +0 -464
- package/lib/drivers/driver-manager.ts +0 -159
- package/lib/drivers/gemini-driver.ts +0 -498
- package/lib/drivers/index.ts +0 -17
- package/lib/error-codes.js +0 -590
- package/lib/errors.js +0 -670
- package/lib/feature-flags.js +0 -171
- package/lib/feedback.js +0 -595
- package/lib/file-cache.js +0 -541
- package/lib/flag-detection.js +0 -344
- package/lib/format-error.js +0 -156
- package/lib/gate-runner.js +0 -282
- package/lib/generator-factory.js +0 -333
- package/lib/git-operations.js +0 -266
- package/lib/lazy-require.js +0 -59
- package/lib/lock-file.js +0 -144
- package/lib/logger.js +0 -106
- package/lib/merge-operations.js +0 -1006
- package/lib/path-resolver.js +0 -544
- package/lib/path-utils.js +0 -49
- package/lib/paths.js +0 -291
- package/lib/placeholder-registry.js +0 -822
- package/lib/process-executor.js +0 -214
- package/lib/progress.js +0 -334
- package/lib/protocol/driver.ts +0 -354
- package/lib/protocol/index.ts +0 -12
- package/lib/protocol/ir.ts +0 -271
- package/lib/registry-cache.js +0 -80
- package/lib/registry-di.js +0 -358
- package/lib/result-schema.js +0 -363
- package/lib/result.js +0 -210
- package/lib/session-display.js +0 -331
- package/lib/session-operations.js +0 -611
- package/lib/session-registry.js +0 -484
- package/lib/session-state-machine.js +0 -465
- package/lib/session-switching.js +0 -191
- package/lib/skill-loader.js +0 -213
- package/lib/smart-json-file.js +0 -682
- package/lib/state-machine.js +0 -286
- package/lib/table-formatter.js +0 -519
- package/lib/template-loader.js +0 -143
- package/lib/transient-status.js +0 -374
- package/lib/ui-manager.js +0 -612
- package/lib/validate-args.js +0 -213
- package/lib/validate-commands.js +0 -308
- package/lib/validate-names.js +0 -143
- package/lib/validate-paths.js +0 -434
- package/lib/validate.js +0 -134
- package/lib/worktree-operations.js +0 -201
- package/lib/yaml-utils.js +0 -164
- package/scripts/README.md +0 -267
- package/scripts/af +0 -34
- package/scripts/agent-loop.js +0 -879
- package/scripts/agileflow-configure.js +0 -368
- package/scripts/agileflow-statusline.sh +0 -857
- package/scripts/agileflow-welcome.js +0 -2246
- package/scripts/api-server-runner.js +0 -177
- package/scripts/archive-completed-stories.sh +0 -308
- package/scripts/auto-self-improve.js +0 -326
- package/scripts/automation-run-due.js +0 -128
- package/scripts/babysit-clear-restore.js +0 -154
- package/scripts/babysit-context-restore.js +0 -89
- package/scripts/backfill-ideation-status.js +0 -128
- package/scripts/batch-pmap-loop.js +0 -551
- package/scripts/check-sessions.js +0 -116
- package/scripts/check-update.js +0 -282
- package/scripts/ci-summary.js +0 -294
- package/scripts/claude-smart.sh +0 -85
- package/scripts/claude-tmux.sh +0 -737
- package/scripts/claude-watchdog.sh +0 -225
- package/scripts/clear-active-command.js +0 -48
- package/scripts/compress-status.sh +0 -116
- package/scripts/context-loader.js +0 -310
- package/scripts/damage-control/bash-tool-damage-control.js +0 -22
- package/scripts/damage-control/edit-tool-damage-control.js +0 -19
- package/scripts/damage-control/patterns.yaml +0 -227
- package/scripts/damage-control/write-tool-damage-control.js +0 -19
- package/scripts/damage-control-bash.js +0 -51
- package/scripts/damage-control-edit.js +0 -48
- package/scripts/damage-control-multi-agent.js +0 -231
- package/scripts/damage-control-write.js +0 -48
- package/scripts/dependency-check.js +0 -311
- package/scripts/document-repl.js +0 -793
- package/scripts/expertise-metrics.sh +0 -264
- package/scripts/generate-all.sh +0 -77
- package/scripts/generate-colors.js +0 -314
- package/scripts/generators/agent-registry.js +0 -183
- package/scripts/generators/command-registry.js +0 -166
- package/scripts/generators/index.js +0 -85
- package/scripts/generators/inject-babysit.js +0 -191
- package/scripts/generators/inject-help.js +0 -125
- package/scripts/generators/inject-readme.js +0 -166
- package/scripts/generators/skill-registry.js +0 -188
- package/scripts/get-env.js +0 -225
- package/scripts/init.sh +0 -76
- package/scripts/lib/README-portable-tasks.md +0 -424
- package/scripts/lib/ac-test-matcher.js +0 -452
- package/scripts/lib/audit-cleanup.js +0 -250
- package/scripts/lib/audit-registry.js +0 -340
- package/scripts/lib/automation-registry.js +0 -544
- package/scripts/lib/automation-runner.js +0 -476
- package/scripts/lib/browser-qa-evidence.js +0 -409
- package/scripts/lib/browser-qa-status.js +0 -192
- package/scripts/lib/bus-utils.js +0 -473
- package/scripts/lib/colors.generated.sh +0 -82
- package/scripts/lib/colors.sh +0 -46
- package/scripts/lib/command-prereqs.js +0 -280
- package/scripts/lib/concurrency-limiter.js +0 -511
- package/scripts/lib/configure-detect.js +0 -596
- package/scripts/lib/configure-features.js +0 -1927
- package/scripts/lib/configure-repair.js +0 -327
- package/scripts/lib/configure-utils.js +0 -114
- package/scripts/lib/context-formatter.js +0 -1158
- package/scripts/lib/context-loader.js +0 -840
- package/scripts/lib/counter.js +0 -103
- package/scripts/lib/damage-control-utils.js +0 -619
- package/scripts/lib/feature-catalog.js +0 -332
- package/scripts/lib/file-lock.js +0 -392
- package/scripts/lib/file-tracking.js +0 -735
- package/scripts/lib/frontmatter-parser.js +0 -133
- package/scripts/lib/gate-enforcer.js +0 -295
- package/scripts/lib/hook-metrics.js +0 -324
- package/scripts/lib/ideation-index.js +0 -1205
- package/scripts/lib/json-utils.sh +0 -162
- package/scripts/lib/lifecycle-detector.js +0 -125
- package/scripts/lib/model-profiles.js +0 -118
- package/scripts/lib/portable-tasks-cli.js +0 -274
- package/scripts/lib/portable-tasks.js +0 -479
- package/scripts/lib/process-cleanup.js +0 -527
- package/scripts/lib/quality-gates.js +0 -788
- package/scripts/lib/scale-detector.js +0 -396
- package/scripts/lib/sessionRegistry.js +0 -678
- package/scripts/lib/signal-detectors.js +0 -867
- package/scripts/lib/skill-catalog.js +0 -557
- package/scripts/lib/skill-recommender.js +0 -311
- package/scripts/lib/state-migrator.js +0 -353
- package/scripts/lib/status-task-bridge.js +0 -522
- package/scripts/lib/status-writer.js +0 -255
- package/scripts/lib/story-claiming.js +0 -704
- package/scripts/lib/story-state-machine.js +0 -437
- package/scripts/lib/sync-ideation-status.js +0 -291
- package/scripts/lib/task-registry-cache.js +0 -490
- package/scripts/lib/task-registry.js +0 -1191
- package/scripts/lib/task-sync.js +0 -230
- package/scripts/lib/tdd-phase-manager.js +0 -455
- package/scripts/lib/team-events.js +0 -510
- package/scripts/lib/tmux-audit-monitor.js +0 -612
- package/scripts/lib/tmux-group-colors.js +0 -113
- package/scripts/lib/tool-registry.yaml +0 -241
- package/scripts/lib/tool-shed.js +0 -441
- package/scripts/lib/validation-registry.js +0 -177
- package/scripts/messaging-bridge.js +0 -561
- package/scripts/migrate-ideation-index.js +0 -553
- package/scripts/native-team-observer.js +0 -219
- package/scripts/obtain-context.js +0 -272
- package/scripts/pre-push-check.sh +0 -46
- package/scripts/precompact-context.sh +0 -306
- package/scripts/query-codebase.js +0 -543
- package/scripts/ralph-loop.js +0 -1278
- package/scripts/resume-session.sh +0 -121
- package/scripts/screenshot-verifier.js +0 -215
- package/scripts/session-boundary.js +0 -138
- package/scripts/session-coordinator.sh +0 -232
- package/scripts/session-manager.js +0 -546
- package/scripts/smart-detect.js +0 -449
- package/scripts/spawn-audit-sessions.js +0 -877
- package/scripts/spawn-parallel.js +0 -751
- package/scripts/strip-ai-attribution.js +0 -63
- package/scripts/task-completed-gate.js +0 -237
- package/scripts/team-manager.js +0 -596
- package/scripts/team-status-display.js +0 -200
- package/scripts/teammate-idle-gate.js +0 -237
- package/scripts/test-session-boundary.js +0 -80
- package/scripts/tmux-close-windows.sh +0 -180
- package/scripts/tmux-restore-window.sh +0 -67
- package/scripts/tmux-save-closed-window.sh +0 -35
- package/scripts/tui/App.js +0 -151
- package/scripts/tui/Dashboard.js +0 -277
- package/scripts/tui/blessed/data/watcher.js +0 -180
- package/scripts/tui/blessed/index.js +0 -244
- package/scripts/tui/blessed/panels/output.js +0 -101
- package/scripts/tui/blessed/panels/sessions.js +0 -150
- package/scripts/tui/blessed/panels/trace.js +0 -97
- package/scripts/tui/blessed/ui/help.js +0 -77
- package/scripts/tui/blessed/ui/screen.js +0 -52
- package/scripts/tui/blessed/ui/statusbar.js +0 -47
- package/scripts/tui/blessed/ui/tabbar.js +0 -99
- package/scripts/tui/index.js +0 -70
- package/scripts/tui/lib/crashRecovery.js +0 -304
- package/scripts/tui/lib/eventStream.js +0 -309
- package/scripts/tui/lib/keyboard.js +0 -261
- package/scripts/tui/lib/loopControl.js +0 -371
- package/scripts/tui/panels/OutputPanel.js +0 -240
- package/scripts/tui/panels/SessionPanel.js +0 -170
- package/scripts/tui/panels/TracePanel.js +0 -298
- package/scripts/tui/simple-tui.js +0 -510
- package/scripts/validate-expertise.sh +0 -263
- package/scripts/validate-tokens.sh +0 -73
- package/scripts/validators/README.md +0 -143
- package/scripts/validators/component-validator.js +0 -239
- package/scripts/validators/json-schema-validator.js +0 -186
- package/scripts/validators/markdown-validator.js +0 -152
- package/scripts/validators/migration-validator.js +0 -129
- package/scripts/validators/security-validator.js +0 -380
- package/scripts/validators/story-format-validator.js +0 -197
- package/scripts/validators/test-result-validator.js +0 -114
- package/scripts/validators/workflow-validator.js +0 -247
- package/scripts/welcome-deferred.js +0 -437
- package/scripts/worktree-create.sh +0 -111
- package/src/core/agents/a11y-analyzer-aria.md +0 -155
- package/src/core/agents/a11y-analyzer-forms.md +0 -162
- package/src/core/agents/a11y-analyzer-keyboard.md +0 -175
- package/src/core/agents/a11y-analyzer-semantic.md +0 -153
- package/src/core/agents/a11y-analyzer-visual.md +0 -158
- package/src/core/agents/a11y-consensus.md +0 -248
- package/src/core/agents/accessibility.md +0 -515
- package/src/core/agents/adr-writer.md +0 -463
- package/src/core/agents/ads-audit-budget.md +0 -181
- package/src/core/agents/ads-audit-compliance.md +0 -169
- package/src/core/agents/ads-audit-creative.md +0 -164
- package/src/core/agents/ads-audit-google.md +0 -226
- package/src/core/agents/ads-audit-meta.md +0 -183
- package/src/core/agents/ads-audit-tracking.md +0 -197
- package/src/core/agents/ads-consensus.md +0 -396
- package/src/core/agents/ads-generate.md +0 -145
- package/src/core/agents/ads-performance-tracker.md +0 -197
- package/src/core/agents/analytics.md +0 -617
- package/src/core/agents/api-quality-analyzer-conventions.md +0 -148
- package/src/core/agents/api-quality-analyzer-docs.md +0 -176
- package/src/core/agents/api-quality-analyzer-errors.md +0 -183
- package/src/core/agents/api-quality-analyzer-pagination.md +0 -171
- package/src/core/agents/api-quality-analyzer-versioning.md +0 -143
- package/src/core/agents/api-quality-consensus.md +0 -214
- package/src/core/agents/api-validator.md +0 -183
- package/src/core/agents/api.md +0 -665
- package/src/core/agents/arch-analyzer-circular.md +0 -148
- package/src/core/agents/arch-analyzer-complexity.md +0 -171
- package/src/core/agents/arch-analyzer-coupling.md +0 -146
- package/src/core/agents/arch-analyzer-layering.md +0 -151
- package/src/core/agents/arch-analyzer-patterns.md +0 -162
- package/src/core/agents/arch-consensus.md +0 -227
- package/src/core/agents/brainstorm-analyzer-features.md +0 -169
- package/src/core/agents/brainstorm-analyzer-growth.md +0 -161
- package/src/core/agents/brainstorm-analyzer-integration.md +0 -172
- package/src/core/agents/brainstorm-analyzer-market.md +0 -147
- package/src/core/agents/brainstorm-analyzer-ux.md +0 -167
- package/src/core/agents/brainstorm-consensus.md +0 -237
- package/src/core/agents/browser-qa.md +0 -328
- package/src/core/agents/ci.md +0 -511
- package/src/core/agents/code-reviewer.md +0 -288
- package/src/core/agents/codebase-query.md +0 -266
- package/src/core/agents/completeness-analyzer-api.md +0 -190
- package/src/core/agents/completeness-analyzer-conditional.md +0 -201
- package/src/core/agents/completeness-analyzer-handlers.md +0 -159
- package/src/core/agents/completeness-analyzer-imports.md +0 -159
- package/src/core/agents/completeness-analyzer-routes.md +0 -182
- package/src/core/agents/completeness-analyzer-state.md +0 -188
- package/src/core/agents/completeness-analyzer-stubs.md +0 -198
- package/src/core/agents/completeness-consensus.md +0 -286
- package/src/core/agents/compliance.md +0 -509
- package/src/core/agents/council-advocate.md +0 -206
- package/src/core/agents/council-analyst.md +0 -252
- package/src/core/agents/council-optimist.md +0 -170
- package/src/core/agents/database.md +0 -601
- package/src/core/agents/datamigration.md +0 -699
- package/src/core/agents/design.md +0 -525
- package/src/core/agents/devops.md +0 -720
- package/src/core/agents/documentation.md +0 -504
- package/src/core/agents/epic-planner.md +0 -480
- package/src/core/agents/error-analyzer.md +0 -201
- package/src/core/agents/integrations.md +0 -603
- package/src/core/agents/legal-analyzer-a11y.md +0 -110
- package/src/core/agents/legal-analyzer-ai.md +0 -117
- package/src/core/agents/legal-analyzer-consumer.md +0 -108
- package/src/core/agents/legal-analyzer-content.md +0 -113
- package/src/core/agents/legal-analyzer-international.md +0 -115
- package/src/core/agents/legal-analyzer-licensing.md +0 -115
- package/src/core/agents/legal-analyzer-privacy.md +0 -108
- package/src/core/agents/legal-analyzer-security.md +0 -112
- package/src/core/agents/legal-analyzer-terms.md +0 -111
- package/src/core/agents/legal-consensus.md +0 -242
- package/src/core/agents/logic-analyzer-edge.md +0 -170
- package/src/core/agents/logic-analyzer-flow.md +0 -253
- package/src/core/agents/logic-analyzer-invariant.md +0 -206
- package/src/core/agents/logic-analyzer-race.md +0 -266
- package/src/core/agents/logic-analyzer-type.md +0 -217
- package/src/core/agents/logic-consensus.md +0 -253
- package/src/core/agents/mentor.md +0 -654
- package/src/core/agents/mobile.md +0 -501
- package/src/core/agents/monitoring.md +0 -537
- package/src/core/agents/multi-expert.md +0 -311
- package/src/core/agents/orchestrator.md +0 -749
- package/src/core/agents/perf-analyzer-assets.md +0 -174
- package/src/core/agents/perf-analyzer-bundle.md +0 -165
- package/src/core/agents/perf-analyzer-caching.md +0 -160
- package/src/core/agents/perf-analyzer-compute.md +0 -165
- package/src/core/agents/perf-analyzer-memory.md +0 -182
- package/src/core/agents/perf-analyzer-network.md +0 -157
- package/src/core/agents/perf-analyzer-queries.md +0 -155
- package/src/core/agents/perf-analyzer-rendering.md +0 -156
- package/src/core/agents/perf-consensus.md +0 -280
- package/src/core/agents/performance.md +0 -492
- package/src/core/agents/product.md +0 -535
- package/src/core/agents/qa.md +0 -765
- package/src/core/agents/readme-updater.md +0 -579
- package/src/core/agents/refactor.md +0 -558
- package/src/core/agents/research.md +0 -453
- package/src/core/agents/rlm-subcore.md +0 -207
- package/src/core/agents/schema-validator.md +0 -454
- package/src/core/agents/security-analyzer-api.md +0 -199
- package/src/core/agents/security-analyzer-auth.md +0 -160
- package/src/core/agents/security-analyzer-authz.md +0 -168
- package/src/core/agents/security-analyzer-deps.md +0 -147
- package/src/core/agents/security-analyzer-infra.md +0 -176
- package/src/core/agents/security-analyzer-injection.md +0 -148
- package/src/core/agents/security-analyzer-input.md +0 -191
- package/src/core/agents/security-analyzer-secrets.md +0 -175
- package/src/core/agents/security-consensus.md +0 -276
- package/src/core/agents/security.md +0 -486
- package/src/core/agents/seo-analyzer-content.md +0 -167
- package/src/core/agents/seo-analyzer-images.md +0 -187
- package/src/core/agents/seo-analyzer-performance.md +0 -206
- package/src/core/agents/seo-analyzer-schema.md +0 -176
- package/src/core/agents/seo-analyzer-sitemap.md +0 -172
- package/src/core/agents/seo-analyzer-technical.md +0 -144
- package/src/core/agents/seo-consensus.md +0 -289
- package/src/core/agents/team-coordinator.md +0 -333
- package/src/core/agents/team-lead.md +0 -171
- package/src/core/agents/test-analyzer-assertions.md +0 -181
- package/src/core/agents/test-analyzer-coverage.md +0 -183
- package/src/core/agents/test-analyzer-fragility.md +0 -185
- package/src/core/agents/test-analyzer-integration.md +0 -155
- package/src/core/agents/test-analyzer-maintenance.md +0 -173
- package/src/core/agents/test-analyzer-mocking.md +0 -178
- package/src/core/agents/test-analyzer-patterns.md +0 -189
- package/src/core/agents/test-analyzer-structure.md +0 -177
- package/src/core/agents/test-consensus.md +0 -294
- package/src/core/agents/testing.md +0 -527
- package/src/core/agents/ui-validator.md +0 -331
- package/src/core/agents/ui.md +0 -1227
- package/src/core/commands/adr/list.md +0 -191
- package/src/core/commands/adr/update.md +0 -258
- package/src/core/commands/adr/view.md +0 -274
- package/src/core/commands/adr.md +0 -394
- package/src/core/commands/ads/audit.md +0 -453
- package/src/core/commands/ads/budget.md +0 -97
- package/src/core/commands/ads/competitor.md +0 -112
- package/src/core/commands/ads/creative.md +0 -85
- package/src/core/commands/ads/generate.md +0 -238
- package/src/core/commands/ads/google.md +0 -112
- package/src/core/commands/ads/health.md +0 -327
- package/src/core/commands/ads/landing.md +0 -119
- package/src/core/commands/ads/linkedin.md +0 -112
- package/src/core/commands/ads/meta.md +0 -91
- package/src/core/commands/ads/microsoft.md +0 -115
- package/src/core/commands/ads/plan.md +0 -321
- package/src/core/commands/ads/test-plan.md +0 -317
- package/src/core/commands/ads/tiktok.md +0 -129
- package/src/core/commands/ads/track.md +0 -288
- package/src/core/commands/ads/youtube.md +0 -124
- package/src/core/commands/ads.md +0 -140
- package/src/core/commands/agent.md +0 -256
- package/src/core/commands/api.md +0 -267
- package/src/core/commands/assign.md +0 -369
- package/src/core/commands/audit.md +0 -531
- package/src/core/commands/auto.md +0 -556
- package/src/core/commands/automate.md +0 -415
- package/src/core/commands/babysit.md +0 -643
- package/src/core/commands/baseline.md +0 -743
- package/src/core/commands/batch.md +0 -551
- package/src/core/commands/blockers.md +0 -602
- package/src/core/commands/board.md +0 -509
- package/src/core/commands/browser-qa.md +0 -240
- package/src/core/commands/changelog.md +0 -582
- package/src/core/commands/choose.md +0 -430
- package/src/core/commands/ci.md +0 -330
- package/src/core/commands/code/accessibility.md +0 -363
- package/src/core/commands/code/api.md +0 -313
- package/src/core/commands/code/architecture.md +0 -313
- package/src/core/commands/code/completeness.md +0 -519
- package/src/core/commands/code/legal.md +0 -509
- package/src/core/commands/code/logic.md +0 -432
- package/src/core/commands/code/performance.md +0 -506
- package/src/core/commands/code/security.md +0 -509
- package/src/core/commands/code/test.md +0 -505
- package/src/core/commands/compress.md +0 -408
- package/src/core/commands/configure.md +0 -1159
- package/src/core/commands/context/export.md +0 -296
- package/src/core/commands/context/full.md +0 -353
- package/src/core/commands/context/note.md +0 -380
- package/src/core/commands/council.md +0 -592
- package/src/core/commands/debt.md +0 -491
- package/src/core/commands/deploy.md +0 -864
- package/src/core/commands/deps.md +0 -728
- package/src/core/commands/diagnose.md +0 -404
- package/src/core/commands/docs.md +0 -469
- package/src/core/commands/epic/edit.md +0 -213
- package/src/core/commands/epic/list.md +0 -190
- package/src/core/commands/epic/view.md +0 -267
- package/src/core/commands/epic.md +0 -477
- package/src/core/commands/export.md +0 -238
- package/src/core/commands/feedback.md +0 -603
- package/src/core/commands/handoff.md +0 -386
- package/src/core/commands/help.md +0 -194
- package/src/core/commands/ideate/brief.md +0 -363
- package/src/core/commands/ideate/discover.md +0 -399
- package/src/core/commands/ideate/features.md +0 -497
- package/src/core/commands/ideate/history.md +0 -403
- package/src/core/commands/ideate/new.md +0 -900
- package/src/core/commands/impact.md +0 -407
- package/src/core/commands/install.md +0 -529
- package/src/core/commands/learn/explain.md +0 -118
- package/src/core/commands/learn/glossary.md +0 -135
- package/src/core/commands/learn/patterns.md +0 -138
- package/src/core/commands/learn/tour.md +0 -126
- package/src/core/commands/maintain.md +0 -558
- package/src/core/commands/metrics.md +0 -844
- package/src/core/commands/migrate/codemods.md +0 -151
- package/src/core/commands/migrate/plan.md +0 -131
- package/src/core/commands/migrate/scan.md +0 -114
- package/src/core/commands/migrate/validate.md +0 -119
- package/src/core/commands/multi-expert.md +0 -447
- package/src/core/commands/packages.md +0 -535
- package/src/core/commands/pr.md +0 -337
- package/src/core/commands/readme-sync.md +0 -329
- package/src/core/commands/research/analyze.md +0 -798
- package/src/core/commands/research/ask.md +0 -864
- package/src/core/commands/research/import.md +0 -1025
- package/src/core/commands/research/list.md +0 -273
- package/src/core/commands/research/synthesize.md +0 -928
- package/src/core/commands/research/view.md +0 -323
- package/src/core/commands/retro.md +0 -795
- package/src/core/commands/review.md +0 -694
- package/src/core/commands/rlm.md +0 -446
- package/src/core/commands/roadmap/analyze.md +0 -400
- package/src/core/commands/rpi.md +0 -633
- package/src/core/commands/seo/audit.md +0 -444
- package/src/core/commands/seo/competitor.md +0 -174
- package/src/core/commands/seo/content.md +0 -107
- package/src/core/commands/seo/geo.md +0 -229
- package/src/core/commands/seo/hreflang.md +0 -140
- package/src/core/commands/seo/images.md +0 -96
- package/src/core/commands/seo/page.md +0 -198
- package/src/core/commands/seo/plan.md +0 -163
- package/src/core/commands/seo/programmatic.md +0 -131
- package/src/core/commands/seo/references/cwv-thresholds.md +0 -64
- package/src/core/commands/seo/references/eeat-framework.md +0 -110
- package/src/core/commands/seo/references/quality-gates.md +0 -91
- package/src/core/commands/seo/references/schema-types.md +0 -102
- package/src/core/commands/seo/schema.md +0 -183
- package/src/core/commands/seo/sitemap.md +0 -97
- package/src/core/commands/seo/technical.md +0 -100
- package/src/core/commands/seo.md +0 -107
- package/src/core/commands/session/cleanup.md +0 -452
- package/src/core/commands/session/end.md +0 -865
- package/src/core/commands/session/history.md +0 -293
- package/src/core/commands/session/init.md +0 -210
- package/src/core/commands/session/new.md +0 -827
- package/src/core/commands/session/resume.md +0 -291
- package/src/core/commands/session/spawn.md +0 -205
- package/src/core/commands/session/status.md +0 -274
- package/src/core/commands/skill/list.md +0 -139
- package/src/core/commands/skill/recommend.md +0 -216
- package/src/core/commands/sprint.md +0 -714
- package/src/core/commands/status/undo.md +0 -191
- package/src/core/commands/status.md +0 -423
- package/src/core/commands/story/edit.md +0 -204
- package/src/core/commands/story/list.md +0 -199
- package/src/core/commands/story/view.md +0 -312
- package/src/core/commands/story-validate.md +0 -491
- package/src/core/commands/story.md +0 -465
- package/src/core/commands/tdd-next.md +0 -238
- package/src/core/commands/tdd.md +0 -211
- package/src/core/commands/team/guide.md +0 -688
- package/src/core/commands/team/list.md +0 -59
- package/src/core/commands/team/start.md +0 -130
- package/src/core/commands/team/status.md +0 -66
- package/src/core/commands/team/stop.md +0 -78
- package/src/core/commands/template.md +0 -644
- package/src/core/commands/tests.md +0 -731
- package/src/core/commands/update.md +0 -591
- package/src/core/commands/validate-expertise.md +0 -305
- package/src/core/commands/velocity.md +0 -630
- package/src/core/commands/verify.md +0 -534
- package/src/core/commands/whats-new.md +0 -201
- package/src/core/commands/workflow.md +0 -449
- package/src/core/council/sessions/.gitkeep +0 -0
- package/src/core/council/shared_reasoning.template.md +0 -106
- package/src/core/experts/README.md +0 -236
- package/src/core/experts/_core-expertise.yaml +0 -105
- package/src/core/experts/accessibility/expertise.yaml +0 -115
- package/src/core/experts/accessibility/question.md +0 -41
- package/src/core/experts/accessibility/self-improve.md +0 -45
- package/src/core/experts/accessibility/workflow.md +0 -59
- package/src/core/experts/adr-writer/expertise.yaml +0 -138
- package/src/core/experts/adr-writer/question.md +0 -56
- package/src/core/experts/adr-writer/self-improve.md +0 -106
- package/src/core/experts/adr-writer/workflow.md +0 -184
- package/src/core/experts/analytics/expertise.yaml +0 -119
- package/src/core/experts/analytics/question.md +0 -74
- package/src/core/experts/analytics/self-improve.md +0 -163
- package/src/core/experts/analytics/workflow.md +0 -272
- package/src/core/experts/api/expertise.yaml +0 -124
- package/src/core/experts/api/question.md +0 -74
- package/src/core/experts/api/self-improve.md +0 -122
- package/src/core/experts/api/workflow.md +0 -248
- package/src/core/experts/ci/expertise.yaml +0 -106
- package/src/core/experts/ci/question.md +0 -69
- package/src/core/experts/ci/self-improve.md +0 -100
- package/src/core/experts/ci/workflow.md +0 -145
- package/src/core/experts/codebase-query/expertise.yaml +0 -121
- package/src/core/experts/codebase-query/question.md +0 -73
- package/src/core/experts/codebase-query/self-improve.md +0 -105
- package/src/core/experts/compliance/expertise.yaml +0 -101
- package/src/core/experts/compliance/question.md +0 -56
- package/src/core/experts/compliance/self-improve.md +0 -106
- package/src/core/experts/compliance/workflow.md +0 -184
- package/src/core/experts/database/expertise.yaml +0 -109
- package/src/core/experts/database/question.md +0 -74
- package/src/core/experts/database/self-improve.md +0 -121
- package/src/core/experts/database/workflow.md +0 -234
- package/src/core/experts/datamigration/expertise.yaml +0 -141
- package/src/core/experts/datamigration/question.md +0 -56
- package/src/core/experts/datamigration/self-improve.md +0 -106
- package/src/core/experts/datamigration/workflow.md +0 -184
- package/src/core/experts/design/expertise.yaml +0 -116
- package/src/core/experts/design/question.md +0 -56
- package/src/core/experts/design/self-improve.md +0 -106
- package/src/core/experts/design/workflow.md +0 -184
- package/src/core/experts/devops/expertise.yaml +0 -116
- package/src/core/experts/devops/question.md +0 -68
- package/src/core/experts/devops/self-improve.md +0 -102
- package/src/core/experts/devops/workflow.md +0 -142
- package/src/core/experts/documentation/expertise.yaml +0 -126
- package/src/core/experts/documentation/question.md +0 -41
- package/src/core/experts/documentation/self-improve.md +0 -45
- package/src/core/experts/documentation/workflow.md +0 -55
- package/src/core/experts/epic-planner/expertise.yaml +0 -144
- package/src/core/experts/epic-planner/question.md +0 -56
- package/src/core/experts/epic-planner/self-improve.md +0 -106
- package/src/core/experts/epic-planner/workflow.md +0 -184
- package/src/core/experts/integrations/expertise.yaml +0 -113
- package/src/core/experts/integrations/question.md +0 -74
- package/src/core/experts/integrations/self-improve.md +0 -151
- package/src/core/experts/integrations/workflow.md +0 -246
- package/src/core/experts/mentor/expertise.yaml +0 -125
- package/src/core/experts/mentor/question.md +0 -56
- package/src/core/experts/mentor/self-improve.md +0 -106
- package/src/core/experts/mentor/workflow.md +0 -184
- package/src/core/experts/mobile/expertise.yaml +0 -136
- package/src/core/experts/mobile/question.md +0 -72
- package/src/core/experts/mobile/self-improve.md +0 -140
- package/src/core/experts/mobile/workflow.md +0 -240
- package/src/core/experts/monitoring/expertise.yaml +0 -132
- package/src/core/experts/monitoring/question.md +0 -76
- package/src/core/experts/monitoring/self-improve.md +0 -150
- package/src/core/experts/monitoring/workflow.md +0 -264
- package/src/core/experts/performance/expertise.yaml +0 -68
- package/src/core/experts/performance/question.md +0 -41
- package/src/core/experts/performance/self-improve.md +0 -45
- package/src/core/experts/performance/workflow.md +0 -61
- package/src/core/experts/product/expertise.yaml +0 -143
- package/src/core/experts/product/question.md +0 -56
- package/src/core/experts/product/self-improve.md +0 -106
- package/src/core/experts/product/workflow.md +0 -184
- package/src/core/experts/qa/expertise.yaml +0 -110
- package/src/core/experts/qa/question.md +0 -56
- package/src/core/experts/qa/self-improve.md +0 -106
- package/src/core/experts/qa/workflow.md +0 -184
- package/src/core/experts/readme-updater/expertise.yaml +0 -141
- package/src/core/experts/readme-updater/question.md +0 -56
- package/src/core/experts/readme-updater/self-improve.md +0 -106
- package/src/core/experts/readme-updater/workflow.md +0 -184
- package/src/core/experts/refactor/expertise.yaml +0 -135
- package/src/core/experts/refactor/question.md +0 -41
- package/src/core/experts/refactor/self-improve.md +0 -45
- package/src/core/experts/refactor/workflow.md +0 -57
- package/src/core/experts/research/expertise.yaml +0 -143
- package/src/core/experts/research/question.md +0 -56
- package/src/core/experts/research/self-improve.md +0 -106
- package/src/core/experts/research/workflow.md +0 -184
- package/src/core/experts/security/expertise.yaml +0 -117
- package/src/core/experts/security/question.md +0 -77
- package/src/core/experts/security/self-improve.md +0 -102
- package/src/core/experts/security/workflow.md +0 -152
- package/src/core/experts/templates/expertise-template.yaml +0 -67
- package/src/core/experts/templates/question-template.md +0 -56
- package/src/core/experts/templates/self-improve-template.md +0 -106
- package/src/core/experts/templates/workflow-template.md +0 -184
- package/src/core/experts/testing/expertise.yaml +0 -112
- package/src/core/experts/testing/question.md +0 -68
- package/src/core/experts/testing/self-improve.md +0 -102
- package/src/core/experts/testing/workflow.md +0 -143
- package/src/core/experts/ui/expertise.yaml +0 -133
- package/src/core/experts/ui/question.md +0 -74
- package/src/core/experts/ui/self-improve.md +0 -122
- package/src/core/experts/ui/workflow.md +0 -262
- package/src/core/knowledge/ads/ad-audit-checklist-scoring.md +0 -424
- package/src/core/knowledge/ads/ad-optimization-logic.md +0 -590
- package/src/core/knowledge/ads/ad-technical-specifications.md +0 -385
- package/src/core/knowledge/ads/definitive-advertising-reference-2026.md +0 -506
- package/src/core/knowledge/ads/paid-advertising-research-2026.md +0 -445
- package/src/core/profiles/COMPARISON.md +0 -170
- package/src/core/profiles/README.md +0 -178
- package/src/core/profiles/claude-code.yaml +0 -111
- package/src/core/profiles/codex.yaml +0 -103
- package/src/core/profiles/cursor.yaml +0 -134
- package/src/core/profiles/examples.js +0 -250
- package/src/core/profiles/loader.js +0 -235
- package/src/core/profiles/windsurf.yaml +0 -159
- package/src/core/skills/_learnings/README.md +0 -91
- package/src/core/skills/_learnings/_template.yaml +0 -106
- package/src/core/skills/_learnings/code-review.yaml +0 -118
- package/src/core/skills/_learnings/commit.yaml +0 -69
- package/src/core/skills/_learnings/story-writer.yaml +0 -71
- package/src/core/teams/backend.json +0 -41
- package/src/core/teams/builder-validator.json +0 -51
- package/src/core/teams/code-review.json +0 -41
- package/src/core/teams/frontend.json +0 -41
- package/src/core/teams/fullstack.json +0 -41
- package/src/core/teams/logic-audit.json +0 -53
- package/src/core/teams/perf-audit.json +0 -71
- package/src/core/teams/qa.json +0 -41
- package/src/core/teams/security-audit.json +0 -71
- package/src/core/teams/solo.json +0 -35
- package/src/core/teams/test-audit.json +0 -71
- package/src/core/templates/CONTEXT.md.example +0 -49
- package/src/core/templates/README-template.md +0 -16
- package/src/core/templates/adr-template.md +0 -28
- package/src/core/templates/agent-coordination-pattern.md +0 -38
- package/src/core/templates/agent-profile-template.md +0 -51
- package/src/core/templates/agileflow-metadata.json +0 -150
- package/src/core/templates/browser-qa-spec.yaml +0 -94
- package/src/core/templates/ci-workflow.yml +0 -74
- package/src/core/templates/claude-settings.advanced.example.json +0 -75
- package/src/core/templates/claude-settings.example.json +0 -26
- package/src/core/templates/command-documentation.md +0 -187
- package/src/core/templates/command-prerequisites.yaml +0 -169
- package/src/core/templates/comms-note-template.md +0 -24
- package/src/core/templates/damage-control-patterns.yaml +0 -243
- package/src/core/templates/environment.json +0 -18
- package/src/core/templates/epic-template.md +0 -27
- package/src/core/templates/plan-template.md +0 -125
- package/src/core/templates/preserve-rules-common.md +0 -107
- package/src/core/templates/preserve-rules.json +0 -42
- package/src/core/templates/proactive-action-spec.md +0 -29
- package/src/core/templates/product-brief.md +0 -136
- package/src/core/templates/quality-gate-priorities.md +0 -34
- package/src/core/templates/research-template.md +0 -44
- package/src/core/templates/session-harness-protocol.md +0 -128
- package/src/core/templates/session-state.json +0 -56
- package/src/core/templates/story-lifecycle.md +0 -213
- package/src/core/templates/story-template.md +0 -92
- package/src/core/templates/tdd-test-template.js +0 -241
- package/src/core/templates/worktrees-guide.md +0 -231
- package/tools/agileflow-npx.js +0 -52
- package/tools/cli/agileflow-cli.js +0 -72
- package/tools/cli/commands/config.js +0 -285
- package/tools/cli/commands/doctor.js +0 -496
- package/tools/cli/commands/list.js +0 -385
- package/tools/cli/commands/session.js +0 -1176
- package/tools/cli/commands/setup.js +0 -255
- package/tools/cli/commands/status.js +0 -101
- package/tools/cli/commands/tui.js +0 -56
- package/tools/cli/commands/uninstall.js +0 -155
- package/tools/cli/commands/update.js +0 -299
- package/tools/cli/installers/core/installer.js +0 -892
- package/tools/cli/installers/ide/_base-ide.js +0 -518
- package/tools/cli/installers/ide/_interface.js +0 -238
- package/tools/cli/installers/ide/claude-code.js +0 -432
- package/tools/cli/installers/ide/codex.js +0 -426
- package/tools/cli/installers/ide/cursor.js +0 -217
- package/tools/cli/installers/ide/manager.js +0 -222
- package/tools/cli/installers/ide/windsurf.js +0 -282
- package/tools/cli/lib/command-context.js +0 -382
- package/tools/cli/lib/config-manager.js +0 -446
- package/tools/cli/lib/content-injector.js +0 -969
- package/tools/cli/lib/content-transformer.js +0 -496
- package/tools/cli/lib/docs-setup.js +0 -464
- package/tools/cli/lib/error-handler.js +0 -165
- package/tools/cli/lib/ide-error-factory.js +0 -421
- package/tools/cli/lib/ide-errors.js +0 -367
- package/tools/cli/lib/ide-generator.js +0 -357
- package/tools/cli/lib/ide-health-monitor.js +0 -364
- package/tools/cli/lib/ide-registry.js +0 -297
- package/tools/cli/lib/npm-utils.js +0 -103
- package/tools/cli/lib/self-update.js +0 -148
- package/tools/cli/lib/ui.js +0 -211
- package/tools/cli/lib/utils.js +0 -87
- package/tools/cli/lib/validation-middleware.js +0 -491
- package/tools/cli/lib/version-checker.js +0 -95
- package/tools/postinstall.js +0 -190
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* bash-tool-damage-control.js - PreToolUse hook for Bash tool
|
|
5
|
-
*
|
|
6
|
-
* Validates bash commands against patterns in damage-control-patterns.yaml
|
|
7
|
-
* before execution. Part of AgileFlow's damage control system.
|
|
8
|
-
*
|
|
9
|
-
* Exit codes:
|
|
10
|
-
* 0 - Allow command (or ask via JSON output)
|
|
11
|
-
* 2 - Block command
|
|
12
|
-
*
|
|
13
|
-
* For "ask" response, output JSON to stdout:
|
|
14
|
-
* { "result": "ask", "message": "Confirm this action?" }
|
|
15
|
-
*
|
|
16
|
-
* Usage: Configured as PreToolUse hook in .claude/settings.json
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
const { createBashHook } = require('../lib/damage-control-utils');
|
|
20
|
-
|
|
21
|
-
// Run the hook using factory
|
|
22
|
-
createBashHook()();
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* edit-tool-damage-control.js - PreToolUse hook for Edit tool
|
|
5
|
-
*
|
|
6
|
-
* Validates file paths against access control patterns in damage-control-patterns.yaml
|
|
7
|
-
* before allowing file edits. Part of AgileFlow's damage control system.
|
|
8
|
-
*
|
|
9
|
-
* Exit codes:
|
|
10
|
-
* 0 - Allow operation
|
|
11
|
-
* 2 - Block operation
|
|
12
|
-
*
|
|
13
|
-
* Usage: Configured as PreToolUse hook in .claude/settings.json
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
const { createPathHook } = require('../lib/damage-control-utils');
|
|
17
|
-
|
|
18
|
-
// Run the hook using factory
|
|
19
|
-
createPathHook('edit')();
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
# AgileFlow Damage Control - Security Patterns
|
|
2
|
-
#
|
|
3
|
-
# This file defines patterns for blocking destructive commands and protecting
|
|
4
|
-
# sensitive paths. The damage control hooks read this file to determine
|
|
5
|
-
# whether to allow, block, or ask for confirmation before executing commands.
|
|
6
|
-
#
|
|
7
|
-
# Exit codes from hooks:
|
|
8
|
-
# 0 = Allow command to proceed
|
|
9
|
-
# 2 = Block command (show error to user)
|
|
10
|
-
#
|
|
11
|
-
# To ask for confirmation, hooks output JSON: {"result": "ask", "message": "..."}
|
|
12
|
-
|
|
13
|
-
# ============================================================================
|
|
14
|
-
# BASH TOOL PATTERNS
|
|
15
|
-
# ============================================================================
|
|
16
|
-
# Regex patterns to match against bash commands
|
|
17
|
-
# If matched with ask: false (or no ask key), command is BLOCKED
|
|
18
|
-
# If matched with ask: true, user is asked for confirmation
|
|
19
|
-
|
|
20
|
-
bashToolPatterns:
|
|
21
|
-
# Recursive/force deletion
|
|
22
|
-
- pattern: '\brm\s+-[rRf]'
|
|
23
|
-
reason: 'rm with recursive or force flags can destroy entire directories'
|
|
24
|
-
|
|
25
|
-
- pattern: '\brm\s+.*--no-preserve-root'
|
|
26
|
-
reason: 'rm with --no-preserve-root is catastrophically dangerous'
|
|
27
|
-
|
|
28
|
-
- pattern: '\brm\s+-rf\s+/'
|
|
29
|
-
reason: 'rm -rf on root directory would destroy the entire system'
|
|
30
|
-
|
|
31
|
-
# SQL destructive commands without WHERE clause
|
|
32
|
-
- pattern: 'DELETE\s+FROM\s+\w+\s*;'
|
|
33
|
-
reason: 'DELETE without WHERE clause would delete all records'
|
|
34
|
-
|
|
35
|
-
- pattern: 'TRUNCATE\s+(TABLE\s+)?\w+'
|
|
36
|
-
reason: 'TRUNCATE removes all data from table'
|
|
37
|
-
|
|
38
|
-
- pattern: 'DROP\s+(TABLE|DATABASE|SCHEMA|INDEX)'
|
|
39
|
-
reason: 'DROP commands permanently destroy database objects'
|
|
40
|
-
|
|
41
|
-
# Git force operations
|
|
42
|
-
- pattern: 'git\s+push\s+.*--force'
|
|
43
|
-
reason: 'Force push can overwrite remote history'
|
|
44
|
-
ask: true
|
|
45
|
-
|
|
46
|
-
- pattern: 'git\s+push\s+.*-f\b'
|
|
47
|
-
reason: 'Force push can overwrite remote history'
|
|
48
|
-
ask: true
|
|
49
|
-
|
|
50
|
-
- pattern: 'git\s+reset\s+--hard'
|
|
51
|
-
reason: 'Hard reset discards uncommitted changes'
|
|
52
|
-
ask: true
|
|
53
|
-
|
|
54
|
-
# Format/wipe operations
|
|
55
|
-
- pattern: '\bmkfs\b'
|
|
56
|
-
reason: 'mkfs formats filesystems, destroying all data'
|
|
57
|
-
|
|
58
|
-
- pattern: '\bdd\s+.*of=/dev/'
|
|
59
|
-
reason: 'dd writing to device can destroy disk data'
|
|
60
|
-
|
|
61
|
-
- pattern: '\bshred\b'
|
|
62
|
-
reason: 'shred permanently destroys file data'
|
|
63
|
-
|
|
64
|
-
# Credential/secret exposure
|
|
65
|
-
- pattern: 'cat\s+.*\.env'
|
|
66
|
-
reason: 'Displaying .env may expose secrets'
|
|
67
|
-
ask: true
|
|
68
|
-
|
|
69
|
-
- pattern: 'cat\s+.*/\.ssh/'
|
|
70
|
-
reason: 'Displaying SSH keys is a security risk'
|
|
71
|
-
|
|
72
|
-
- pattern: 'cat\s+.*/credentials'
|
|
73
|
-
reason: 'Displaying credentials files is a security risk'
|
|
74
|
-
|
|
75
|
-
# Cloud CLI destructive operations
|
|
76
|
-
- pattern: 'aws\s+s3\s+rm\s+--recursive'
|
|
77
|
-
reason: 'Recursive S3 delete can destroy entire buckets'
|
|
78
|
-
ask: true
|
|
79
|
-
|
|
80
|
-
- pattern: 'aws\s+ec2\s+terminate-instances'
|
|
81
|
-
reason: 'Terminating EC2 instances is irreversible'
|
|
82
|
-
ask: true
|
|
83
|
-
|
|
84
|
-
- pattern: 'gcloud\s+.*delete'
|
|
85
|
-
reason: 'GCloud delete operations may be destructive'
|
|
86
|
-
ask: true
|
|
87
|
-
|
|
88
|
-
# Docker cleanup commands
|
|
89
|
-
- pattern: 'docker\s+system\s+prune\s+-a'
|
|
90
|
-
reason: 'Docker prune -a removes all unused images'
|
|
91
|
-
ask: true
|
|
92
|
-
|
|
93
|
-
- pattern: 'docker\s+volume\s+rm'
|
|
94
|
-
reason: 'Docker volume removal may delete persistent data'
|
|
95
|
-
ask: true
|
|
96
|
-
|
|
97
|
-
# npm/package manager dangerous commands
|
|
98
|
-
- pattern: 'npm\s+unpublish'
|
|
99
|
-
reason: 'npm unpublish can break dependent packages'
|
|
100
|
-
ask: true
|
|
101
|
-
|
|
102
|
-
- pattern: 'npm\s+deprecate'
|
|
103
|
-
reason: 'npm deprecate affects package visibility'
|
|
104
|
-
ask: true
|
|
105
|
-
|
|
106
|
-
# ============================================================================
|
|
107
|
-
# ASK PATTERNS (CONFIRMATION REQUIRED)
|
|
108
|
-
# ============================================================================
|
|
109
|
-
# These patterns trigger a confirmation prompt but don't block by default
|
|
110
|
-
|
|
111
|
-
askPatterns:
|
|
112
|
-
- pattern: 'DELETE\s+FROM\s+\w+\s+WHERE'
|
|
113
|
-
reason: 'Deleting specific records - confirm data is correct'
|
|
114
|
-
|
|
115
|
-
- pattern: 'UPDATE\s+\w+\s+SET'
|
|
116
|
-
reason: 'Updating records - confirm scope is correct'
|
|
117
|
-
|
|
118
|
-
- pattern: 'npm\s+publish'
|
|
119
|
-
reason: 'Publishing to npm is permanent'
|
|
120
|
-
|
|
121
|
-
- pattern: 'git\s+tag\s+-d'
|
|
122
|
-
reason: 'Deleting git tags'
|
|
123
|
-
|
|
124
|
-
- pattern: 'kubectl\s+delete'
|
|
125
|
-
reason: 'Kubernetes delete operations'
|
|
126
|
-
|
|
127
|
-
# ============================================================================
|
|
128
|
-
# PATH PROTECTION
|
|
129
|
-
# ============================================================================
|
|
130
|
-
# Three protection levels:
|
|
131
|
-
# zeroAccessPaths: Cannot read, write, edit, or delete
|
|
132
|
-
# readOnlyPaths: Can read, cannot modify or delete
|
|
133
|
-
# noDeletePaths: Can read and modify, cannot delete
|
|
134
|
-
|
|
135
|
-
zeroAccessPaths:
|
|
136
|
-
# System credentials
|
|
137
|
-
- ~/.ssh/
|
|
138
|
-
- ~/.gnupg/
|
|
139
|
-
- ~/.aws/credentials
|
|
140
|
-
- ~/.config/gcloud/
|
|
141
|
-
|
|
142
|
-
# Environment secrets
|
|
143
|
-
- .env
|
|
144
|
-
- .env.local
|
|
145
|
-
- .env.production
|
|
146
|
-
- .env.*.local
|
|
147
|
-
|
|
148
|
-
# Secret files
|
|
149
|
-
- '**/secrets/**'
|
|
150
|
-
- '**/credentials/**'
|
|
151
|
-
- '**/*.pem'
|
|
152
|
-
- '**/*.key'
|
|
153
|
-
- '**/id_rsa'
|
|
154
|
-
- '**/id_ed25519'
|
|
155
|
-
|
|
156
|
-
readOnlyPaths:
|
|
157
|
-
# System config
|
|
158
|
-
- /etc/
|
|
159
|
-
- ~/.bashrc
|
|
160
|
-
- ~/.zshrc
|
|
161
|
-
- ~/.profile
|
|
162
|
-
|
|
163
|
-
# Package locks (should use npm install, not edit directly)
|
|
164
|
-
- package-lock.json
|
|
165
|
-
- yarn.lock
|
|
166
|
-
- pnpm-lock.yaml
|
|
167
|
-
|
|
168
|
-
# Git internals
|
|
169
|
-
- .git/
|
|
170
|
-
|
|
171
|
-
noDeletePaths:
|
|
172
|
-
# AgileFlow core
|
|
173
|
-
- .agileflow/
|
|
174
|
-
- .agileflow/config.json
|
|
175
|
-
- .agileflow/scripts/
|
|
176
|
-
|
|
177
|
-
# Claude Code hooks and commands
|
|
178
|
-
- .claude/
|
|
179
|
-
- .claude/hooks/
|
|
180
|
-
- .claude/commands/
|
|
181
|
-
- .claude/settings.json
|
|
182
|
-
|
|
183
|
-
# Project documentation (can edit, can't delete)
|
|
184
|
-
- docs/09-agents/status.json
|
|
185
|
-
- CLAUDE.md
|
|
186
|
-
- AGENTS.md
|
|
187
|
-
|
|
188
|
-
# ============================================================================
|
|
189
|
-
# AGILEFLOW-SPECIFIC PROTECTION
|
|
190
|
-
# ============================================================================
|
|
191
|
-
# Additional patterns specific to AgileFlow projects
|
|
192
|
-
|
|
193
|
-
agileflowPatterns:
|
|
194
|
-
# Protect AgileFlow infrastructure
|
|
195
|
-
- pattern: 'rm.*\.agileflow'
|
|
196
|
-
reason: 'Deleting .agileflow would break AgileFlow installation'
|
|
197
|
-
|
|
198
|
-
- pattern: 'rm.*\.claude'
|
|
199
|
-
reason: 'Deleting .claude would break Claude Code configuration'
|
|
200
|
-
|
|
201
|
-
- pattern: 'rm.*status\.json'
|
|
202
|
-
reason: 'Deleting status.json would lose story tracking data'
|
|
203
|
-
|
|
204
|
-
# Dangerous npm operations in AgileFlow context
|
|
205
|
-
- pattern: 'npm\s+uninstall\s+agileflow'
|
|
206
|
-
reason: 'Uninstalling AgileFlow - confirm this is intentional'
|
|
207
|
-
ask: true
|
|
208
|
-
|
|
209
|
-
# ============================================================================
|
|
210
|
-
# CONFIGURATION
|
|
211
|
-
# ============================================================================
|
|
212
|
-
# Settings for the damage control system
|
|
213
|
-
|
|
214
|
-
config:
|
|
215
|
-
# Log blocked commands for pattern refinement
|
|
216
|
-
logBlocked: true
|
|
217
|
-
logPath: .agileflow/logs/damage-control.log
|
|
218
|
-
|
|
219
|
-
# Show detailed reason when blocking
|
|
220
|
-
showBlockReason: true
|
|
221
|
-
|
|
222
|
-
# Timeout for hook execution (seconds)
|
|
223
|
-
hookTimeout: 5
|
|
224
|
-
|
|
225
|
-
# Enable/disable prompt hooks (AI-based evaluation)
|
|
226
|
-
promptHooksEnabled: false
|
|
227
|
-
promptHookMessage: 'Evaluate if this command could cause irreversible damage. Block if dangerous.'
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* write-tool-damage-control.js - PreToolUse hook for Write tool
|
|
5
|
-
*
|
|
6
|
-
* Validates file paths against access control patterns in damage-control-patterns.yaml
|
|
7
|
-
* before allowing file writes. Part of AgileFlow's damage control system.
|
|
8
|
-
*
|
|
9
|
-
* Exit codes:
|
|
10
|
-
* 0 - Allow operation
|
|
11
|
-
* 2 - Block operation
|
|
12
|
-
*
|
|
13
|
-
* Usage: Configured as PreToolUse hook in .claude/settings.json
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
const { createPathHook } = require('../lib/damage-control-utils');
|
|
17
|
-
|
|
18
|
-
// Run the hook using factory
|
|
19
|
-
createPathHook('write')();
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* damage-control-bash.js - PreToolUse hook for Bash tool
|
|
4
|
-
*
|
|
5
|
-
* Validates bash commands against patterns in damage-control-patterns.yaml
|
|
6
|
-
* before execution. Part of AgileFlow's damage control system.
|
|
7
|
-
*
|
|
8
|
-
* Exit codes:
|
|
9
|
-
* 0 - Allow command (or ask via JSON output)
|
|
10
|
-
* 2 - Block command
|
|
11
|
-
*
|
|
12
|
-
* For "ask" response, output JSON to stdout:
|
|
13
|
-
* { "result": "ask", "message": "Confirm this action?" }
|
|
14
|
-
*
|
|
15
|
-
* Usage: Configured as PreToolUse hook in .claude/settings.json
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
const fs = require('fs');
|
|
19
|
-
const path = require('path');
|
|
20
|
-
|
|
21
|
-
function loadDamageControlUtils() {
|
|
22
|
-
const candidates = [
|
|
23
|
-
path.join(__dirname, 'lib', 'damage-control-utils.js'),
|
|
24
|
-
path.join(process.cwd(), '.agileflow', 'scripts', 'lib', 'damage-control-utils.js'),
|
|
25
|
-
];
|
|
26
|
-
|
|
27
|
-
for (const candidate of candidates) {
|
|
28
|
-
try {
|
|
29
|
-
if (fs.existsSync(candidate)) {
|
|
30
|
-
return require(candidate);
|
|
31
|
-
}
|
|
32
|
-
} catch (e) {
|
|
33
|
-
// Try next candidate
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const utils = loadDamageControlUtils();
|
|
41
|
-
if (!utils || typeof utils.createBashHook !== 'function') {
|
|
42
|
-
// Fail-open: never block Bash tool because hook bootstrap failed.
|
|
43
|
-
process.exit(0);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
try {
|
|
47
|
-
utils.createBashHook()();
|
|
48
|
-
} catch (e) {
|
|
49
|
-
// Fail-open on runtime errors to avoid breaking CLI workflows.
|
|
50
|
-
process.exit(0);
|
|
51
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* damage-control-edit.js - PreToolUse hook for Edit tool
|
|
4
|
-
*
|
|
5
|
-
* Validates file paths against access control patterns in damage-control-patterns.yaml
|
|
6
|
-
* before allowing file edits. Part of AgileFlow's damage control system.
|
|
7
|
-
*
|
|
8
|
-
* Exit codes:
|
|
9
|
-
* 0 - Allow operation
|
|
10
|
-
* 2 - Block operation
|
|
11
|
-
*
|
|
12
|
-
* Usage: Configured as PreToolUse hook in .claude/settings.json
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
const fs = require('fs');
|
|
16
|
-
const path = require('path');
|
|
17
|
-
|
|
18
|
-
function loadDamageControlUtils() {
|
|
19
|
-
const candidates = [
|
|
20
|
-
path.join(__dirname, 'lib', 'damage-control-utils.js'),
|
|
21
|
-
path.join(process.cwd(), '.agileflow', 'scripts', 'lib', 'damage-control-utils.js'),
|
|
22
|
-
];
|
|
23
|
-
|
|
24
|
-
for (const candidate of candidates) {
|
|
25
|
-
try {
|
|
26
|
-
if (fs.existsSync(candidate)) {
|
|
27
|
-
return require(candidate);
|
|
28
|
-
}
|
|
29
|
-
} catch (e) {
|
|
30
|
-
// Try next candidate
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const utils = loadDamageControlUtils();
|
|
38
|
-
if (!utils || typeof utils.createPathHook !== 'function') {
|
|
39
|
-
// Fail-open: never block Edit tool because hook bootstrap failed.
|
|
40
|
-
process.exit(0);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
utils.createPathHook('edit')();
|
|
45
|
-
} catch (e) {
|
|
46
|
-
// Fail-open on runtime errors to avoid breaking CLI workflows.
|
|
47
|
-
process.exit(0);
|
|
48
|
-
}
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* damage-control-multi-agent.js - PreToolUse hook for Agent Teams tools
|
|
4
|
-
*
|
|
5
|
-
* Validates TeamCreate/TeamDelete, TaskCreate/TaskUpdate, and SendMessage
|
|
6
|
-
* operations against safety rules when native Agent Teams is enabled.
|
|
7
|
-
*
|
|
8
|
-
* Protection layers:
|
|
9
|
-
* 1. Tool validation: Ensure Team/Task operations have valid parameters
|
|
10
|
-
* 2. Message schema: SendMessage content is validated against allowlist
|
|
11
|
-
* 3. Rate limiting: Prevents runaway agent spawning
|
|
12
|
-
* 4. Permission checks: Agents cannot escalate beyond their own tool access
|
|
13
|
-
*
|
|
14
|
-
* Exit codes:
|
|
15
|
-
* 0 - Allow operation (or ask via JSON output)
|
|
16
|
-
* 2 - Block operation
|
|
17
|
-
*
|
|
18
|
-
* Usage: Configured as PreToolUse hook in .claude/settings.json
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
const fs = require('fs');
|
|
22
|
-
const path = require('path');
|
|
23
|
-
|
|
24
|
-
function loadDamageControlUtils() {
|
|
25
|
-
const candidates = [
|
|
26
|
-
path.join(__dirname, 'lib', 'damage-control-utils.js'),
|
|
27
|
-
path.join(process.cwd(), '.agileflow', 'scripts', 'lib', 'damage-control-utils.js'),
|
|
28
|
-
];
|
|
29
|
-
|
|
30
|
-
for (const candidate of candidates) {
|
|
31
|
-
try {
|
|
32
|
-
if (fs.existsSync(candidate)) {
|
|
33
|
-
return require(candidate);
|
|
34
|
-
}
|
|
35
|
-
} catch (e) {
|
|
36
|
-
// Try next candidate
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const utils = loadDamageControlUtils();
|
|
44
|
-
if (!utils || typeof utils.runDamageControlHook !== 'function') {
|
|
45
|
-
// Fail-open: never block tools because hook bootstrap failed
|
|
46
|
-
process.exit(0);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Tools this hook handles
|
|
50
|
-
const MULTI_AGENT_TOOLS = [
|
|
51
|
-
'TeamCreate',
|
|
52
|
-
'TeamDelete',
|
|
53
|
-
'TaskCreate',
|
|
54
|
-
'TaskUpdate',
|
|
55
|
-
'TaskGet',
|
|
56
|
-
'TaskList',
|
|
57
|
-
'SendMessage',
|
|
58
|
-
];
|
|
59
|
-
|
|
60
|
-
// Maximum number of teams that can be active simultaneously
|
|
61
|
-
const MAX_CONCURRENT_TEAMS = 4;
|
|
62
|
-
|
|
63
|
-
// Maximum teammates per team
|
|
64
|
-
const MAX_TEAMMATES_PER_TEAM = 8;
|
|
65
|
-
|
|
66
|
-
// SendMessage content size limit (10KB)
|
|
67
|
-
const MAX_MESSAGE_SIZE = 10240;
|
|
68
|
-
|
|
69
|
-
// Blocked patterns in SendMessage content
|
|
70
|
-
const BLOCKED_MESSAGE_PATTERNS = [
|
|
71
|
-
// Command injection attempts
|
|
72
|
-
/\$\{.*\}/, // Template injection ${...}
|
|
73
|
-
/`[^`]*`/, // Backtick execution
|
|
74
|
-
/\bexec\s*\(/, // exec() calls
|
|
75
|
-
/\beval\s*\(/, // eval() calls
|
|
76
|
-
// Dangerous git operations
|
|
77
|
-
/\bgit\s+push\s+--force\b/i,
|
|
78
|
-
/\bgit\s+reset\s+--hard\b/i,
|
|
79
|
-
// System destructive commands
|
|
80
|
-
/\brm\s+-rf\s+\//,
|
|
81
|
-
/\bdrop\s+database\b/i,
|
|
82
|
-
/\bdrop\s+table\b/i,
|
|
83
|
-
];
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Validate a TeamCreate operation
|
|
87
|
-
*/
|
|
88
|
-
function validateTeamCreate(input) {
|
|
89
|
-
const toolInput = input.tool_input || input;
|
|
90
|
-
|
|
91
|
-
// Check teammate count
|
|
92
|
-
const teammates = toolInput.teammates || [];
|
|
93
|
-
if (teammates.length > MAX_TEAMMATES_PER_TEAM) {
|
|
94
|
-
return {
|
|
95
|
-
action: 'block',
|
|
96
|
-
reason: `Team size ${teammates.length} exceeds maximum (${MAX_TEAMMATES_PER_TEAM})`,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Check for empty team
|
|
101
|
-
if (teammates.length === 0) {
|
|
102
|
-
return {
|
|
103
|
-
action: 'ask',
|
|
104
|
-
reason: 'Creating a team with no teammates. Continue?',
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return { action: 'allow' };
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Validate a SendMessage operation
|
|
113
|
-
*/
|
|
114
|
-
function validateSendMessage(input) {
|
|
115
|
-
const toolInput = input.tool_input || input;
|
|
116
|
-
const content = toolInput.message || toolInput.content || '';
|
|
117
|
-
|
|
118
|
-
// Check message size
|
|
119
|
-
if (content.length > MAX_MESSAGE_SIZE) {
|
|
120
|
-
return {
|
|
121
|
-
action: 'block',
|
|
122
|
-
reason: `Message size (${content.length} bytes) exceeds limit (${MAX_MESSAGE_SIZE})`,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// Check for blocked patterns in content
|
|
127
|
-
for (const pattern of BLOCKED_MESSAGE_PATTERNS) {
|
|
128
|
-
if (pattern.test(content)) {
|
|
129
|
-
return {
|
|
130
|
-
action: 'block',
|
|
131
|
-
reason: 'Message contains potentially dangerous content pattern',
|
|
132
|
-
detail: `Matched: ${pattern.source}`,
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
return { action: 'allow' };
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Validate TaskCreate/TaskUpdate operations
|
|
142
|
-
*/
|
|
143
|
-
function validateTaskOperation(input) {
|
|
144
|
-
const toolInput = input.tool_input || input;
|
|
145
|
-
const description = toolInput.description || toolInput.prompt || '';
|
|
146
|
-
|
|
147
|
-
// Check for secrets in task descriptions
|
|
148
|
-
const secretPatterns = [
|
|
149
|
-
/\b(?:API_KEY|SECRET|PASSWORD|TOKEN|CREDENTIALS)\s*[:=]\s*\S+/i,
|
|
150
|
-
/\bsk-[a-zA-Z0-9]{20,}/, // API keys starting with sk-
|
|
151
|
-
/\bghp_[a-zA-Z0-9]{36}/, // GitHub personal access tokens
|
|
152
|
-
/\bnpm_[a-zA-Z0-9]{36}/, // npm tokens
|
|
153
|
-
];
|
|
154
|
-
|
|
155
|
-
for (const pattern of secretPatterns) {
|
|
156
|
-
if (pattern.test(description)) {
|
|
157
|
-
return {
|
|
158
|
-
action: 'block',
|
|
159
|
-
reason: 'Task description appears to contain secrets or credentials',
|
|
160
|
-
detail: 'Never pass secrets in task parameters. Use environment variables instead.',
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
return { action: 'allow' };
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
try {
|
|
169
|
-
utils.runDamageControlHook({
|
|
170
|
-
getInputValue: input => {
|
|
171
|
-
// Check if this is a multi-agent tool
|
|
172
|
-
const toolName = input.tool_name || '';
|
|
173
|
-
if (!MULTI_AGENT_TOOLS.includes(toolName)) {
|
|
174
|
-
return null; // Not our tool - allow
|
|
175
|
-
}
|
|
176
|
-
return input;
|
|
177
|
-
},
|
|
178
|
-
|
|
179
|
-
loadConfig: () => {
|
|
180
|
-
// Multi-agent hook uses inline rules, not YAML patterns
|
|
181
|
-
return {
|
|
182
|
-
maxTeams: MAX_CONCURRENT_TEAMS,
|
|
183
|
-
maxTeammates: MAX_TEAMMATES_PER_TEAM,
|
|
184
|
-
maxMessageSize: MAX_MESSAGE_SIZE,
|
|
185
|
-
};
|
|
186
|
-
},
|
|
187
|
-
|
|
188
|
-
validate: (input, config) => {
|
|
189
|
-
const toolName = input.tool_name || '';
|
|
190
|
-
|
|
191
|
-
switch (toolName) {
|
|
192
|
-
case 'TeamCreate':
|
|
193
|
-
return validateTeamCreate(input);
|
|
194
|
-
|
|
195
|
-
case 'TeamDelete':
|
|
196
|
-
// Always ask before deleting a team
|
|
197
|
-
return {
|
|
198
|
-
action: 'ask',
|
|
199
|
-
reason: 'Deleting a team will stop all teammates. Continue?',
|
|
200
|
-
};
|
|
201
|
-
|
|
202
|
-
case 'SendMessage':
|
|
203
|
-
return validateSendMessage(input);
|
|
204
|
-
|
|
205
|
-
case 'TaskCreate':
|
|
206
|
-
case 'TaskUpdate':
|
|
207
|
-
return validateTaskOperation(input);
|
|
208
|
-
|
|
209
|
-
case 'TaskGet':
|
|
210
|
-
case 'TaskList':
|
|
211
|
-
// Read operations are always allowed
|
|
212
|
-
return { action: 'allow' };
|
|
213
|
-
|
|
214
|
-
default:
|
|
215
|
-
return { action: 'allow' };
|
|
216
|
-
}
|
|
217
|
-
},
|
|
218
|
-
|
|
219
|
-
onBlock: (result, input) => {
|
|
220
|
-
const toolName = input.tool_name || 'unknown';
|
|
221
|
-
utils.outputBlocked(
|
|
222
|
-
`${toolName}: ${result.reason}`,
|
|
223
|
-
result.detail || '',
|
|
224
|
-
'Multi-agent damage control'
|
|
225
|
-
);
|
|
226
|
-
},
|
|
227
|
-
});
|
|
228
|
-
} catch (e) {
|
|
229
|
-
// Fail-open on runtime errors
|
|
230
|
-
process.exit(0);
|
|
231
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* damage-control-write.js - PreToolUse hook for Write tool
|
|
4
|
-
*
|
|
5
|
-
* Validates file paths against access control patterns in damage-control-patterns.yaml
|
|
6
|
-
* before allowing file writes. Part of AgileFlow's damage control system.
|
|
7
|
-
*
|
|
8
|
-
* Exit codes:
|
|
9
|
-
* 0 - Allow operation
|
|
10
|
-
* 2 - Block operation
|
|
11
|
-
*
|
|
12
|
-
* Usage: Configured as PreToolUse hook in .claude/settings.json
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
const fs = require('fs');
|
|
16
|
-
const path = require('path');
|
|
17
|
-
|
|
18
|
-
function loadDamageControlUtils() {
|
|
19
|
-
const candidates = [
|
|
20
|
-
path.join(__dirname, 'lib', 'damage-control-utils.js'),
|
|
21
|
-
path.join(process.cwd(), '.agileflow', 'scripts', 'lib', 'damage-control-utils.js'),
|
|
22
|
-
];
|
|
23
|
-
|
|
24
|
-
for (const candidate of candidates) {
|
|
25
|
-
try {
|
|
26
|
-
if (fs.existsSync(candidate)) {
|
|
27
|
-
return require(candidate);
|
|
28
|
-
}
|
|
29
|
-
} catch (e) {
|
|
30
|
-
// Try next candidate
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const utils = loadDamageControlUtils();
|
|
38
|
-
if (!utils || typeof utils.createPathHook !== 'function') {
|
|
39
|
-
// Fail-open: never block Write tool because hook bootstrap failed.
|
|
40
|
-
process.exit(0);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
utils.createPathHook('write')();
|
|
45
|
-
} catch (e) {
|
|
46
|
-
// Fail-open on runtime errors to avoid breaking CLI workflows.
|
|
47
|
-
process.exit(0);
|
|
48
|
-
}
|