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,201 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* worktree-operations.js - Git worktree creation and management
|
|
3
|
-
*
|
|
4
|
-
* Provides worktree creation with timeout, cleanup, and thread type detection.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const fs = require('fs');
|
|
8
|
-
const path = require('path');
|
|
9
|
-
const { spawnSync, spawn } = require('child_process');
|
|
10
|
-
|
|
11
|
-
const { getProjectRoot } = require('./paths');
|
|
12
|
-
|
|
13
|
-
const ROOT = getProjectRoot();
|
|
14
|
-
|
|
15
|
-
// Thread type enum values
|
|
16
|
-
const THREAD_TYPES = ['base', 'parallel', 'chained', 'fusion', 'big', 'long'];
|
|
17
|
-
|
|
18
|
-
// Default worktree timeout (2 minutes)
|
|
19
|
-
const DEFAULT_WORKTREE_TIMEOUT_MS = 120000;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Check if a directory is a git worktree (not the main repo).
|
|
23
|
-
* In a worktree, .git is a file pointing to the main repo's .git/worktrees/<name>
|
|
24
|
-
* In the main repo, .git is a directory.
|
|
25
|
-
*
|
|
26
|
-
* @param {string} dir - Directory to check
|
|
27
|
-
* @returns {boolean} True if dir is a git worktree
|
|
28
|
-
*/
|
|
29
|
-
function isGitWorktree(dir) {
|
|
30
|
-
const gitPath = path.join(dir, '.git');
|
|
31
|
-
try {
|
|
32
|
-
const stat = fs.lstatSync(gitPath);
|
|
33
|
-
// In a worktree, .git is a file containing "gitdir: /path/to/main/.git/worktrees/<name>"
|
|
34
|
-
// In the main repo, .git is a directory
|
|
35
|
-
return stat.isFile();
|
|
36
|
-
} catch (e) {
|
|
37
|
-
// .git doesn't exist - not a git repo at all
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Auto-detect thread type from context
|
|
44
|
-
* @param {Object} session - Session object
|
|
45
|
-
* @param {boolean} [isWorktree=false] - Whether this is a worktree
|
|
46
|
-
* @returns {string} Thread type
|
|
47
|
-
*/
|
|
48
|
-
function detectThreadType(session, isWorktree = false) {
|
|
49
|
-
// Worktree sessions are parallel threads
|
|
50
|
-
if (isWorktree || (session && !session.is_main)) {
|
|
51
|
-
return 'parallel';
|
|
52
|
-
}
|
|
53
|
-
// Default to base
|
|
54
|
-
return 'base';
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Display progress feedback during long operations.
|
|
59
|
-
* Returns a function to stop the progress indicator.
|
|
60
|
-
* Uses stderr to avoid corrupting stdout JSON output from callers.
|
|
61
|
-
*
|
|
62
|
-
* @param {string} message - Progress message
|
|
63
|
-
* @returns {function} Stop function
|
|
64
|
-
*/
|
|
65
|
-
function progressIndicator(message) {
|
|
66
|
-
const { FeedbackSpinner } = require('./feedback');
|
|
67
|
-
const spinner = new FeedbackSpinner(message, { stream: process.stderr });
|
|
68
|
-
spinner.start();
|
|
69
|
-
return () => spinner.succeed();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Create a git worktree with timeout and progress feedback.
|
|
74
|
-
* Uses async spawn instead of spawnSync for timeout support.
|
|
75
|
-
*
|
|
76
|
-
* @param {string} worktreePath - Path for the new worktree
|
|
77
|
-
* @param {string} branchName - Branch name for the worktree
|
|
78
|
-
* @param {number} timeoutMs - Timeout in milliseconds
|
|
79
|
-
* @returns {Promise<{stdout: string, stderr: string}>}
|
|
80
|
-
*/
|
|
81
|
-
function createWorktreeWithTimeout(
|
|
82
|
-
worktreePath,
|
|
83
|
-
branchName,
|
|
84
|
-
timeoutMs = DEFAULT_WORKTREE_TIMEOUT_MS
|
|
85
|
-
) {
|
|
86
|
-
return new Promise((resolve, reject) => {
|
|
87
|
-
let stdout = '';
|
|
88
|
-
let stderr = '';
|
|
89
|
-
let timedOut = false;
|
|
90
|
-
|
|
91
|
-
const proc = spawn('git', ['worktree', 'add', worktreePath, branchName], {
|
|
92
|
-
cwd: ROOT,
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
const timer = setTimeout(() => {
|
|
96
|
-
timedOut = true;
|
|
97
|
-
proc.kill('SIGTERM');
|
|
98
|
-
// Give it a moment to terminate gracefully, then SIGKILL
|
|
99
|
-
setTimeout(() => {
|
|
100
|
-
try {
|
|
101
|
-
proc.kill('SIGKILL');
|
|
102
|
-
} catch (e) {
|
|
103
|
-
// Process may have already exited
|
|
104
|
-
}
|
|
105
|
-
}, 1000);
|
|
106
|
-
}, timeoutMs);
|
|
107
|
-
|
|
108
|
-
proc.stdout.on('data', data => {
|
|
109
|
-
stdout += data.toString();
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
proc.stderr.on('data', data => {
|
|
113
|
-
stderr += data.toString();
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
proc.on('error', err => {
|
|
117
|
-
clearTimeout(timer);
|
|
118
|
-
reject(new Error(`Failed to spawn git: ${err.message}`));
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
proc.on('close', (code, signal) => {
|
|
122
|
-
clearTimeout(timer);
|
|
123
|
-
|
|
124
|
-
if (timedOut) {
|
|
125
|
-
reject(
|
|
126
|
-
new Error(
|
|
127
|
-
`Worktree creation timed out after ${timeoutMs / 1000}s. Try increasing timeout or check disk space.`
|
|
128
|
-
)
|
|
129
|
-
);
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
if (signal) {
|
|
134
|
-
reject(new Error(`Worktree creation was terminated by signal: ${signal}`));
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
if (code === 0) {
|
|
139
|
-
resolve({ stdout, stderr });
|
|
140
|
-
} else {
|
|
141
|
-
reject(new Error(`Failed to create worktree: ${stderr || 'unknown error'}`));
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Clean up partial state after failed worktree creation.
|
|
149
|
-
* Removes partial directory and prunes git worktree registry.
|
|
150
|
-
*
|
|
151
|
-
* @param {string} worktreePath - Path of the failed worktree
|
|
152
|
-
* @param {string} branchName - Branch name that was being used
|
|
153
|
-
* @param {boolean} branchCreatedByUs - Whether we created the branch
|
|
154
|
-
*/
|
|
155
|
-
function cleanupFailedWorktree(worktreePath, branchName, branchCreatedByUs = false) {
|
|
156
|
-
// Remove partial worktree directory if it exists
|
|
157
|
-
if (fs.existsSync(worktreePath)) {
|
|
158
|
-
try {
|
|
159
|
-
fs.rmSync(worktreePath, { recursive: true, force: true });
|
|
160
|
-
process.stderr.write(`🧹 Cleaned up partial worktree directory\n`);
|
|
161
|
-
} catch (e) {
|
|
162
|
-
process.stderr.write(`⚠️ Could not remove partial directory: ${e.message}\n`);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// Prune git worktree registry to clean up any references
|
|
167
|
-
try {
|
|
168
|
-
spawnSync('git', ['worktree', 'prune'], { cwd: ROOT, encoding: 'utf8' });
|
|
169
|
-
} catch (e) {
|
|
170
|
-
// Non-fatal
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// If we created the branch and the worktree failed, optionally clean up the branch too
|
|
174
|
-
if (branchCreatedByUs) {
|
|
175
|
-
try {
|
|
176
|
-
const result = spawnSync('git', ['branch', '-d', branchName], {
|
|
177
|
-
cwd: ROOT,
|
|
178
|
-
encoding: 'utf8',
|
|
179
|
-
});
|
|
180
|
-
if (result.status === 0) {
|
|
181
|
-
process.stderr.write(`🧹 Cleaned up unused branch: ${branchName}\n`);
|
|
182
|
-
}
|
|
183
|
-
} catch (e) {
|
|
184
|
-
// Non-fatal - branch may have commits or not exist
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
module.exports = {
|
|
190
|
-
// Constants
|
|
191
|
-
THREAD_TYPES,
|
|
192
|
-
DEFAULT_WORKTREE_TIMEOUT_MS,
|
|
193
|
-
// Detection
|
|
194
|
-
isGitWorktree,
|
|
195
|
-
detectThreadType,
|
|
196
|
-
// Progress indicator
|
|
197
|
-
progressIndicator,
|
|
198
|
-
// Worktree management
|
|
199
|
-
createWorktreeWithTimeout,
|
|
200
|
-
cleanupFailedWorktree,
|
|
201
|
-
};
|
package/lib/yaml-utils.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Centralized YAML parsing utilities with security guarantees.
|
|
3
|
-
*
|
|
4
|
-
* Security Note (js-yaml v4.x):
|
|
5
|
-
* - yaml.load() is SAFE by default in v4+ (unlike v3.x)
|
|
6
|
-
* - Dangerous JavaScript types (functions, regexps) are NOT supported
|
|
7
|
-
* - Only JSON-compatible types are parsed
|
|
8
|
-
* - See: https://github.com/nodeca/js-yaml/blob/master/migrate_v3_to_v4.md
|
|
9
|
-
*
|
|
10
|
-
* This wrapper provides:
|
|
11
|
-
* - Explicit security documentation
|
|
12
|
-
* - Input validation
|
|
13
|
-
* - Consistent error handling
|
|
14
|
-
* - Future-proofing for library changes
|
|
15
|
-
* - Lazy loading: js-yaml is only loaded when YAML parsing is actually needed,
|
|
16
|
-
* so scripts that import paths.js but never parse YAML won't crash if
|
|
17
|
-
* js-yaml isn't installed in the user's project.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
const path = require('path');
|
|
21
|
-
|
|
22
|
-
// Lazy-loaded js-yaml instance (resolved on first use)
|
|
23
|
-
let _yaml = null;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Resolve and load js-yaml from multiple locations.
|
|
27
|
-
* Called lazily on first actual YAML operation.
|
|
28
|
-
* @returns {Object} The js-yaml module
|
|
29
|
-
* @throws {Error} If js-yaml cannot be found anywhere
|
|
30
|
-
*/
|
|
31
|
-
function getYaml() {
|
|
32
|
-
if (_yaml) return _yaml;
|
|
33
|
-
|
|
34
|
-
// Resolve js-yaml from multiple locations:
|
|
35
|
-
// 1. User's project node_modules (may not exist)
|
|
36
|
-
// 2. AgileFlow npm package node_modules (always available when run via npx)
|
|
37
|
-
// 3. Parent of .agileflow directory
|
|
38
|
-
const tryPaths = [
|
|
39
|
-
'js-yaml', // Standard require (user's node_modules or global)
|
|
40
|
-
path.join(__dirname, '..', 'node_modules', 'js-yaml'), // AgileFlow package
|
|
41
|
-
path.join(__dirname, '..', '..', 'node_modules', 'js-yaml'), // .agileflow/../node_modules
|
|
42
|
-
];
|
|
43
|
-
|
|
44
|
-
for (const tryPath of tryPaths) {
|
|
45
|
-
try {
|
|
46
|
-
_yaml = require(tryPath);
|
|
47
|
-
return _yaml;
|
|
48
|
-
} catch (_e) {
|
|
49
|
-
// Continue to next path
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
throw new Error(
|
|
54
|
-
'js-yaml not found. Please run: npm install js-yaml\n' +
|
|
55
|
-
'Or reinstall AgileFlow: npx agileflow setup --force'
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Safely parse YAML content. Uses js-yaml's DEFAULT_SCHEMA which is
|
|
61
|
-
* safe by default in v4+ (does not execute arbitrary JavaScript).
|
|
62
|
-
*
|
|
63
|
-
* @param {string} content - YAML string to parse
|
|
64
|
-
* @param {Object} options - Optional yaml.load options
|
|
65
|
-
* @returns {any} Parsed YAML content (object, array, or primitive)
|
|
66
|
-
* @throws {yaml.YAMLException} If YAML is malformed
|
|
67
|
-
*/
|
|
68
|
-
function safeLoad(content, options = {}) {
|
|
69
|
-
if (typeof content !== 'string') {
|
|
70
|
-
throw new TypeError('YAML content must be a string');
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
const yaml = getYaml();
|
|
74
|
-
// In js-yaml v4+, load() uses DEFAULT_SCHEMA which is safe.
|
|
75
|
-
// Explicitly pass schema to make the security guarantee clear
|
|
76
|
-
// and protect against future library changes.
|
|
77
|
-
return yaml.load(content, {
|
|
78
|
-
schema: yaml.DEFAULT_SCHEMA,
|
|
79
|
-
...options,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Safely parse all YAML documents in a multi-document file.
|
|
85
|
-
*
|
|
86
|
-
* @param {string} content - YAML string containing one or more documents
|
|
87
|
-
* @param {Object} options - Optional yaml.loadAll options
|
|
88
|
-
* @returns {any[]} Array of parsed YAML documents
|
|
89
|
-
* @throws {yaml.YAMLException} If YAML is malformed
|
|
90
|
-
*/
|
|
91
|
-
function safeLoadAll(content, options = {}) {
|
|
92
|
-
if (typeof content !== 'string') {
|
|
93
|
-
throw new TypeError('YAML content must be a string');
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const yaml = getYaml();
|
|
97
|
-
const documents = [];
|
|
98
|
-
yaml.loadAll(content, doc => documents.push(doc), { schema: yaml.DEFAULT_SCHEMA, ...options });
|
|
99
|
-
return documents;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Safely serialize data to YAML string.
|
|
104
|
-
*
|
|
105
|
-
* @param {any} data - Data to serialize
|
|
106
|
-
* @param {Object} options - Optional yaml.dump options
|
|
107
|
-
* @returns {string} YAML string representation
|
|
108
|
-
*/
|
|
109
|
-
function safeDump(data, options = {}) {
|
|
110
|
-
const yaml = getYaml();
|
|
111
|
-
return yaml.dump(data, {
|
|
112
|
-
schema: yaml.DEFAULT_SCHEMA,
|
|
113
|
-
...options,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Test if js-yaml is configured securely (no JavaScript type support).
|
|
119
|
-
* This function is used in security tests to verify the library version
|
|
120
|
-
* and configuration.
|
|
121
|
-
*
|
|
122
|
-
* @returns {boolean} True if the configuration is secure
|
|
123
|
-
*/
|
|
124
|
-
function isSecureConfiguration() {
|
|
125
|
-
// Attempt to parse YAML with JavaScript function syntax
|
|
126
|
-
// This should NOT execute any code in v4+
|
|
127
|
-
const maliciousYaml = `
|
|
128
|
-
test: !!js/function 'function() { return "pwned"; }'
|
|
129
|
-
regex: !!js/regexp /test/i
|
|
130
|
-
undef: !!js/undefined ''
|
|
131
|
-
`;
|
|
132
|
-
|
|
133
|
-
try {
|
|
134
|
-
const result = safeLoad(maliciousYaml);
|
|
135
|
-
// If we get here without executing code, and the values are
|
|
136
|
-
// either strings or undefined (not actual functions), we're safe
|
|
137
|
-
if (typeof result.test === 'function') {
|
|
138
|
-
return false; // Unsafe: function was instantiated
|
|
139
|
-
}
|
|
140
|
-
if (result.regex instanceof RegExp) {
|
|
141
|
-
return false; // Unsafe: regex was instantiated
|
|
142
|
-
}
|
|
143
|
-
// Values should be undefined or error out due to unknown tags
|
|
144
|
-
return true;
|
|
145
|
-
} catch (e) {
|
|
146
|
-
// YAMLException for unknown tags is the expected safe behavior
|
|
147
|
-
if (e.name === 'YAMLException') {
|
|
148
|
-
return true;
|
|
149
|
-
}
|
|
150
|
-
throw e;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// Use a getter for the yaml export so tests can access the raw module
|
|
155
|
-
// without triggering eager loading at require() time
|
|
156
|
-
Object.defineProperty(module.exports, 'yaml', {
|
|
157
|
-
get: () => getYaml(),
|
|
158
|
-
enumerable: true,
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
module.exports.safeLoad = safeLoad;
|
|
162
|
-
module.exports.safeLoadAll = safeLoadAll;
|
|
163
|
-
module.exports.safeDump = safeDump;
|
|
164
|
-
module.exports.isSecureConfiguration = isSecureConfiguration;
|
package/scripts/README.md
DELETED
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
# AgileFlow Release Scripts
|
|
2
|
-
|
|
3
|
-
Automated scripts to streamline the release process and reduce cognitive strain.
|
|
4
|
-
|
|
5
|
-
## 📦 Release Script
|
|
6
|
-
|
|
7
|
-
**Purpose**: Automate the entire release process from version bump to npm publish.
|
|
8
|
-
|
|
9
|
-
**Usage**:
|
|
10
|
-
```bash
|
|
11
|
-
./scripts/release.sh <version> <release-title>
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
**Example**:
|
|
15
|
-
```bash
|
|
16
|
-
./scripts/release.sh 2.32.0 "Dynamic Content Injection System"
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**What it does**:
|
|
20
|
-
1. ✅ Bumps version in `packages/cli/package.json`
|
|
21
|
-
2. ✅ Bumps version in root `package.json`
|
|
22
|
-
3. ⏸️ Prompts you to update `CHANGELOG.md` manually (then press ENTER)
|
|
23
|
-
4. ✅ Commits changes with conventional commit message
|
|
24
|
-
5. ✅ Pushes to GitHub
|
|
25
|
-
6. ✅ Creates and pushes git tag `vX.Y.Z`
|
|
26
|
-
7. ✅ Extracts changelog notes for this version
|
|
27
|
-
8. ✅ Creates GitHub release with extracted notes
|
|
28
|
-
9. ✅ GitHub Actions automatically publishes to npm
|
|
29
|
-
|
|
30
|
-
**Benefits**:
|
|
31
|
-
- No manual steps to remember
|
|
32
|
-
- Consistent release process every time
|
|
33
|
-
- Automatic changelog extraction
|
|
34
|
-
- Automatic tag creation
|
|
35
|
-
- Zero chance of forgetting to push the tag
|
|
36
|
-
|
|
37
|
-
## 🎯 Quick Release Flow
|
|
38
|
-
|
|
39
|
-
For a typical release:
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
# 1. Make your changes
|
|
43
|
-
git add -A
|
|
44
|
-
git commit -m "feat: add new feature"
|
|
45
|
-
git push origin main
|
|
46
|
-
|
|
47
|
-
# 2. Update CHANGELOG.md with new [X.Y.Z] section
|
|
48
|
-
|
|
49
|
-
# 3. Run release script
|
|
50
|
-
./scripts/release.sh 2.32.0 "New Feature Name"
|
|
51
|
-
|
|
52
|
-
# 4. Wait for GitHub Actions to publish to npm
|
|
53
|
-
# (Check: https://github.com/projectquestorg/AgileFlow/actions)
|
|
54
|
-
|
|
55
|
-
# 5. Verify publish
|
|
56
|
-
npm view agileflow version
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## 🔧 Troubleshooting
|
|
60
|
-
|
|
61
|
-
**If GitHub Actions fails**:
|
|
62
|
-
- Check that `NPM_TOKEN` secret is configured: https://github.com/projectquestorg/AgileFlow/settings/secrets/actions
|
|
63
|
-
- Check workflow run logs: https://github.com/projectquestorg/AgileFlow/actions
|
|
64
|
-
|
|
65
|
-
**If tag already exists**:
|
|
66
|
-
```bash
|
|
67
|
-
# Delete local and remote tag
|
|
68
|
-
git tag -d v2.32.0
|
|
69
|
-
git push origin :refs/tags/v2.32.0
|
|
70
|
-
|
|
71
|
-
# Re-run release script
|
|
72
|
-
./scripts/release.sh 2.32.0 "Feature Name"
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
**Manual publish** (if GitHub Actions fails):
|
|
76
|
-
```bash
|
|
77
|
-
cd packages/cli
|
|
78
|
-
npm publish --access public
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## 🔍 Environment Info Script
|
|
82
|
-
|
|
83
|
-
**Purpose**: Output project environment information for hooks and automation.
|
|
84
|
-
|
|
85
|
-
**File**: `scripts/get-env.js`
|
|
86
|
-
|
|
87
|
-
**Usage**:
|
|
88
|
-
```bash
|
|
89
|
-
# Human-readable format
|
|
90
|
-
node scripts/get-env.js
|
|
91
|
-
|
|
92
|
-
# JSON format
|
|
93
|
-
node scripts/get-env.js --json
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
**Output**:
|
|
97
|
-
- Project name, version, description
|
|
98
|
-
- Git branch and commit hash
|
|
99
|
-
- Node.js version
|
|
100
|
-
- Platform and architecture
|
|
101
|
-
- Current user and hostname
|
|
102
|
-
- Timestamp
|
|
103
|
-
|
|
104
|
-
**Example output** (human-readable):
|
|
105
|
-
```
|
|
106
|
-
Project: agileflow v2.35.0
|
|
107
|
-
Description: AI-driven agile development system for Claude Code, Cursor, Windsurf, and more
|
|
108
|
-
Root Directory: /home/coder/AgileFlow
|
|
109
|
-
Git Branch: main
|
|
110
|
-
Git Commit: 45bb0da
|
|
111
|
-
Node Version: v18.20.8
|
|
112
|
-
Platform: linux (x64)
|
|
113
|
-
User: coder@ProjectQuest
|
|
114
|
-
Timestamp: 2025-12-15T20:31:44.742Z
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**Example output** (JSON):
|
|
118
|
-
```json
|
|
119
|
-
{
|
|
120
|
-
"project": {
|
|
121
|
-
"name": "agileflow",
|
|
122
|
-
"version": "2.35.0",
|
|
123
|
-
"description": "AI-driven agile development system...",
|
|
124
|
-
"rootDir": "/home/coder/AgileFlow"
|
|
125
|
-
},
|
|
126
|
-
"git": {
|
|
127
|
-
"branch": "main",
|
|
128
|
-
"commit": "45bb0da"
|
|
129
|
-
},
|
|
130
|
-
"system": {
|
|
131
|
-
"node": "v18.20.8",
|
|
132
|
-
"platform": "linux",
|
|
133
|
-
"arch": "x64",
|
|
134
|
-
"hostname": "ProjectQuest",
|
|
135
|
-
"user": "coder"
|
|
136
|
-
},
|
|
137
|
-
"timestamp": "2025-12-15T20:31:44.742Z"
|
|
138
|
-
}
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
**Use Cases**:
|
|
142
|
-
- Session start hook (display project info)
|
|
143
|
-
- CI/CD environment validation
|
|
144
|
-
- Debugging environment issues
|
|
145
|
-
- Logging and audit trails
|
|
146
|
-
- Integration with external tools
|
|
147
|
-
|
|
148
|
-
## 📁 Auto-Archival Scripts
|
|
149
|
-
|
|
150
|
-
**Purpose**: Automatically manage `status.json` file size by archiving old completed stories.
|
|
151
|
-
|
|
152
|
-
### Archive Completed Stories
|
|
153
|
-
|
|
154
|
-
**File**: `scripts/archive-completed-stories.sh`
|
|
155
|
-
|
|
156
|
-
**Usage**:
|
|
157
|
-
```bash
|
|
158
|
-
bash scripts/archive-completed-stories.sh
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
**What it does**:
|
|
162
|
-
1. Reads `docs/09-agents/status.json`
|
|
163
|
-
2. Identifies stories with `status: "completed"` older than threshold (default: 7 days)
|
|
164
|
-
3. Moves them to `docs/09-agents/archive/YYYY-MM.json` (organized by completion month)
|
|
165
|
-
4. Removes archived stories from `status.json`
|
|
166
|
-
5. Logs what was archived
|
|
167
|
-
|
|
168
|
-
**Configuration**:
|
|
169
|
-
Edit `docs/00-meta/agileflow-metadata.json`:
|
|
170
|
-
```json
|
|
171
|
-
{
|
|
172
|
-
"archival": {
|
|
173
|
-
"threshold_days": 7,
|
|
174
|
-
"enabled": true
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
**Automation**:
|
|
180
|
-
- Runs automatically on each session start via `.claude/settings.json` hook
|
|
181
|
-
- Runs in background (non-blocking)
|
|
182
|
-
- Idempotent (safe to run multiple times)
|
|
183
|
-
|
|
184
|
-
**Example output**:
|
|
185
|
-
```
|
|
186
|
-
Starting auto-archival (threshold: 7 days)...
|
|
187
|
-
Cutoff date: 2025-12-08T20:41:15.000Z
|
|
188
|
-
✓ Archived 3 stories to 2025-11.json
|
|
189
|
-
✓ Removed 3 archived stories from status.json
|
|
190
|
-
Stories remaining: 5
|
|
191
|
-
Auto-archival complete!
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### Compress Status
|
|
195
|
-
|
|
196
|
-
**File**: `scripts/compress-status.sh`
|
|
197
|
-
|
|
198
|
-
**Usage**:
|
|
199
|
-
```bash
|
|
200
|
-
bash scripts/compress-status.sh
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
**What it does**:
|
|
204
|
-
1. Reads `docs/09-agents/status.json`
|
|
205
|
-
2. Removes verbose fields from each story (descriptions, notes, acceptance criteria, etc.)
|
|
206
|
-
3. Keeps only essential tracking metadata:
|
|
207
|
-
- `id`, `title`, `status`, `owner`
|
|
208
|
-
- `created_at`, `updated_at`, `completed_at`
|
|
209
|
-
- `epic`, `dependencies`, `blocked_by`, `blocks`
|
|
210
|
-
- `pr_url`, `test_status`, `priority`, `tags`
|
|
211
|
-
4. Updates `status.json` with compressed version
|
|
212
|
-
5. Reports size savings
|
|
213
|
-
|
|
214
|
-
**When to use**:
|
|
215
|
-
- When `status.json` grows too large
|
|
216
|
-
- Before committing to git
|
|
217
|
-
- As part of cleanup workflow
|
|
218
|
-
- Manually when needed (not automated)
|
|
219
|
-
|
|
220
|
-
**Example output**:
|
|
221
|
-
```
|
|
222
|
-
Compressing status.json...
|
|
223
|
-
✓ Removed 15 verbose fields
|
|
224
|
-
Stories processed: 8
|
|
225
|
-
Compression complete!
|
|
226
|
-
Original size: 12543 bytes
|
|
227
|
-
New size: 4821 bytes
|
|
228
|
-
Saved: 7722 bytes (61%)
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
### Archive Directory Structure
|
|
232
|
-
|
|
233
|
-
```
|
|
234
|
-
docs/09-agents/
|
|
235
|
-
├── status.json # Active stories only
|
|
236
|
-
├── archive/
|
|
237
|
-
│ ├── 2025-11.json # Stories completed in Nov 2025
|
|
238
|
-
│ ├── 2025-12.json # Stories completed in Dec 2025
|
|
239
|
-
│ └── ...
|
|
240
|
-
└── bus/
|
|
241
|
-
└── log.jsonl
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
**Archive file format**:
|
|
245
|
-
```json
|
|
246
|
-
{
|
|
247
|
-
"month": "2025-11",
|
|
248
|
-
"archived_at": "2025-12-15T20:41:15.983Z",
|
|
249
|
-
"stories": {
|
|
250
|
-
"US-001": {
|
|
251
|
-
"id": "US-001",
|
|
252
|
-
"title": "Old completed story",
|
|
253
|
-
"status": "completed",
|
|
254
|
-
"completed_at": "2025-11-05T15:00:00.000Z",
|
|
255
|
-
...
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
**Benefits**:
|
|
262
|
-
- Keeps `status.json` small and fast to process
|
|
263
|
-
- Preserves historical data in organized archives
|
|
264
|
-
- No manual intervention required
|
|
265
|
-
- Easy to retrieve archived stories by month
|
|
266
|
-
- Reduces git diff noise
|
|
267
|
-
- Faster parsing for slash commands
|
package/scripts/af
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# af - Short alias for Claude Code with tmux integration
|
|
3
|
-
#
|
|
4
|
-
# This is a convenience wrapper that:
|
|
5
|
-
# 1. Auto-starts Claude in a tmux session (for parallel sessions support)
|
|
6
|
-
# 2. Attaches to existing session if one exists for this directory
|
|
7
|
-
# 3. Falls back to regular claude if tmux isn't available
|
|
8
|
-
#
|
|
9
|
-
# Usage:
|
|
10
|
-
# af # Start Claude in tmux
|
|
11
|
-
# af --no-tmux # Start without tmux
|
|
12
|
-
# af -h # Show help
|
|
13
|
-
#
|
|
14
|
-
# To install globally:
|
|
15
|
-
# sudo ln -s $(pwd)/.agileflow/scripts/af /usr/local/bin/af
|
|
16
|
-
# # Or add to your PATH
|
|
17
|
-
|
|
18
|
-
set -e
|
|
19
|
-
|
|
20
|
-
# Get the directory where this script is located
|
|
21
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
22
|
-
|
|
23
|
-
# Check if claude-tmux.sh exists in the same directory
|
|
24
|
-
if [ -f "$SCRIPT_DIR/claude-tmux.sh" ]; then
|
|
25
|
-
exec "$SCRIPT_DIR/claude-tmux.sh" "$@"
|
|
26
|
-
fi
|
|
27
|
-
|
|
28
|
-
# Fallback: try to find claude-tmux.sh in .agileflow/scripts
|
|
29
|
-
if [ -f ".agileflow/scripts/claude-tmux.sh" ]; then
|
|
30
|
-
exec ".agileflow/scripts/claude-tmux.sh" "$@"
|
|
31
|
-
fi
|
|
32
|
-
|
|
33
|
-
# Last resort: just run claude directly
|
|
34
|
-
exec claude "$@"
|