specweave 0.33.5 ā 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/README.md +13 -13
- package/.claude-plugin/marketplace.json +26 -37
- package/CLAUDE.md +427 -70
- package/README.md +34 -31
- package/bin/fix-marketplace-errors.sh +1 -1
- package/bin/install-commands.sh +2 -2
- package/bin/specweave.js +58 -1
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts +5 -0
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +14 -4
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js.map +1 -1
- package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +1 -0
- package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/completion-calculator.js +2 -0
- package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -1
- package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/duplicate-detector.js +20 -6
- package/dist/plugins/specweave-github/lib/duplicate-detector.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +9 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.js +31 -18
- package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +7 -0
- package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-feature-sync.js +47 -11
- package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js +39 -13
- package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-issue-updater.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-issue-updater.js +15 -3
- package/dist/plugins/specweave-github/lib/github-issue-updater.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts +7 -0
- package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-spec-sync.js +17 -4
- package/dist/plugins/specweave-github/lib/github-spec-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-sync-bidirectional.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js +13 -3
- package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-sync-increment-changes.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js +14 -4
- package/dist/plugins/specweave-github/lib/github-sync-increment-changes.js.map +1 -1
- package/dist/plugins/specweave-github/lib/increment-issue-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/increment-issue-builder.js +24 -8
- package/dist/plugins/specweave-github/lib/increment-issue-builder.js.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-content-builder.js +21 -18
- package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +3 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +20 -19
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -1
- package/dist/src/cli/cleanup-zombies.js +34 -18
- package/dist/src/cli/cleanup-zombies.js.map +1 -1
- package/dist/src/cli/commands/discrepancies.js +6 -6
- package/dist/src/cli/commands/discrepancies.js.map +1 -1
- package/dist/src/cli/commands/docs.js +1 -1
- package/dist/src/cli/commands/docs.js.map +1 -1
- package/dist/src/cli/commands/import-docs.d.ts +1 -1
- package/dist/src/cli/commands/import-docs.js +2 -2
- package/dist/src/cli/commands/import-docs.js.map +1 -1
- package/dist/src/cli/commands/import-external.d.ts +1 -1
- package/dist/src/cli/commands/import-external.js +1 -1
- package/dist/src/cli/commands/init-multiproject.d.ts +1 -1
- package/dist/src/cli/commands/init-multiproject.js +3 -3
- package/dist/src/cli/commands/init-multiproject.js.map +1 -1
- package/dist/src/cli/commands/init.js +2 -2
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/living-docs.d.ts +1 -0
- package/dist/src/cli/commands/living-docs.d.ts.map +1 -1
- package/dist/src/cli/commands/living-docs.js +18 -2
- package/dist/src/cli/commands/living-docs.js.map +1 -1
- package/dist/src/cli/commands/migrate-to-multiproject.js +1 -1
- package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
- package/dist/src/cli/commands/migrate-to-profiles.js +1 -1
- package/dist/src/cli/commands/migrate-to-profiles.js.map +1 -1
- package/dist/src/cli/commands/next-command.d.ts +1 -1
- package/dist/src/cli/commands/next-command.js +9 -9
- package/dist/src/cli/commands/next-command.js.map +1 -1
- package/dist/src/cli/commands/notifications.js +3 -3
- package/dist/src/cli/commands/notifications.js.map +1 -1
- package/dist/src/cli/commands/plan/increment-detector.js +2 -2
- package/dist/src/cli/commands/plan/increment-detector.js.map +1 -1
- package/dist/src/cli/commands/plan/plan-orchestrator.d.ts +2 -2
- package/dist/src/cli/commands/plan/plan-orchestrator.js +2 -2
- package/dist/src/cli/commands/plan/plan-validator.js +2 -2
- package/dist/src/cli/commands/plan/plan-validator.js.map +1 -1
- package/dist/src/cli/commands/plan/types.d.ts +1 -1
- package/dist/src/cli/commands/plan/types.js +1 -1
- package/dist/src/cli/commands/plan-command.d.ts +3 -3
- package/dist/src/cli/commands/plan-command.js +12 -12
- package/dist/src/cli/commands/plan-command.js.map +1 -1
- package/dist/src/cli/commands/project.d.ts +77 -0
- package/dist/src/cli/commands/project.d.ts.map +1 -0
- package/dist/src/cli/commands/project.js +526 -0
- package/dist/src/cli/commands/project.js.map +1 -0
- package/dist/src/cli/commands/save.d.ts +49 -0
- package/dist/src/cli/commands/save.d.ts.map +1 -0
- package/dist/src/cli/commands/save.js +583 -0
- package/dist/src/cli/commands/save.js.map +1 -0
- package/dist/src/cli/commands/sync-spec-commits.js +15 -6
- package/dist/src/cli/commands/sync-spec-commits.js.map +1 -1
- package/dist/src/cli/commands/sync-spec-content.js +15 -6
- package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
- package/dist/src/cli/helpers/init/ado-repo-cloning.js +2 -2
- package/dist/src/cli/helpers/init/ado-repo-cloning.js.map +1 -1
- package/dist/src/cli/helpers/init/bitbucket-repo-cloning.d.ts +1 -1
- package/dist/src/cli/helpers/init/bitbucket-repo-cloning.js +3 -3
- package/dist/src/cli/helpers/init/bitbucket-repo-cloning.js.map +1 -1
- package/dist/src/cli/helpers/init/brownfield-analysis.js +18 -18
- package/dist/src/cli/helpers/init/brownfield-analysis.js.map +1 -1
- package/dist/src/cli/helpers/init/directory-structure.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/directory-structure.js +3 -0
- package/dist/src/cli/helpers/init/directory-structure.js.map +1 -1
- package/dist/src/cli/helpers/init/external-import.js +18 -18
- package/dist/src/cli/helpers/init/external-import.js.map +1 -1
- package/dist/src/cli/helpers/init/github-repo-cloning.d.ts +1 -1
- package/dist/src/cli/helpers/init/github-repo-cloning.js +3 -3
- package/dist/src/cli/helpers/init/github-repo-cloning.js.map +1 -1
- package/dist/src/cli/helpers/init/initial-increment-generator.js +12 -12
- package/dist/src/cli/helpers/init/living-docs-preflight.js +5 -5
- package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -1
- package/dist/src/cli/helpers/init/next-steps.js +9 -9
- package/dist/src/cli/helpers/init/next-steps.js.map +1 -1
- package/dist/src/cli/helpers/init/plugin-installer.js +3 -3
- package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
- package/dist/src/cli/helpers/init/translation-config.js +9 -9
- package/dist/src/cli/helpers/init/translation-config.js.map +1 -1
- package/dist/src/cli/helpers/init/types.d.ts +1 -1
- package/dist/src/cli/helpers/init/types.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/ado.js +1 -1
- package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/github.js +1 -1
- package/dist/src/cli/helpers/issue-tracker/github.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.js +2 -2
- package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/jira.js +1 -1
- package/dist/src/cli/helpers/issue-tracker/jira.js.map +1 -1
- package/dist/src/cli/update-status-line.js +1 -1
- package/dist/src/cli/update-status-line.js.map +1 -1
- package/dist/src/cli/workers/brownfield-worker.js +1 -1
- package/dist/src/cli/workers/brownfield-worker.js.map +1 -1
- package/dist/src/cli/workers/import-worker.js +1 -1
- package/dist/src/cli/workers/import-worker.js.map +1 -1
- package/dist/src/core/background/brownfield-launcher.js +4 -4
- package/dist/src/core/background/brownfield-launcher.js.map +1 -1
- package/dist/src/core/background/index.d.ts +3 -3
- package/dist/src/core/background/index.js +3 -3
- package/dist/src/core/background/job-launcher.d.ts +1 -1
- package/dist/src/core/background/job-launcher.js +3 -3
- package/dist/src/core/background/job-launcher.js.map +1 -1
- package/dist/src/core/brownfield/importer.js +1 -1
- package/dist/src/core/brownfield/importer.js.map +1 -1
- package/dist/src/core/config/config-manager.d.ts +7 -1
- package/dist/src/core/config/config-manager.d.ts.map +1 -1
- package/dist/src/core/config/config-manager.js +24 -2
- package/dist/src/core/config/config-manager.js.map +1 -1
- package/dist/src/core/config/single-project-migrator.d.ts +110 -0
- package/dist/src/core/config/single-project-migrator.d.ts.map +1 -0
- package/dist/src/core/config/single-project-migrator.js +179 -0
- package/dist/src/core/config/single-project-migrator.js.map +1 -0
- package/dist/src/core/config/types.d.ts +3 -3
- package/dist/src/core/credentials/credentials-manager.d.ts +25 -4
- package/dist/src/core/credentials/credentials-manager.d.ts.map +1 -1
- package/dist/src/core/credentials/credentials-manager.js +54 -15
- package/dist/src/core/credentials/credentials-manager.js.map +1 -1
- package/dist/src/core/deduplication/command-deduplicator.d.ts +4 -4
- package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -1
- package/dist/src/core/deduplication/command-deduplicator.js +3 -3
- package/dist/src/core/external-tools/external-items-counter.d.ts +4 -4
- package/dist/src/core/external-tools/external-items-counter.js +4 -4
- package/dist/src/core/external-tools/external-items-display.js +4 -4
- package/dist/src/core/external-tools/external-items-display.js.map +1 -1
- package/dist/src/core/increment/completion-validator.js +3 -3
- package/dist/src/core/increment/completion-validator.js.map +1 -1
- package/dist/src/core/increment/conflict-resolver.js +2 -2
- package/dist/src/core/increment/conflict-resolver.js.map +1 -1
- package/dist/src/core/increment/desync-detector.d.ts +1 -1
- package/dist/src/core/increment/desync-detector.js +3 -3
- package/dist/src/core/increment/desync-detector.js.map +1 -1
- package/dist/src/core/increment/discipline-checker.js +2 -2
- package/dist/src/core/increment/discipline-checker.js.map +1 -1
- package/dist/src/core/increment/increment-archiver.js +4 -4
- package/dist/src/core/increment/increment-archiver.js.map +1 -1
- package/dist/src/core/increment/increment-utils.d.ts +53 -2
- package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
- package/dist/src/core/increment/increment-utils.js +78 -7
- package/dist/src/core/increment/increment-utils.js.map +1 -1
- package/dist/src/core/increment/metadata-manager.js +6 -6
- package/dist/src/core/increment/metadata-manager.js.map +1 -1
- package/dist/src/core/increment/metadata-validator.js +1 -1
- package/dist/src/core/increment/metadata-validator.js.map +1 -1
- package/dist/src/core/increment/recent-work-scanner.js +2 -2
- package/dist/src/core/increment/recent-work-scanner.js.map +1 -1
- package/dist/src/core/increment/spec-sync-manager.js +1 -1
- package/dist/src/core/increment/spec-sync-manager.js.map +1 -1
- package/dist/src/core/increment/status-auto-transition.d.ts +68 -1
- package/dist/src/core/increment/status-auto-transition.d.ts.map +1 -1
- package/dist/src/core/increment/status-auto-transition.js +141 -1
- package/dist/src/core/increment/status-auto-transition.js.map +1 -1
- package/dist/src/core/increment/status-change-sync-trigger.d.ts +1 -1
- package/dist/src/core/increment/status-change-sync-trigger.js +3 -3
- package/dist/src/core/increment/status-change-sync-trigger.js.map +1 -1
- package/dist/src/core/living-docs/cross-project-sync.d.ts +12 -0
- package/dist/src/core/living-docs/cross-project-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/cross-project-sync.js +33 -0
- package/dist/src/core/living-docs/cross-project-sync.js.map +1 -1
- package/dist/src/core/living-docs/feature-archiver.d.ts +3 -3
- package/dist/src/core/living-docs/feature-archiver.js +3 -3
- package/dist/src/core/living-docs/feature-consistency-validator.js +1 -1
- package/dist/src/core/living-docs/feature-consistency-validator.js.map +1 -1
- package/dist/src/core/living-docs/feature-id-manager.d.ts +5 -0
- package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -1
- package/dist/src/core/living-docs/feature-id-manager.js +19 -1
- package/dist/src/core/living-docs/feature-id-manager.js.map +1 -1
- package/dist/src/core/living-docs/governance/standards-generator.js +1 -1
- package/dist/src/core/living-docs/governance/standards-generator.js.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts +5 -0
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js +22 -2
- package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts +1 -0
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +77 -8
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/living-docs/project-detector.d.ts +9 -0
- package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
- package/dist/src/core/living-docs/project-detector.js +38 -3
- package/dist/src/core/living-docs/project-detector.js.map +1 -1
- package/dist/src/core/living-docs/suggestions-generator.js +1 -1
- package/dist/src/core/living-docs/suggestions-generator.js.map +1 -1
- package/dist/src/core/notifications/command-integration.js +1 -1
- package/dist/src/core/notifications/command-integration.js.map +1 -1
- package/dist/src/core/project/adapters/ado-project-adapter.d.ts +73 -0
- package/dist/src/core/project/adapters/ado-project-adapter.d.ts.map +1 -0
- package/dist/src/core/project/adapters/ado-project-adapter.js +304 -0
- package/dist/src/core/project/adapters/ado-project-adapter.js.map +1 -0
- package/dist/src/core/project/adapters/github-project-adapter.d.ts +76 -0
- package/dist/src/core/project/adapters/github-project-adapter.d.ts.map +1 -0
- package/dist/src/core/project/adapters/github-project-adapter.js +315 -0
- package/dist/src/core/project/adapters/github-project-adapter.js.map +1 -0
- package/dist/src/core/project/adapters/jira-project-adapter.d.ts +69 -0
- package/dist/src/core/project/adapters/jira-project-adapter.d.ts.map +1 -0
- package/dist/src/core/project/adapters/jira-project-adapter.js +241 -0
- package/dist/src/core/project/adapters/jira-project-adapter.js.map +1 -0
- package/dist/src/core/project/project-event-bus.d.ts +72 -0
- package/dist/src/core/project/project-event-bus.d.ts.map +1 -0
- package/dist/src/core/project/project-event-bus.js +150 -0
- package/dist/src/core/project/project-event-bus.js.map +1 -0
- package/dist/src/core/project/project-manager.d.ts +0 -22
- package/dist/src/core/project/project-manager.d.ts.map +1 -1
- package/dist/src/core/project/project-manager.js +5 -275
- package/dist/src/core/project/project-manager.js.map +1 -1
- package/dist/src/core/project/project-registry.d.ts +93 -0
- package/dist/src/core/project/project-registry.d.ts.map +1 -0
- package/dist/src/core/project/project-registry.js +448 -0
- package/dist/src/core/project/project-registry.js.map +1 -0
- package/dist/src/core/project/project-resolution.d.ts +229 -0
- package/dist/src/core/project/project-resolution.d.ts.map +1 -0
- package/dist/src/core/project/project-resolution.js +633 -0
- package/dist/src/core/project/project-resolution.js.map +1 -0
- package/dist/src/core/project/types/project-types.d.ts +214 -0
- package/dist/src/core/project/types/project-types.d.ts.map +1 -0
- package/dist/src/core/project/types/project-types.js +9 -0
- package/dist/src/core/project/types/project-types.js.map +1 -0
- package/dist/src/core/repo-structure/setup-summary.js +2 -2
- package/dist/src/core/repo-structure/setup-summary.js.map +1 -1
- package/dist/src/core/specs/spec-identifier-detector.d.ts.map +1 -1
- package/dist/src/core/specs/spec-identifier-detector.js +8 -5
- package/dist/src/core/specs/spec-identifier-detector.js.map +1 -1
- package/dist/src/core/status-line/status-line-updater.js +1 -1
- package/dist/src/core/status-line/status-line-updater.js.map +1 -1
- package/dist/src/core/types/increment-metadata.d.ts +3 -3
- package/dist/src/core/types/increment-metadata.js +3 -3
- package/dist/src/core/types/increment-metadata.js.map +1 -1
- package/dist/src/core/types/sync-profile.d.ts +1 -0
- package/dist/src/core/types/sync-profile.d.ts.map +1 -1
- package/dist/src/core/types/sync-profile.js.map +1 -1
- package/dist/src/core/validators/ac-presence-validator.d.ts +4 -4
- package/dist/src/core/validators/ac-presence-validator.js +3 -3
- package/dist/src/core/validators/ac-presence-validator.js.map +1 -1
- package/dist/src/core/workflow/backlog-scanner.d.ts +5 -0
- package/dist/src/core/workflow/backlog-scanner.d.ts.map +1 -1
- package/dist/src/core/workflow/backlog-scanner.js +14 -2
- package/dist/src/core/workflow/backlog-scanner.js.map +1 -1
- package/dist/src/core/workflow/phase-detector.js +17 -17
- package/dist/src/core/workflow/phase-detector.js.map +1 -1
- package/dist/src/core/workflow/types.d.ts +1 -1
- package/dist/src/core/workflow/types.d.ts.map +1 -1
- package/dist/src/core/workflow/workflow-orchestrator.d.ts +1 -1
- package/dist/src/core/workflow/workflow-orchestrator.js +9 -9
- package/dist/src/core/workflow/workflow-orchestrator.js.map +1 -1
- package/dist/src/hooks/scheduler-startup.js +1 -1
- package/dist/src/hooks/scheduler-startup.js.map +1 -1
- package/dist/src/importers/item-converter.js +1 -1
- package/dist/src/importers/item-converter.js.map +1 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts +17 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.js +20 -12
- package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts +17 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
- package/dist/src/integrations/jira/jira-mapper.js +13 -5
- package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
- package/dist/src/living-docs/enterprise-analyzer.js +1 -1
- package/dist/src/living-docs/enterprise-analyzer.js.map +1 -1
- package/dist/src/sync/ado-reconciler.d.ts +5 -0
- package/dist/src/sync/ado-reconciler.d.ts.map +1 -1
- package/dist/src/sync/ado-reconciler.js +16 -4
- package/dist/src/sync/ado-reconciler.js.map +1 -1
- package/dist/src/sync/jira-reconciler.d.ts +3 -0
- package/dist/src/sync/jira-reconciler.d.ts.map +1 -1
- package/dist/src/sync/jira-reconciler.js +12 -5
- package/dist/src/sync/jira-reconciler.js.map +1 -1
- package/dist/src/types/dashboard-cache.d.ts +4 -2
- package/dist/src/types/dashboard-cache.d.ts.map +1 -1
- package/dist/src/types/dashboard-cache.js +1 -1
- package/dist/src/types/dashboard-cache.js.map +1 -1
- package/dist/src/utils/ac-embedder.d.ts +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.js +2 -2
- package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
- package/dist/src/utils/docs-preview/sidebar-builder.js +1 -1
- package/dist/src/utils/env-multi-project-parser.d.ts +17 -0
- package/dist/src/utils/env-multi-project-parser.d.ts.map +1 -1
- package/dist/src/utils/env-multi-project-parser.js +26 -1
- package/dist/src/utils/env-multi-project-parser.js.map +1 -1
- package/dist/src/utils/external-tool-drift-detector.d.ts +2 -2
- package/dist/src/utils/external-tool-drift-detector.js +6 -6
- package/dist/src/utils/external-tool-drift-detector.js.map +1 -1
- package/dist/src/utils/notification-constants.js +2 -2
- package/dist/src/utils/notification-constants.js.map +1 -1
- package/dist/src/utils/notification-manager.d.ts +12 -3
- package/dist/src/utils/notification-manager.d.ts.map +1 -1
- package/dist/src/utils/notification-manager.js +51 -49
- package/dist/src/utils/notification-manager.js.map +1 -1
- package/dist/src/utils/platform-utils.d.ts +12 -3
- package/dist/src/utils/platform-utils.d.ts.map +1 -1
- package/dist/src/utils/platform-utils.js +35 -16
- package/dist/src/utils/platform-utils.js.map +1 -1
- package/dist/src/utils/plugin-validator.js +11 -11
- package/dist/src/utils/plugin-validator.js.map +1 -1
- package/dist/src/validators/ac-coverage-validator.d.ts +1 -1
- package/dist/src/validators/ac-coverage-validator.js +1 -1
- package/package.json +3 -1
- package/plugins/PLUGINS-INDEX.md +1 -2
- package/plugins/specweave/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave/COMMANDS.md +49 -49
- package/plugins/specweave/agents/pm/AGENT.md +18 -18
- package/plugins/specweave/agents/test-aware-planner/AGENT.md +7 -7
- package/plugins/specweave/agents/translator/AGENT.md +2 -2
- package/plugins/specweave/commands/{specweave-abandon.md ā abandon.md} +20 -20
- package/plugins/specweave/commands/{specweave-analyze-standards.sh ā analyze-standards.sh} +4 -4
- package/plugins/specweave/commands/{specweave-archive-features.md ā archive-features.md} +7 -7
- package/plugins/specweave/commands/{specweave-archive.md ā archive.md} +36 -36
- package/plugins/specweave/commands/{specweave-backlog.md ā backlog.md} +24 -24
- package/plugins/specweave/commands/{specweave-check-hooks.md ā check-hooks.md} +10 -10
- package/plugins/specweave/commands/{specweave-check-tests.md ā check-tests.md} +14 -14
- package/plugins/specweave/commands/{specweave-costs.md ā costs.md} +8 -8
- package/plugins/specweave/commands/{specweave-discrepancies.md ā discrepancies.md} +15 -15
- package/plugins/specweave/commands/{specweave-discrepancy-to-increment.md ā discrepancy-to-increment.md} +10 -10
- package/plugins/specweave/commands/{specweave-do.md ā do.md} +37 -39
- package/plugins/specweave/commands/{specweave-done.md ā done.md} +23 -23
- package/plugins/specweave/commands/{specweave-embed-acs.md ā embed-acs.md} +21 -21
- package/plugins/specweave/commands/{specweave-external.md ā external.md} +11 -11
- package/plugins/specweave/commands/{specweave-fix-duplicates.md ā fix-duplicates.md} +16 -16
- package/plugins/specweave/commands/{specweave-import-docs.md ā import-docs.md} +7 -7
- package/plugins/specweave/commands/{specweave-import-external.md ā import-external.md} +9 -9
- package/plugins/specweave/commands/{specweave-increment.md ā increment.md} +17 -17
- package/plugins/specweave/commands/{specweave-jobs.md ā jobs.md} +28 -28
- package/plugins/specweave/commands/{specweave-judge-llm.md ā judge-llm.md} +19 -19
- package/plugins/specweave/commands/{specweave-living-docs.md ā living-docs.md} +72 -29
- package/plugins/specweave/commands/migrate-config.md +2 -2
- package/plugins/specweave/commands/{specweave-next.md ā next.md} +20 -20
- package/plugins/specweave/commands/{specweave-notifications.md ā notifications.md} +11 -11
- package/plugins/specweave/commands/{specweave-organize-docs.md ā organize-docs.md} +9 -9
- package/plugins/specweave/commands/{specweave-pause.md ā pause.md} +19 -19
- package/plugins/specweave/commands/{specweave-plan.md ā plan.md} +19 -19
- package/plugins/specweave/commands/{specweave-progress.md ā progress.md} +6 -6
- package/plugins/specweave/commands/{specweave-qa.md ā qa.md} +15 -15
- package/plugins/specweave/commands/{specweave-reopen.md ā reopen.md} +41 -41
- package/plugins/specweave/commands/{specweave-restore-feature.md ā restore-feature.md} +6 -6
- package/plugins/specweave/commands/{specweave-restore.md ā restore.md} +26 -26
- package/plugins/specweave/commands/{specweave-resume.md ā resume.md} +33 -33
- package/plugins/specweave/commands/revert-wip-limit.md +4 -4
- package/plugins/specweave/commands/{specweave-save.md ā save.md} +34 -34
- package/plugins/specweave/commands/{specweave-status.md ā status.md} +29 -29
- package/plugins/specweave/commands/{specweave.md ā sw.md} +28 -28
- package/plugins/specweave/commands/{specweave-sync-acs.md ā sync-acs.md} +12 -12
- package/plugins/specweave/commands/sync-diagnostics.md +5 -5
- package/plugins/specweave/commands/{specweave-sync-docs.md ā sync-docs.md} +7 -7
- package/plugins/specweave/commands/{specweave-sync-logs.md ā sync-logs.md} +14 -14
- package/plugins/specweave/commands/{specweave-sync-monitor.md ā sync-monitor.md} +5 -5
- package/plugins/specweave/commands/{specweave-sync-progress.md ā sync-progress.md} +38 -38
- package/plugins/specweave/commands/{specweave-sync-specs.md ā sync-specs.md} +17 -17
- package/plugins/specweave/commands/{specweave-sync-status.md ā sync-status.md} +16 -16
- package/plugins/specweave/commands/{specweave-sync-tasks.md ā sync-tasks.md} +13 -13
- package/plugins/specweave/commands/{specweave-tdd-cycle.md ā tdd-cycle.md} +1 -1
- package/plugins/specweave/commands/{specweave-tdd-green.md ā tdd-green.md} +1 -1
- package/plugins/specweave/commands/{specweave-tdd-red.md ā tdd-red.md} +1 -1
- package/plugins/specweave/commands/{specweave-tdd-refactor.md ā tdd-refactor.md} +1 -1
- package/plugins/specweave/commands/{specweave-translate.md ā translate.md} +17 -17
- package/plugins/specweave/commands/{specweave-update-scope.md ā update-scope.md} +8 -8
- package/plugins/specweave/commands/{specweave-update-status.md ā update-status.md} +6 -6
- package/plugins/specweave/commands/{specweave-validate-features.md ā validate-features.md} +8 -8
- package/plugins/specweave/commands/{specweave-validate.md ā validate.md} +20 -20
- package/plugins/specweave/commands/{specweave-workflow.md ā workflow.md} +40 -40
- package/plugins/specweave/hooks/README.md +5 -5
- package/plugins/specweave/hooks/config-env-separator.sh +99 -0
- package/plugins/specweave/hooks/github-metadata-guard.sh +73 -0
- package/plugins/specweave/hooks/hooks.json +32 -2
- package/plugins/specweave/hooks/post-first-increment.sh +2 -2
- package/plugins/specweave/hooks/post-increment-completion.sh +7 -7
- package/plugins/specweave/hooks/post-increment-planning.sh +11 -11
- package/plugins/specweave/hooks/post-increment-status-change.sh +1 -1
- package/plugins/specweave/hooks/post-metadata-change.sh +1 -1
- package/plugins/specweave/hooks/post-spec-update.sh +2 -2
- package/plugins/specweave/hooks/post-task-completion.sh +2 -2
- package/plugins/specweave/hooks/pre-increment-start.sh +7 -7
- package/plugins/specweave/hooks/project-folder-guard.sh +272 -0
- package/plugins/specweave/hooks/spec-project-validator.sh +68 -47
- package/plugins/specweave/hooks/user-prompt-submit.sh +27 -27
- package/plugins/specweave/hooks/v2/guards/completion-guard.sh +2 -2
- package/plugins/specweave/hooks/v2/guards/metadata-json-guard.sh +1 -1
- package/plugins/specweave/hooks/v2/handlers/github-sync-handler.sh +1 -1
- package/plugins/specweave/lib/hooks/consolidated-sync.js +35 -5
- package/plugins/specweave/lib/hooks/invoke-translator-skill.js +2 -2
- package/plugins/specweave/lib/hooks/invoke-translator-skill.ts +2 -2
- package/plugins/specweave/lib/hooks/prepare-reflection-context.js +1 -1
- package/plugins/specweave/lib/hooks/prepare-reflection-context.ts +1 -1
- package/plugins/specweave/lib/hooks/sync-living-docs.js +5 -5
- package/plugins/specweave/lib/hooks/translate-file.d.ts +1 -1
- package/plugins/specweave/lib/hooks/translate-file.js +2 -2
- package/plugins/specweave/lib/hooks/translate-file.ts +3 -3
- package/plugins/specweave/lib/hooks/us-completion-orchestrator.js +1 -1
- package/plugins/specweave/lib/hooks/us-completion-orchestrator.ts +2 -2
- package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js +6 -6
- package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js.map +1 -1
- package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.d.ts +113 -0
- package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.js +318 -0
- package/plugins/specweave/lib/vendor/core/increment/status-auto-transition.js.map +1 -0
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.d.ts +3 -3
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.js +3 -3
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.js.map +1 -1
- package/plugins/specweave/scripts/README.md +9 -9
- package/plugins/specweave/scripts/cleanup-state.sh +1 -1
- package/plugins/specweave/scripts/jobs.js +2 -2
- package/plugins/specweave/scripts/progress.js +6 -6
- package/plugins/specweave/scripts/read-costs.sh +3 -3
- package/plugins/specweave/scripts/read-jobs.sh +8 -8
- package/plugins/specweave/scripts/read-progress.sh +17 -10
- package/plugins/specweave/scripts/read-status.sh +7 -7
- package/plugins/specweave/scripts/read-workflow.sh +18 -18
- package/plugins/specweave/scripts/rebuild-dashboard-cache.sh +6 -5
- package/plugins/specweave/scripts/session-watchdog.sh +4 -4
- package/plugins/specweave/scripts/status.js +7 -7
- package/plugins/specweave/scripts/update-dashboard-cache.sh +28 -10
- package/plugins/specweave/skills/SKILLS-INDEX.md +4 -4
- package/plugins/specweave/skills/archive-increments/SKILL.md +15 -15
- package/plugins/specweave/skills/brownfield-analyzer/SKILL.md +5 -5
- package/plugins/specweave/skills/code-standards-analyzer/SKILL.md +4 -4
- package/plugins/specweave/skills/context-loader/SKILL.md +1 -1
- package/plugins/specweave/skills/{specweave-detector ā detector}/SKILL.md +5 -5
- package/plugins/specweave/skills/discrepancy-viewer.md +4 -4
- package/plugins/specweave/skills/external-sync-wizard/SKILL.md +24 -24
- package/plugins/specweave/skills/{specweave-framework ā framework}/SKILL.md +33 -33
- package/plugins/specweave/skills/increment-planner/SKILL.md +25 -24
- package/plugins/specweave/skills/increment-planner/templates/spec-multi-project.md +6 -16
- package/plugins/specweave/skills/increment-planner/templates/spec-single-project.md +6 -12
- package/plugins/specweave/skills/increment-quality-judge-v2/SKILL.md +6 -6
- package/plugins/specweave/skills/increment-work-router/SKILL.md +23 -23
- package/plugins/specweave/skills/instant-status/SKILL.md +7 -7
- package/plugins/specweave/skills/plugin-validator/SKILL.md +9 -9
- package/plugins/specweave/skills/pm-closure-validation/SKILL.md +4 -4
- package/plugins/specweave/skills/progress-sync/SKILL.md +51 -51
- package/plugins/specweave/skills/project-kickstarter/SKILL.md +11 -11
- package/plugins/specweave/skills/role-orchestrator/README.md +1 -1
- package/plugins/specweave/skills/role-orchestrator/SKILL.md +4 -4
- package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +17 -17
- package/plugins/specweave/skills/spec-generator/SKILL.md +6 -6
- package/plugins/specweave/skills/tdd-workflow/SKILL.md +21 -21
- package/plugins/specweave/skills/translator/SKILL.md +4 -4
- package/plugins/specweave/skills/umbrella-repo-detector/SKILL.md +5 -5
- package/plugins/specweave-ado/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-ado/agents/ado-manager/AGENT.md +4 -4
- package/plugins/specweave-ado/agents/ado-sync-judge/AGENT.md +4 -4
- package/plugins/specweave-ado/commands/cleanup-duplicates.md +9 -9
- package/plugins/specweave-ado/commands/clone.md +17 -17
- package/plugins/specweave-ado/commands/close.md +10 -10
- package/plugins/specweave-ado/commands/create.md +8 -8
- package/plugins/specweave-ado/commands/import-areas.md +15 -15
- package/plugins/specweave-ado/commands/import-projects.md +12 -12
- package/plugins/specweave-ado/commands/pull.md +25 -25
- package/plugins/specweave-ado/commands/push.md +20 -20
- package/plugins/specweave-ado/commands/reconcile.md +7 -7
- package/plugins/specweave-ado/commands/status.md +7 -7
- package/plugins/specweave-ado/commands/sync.md +17 -17
- package/plugins/specweave-ado/hooks/post-living-docs-update.sh +2 -2
- package/plugins/specweave-ado/lib/ado-project-detector.js +1 -1
- package/plugins/specweave-ado/lib/ado-project-detector.ts +1 -1
- package/plugins/specweave-ado/skills/{specweave-ado-mapper ā ado-mapper}/SKILL.md +2 -2
- package/plugins/specweave-ado/skills/ado-multi-project/SKILL.md +6 -6
- package/plugins/specweave-ado/skills/ado-resource-validator/SKILL.md +5 -5
- package/plugins/specweave-ado/skills/ado-sync/SKILL.md +19 -19
- package/plugins/specweave-alternatives/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-alternatives/commands/alternatives-analyze.md +14 -14
- package/plugins/specweave-backend/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-confluent/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-cost-optimizer/commands/cost-analyze.md +1 -1
- package/plugins/specweave-cost-optimizer/commands/cost-optimize.md +1 -1
- package/plugins/specweave-diagrams/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-diagrams/commands/diagrams-generate.md +1 -1
- package/plugins/specweave-docs/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-docs/commands/build.md +8 -8
- package/plugins/specweave-docs/commands/generate.md +22 -22
- package/plugins/specweave-docs/commands/health.md +10 -10
- package/plugins/specweave-docs/commands/init.md +9 -9
- package/plugins/specweave-docs/commands/organize.md +10 -10
- package/plugins/specweave-docs/commands/validate.md +9 -9
- package/plugins/specweave-docs/commands/view.md +14 -14
- package/plugins/specweave-docs/skills/preview/SKILL.md +11 -11
- package/plugins/specweave-figma/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-figma/commands/figma-import.md +1 -1
- package/plugins/specweave-figma/commands/figma-to-react.md +1 -1
- package/plugins/specweave-figma/commands/figma-tokens.md +1 -1
- package/plugins/specweave-frontend/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-frontend/agents/frontend-architect/README.md +5 -5
- package/plugins/specweave-frontend/commands/component-generate.md +1 -1
- package/plugins/specweave-frontend/commands/design-system-init.md +1 -1
- package/plugins/specweave-frontend/commands/frontend-scaffold.md +1 -1
- package/plugins/specweave-frontend/commands/nextjs-setup.md +1 -1
- package/plugins/specweave-github/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-github/MULTI-PROJECT-SYNC-ARCHITECTURE.md +4 -4
- package/plugins/specweave-github/SYNC-ARCHITECTURE-FIX-SUMMARY.md +18 -18
- package/plugins/specweave-github/agents/github-manager/AGENT.md +8 -8
- package/plugins/specweave-github/commands/cleanup-duplicates.md +8 -8
- package/plugins/specweave-github/commands/close.md +25 -25
- package/plugins/specweave-github/commands/create.md +17 -17
- package/plugins/specweave-github/commands/pull.md +12 -12
- package/plugins/specweave-github/commands/push.md +12 -12
- package/plugins/specweave-github/commands/reconcile.md +7 -7
- package/plugins/specweave-github/commands/status.md +24 -24
- package/plugins/specweave-github/commands/sync.md +34 -34
- package/plugins/specweave-github/commands/update-user-story.md +6 -6
- package/plugins/specweave-github/hooks/README.md +8 -8
- package/plugins/specweave-github/hooks/post-task-completion.sh +2 -2
- package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +12 -4
- package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +16 -4
- package/plugins/specweave-github/lib/completion-calculator.js +3 -1
- package/plugins/specweave-github/lib/completion-calculator.ts +6 -0
- package/plugins/specweave-github/lib/duplicate-detector.js +12 -6
- package/plugins/specweave-github/lib/duplicate-detector.ts +22 -6
- package/plugins/specweave-github/lib/github-board-resolver.js +7 -2
- package/plugins/specweave-github/lib/github-board-resolver.ts +13 -2
- package/plugins/specweave-github/lib/github-client-v2.js +29 -18
- package/plugins/specweave-github/lib/github-client-v2.ts +33 -18
- package/plugins/specweave-github/lib/github-feature-sync.js +41 -11
- package/plugins/specweave-github/lib/github-feature-sync.ts +52 -11
- package/plugins/specweave-github/lib/github-hierarchical-sync.js +6 -1
- package/plugins/specweave-github/lib/github-hierarchical-sync.ts +12 -1
- package/plugins/specweave-github/lib/github-increment-sync-cli.js +35 -17
- package/plugins/specweave-github/lib/github-increment-sync-cli.ts +44 -16
- package/plugins/specweave-github/lib/github-issue-updater.js +8 -3
- package/plugins/specweave-github/lib/github-issue-updater.ts +16 -3
- package/plugins/specweave-github/lib/github-spec-sync.js +14 -4
- package/plugins/specweave-github/lib/github-spec-sync.ts +19 -4
- package/plugins/specweave-github/lib/github-sync-bidirectional.js +8 -3
- package/plugins/specweave-github/lib/github-sync-bidirectional.ts +14 -3
- package/plugins/specweave-github/lib/github-sync-increment-changes.js +9 -4
- package/plugins/specweave-github/lib/github-sync-increment-changes.ts +15 -4
- package/plugins/specweave-github/lib/increment-issue-builder.js +23 -10
- package/plugins/specweave-github/lib/increment-issue-builder.ts +29 -11
- package/plugins/specweave-github/lib/user-story-content-builder.js +19 -16
- package/plugins/specweave-github/lib/user-story-content-builder.ts +24 -19
- package/plugins/specweave-github/lib/user-story-issue-builder.js +10 -13
- package/plugins/specweave-github/lib/user-story-issue-builder.ts +20 -19
- package/plugins/specweave-github/reference/github-specweave-mapping.md +1 -1
- package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +3 -3
- package/plugins/specweave-github/skills/github-issue-tracker/SKILL.md +8 -8
- package/plugins/specweave-github/skills/github-sync/SKILL.md +14 -14
- package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-infrastructure/commands/{specweave-infrastructure-monitor-setup.md ā monitor-setup.md} +1 -1
- package/plugins/specweave-infrastructure/commands/{specweave-infrastructure-slo-implement.md ā slo-implement.md} +1 -1
- package/plugins/specweave-jira/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-jira/agents/jira-sync-judge/AGENT.md +3 -3
- package/plugins/specweave-jira/commands/cleanup-duplicates.md +9 -9
- package/plugins/specweave-jira/commands/close.md +13 -13
- package/plugins/specweave-jira/commands/create.md +8 -8
- package/plugins/specweave-jira/commands/import-boards.md +15 -15
- package/plugins/specweave-jira/commands/import-projects-full.md +15 -15
- package/plugins/specweave-jira/commands/import-projects.md +10 -10
- package/plugins/specweave-jira/commands/pull.md +10 -10
- package/plugins/specweave-jira/commands/push.md +11 -11
- package/plugins/specweave-jira/commands/reconcile.md +7 -7
- package/plugins/specweave-jira/commands/status.md +16 -16
- package/plugins/specweave-jira/commands/sync.md +27 -27
- package/plugins/specweave-jira/skills/{specweave-jira-mapper ā jira-mapper}/SKILL.md +2 -2
- package/plugins/specweave-jira/skills/jira-resource-validator/SKILL.md +4 -4
- package/plugins/specweave-jira/skills/jira-sync/SKILL.md +5 -5
- package/plugins/specweave-kafka/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +10 -10
- package/plugins/specweave-kafka/README.md +12 -12
- package/plugins/specweave-kafka/commands/deploy.md +5 -5
- package/plugins/specweave-kafka/commands/dev-env.md +2 -2
- package/plugins/specweave-kafka/commands/mcp-configure.md +3 -3
- package/plugins/specweave-kafka/commands/monitor-setup.md +3 -3
- package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +4 -4
- package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +5 -5
- package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +6 -6
- package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-kafka-streams/commands/topology.md +4 -4
- package/plugins/specweave-kubernetes/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-ml/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-ml/README.md +9 -9
- package/plugins/specweave-ml/commands/{specweave-ml-deploy.md ā deploy.md} +1 -1
- package/plugins/specweave-ml/commands/{specweave-ml-evaluate.md ā evaluate.md} +1 -1
- package/plugins/specweave-ml/commands/{specweave-ml-explain.md ā explain.md} +1 -1
- package/plugins/specweave-ml/commands/{specweave-ml-pipeline.md ā pipeline.md} +1 -1
- package/plugins/specweave-ml/skills/automl-optimizer/SKILL.md +1 -1
- package/plugins/specweave-ml/skills/data-visualizer/SKILL.md +1 -1
- package/plugins/specweave-ml/skills/experiment-tracker/SKILL.md +4 -4
- package/plugins/specweave-ml/skills/feature-engineer/SKILL.md +1 -1
- package/plugins/specweave-ml/skills/ml-deployment-helper/SKILL.md +2 -2
- package/plugins/specweave-ml/skills/ml-pipeline-orchestrator/SKILL.md +10 -10
- package/plugins/specweave-ml/skills/model-registry/SKILL.md +1 -1
- package/plugins/specweave-ml/skills/time-series-forecaster/SKILL.md +1 -1
- package/plugins/specweave-mobile/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-mobile/README.md +2 -2
- package/plugins/specweave-mobile/agents/mobile-architect/AGENT.md +2 -2
- package/plugins/specweave-mobile/skills/react-native-setup/SKILL.md +1 -1
- package/plugins/specweave-n8n/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-n8n/commands/workflow-template.md +4 -4
- package/plugins/specweave-payments/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-payments/commands/stripe-setup.md +1 -1
- package/plugins/specweave-payments/commands/subscription-flow.md +1 -1
- package/plugins/specweave-plugin-dev/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-plugin-dev/commands/plugin-create.md +1 -1
- package/plugins/specweave-plugin-dev/commands/plugin-publish.md +1 -1
- package/plugins/specweave-plugin-dev/commands/plugin-test.md +1 -1
- package/plugins/specweave-release/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-release/IMPLEMENTATION.md +14 -14
- package/plugins/specweave-release/README.md +33 -33
- package/plugins/specweave-release/agents/release-manager/AGENT.md +18 -18
- package/plugins/specweave-release/commands/{specweave-release-align.md ā align.md} +19 -19
- package/plugins/specweave-release/commands/{specweave-release-init.md ā init.md} +19 -19
- package/plugins/specweave-release/commands/{specweave-release-npm.md ā npm.md} +14 -14
- package/plugins/specweave-release/commands/{specweave-release-platform.md ā platform.md} +17 -17
- package/plugins/specweave-release/commands/{specweave-release-rc.md ā rc.md} +37 -37
- package/plugins/specweave-release/hooks/post-task-completion.sh +1 -1
- package/plugins/specweave-release/skills/rc-manager/SKILL.md +12 -12
- package/plugins/specweave-release/skills/release-coordinator/SKILL.md +11 -11
- package/plugins/specweave-release/skills/release-strategy-advisor/SKILL.md +4 -4
- package/plugins/specweave-release/skills/version-aligner/SKILL.md +7 -7
- package/plugins/specweave-testing/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-testing/agents/qa-engineer/README.md +5 -5
- package/plugins/specweave-testing/commands/e2e-setup.md +1 -1
- package/plugins/specweave-testing/commands/test-coverage.md +1 -1
- package/plugins/specweave-testing/commands/test-generate.md +1 -1
- package/plugins/specweave-testing/commands/test-init.md +1 -1
- package/plugins/specweave-tooling/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-tooling/commands/{specweave-tooling-skill-create.md ā skill-create.md} +1 -1
- package/plugins/specweave-tooling/commands/{specweave-tooling-skill-package.md ā skill-package.md} +1 -1
- package/plugins/specweave-tooling/commands/{specweave-tooling-skill-validate.md ā skill-validate.md} +1 -1
- package/plugins/specweave-ui/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-ui/commands/ui-automate.md +9 -9
- package/plugins/specweave-ui/commands/ui-inspect.md +6 -6
- package/src/templates/AGENTS.md.template +49 -49
- package/src/templates/CLAUDE.md.template +11 -11
- package/dist/src/cli/commands/switch-project.d.ts +0 -13
- package/dist/src/cli/commands/switch-project.d.ts.map +0 -1
- package/dist/src/cli/commands/switch-project.js +0 -78
- package/dist/src/cli/commands/switch-project.js.map +0 -1
- package/plugins/specweave/commands/specweave-init-multiproject.md +0 -146
- package/plugins/specweave-core/.claude-plugin/plugin.json +0 -21
- package/plugins/specweave-core/commands/architecture-review.md +0 -288
- package/plugins/specweave-core/commands/code-review.md +0 -213
- package/plugins/specweave-core/commands/refactor-plan.md +0 -249
- package/plugins/specweave-core/skills/code-quality/SKILL.md +0 -158
- package/plugins/specweave-core/skills/design-patterns/SKILL.md +0 -245
- package/plugins/specweave-core/skills/software-architecture/SKILL.md +0 -84
- /package/plugins/specweave/skills/{specweave-framework ā framework}/test-cases/test-1-increment-naming.yaml +0 -0
- /package/plugins/specweave/skills/{specweave-framework ā framework}/test-cases/test-2-source-of-truth.yaml +0 -0
- /package/plugins/specweave/skills/{specweave-framework ā framework}/test-cases/test-3-increment-discipline.yaml +0 -0
- /package/plugins/specweave/skills/{specweave-framework ā framework}/test-cases/test-4-file-placement.yaml +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: sw-github:sync
|
|
3
3
|
description: Synchronize SpecWeave increment with GitHub issue (Multi-Project Support). Select profile, configure time range, and sync with rate limit protection.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -67,7 +67,7 @@ Synchronize the current state of a SpecWeave increment with its GitHub issue acr
|
|
|
67
67
|
## Usage
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
/
|
|
70
|
+
/sw-github:sync <increment-id> [options]
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
## Arguments
|
|
@@ -112,36 +112,36 @@ SpecWeave syncs changes in **both directions** by default:
|
|
|
112
112
|
**Override if needed:**
|
|
113
113
|
```bash
|
|
114
114
|
# Push only (one-way to GitHub)
|
|
115
|
-
/
|
|
115
|
+
/sw-github:sync 0004 --direction to-github
|
|
116
116
|
|
|
117
117
|
# Pull only (one-way from GitHub)
|
|
118
|
-
/
|
|
118
|
+
/sw-github:sync 0004 --direction from-github
|
|
119
119
|
```
|
|
120
120
|
|
|
121
121
|
## Examples
|
|
122
122
|
|
|
123
123
|
```bash
|
|
124
124
|
# Interactive two-way sync (default - both directions)
|
|
125
|
-
/
|
|
125
|
+
/sw-github:sync 0004
|
|
126
126
|
|
|
127
127
|
# Use specific profile (still two-way by default)
|
|
128
|
-
/
|
|
128
|
+
/sw-github:sync 0004 --profile specweave-dev
|
|
129
129
|
|
|
130
130
|
# Specify time range (two-way)
|
|
131
|
-
/
|
|
131
|
+
/sw-github:sync 0004 --time-range 1M
|
|
132
132
|
|
|
133
133
|
# Full two-way sync with all options
|
|
134
|
-
/
|
|
134
|
+
/sw-github:sync 0004 --profile main --time-range 1M --tasks --labels
|
|
135
135
|
|
|
136
136
|
# One-way sync examples (override default)
|
|
137
|
-
/
|
|
138
|
-
/
|
|
137
|
+
/sw-github:sync 0004 --direction to-github # Push only
|
|
138
|
+
/sw-github:sync 0004 --direction from-github # Pull only
|
|
139
139
|
|
|
140
140
|
# Dry run to preview changes
|
|
141
|
-
/
|
|
141
|
+
/sw-github:sync 0004 --dry-run
|
|
142
142
|
|
|
143
143
|
# Force sync all increments (two-way)
|
|
144
|
-
/
|
|
144
|
+
/sw-github:sync --all --force
|
|
145
145
|
```
|
|
146
146
|
|
|
147
147
|
## Interactive Workflow
|
|
@@ -431,8 +431,8 @@ Available profiles:
|
|
|
431
431
|
⢠specweave-dev (GitHub: anton-abyzov/specweave)
|
|
432
432
|
⢠another-repo (GitHub: myorg/another-project)
|
|
433
433
|
|
|
434
|
-
Create profile: /
|
|
435
|
-
List profiles: /
|
|
434
|
+
Create profile: /sw:sync-profile create
|
|
435
|
+
List profiles: /sw:sync-profile list
|
|
436
436
|
```
|
|
437
437
|
|
|
438
438
|
### No Profiles Configured
|
|
@@ -441,7 +441,7 @@ List profiles: /specweave:sync-profile list
|
|
|
441
441
|
ā Error: No GitHub sync profiles configured
|
|
442
442
|
|
|
443
443
|
Create your first profile:
|
|
444
|
-
/
|
|
444
|
+
/sw:sync-profile create
|
|
445
445
|
|
|
446
446
|
Or migrate from old configuration:
|
|
447
447
|
specweave migrate-to-profiles
|
|
@@ -459,7 +459,7 @@ Rate limit resets: 2025-11-04 15:00:00 (12 minutes)
|
|
|
459
459
|
What would you like to do?
|
|
460
460
|
|
|
461
461
|
1. Wait and resume (auto-resume in 12 min)
|
|
462
|
-
2. Resume manually later (/
|
|
462
|
+
2. Resume manually later (/sw-github:sync 0004 --resume)
|
|
463
463
|
3. Cancel sync (partial data saved)
|
|
464
464
|
|
|
465
465
|
Your choice: [1]
|
|
@@ -518,8 +518,8 @@ Output:
|
|
|
518
518
|
ā
Migration completed successfully!
|
|
519
519
|
|
|
520
520
|
Next steps:
|
|
521
|
-
1. Review profiles: /
|
|
522
|
-
2. Test sync: /
|
|
521
|
+
1. Review profiles: /sw:sync-profile list
|
|
522
|
+
2. Test sync: /sw-github:sync 0004
|
|
523
523
|
3. Keep backup: .specweave/config.json.backup (until confirmed working)
|
|
524
524
|
```
|
|
525
525
|
|
|
@@ -529,7 +529,7 @@ If automatic profile creation fails:
|
|
|
529
529
|
|
|
530
530
|
1. Create profile manually:
|
|
531
531
|
```bash
|
|
532
|
-
/
|
|
532
|
+
/sw:sync-profile create
|
|
533
533
|
```
|
|
534
534
|
|
|
535
535
|
2. Update increment metadata:
|
|
@@ -544,7 +544,7 @@ If automatic profile creation fails:
|
|
|
544
544
|
|
|
545
545
|
3. Test sync:
|
|
546
546
|
```bash
|
|
547
|
-
/
|
|
547
|
+
/sw-github:sync 0004
|
|
548
548
|
```
|
|
549
549
|
|
|
550
550
|
## Simpler Alternatives
|
|
@@ -553,21 +553,21 @@ For most use cases, use the git-style commands:
|
|
|
553
553
|
|
|
554
554
|
| Command | Purpose |
|
|
555
555
|
|---------|---------|
|
|
556
|
-
| `/
|
|
557
|
-
| `/
|
|
556
|
+
| `/sw-github:pull` | Pull changes from GitHub (read-only) |
|
|
557
|
+
| `/sw-github:push` | Push progress to GitHub |
|
|
558
558
|
|
|
559
|
-
Use `/
|
|
559
|
+
Use `/sw-github:sync` for advanced operations with time ranges and rate limit control.
|
|
560
560
|
|
|
561
561
|
## Related Commands
|
|
562
562
|
|
|
563
563
|
| Command | Purpose |
|
|
564
564
|
|---------|---------|
|
|
565
|
-
| `/
|
|
566
|
-
| `/
|
|
567
|
-
| `/
|
|
568
|
-
| `/
|
|
569
|
-
| `/
|
|
570
|
-
| `/
|
|
565
|
+
| `/sw-github:pull` | Pull from GitHub (git-style) |
|
|
566
|
+
| `/sw-github:push` | Push to GitHub (git-style) |
|
|
567
|
+
| `/sw-github:create` | Create GitHub issue |
|
|
568
|
+
| `/sw-github:close` | Close GitHub issue |
|
|
569
|
+
| `/sw-github:status` | Check sync status |
|
|
570
|
+
| `/sw:sync-profile create` | Create new sync profile |
|
|
571
571
|
|
|
572
572
|
## Tips & Best Practices
|
|
573
573
|
|
|
@@ -632,7 +632,7 @@ For active development:
|
|
|
632
632
|
|
|
633
633
|
Before large syncs:
|
|
634
634
|
```bash
|
|
635
|
-
/
|
|
635
|
+
/sw-github:sync 0004 --dry-run --time-range 6M
|
|
636
636
|
```
|
|
637
637
|
|
|
638
638
|
This shows what would happen without actually executing.
|
|
@@ -643,10 +643,10 @@ This shows what would happen without actually executing.
|
|
|
643
643
|
|
|
644
644
|
```bash
|
|
645
645
|
# Sync all active increments (respects rate limits)
|
|
646
|
-
/
|
|
646
|
+
/sw-github:sync --all --time-range 1M
|
|
647
647
|
|
|
648
648
|
# Sync specific increments
|
|
649
|
-
/
|
|
649
|
+
/sw-github:sync 0001,0002,0003 --time-range 2W
|
|
650
650
|
```
|
|
651
651
|
|
|
652
652
|
### Custom Rate Limit Thresholds
|
|
@@ -671,7 +671,7 @@ Override default thresholds:
|
|
|
671
671
|
|
|
672
672
|
If sync fails mid-operation:
|
|
673
673
|
```bash
|
|
674
|
-
/
|
|
674
|
+
/sw-github:sync 0004 --resume
|
|
675
675
|
```
|
|
676
676
|
|
|
677
677
|
System will:
|
|
@@ -681,7 +681,7 @@ System will:
|
|
|
681
681
|
|
|
682
682
|
---
|
|
683
683
|
|
|
684
|
-
**Command**: `/
|
|
684
|
+
**Command**: `/sw-github:sync`
|
|
685
685
|
**Plugin**: specweave-github
|
|
686
686
|
**Version**: 1.0.0 (Multi-Project)
|
|
687
687
|
**Last Updated**: 2025-11-05
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: sw-github:update-user-story
|
|
3
3
|
description: Update GitHub issue for user story with proper ACs and tasks
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -12,7 +12,7 @@ description: Update GitHub issue for user story with proper ACs and tasks
|
|
|
12
12
|
|
|
13
13
|
**Usage**:
|
|
14
14
|
```bash
|
|
15
|
-
/
|
|
15
|
+
/sw-github:update-user-story FS-031 US-004
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
**What It Does**:
|
|
@@ -35,7 +35,7 @@ description: Update GitHub issue for user story with proper ACs and tasks
|
|
|
35
35
|
**Example**:
|
|
36
36
|
```bash
|
|
37
37
|
# Update US-004 in FS-031
|
|
38
|
-
/
|
|
38
|
+
/sw-github:update-user-story FS-031 US-004
|
|
39
39
|
|
|
40
40
|
# Output:
|
|
41
41
|
# š Finding user story: FS-031/US-004
|
|
@@ -109,9 +109,9 @@ Progress: 3/6 tasks complete (50%)
|
|
|
109
109
|
- ā
When you want to refresh issue content from living docs
|
|
110
110
|
|
|
111
111
|
**Related Commands**:
|
|
112
|
-
- `/
|
|
113
|
-
- `/
|
|
114
|
-
- `/
|
|
112
|
+
- `/sw-github:sync-epic FS-031` - Sync entire epic (all user stories)
|
|
113
|
+
- `/sw-github:create-issue 0031` - Create issue for increment
|
|
114
|
+
- `/sw-github:sync 0031` - Two-way sync for increment
|
|
115
115
|
|
|
116
116
|
---
|
|
117
117
|
|
|
@@ -71,7 +71,7 @@ Log: "[GitHub] ā
GitHub sync complete"
|
|
|
71
71
|
- Created performance overhead and duplicate executions
|
|
72
72
|
|
|
73
73
|
**New behavior (v0.26.0+)**:
|
|
74
|
-
- Hook must be invoked manually via `/
|
|
74
|
+
- Hook must be invoked manually via `/sw-github:sync`
|
|
75
75
|
- OR triggered on increment completion (not task completion)
|
|
76
76
|
- Reduces API calls by 90%+
|
|
77
77
|
- Eliminates duplicate hook executions
|
|
@@ -81,16 +81,16 @@ Log: "[GitHub] ā
GitHub sync complete"
|
|
|
81
81
|
**Manual Sync** (recommended workflow):
|
|
82
82
|
```bash
|
|
83
83
|
# After completing several tasks, sync progress to GitHub
|
|
84
|
-
/
|
|
84
|
+
/sw-github:sync
|
|
85
85
|
|
|
86
86
|
# Or sync specific feature
|
|
87
|
-
/
|
|
87
|
+
/sw-github:sync FS-048
|
|
88
88
|
```
|
|
89
89
|
|
|
90
90
|
**Automatic Sync Options**:
|
|
91
91
|
1. **On Increment Completion**: Add hook to specweave plugin's post-increment-completion
|
|
92
92
|
2. **Periodic Sync**: Set up cron job or CI/CD trigger
|
|
93
|
-
3. **On Demand**: Call `/
|
|
93
|
+
3. **On Demand**: Call `/sw-github:sync` when needed
|
|
94
94
|
|
|
95
95
|
### Metadata Format
|
|
96
96
|
|
|
@@ -149,10 +149,10 @@ bash -n plugins/specweave-github/hooks/post-task-completion.sh
|
|
|
149
149
|
|
|
150
150
|
### Test with GitHub Issue
|
|
151
151
|
|
|
152
|
-
1. Create increment: `/
|
|
153
|
-
2. Create GitHub issue: `/
|
|
152
|
+
1. Create increment: `/sw:increment "test feature"`
|
|
153
|
+
2. Create GitHub issue: `/sw-github:create-issue 0001`
|
|
154
154
|
3. Complete several tasks via TodoWrite
|
|
155
|
-
4. **Manually trigger sync**: `/
|
|
155
|
+
4. **Manually trigger sync**: `/sw-github:sync`
|
|
156
156
|
5. Check GitHub issue for updates
|
|
157
157
|
|
|
158
158
|
---
|
|
@@ -258,7 +258,7 @@ tail -f .specweave/logs/hooks-debug.log | grep '\[GitHub\]'
|
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
**Common issues**:
|
|
261
|
-
- ā No `metadata.json`: Create GitHub issue via `/
|
|
261
|
+
- ā No `metadata.json`: Create GitHub issue via `/sw-github:create-issue`
|
|
262
262
|
- ā Not authenticated: Run `gh auth login`
|
|
263
263
|
- ā Invalid issue number: Check `metadata.json` has correct issue ID
|
|
264
264
|
- ā Network error: Check internet connection
|
|
@@ -259,7 +259,7 @@ fi
|
|
|
259
259
|
# ā ļø DEPRECATED: SpecWeave now syncs ONLY at User Story level.
|
|
260
260
|
#
|
|
261
261
|
# Feature/Epic-level issues are no longer updated.
|
|
262
|
-
# Use /
|
|
262
|
+
# Use /sw-github:sync instead to sync User Story issues.
|
|
263
263
|
#
|
|
264
264
|
# To re-enable (NOT recommended):
|
|
265
265
|
# export SPECWEAVE_ENABLE_EPIC_SYNC=true
|
|
@@ -288,7 +288,7 @@ if [ "$SPECWEAVE_ENABLE_EPIC_SYNC" = "true" ]; then
|
|
|
288
288
|
if [ -f "$PROJECT_ROOT/scripts/update-epic-github-issue.sh" ]; then
|
|
289
289
|
echo "[$(date)] [GitHub] š Updating Epic GitHub issue (DEPRECATED)..." >> "$DEBUG_LOG" 2>/dev/null || true
|
|
290
290
|
"$PROJECT_ROOT/scripts/update-epic-github-issue.sh" "$ACTIVE_INCREMENT" >> "$DEBUG_LOG" 2>&1 || true
|
|
291
|
-
echo "[$(date)] [GitHub] ā ļø Epic sync is deprecated. Use /
|
|
291
|
+
echo "[$(date)] [GitHub] ā ļø Epic sync is deprecated. Use /sw-github:sync instead." >> "$DEBUG_LOG" 2>/dev/null || true
|
|
292
292
|
else
|
|
293
293
|
echo "[$(date)] [GitHub] ā ļø Epic sync script not found, skipping" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
294
294
|
fi
|
|
@@ -2,11 +2,19 @@ import * as fs from "../../../src/utils/fs-native.js";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import { execFileNoThrow } from "../../../src/utils/execFileNoThrow.js";
|
|
4
4
|
import { CodeValidator } from "./CodeValidator.js";
|
|
5
|
+
import { getGitHubAuthFromProject } from "../../../src/utils/auth-helpers.js";
|
|
5
6
|
class ThreeLayerSyncManager {
|
|
6
7
|
constructor(projectRoot = process.cwd()) {
|
|
7
8
|
this.userStoryFileCache = /* @__PURE__ */ new Map();
|
|
8
9
|
this.projectRoot = projectRoot;
|
|
9
10
|
this.codeValidator = new CodeValidator({ projectRoot });
|
|
11
|
+
this.token = getGitHubAuthFromProject(projectRoot).token;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get environment object with GH_TOKEN for gh CLI commands.
|
|
15
|
+
*/
|
|
16
|
+
getGhEnv() {
|
|
17
|
+
return this.token ? { ...process.env, GH_TOKEN: this.token } : process.env;
|
|
10
18
|
}
|
|
11
19
|
/**
|
|
12
20
|
* Clear User Story file cache
|
|
@@ -180,7 +188,7 @@ class ThreeLayerSyncManager {
|
|
|
180
188
|
String(issueNumber),
|
|
181
189
|
"--json",
|
|
182
190
|
"body,state"
|
|
183
|
-
]);
|
|
191
|
+
], { env: this.getGhEnv() });
|
|
184
192
|
if (result.stderr) {
|
|
185
193
|
throw new Error(`Failed to fetch GitHub issue: ${result.stderr}`);
|
|
186
194
|
}
|
|
@@ -506,7 +514,7 @@ $2`);
|
|
|
506
514
|
String(issueNumber),
|
|
507
515
|
"--json",
|
|
508
516
|
"body"
|
|
509
|
-
]);
|
|
517
|
+
], { env: this.getGhEnv() });
|
|
510
518
|
const { body } = JSON.parse(result.stdout);
|
|
511
519
|
let updatedBody = body;
|
|
512
520
|
for (const ac of acs) {
|
|
@@ -525,7 +533,7 @@ $2`);
|
|
|
525
533
|
String(issueNumber),
|
|
526
534
|
"--body",
|
|
527
535
|
updatedBody
|
|
528
|
-
]);
|
|
536
|
+
], { env: this.getGhEnv() });
|
|
529
537
|
}
|
|
530
538
|
/**
|
|
531
539
|
* Add comment to GitHub issue
|
|
@@ -537,7 +545,7 @@ $2`);
|
|
|
537
545
|
String(issueNumber),
|
|
538
546
|
"--body",
|
|
539
547
|
comment
|
|
540
|
-
]);
|
|
548
|
+
], { env: this.getGhEnv() });
|
|
541
549
|
}
|
|
542
550
|
}
|
|
543
551
|
export {
|
|
@@ -22,6 +22,7 @@ import * as fs from '../../../src/utils/fs-native.js';
|
|
|
22
22
|
import path from 'path';
|
|
23
23
|
import { execFileNoThrow } from '../../../src/utils/execFileNoThrow.js';
|
|
24
24
|
import { CodeValidator, type TaskValidationResult } from './CodeValidator.js';
|
|
25
|
+
import { getGitHubAuthFromProject } from '../../../src/utils/auth-helpers.js';
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* Acceptance Criterion with completion state
|
|
@@ -74,10 +75,21 @@ export class ThreeLayerSyncManager {
|
|
|
74
75
|
private codeValidator: CodeValidator;
|
|
75
76
|
private userStoryFileCache: Map<string, string | null> = new Map();
|
|
76
77
|
private projectRoot: string;
|
|
78
|
+
private token?: string;
|
|
77
79
|
|
|
78
80
|
constructor(projectRoot: string = process.cwd()) {
|
|
79
81
|
this.projectRoot = projectRoot;
|
|
80
82
|
this.codeValidator = new CodeValidator({ projectRoot });
|
|
83
|
+
this.token = getGitHubAuthFromProject(projectRoot).token;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Get environment object with GH_TOKEN for gh CLI commands.
|
|
88
|
+
*/
|
|
89
|
+
private getGhEnv(): NodeJS.ProcessEnv {
|
|
90
|
+
return this.token
|
|
91
|
+
? { ...process.env, GH_TOKEN: this.token }
|
|
92
|
+
: process.env;
|
|
81
93
|
}
|
|
82
94
|
|
|
83
95
|
/**
|
|
@@ -334,7 +346,7 @@ export class ThreeLayerSyncManager {
|
|
|
334
346
|
String(issueNumber),
|
|
335
347
|
'--json',
|
|
336
348
|
'body,state'
|
|
337
|
-
]);
|
|
349
|
+
], { env: this.getGhEnv() });
|
|
338
350
|
|
|
339
351
|
if (result.stderr) {
|
|
340
352
|
throw new Error(`Failed to fetch GitHub issue: ${result.stderr}`);
|
|
@@ -765,7 +777,7 @@ export class ThreeLayerSyncManager {
|
|
|
765
777
|
String(issueNumber),
|
|
766
778
|
'--json',
|
|
767
779
|
'body'
|
|
768
|
-
]);
|
|
780
|
+
], { env: this.getGhEnv() });
|
|
769
781
|
|
|
770
782
|
const { body } = JSON.parse(result.stdout);
|
|
771
783
|
|
|
@@ -791,7 +803,7 @@ export class ThreeLayerSyncManager {
|
|
|
791
803
|
String(issueNumber),
|
|
792
804
|
'--body',
|
|
793
805
|
updatedBody
|
|
794
|
-
]);
|
|
806
|
+
], { env: this.getGhEnv() });
|
|
795
807
|
}
|
|
796
808
|
|
|
797
809
|
/**
|
|
@@ -804,6 +816,6 @@ export class ThreeLayerSyncManager {
|
|
|
804
816
|
String(issueNumber),
|
|
805
817
|
'--body',
|
|
806
818
|
comment
|
|
807
|
-
]);
|
|
819
|
+
], { env: this.getGhEnv() });
|
|
808
820
|
}
|
|
809
821
|
}
|
|
@@ -34,7 +34,9 @@ class CompletionCalculator {
|
|
|
34
34
|
tasksPercentage: tasks.length > 0 ? tasksCompleted / tasks.length * 100 : 0,
|
|
35
35
|
overallComplete,
|
|
36
36
|
blockingAcs: acs.filter((ac) => !ac.completed).map((ac) => ac.id),
|
|
37
|
-
blockingTasks: tasks.filter((t) => !t.completed).map((t) => t.id)
|
|
37
|
+
blockingTasks: tasks.filter((t) => !t.completed).map((t) => t.id),
|
|
38
|
+
// v0.35.1: Include frontmatter status for external-origin USs fallback
|
|
39
|
+
frontmatterStatus: frontmatter.status
|
|
38
40
|
};
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
@@ -62,6 +62,10 @@ export interface CompletionStatus {
|
|
|
62
62
|
// Blocking items (for reopen)
|
|
63
63
|
blockingAcs: string[]; // List of incomplete AC-IDs
|
|
64
64
|
blockingTasks: string[]; // List of incomplete Task-IDs
|
|
65
|
+
|
|
66
|
+
// Frontmatter status (fallback for external-origin USs without ACs/tasks)
|
|
67
|
+
// v0.35.1: Used when acsTotal=0 AND tasksTotal=0 to determine label
|
|
68
|
+
frontmatterStatus?: 'complete' | 'completed' | 'active' | 'planning' | 'not-started' | string;
|
|
65
69
|
}
|
|
66
70
|
|
|
67
71
|
/**
|
|
@@ -128,6 +132,8 @@ export class CompletionCalculator {
|
|
|
128
132
|
overallComplete,
|
|
129
133
|
blockingAcs: acs.filter((ac) => !ac.completed).map((ac) => ac.id),
|
|
130
134
|
blockingTasks: tasks.filter((t) => !t.completed).map((t) => t.id),
|
|
135
|
+
// v0.35.1: Include frontmatter status for external-origin USs fallback
|
|
136
|
+
frontmatterStatus: frontmatter.status,
|
|
131
137
|
};
|
|
132
138
|
}
|
|
133
139
|
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { execFileSync } from "child_process";
|
|
2
|
+
import { getGitHubAuthFromProject } from "../../../src/utils/auth-helpers.js";
|
|
3
|
+
function getGhEnv() {
|
|
4
|
+
const { token } = getGitHubAuthFromProject(process.cwd());
|
|
5
|
+
return token ? { ...process.env, GH_TOKEN: token } : process.env;
|
|
6
|
+
}
|
|
2
7
|
class DuplicateDetector {
|
|
3
8
|
/**
|
|
4
9
|
* PHASE 1: Detection (Before Creating Issue)
|
|
@@ -30,7 +35,7 @@ class DuplicateDetector {
|
|
|
30
35
|
if (repo) {
|
|
31
36
|
args.push("--repo", repo);
|
|
32
37
|
}
|
|
33
|
-
const output = execFileSync("gh", args, { encoding: "utf-8" });
|
|
38
|
+
const output = execFileSync("gh", args, { encoding: "utf-8", env: getGhEnv() });
|
|
34
39
|
const issues = JSON.parse(output);
|
|
35
40
|
if (issues.length === 0) {
|
|
36
41
|
console.log(" \u2705 No existing issues found (safe to create)");
|
|
@@ -76,6 +81,7 @@ class DuplicateDetector {
|
|
|
76
81
|
static async verifyAfterCreate(titlePattern, expectedCount = 1, repo) {
|
|
77
82
|
console.log(`
|
|
78
83
|
\u{1F50D} VERIFICATION: Checking issue count for pattern: ${titlePattern}`);
|
|
84
|
+
await new Promise((resolve) => setTimeout(resolve, 2e3));
|
|
79
85
|
try {
|
|
80
86
|
const args = [
|
|
81
87
|
"issue",
|
|
@@ -92,7 +98,7 @@ class DuplicateDetector {
|
|
|
92
98
|
if (repo) {
|
|
93
99
|
args.push("--repo", repo);
|
|
94
100
|
}
|
|
95
|
-
const output = execFileSync("gh", args, { encoding: "utf-8" });
|
|
101
|
+
const output = execFileSync("gh", args, { encoding: "utf-8", env: getGhEnv() });
|
|
96
102
|
const issues = JSON.parse(output);
|
|
97
103
|
const exactMatches = issues.filter(
|
|
98
104
|
(issue) => issue.title.includes(titlePattern)
|
|
@@ -193,7 +199,7 @@ The original issue (#${keepIssueNumber}) should be used for tracking instead.
|
|
|
193
199
|
if (repo) {
|
|
194
200
|
commentArgs.push("--repo", repo);
|
|
195
201
|
}
|
|
196
|
-
execFileSync("gh", commentArgs, { encoding: "utf-8" });
|
|
202
|
+
execFileSync("gh", commentArgs, { encoding: "utf-8", env: getGhEnv() });
|
|
197
203
|
const closeArgs = [
|
|
198
204
|
"issue",
|
|
199
205
|
"close",
|
|
@@ -202,7 +208,7 @@ The original issue (#${keepIssueNumber}) should be used for tracking instead.
|
|
|
202
208
|
if (repo) {
|
|
203
209
|
closeArgs.push("--repo", repo);
|
|
204
210
|
}
|
|
205
|
-
execFileSync("gh", closeArgs, { encoding: "utf-8" });
|
|
211
|
+
execFileSync("gh", closeArgs, { encoding: "utf-8", env: getGhEnv() });
|
|
206
212
|
console.log(` \u2705 Closed #${duplicate.number}`);
|
|
207
213
|
closed++;
|
|
208
214
|
} catch (error) {
|
|
@@ -286,7 +292,7 @@ The original issue (#${keepIssueNumber}) should be used for tracking instead.
|
|
|
286
292
|
assignees.forEach((assignee) => {
|
|
287
293
|
args.push("--assignee", assignee);
|
|
288
294
|
});
|
|
289
|
-
const output = execFileSync("gh", args, { encoding: "utf-8" });
|
|
295
|
+
const output = execFileSync("gh", args, { encoding: "utf-8", env: getGhEnv() });
|
|
290
296
|
const match = output.match(/\/issues\/(\d+)/);
|
|
291
297
|
if (!match) {
|
|
292
298
|
throw new Error("Could not extract issue number from gh CLI output");
|
|
@@ -358,7 +364,7 @@ The original issue (#${keepIssueNumber}) should be used for tracking instead.
|
|
|
358
364
|
*/
|
|
359
365
|
static checkGitHubCLI() {
|
|
360
366
|
try {
|
|
361
|
-
execFileSync("gh", ["auth", "status"], { encoding: "utf-8" });
|
|
367
|
+
execFileSync("gh", ["auth", "status"], { encoding: "utf-8", env: getGhEnv() });
|
|
362
368
|
return true;
|
|
363
369
|
} catch {
|
|
364
370
|
return false;
|
|
@@ -31,6 +31,19 @@
|
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
33
|
import { execFileSync } from 'child_process';
|
|
34
|
+
import { getGitHubAuthFromProject } from '../../../src/utils/auth-helpers.js';
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Get environment object with GH_TOKEN for gh CLI commands.
|
|
38
|
+
* This ensures the token from .env is passed to all gh operations,
|
|
39
|
+
* regardless of `gh auth` status.
|
|
40
|
+
*/
|
|
41
|
+
function getGhEnv(): NodeJS.ProcessEnv {
|
|
42
|
+
const { token } = getGitHubAuthFromProject(process.cwd());
|
|
43
|
+
return token
|
|
44
|
+
? { ...process.env, GH_TOKEN: token }
|
|
45
|
+
: process.env;
|
|
46
|
+
}
|
|
34
47
|
|
|
35
48
|
// ============================================================================
|
|
36
49
|
// TYPE DEFINITIONS
|
|
@@ -115,7 +128,7 @@ export class DuplicateDetector {
|
|
|
115
128
|
args.push('--repo', repo);
|
|
116
129
|
}
|
|
117
130
|
|
|
118
|
-
const output = execFileSync('gh', args, { encoding: 'utf-8' });
|
|
131
|
+
const output = execFileSync('gh', args, { encoding: 'utf-8', env: getGhEnv() });
|
|
119
132
|
const issues = JSON.parse(output) as GitHubIssue[];
|
|
120
133
|
|
|
121
134
|
if (issues.length === 0) {
|
|
@@ -179,6 +192,9 @@ export class DuplicateDetector {
|
|
|
179
192
|
): Promise<VerificationResult> {
|
|
180
193
|
console.log(`\nš VERIFICATION: Checking issue count for pattern: ${titlePattern}`);
|
|
181
194
|
|
|
195
|
+
// ā
GitHub API indexing delay: Wait 2 seconds for issue to be indexed
|
|
196
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
197
|
+
|
|
182
198
|
try {
|
|
183
199
|
const args = [
|
|
184
200
|
'issue',
|
|
@@ -193,7 +209,7 @@ export class DuplicateDetector {
|
|
|
193
209
|
args.push('--repo', repo);
|
|
194
210
|
}
|
|
195
211
|
|
|
196
|
-
const output = execFileSync('gh', args, { encoding: 'utf-8' });
|
|
212
|
+
const output = execFileSync('gh', args, { encoding: 'utf-8', env: getGhEnv() });
|
|
197
213
|
const issues = JSON.parse(output) as GitHubIssue[];
|
|
198
214
|
|
|
199
215
|
// Filter exact matches only
|
|
@@ -318,7 +334,7 @@ The original issue (#${keepIssueNumber}) should be used for tracking instead.
|
|
|
318
334
|
}
|
|
319
335
|
|
|
320
336
|
// Add comment explaining closure
|
|
321
|
-
execFileSync('gh', commentArgs, { encoding: 'utf-8' });
|
|
337
|
+
execFileSync('gh', commentArgs, { encoding: 'utf-8', env: getGhEnv() });
|
|
322
338
|
|
|
323
339
|
const closeArgs = [
|
|
324
340
|
'issue',
|
|
@@ -331,7 +347,7 @@ The original issue (#${keepIssueNumber}) should be used for tracking instead.
|
|
|
331
347
|
}
|
|
332
348
|
|
|
333
349
|
// Close the issue
|
|
334
|
-
execFileSync('gh', closeArgs, { encoding: 'utf-8' });
|
|
350
|
+
execFileSync('gh', closeArgs, { encoding: 'utf-8', env: getGhEnv() });
|
|
335
351
|
|
|
336
352
|
console.log(` ā
Closed #${duplicate.number}`);
|
|
337
353
|
closed++;
|
|
@@ -429,7 +445,7 @@ The original issue (#${keepIssueNumber}) should be used for tracking instead.
|
|
|
429
445
|
args.push('--assignee', assignee);
|
|
430
446
|
});
|
|
431
447
|
|
|
432
|
-
const output = execFileSync('gh', args, { encoding: 'utf-8' });
|
|
448
|
+
const output = execFileSync('gh', args, { encoding: 'utf-8', env: getGhEnv() });
|
|
433
449
|
|
|
434
450
|
// Extract issue number from output (format: "https://github.com/owner/repo/issues/123")
|
|
435
451
|
const match = output.match(/\/issues\/(\d+)/);
|
|
@@ -516,7 +532,7 @@ The original issue (#${keepIssueNumber}) should be used for tracking instead.
|
|
|
516
532
|
*/
|
|
517
533
|
static checkGitHubCLI(): boolean {
|
|
518
534
|
try {
|
|
519
|
-
execFileSync('gh', ['auth', 'status'], { encoding: 'utf-8' });
|
|
535
|
+
execFileSync('gh', ['auth', 'status'], { encoding: 'utf-8', env: getGhEnv() });
|
|
520
536
|
return true;
|
|
521
537
|
} catch {
|
|
522
538
|
return false;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { execFileNoThrow } from "../../../src/utils/execFileNoThrow.js";
|
|
2
|
+
import { getGitHubAuthFromProject } from "../../../src/utils/auth-helpers.js";
|
|
3
|
+
function getGhEnv() {
|
|
4
|
+
const { token } = getGitHubAuthFromProject(process.cwd());
|
|
5
|
+
return token ? { ...process.env, GH_TOKEN: token } : process.env;
|
|
6
|
+
}
|
|
2
7
|
async function fetchBoardsForRepo(owner, repo) {
|
|
3
8
|
console.log(`\u{1F50D} Fetching project boards for repo: ${owner}/${repo}`);
|
|
4
9
|
try {
|
|
@@ -9,7 +14,7 @@ async function fetchBoardsForRepo(owner, repo) {
|
|
|
9
14
|
".[] | {id: .id, name: .name, number: .number, state: .state, html_url: .html_url}",
|
|
10
15
|
"-H",
|
|
11
16
|
"Accept: application/vnd.github+json"
|
|
12
|
-
]);
|
|
17
|
+
], { env: getGhEnv() });
|
|
13
18
|
if (result.status !== 0) {
|
|
14
19
|
console.error(`\u274C Failed to fetch boards for ${owner}/${repo}:`, result.stderr);
|
|
15
20
|
throw new Error(`GitHub API error: ${result.status} ${result.stderr}`);
|
|
@@ -32,7 +37,7 @@ async function fetchBoardsForOrg(org) {
|
|
|
32
37
|
".[] | {id: .id, name: .name, number: .number, state: .state, html_url: .html_url}",
|
|
33
38
|
"-H",
|
|
34
39
|
"Accept: application/vnd.github+json"
|
|
35
|
-
]);
|
|
40
|
+
], { env: getGhEnv() });
|
|
36
41
|
if (result.status !== 0) {
|
|
37
42
|
console.error(`\u274C Failed to fetch boards for org ${org}:`, result.stderr);
|
|
38
43
|
throw new Error(`GitHub API error: ${result.status} ${result.stderr}`);
|
|
@@ -6,6 +6,17 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { execFileNoThrow } from '../../../src/utils/execFileNoThrow.js';
|
|
9
|
+
import { getGitHubAuthFromProject } from '../../../src/utils/auth-helpers.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Get environment object with GH_TOKEN for gh CLI commands.
|
|
13
|
+
*/
|
|
14
|
+
function getGhEnv(): NodeJS.ProcessEnv {
|
|
15
|
+
const { token } = getGitHubAuthFromProject(process.cwd());
|
|
16
|
+
return token
|
|
17
|
+
? { ...process.env, GH_TOKEN: token }
|
|
18
|
+
: process.env;
|
|
19
|
+
}
|
|
9
20
|
|
|
10
21
|
/**
|
|
11
22
|
* GitHub Project Board (Classic Projects)
|
|
@@ -41,7 +52,7 @@ export async function fetchBoardsForRepo(
|
|
|
41
52
|
'.[] | {id: .id, name: .name, number: .number, state: .state, html_url: .html_url}',
|
|
42
53
|
'-H',
|
|
43
54
|
'Accept: application/vnd.github+json',
|
|
44
|
-
]);
|
|
55
|
+
], { env: getGhEnv() });
|
|
45
56
|
|
|
46
57
|
if (result.status !== 0) {
|
|
47
58
|
console.error(`ā Failed to fetch boards for ${owner}/${repo}:`, result.stderr);
|
|
@@ -85,7 +96,7 @@ export async function fetchBoardsForOrg(
|
|
|
85
96
|
'.[] | {id: .id, name: .name, number: .number, state: .state, html_url: .html_url}',
|
|
86
97
|
'-H',
|
|
87
98
|
'Accept: application/vnd.github+json',
|
|
88
|
-
]);
|
|
99
|
+
], { env: getGhEnv() });
|
|
89
100
|
|
|
90
101
|
if (result.status !== 0) {
|
|
91
102
|
console.error(`ā Failed to fetch boards for org ${org}:`, result.stderr);
|