specweave 0.32.0 β 0.32.3
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.md +215 -2
- package/README.md +22 -0
- package/bin/specweave.js +52 -1
- package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.d.ts +100 -0
- package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.d.ts.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.js +291 -0
- package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.js.map +1 -0
- package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.d.ts +103 -0
- package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.d.ts.map +1 -0
- package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.js +310 -0
- package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.js.map +1 -0
- package/dist/plugins/specweave-jira/lib/jira-permission-gate.d.ts +126 -0
- package/dist/plugins/specweave-jira/lib/jira-permission-gate.d.ts.map +1 -0
- package/dist/plugins/specweave-jira/lib/jira-permission-gate.js +207 -0
- package/dist/plugins/specweave-jira/lib/jira-permission-gate.js.map +1 -0
- package/dist/src/adapters/codex/README.md +1 -1
- package/dist/src/adapters/codex/adapter.js +1 -1
- package/dist/src/cli/commands/archive.d.ts +2 -0
- package/dist/src/cli/commands/archive.d.ts.map +1 -1
- package/dist/src/cli/commands/archive.js +33 -0
- package/dist/src/cli/commands/archive.js.map +1 -1
- package/dist/src/cli/commands/cache.d.ts +17 -0
- package/dist/src/cli/commands/cache.d.ts.map +1 -0
- package/dist/src/cli/commands/cache.js +126 -0
- package/dist/src/cli/commands/cache.js.map +1 -0
- package/dist/src/cli/commands/context.d.ts +92 -0
- package/dist/src/cli/commands/context.d.ts.map +1 -0
- package/dist/src/cli/commands/context.js +205 -0
- package/dist/src/cli/commands/context.js.map +1 -0
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +112 -70
- package/dist/src/cli/commands/init.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/sync-spec-commits.js +1 -1
- package/dist/src/cli/commands/sync-spec-commits.js.map +1 -1
- package/dist/src/cli/commands/sync-specs.js +2 -2
- package/dist/src/cli/commands/sync-specs.js.map +1 -1
- package/dist/src/cli/helpers/github/increment-profile-selector.js +1 -1
- package/dist/src/cli/helpers/github/increment-profile-selector.js.map +1 -1
- package/dist/src/cli/helpers/init/external-import.d.ts +3 -0
- package/dist/src/cli/helpers/init/external-import.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/external-import.js +17 -4
- package/dist/src/cli/helpers/init/external-import.js.map +1 -1
- package/dist/src/cli/helpers/init/index.d.ts +1 -0
- package/dist/src/cli/helpers/init/index.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/index.js +2 -0
- package/dist/src/cli/helpers/init/index.js.map +1 -1
- package/dist/src/cli/helpers/init/jira-ado-auto-detect.d.ts +70 -0
- package/dist/src/cli/helpers/init/jira-ado-auto-detect.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/jira-ado-auto-detect.js +214 -4
- package/dist/src/cli/helpers/init/jira-ado-auto-detect.js.map +1 -1
- package/dist/src/cli/helpers/init/living-docs-preflight.d.ts +4 -0
- package/dist/src/cli/helpers/init/living-docs-preflight.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/living-docs-preflight.js +34 -3
- package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -1
- package/dist/src/cli/helpers/init/testing-config.d.ts +3 -0
- package/dist/src/cli/helpers/init/testing-config.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/testing-config.js +9 -2
- package/dist/src/cli/helpers/init/testing-config.js.map +1 -1
- package/dist/src/cli/helpers/init/translation-config.d.ts +3 -0
- package/dist/src/cli/helpers/init/translation-config.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/translation-config.js +21 -4
- package/dist/src/cli/helpers/init/translation-config.js.map +1 -1
- package/dist/src/cli/helpers/init/wizard-navigation.d.ts +45 -0
- package/dist/src/cli/helpers/init/wizard-navigation.d.ts.map +1 -0
- package/dist/src/cli/helpers/init/wizard-navigation.js +97 -0
- package/dist/src/cli/helpers/init/wizard-navigation.js.map +1 -0
- package/dist/src/cli/workers/living-docs-worker.js +66 -1
- package/dist/src/cli/workers/living-docs-worker.js.map +1 -1
- package/dist/src/config/types.d.ts +203 -1208
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/core/discrepancy/increment-generator.d.ts.map +1 -1
- package/dist/src/core/discrepancy/increment-generator.js +5 -2
- package/dist/src/core/discrepancy/increment-generator.js.map +1 -1
- package/dist/src/core/increment/duplicate-detector.js +2 -2
- package/dist/src/core/increment/duplicate-detector.js.map +1 -1
- package/dist/src/core/increment/increment-archiver.d.ts +49 -4
- package/dist/src/core/increment/increment-archiver.d.ts.map +1 -1
- package/dist/src/core/increment/increment-archiver.js +123 -22
- package/dist/src/core/increment/increment-archiver.js.map +1 -1
- package/dist/src/core/increment/increment-status.js +2 -2
- package/dist/src/core/increment/increment-status.js.map +1 -1
- package/dist/src/core/increment/increment-utils.d.ts +150 -0
- package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
- package/dist/src/core/increment/increment-utils.js +216 -4
- package/dist/src/core/increment/increment-utils.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/living-docs/feature-archiver.d.ts +4 -0
- package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -1
- package/dist/src/core/living-docs/feature-archiver.js +32 -10
- package/dist/src/core/living-docs/feature-archiver.js.map +1 -1
- package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -1
- package/dist/src/core/living-docs/feature-id-manager.js +8 -4
- package/dist/src/core/living-docs/feature-id-manager.js.map +1 -1
- package/dist/src/core/living-docs/governance/ecosystem-detector.d.ts +38 -0
- package/dist/src/core/living-docs/governance/ecosystem-detector.d.ts.map +1 -0
- package/dist/src/core/living-docs/governance/ecosystem-detector.js +325 -0
- package/dist/src/core/living-docs/governance/ecosystem-detector.js.map +1 -0
- package/dist/src/core/living-docs/governance/frontend-standards-parser.d.ts +74 -0
- package/dist/src/core/living-docs/governance/frontend-standards-parser.d.ts.map +1 -0
- package/dist/src/core/living-docs/governance/frontend-standards-parser.js +366 -0
- package/dist/src/core/living-docs/governance/frontend-standards-parser.js.map +1 -0
- package/dist/src/core/living-docs/governance/go-standards-parser.d.ts +64 -0
- package/dist/src/core/living-docs/governance/go-standards-parser.d.ts.map +1 -0
- package/dist/src/core/living-docs/governance/go-standards-parser.js +229 -0
- package/dist/src/core/living-docs/governance/go-standards-parser.js.map +1 -0
- package/dist/src/core/living-docs/governance/index.d.ts +50 -0
- package/dist/src/core/living-docs/governance/index.d.ts.map +1 -0
- package/dist/src/core/living-docs/governance/index.js +56 -0
- package/dist/src/core/living-docs/governance/index.js.map +1 -0
- package/dist/src/core/living-docs/governance/java-standards-parser.d.ts +89 -0
- package/dist/src/core/living-docs/governance/java-standards-parser.d.ts.map +1 -0
- package/dist/src/core/living-docs/governance/java-standards-parser.js +356 -0
- package/dist/src/core/living-docs/governance/java-standards-parser.js.map +1 -0
- package/dist/src/core/living-docs/governance/python-standards-parser.d.ts +83 -0
- package/dist/src/core/living-docs/governance/python-standards-parser.d.ts.map +1 -0
- package/dist/src/core/living-docs/governance/python-standards-parser.js +347 -0
- package/dist/src/core/living-docs/governance/python-standards-parser.js.map +1 -0
- package/dist/src/core/living-docs/governance/standards-generator.d.ts +38 -0
- package/dist/src/core/living-docs/governance/standards-generator.d.ts.map +1 -0
- package/dist/src/core/living-docs/governance/standards-generator.js +476 -0
- package/dist/src/core/living-docs/governance/standards-generator.js.map +1 -0
- package/dist/src/core/living-docs/hierarchy-mapper.js +3 -3
- package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
- package/dist/src/core/living-docs/intelligent-analyzer/architecture-generator.d.ts +18 -0
- package/dist/src/core/living-docs/intelligent-analyzer/architecture-generator.d.ts.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/architecture-generator.js +299 -0
- package/dist/src/core/living-docs/intelligent-analyzer/architecture-generator.js.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/deep-repo-analyzer.d.ts +15 -0
- package/dist/src/core/living-docs/intelligent-analyzer/deep-repo-analyzer.d.ts.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/deep-repo-analyzer.js +138 -0
- package/dist/src/core/living-docs/intelligent-analyzer/deep-repo-analyzer.js.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/file-sampler.d.ts +24 -0
- package/dist/src/core/living-docs/intelligent-analyzer/file-sampler.d.ts.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/file-sampler.js +198 -0
- package/dist/src/core/living-docs/intelligent-analyzer/file-sampler.js.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.d.ts +17 -0
- package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.d.ts.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.js +241 -0
- package/dist/src/core/living-docs/intelligent-analyzer/inconsistency-detector.js.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/index.d.ts +28 -0
- package/dist/src/core/living-docs/intelligent-analyzer/index.d.ts.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/index.js +197 -0
- package/dist/src/core/living-docs/intelligent-analyzer/index.js.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.d.ts +22 -0
- package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.d.ts.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.js +482 -0
- package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.js.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/strategy-generator.d.ts +42 -0
- package/dist/src/core/living-docs/intelligent-analyzer/strategy-generator.d.ts.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/strategy-generator.js +343 -0
- package/dist/src/core/living-docs/intelligent-analyzer/strategy-generator.js.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/types.d.ts +190 -0
- package/dist/src/core/living-docs/intelligent-analyzer/types.d.ts.map +1 -0
- package/dist/src/core/living-docs/intelligent-analyzer/types.js +7 -0
- package/dist/src/core/living-docs/intelligent-analyzer/types.js.map +1 -0
- package/dist/src/core/living-docs/living-docs-sync.d.ts +11 -3
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +53 -10
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/living-docs/module-analyzer.d.ts +22 -0
- package/dist/src/core/living-docs/module-analyzer.d.ts.map +1 -1
- package/dist/src/core/living-docs/module-analyzer.js +123 -19
- package/dist/src/core/living-docs/module-analyzer.js.map +1 -1
- package/dist/src/core/llm/provider-factory.js +2 -2
- package/dist/src/core/llm/provider-factory.js.map +1 -1
- package/dist/src/core/llm/providers/anthropic-provider.js +1 -1
- package/dist/src/core/llm/providers/bedrock-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/bedrock-provider.js +8 -4
- package/dist/src/core/llm/providers/bedrock-provider.js.map +1 -1
- package/dist/src/core/sync/spec-increment-mapper.js +3 -3
- package/dist/src/core/sync/spec-increment-mapper.js.map +1 -1
- package/dist/src/importers/item-converter.d.ts +25 -0
- package/dist/src/importers/item-converter.d.ts.map +1 -1
- package/dist/src/importers/item-converter.js +135 -5
- package/dist/src/importers/item-converter.js.map +1 -1
- package/dist/src/importers/jira-importer.d.ts +14 -0
- package/dist/src/importers/jira-importer.d.ts.map +1 -1
- package/dist/src/importers/jira-importer.js +75 -0
- package/dist/src/importers/jira-importer.js.map +1 -1
- package/dist/src/init/architecture/types.d.ts +33 -140
- package/dist/src/init/architecture/types.d.ts.map +1 -1
- package/dist/src/init/compliance/types.d.ts +30 -27
- package/dist/src/init/compliance/types.d.ts.map +1 -1
- package/dist/src/init/repo/types.d.ts +11 -34
- package/dist/src/init/repo/types.d.ts.map +1 -1
- package/dist/src/init/research/src/config/types.d.ts +15 -82
- package/dist/src/init/research/src/config/types.d.ts.map +1 -1
- package/dist/src/init/research/types.d.ts +38 -93
- package/dist/src/init/research/types.d.ts.map +1 -1
- package/dist/src/init/team/types.d.ts +4 -42
- package/dist/src/init/team/types.d.ts.map +1 -1
- package/dist/src/integrations/jira/jira-token-provider.d.ts +93 -0
- package/dist/src/integrations/jira/jira-token-provider.d.ts.map +1 -0
- package/dist/src/integrations/jira/jira-token-provider.js +160 -0
- package/dist/src/integrations/jira/jira-token-provider.js.map +1 -0
- package/dist/src/sync/ado-reconciler.d.ts +92 -0
- package/dist/src/sync/ado-reconciler.d.ts.map +1 -0
- package/dist/src/sync/ado-reconciler.js +335 -0
- package/dist/src/sync/ado-reconciler.js.map +1 -0
- package/dist/src/sync/jira-reconciler.d.ts +106 -0
- package/dist/src/sync/jira-reconciler.d.ts.map +1 -0
- package/dist/src/sync/jira-reconciler.js +405 -0
- package/dist/src/sync/jira-reconciler.js.map +1 -0
- package/dist/src/types/dashboard-cache.d.ts +181 -0
- package/dist/src/types/dashboard-cache.d.ts.map +1 -0
- package/dist/src/types/dashboard-cache.js +65 -0
- package/dist/src/types/dashboard-cache.js.map +1 -0
- package/dist/src/types/model-selection.d.ts +6 -4
- package/dist/src/types/model-selection.d.ts.map +1 -1
- package/dist/src/types/model-selection.js +3 -1
- package/dist/src/types/model-selection.js.map +1 -1
- package/dist/src/utils/docs-validator.d.ts +131 -0
- package/dist/src/utils/docs-validator.d.ts.map +1 -0
- package/dist/src/utils/docs-validator.js +529 -0
- package/dist/src/utils/docs-validator.js.map +1 -0
- package/dist/src/utils/external-tool-drift-detector.d.ts +1 -1
- package/dist/src/utils/external-tool-drift-detector.d.ts.map +1 -1
- package/dist/src/utils/external-tool-drift-detector.js +5 -4
- package/dist/src/utils/external-tool-drift-detector.js.map +1 -1
- package/dist/src/utils/feature-id-collision.js +1 -1
- package/dist/src/utils/feature-id-collision.js.map +1 -1
- package/dist/src/utils/feature-id-derivation.d.ts +8 -3
- package/dist/src/utils/feature-id-derivation.d.ts.map +1 -1
- package/dist/src/utils/feature-id-derivation.js +14 -6
- package/dist/src/utils/feature-id-derivation.js.map +1 -1
- package/dist/src/utils/html-to-mdx.d.ts +1 -0
- package/dist/src/utils/html-to-mdx.d.ts.map +1 -1
- package/dist/src/utils/html-to-mdx.js +43 -5
- package/dist/src/utils/html-to-mdx.js.map +1 -1
- package/dist/src/utils/model-selection.d.ts +3 -4
- package/dist/src/utils/model-selection.d.ts.map +1 -1
- package/dist/src/utils/model-selection.js +3 -4
- package/dist/src/utils/model-selection.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/agents/code-standards-detective/AGENT.md +48 -0
- package/plugins/specweave/agents/pm/AGENT.md +10 -7
- package/plugins/specweave/commands/specweave-archive-features.md +5 -7
- package/plugins/specweave/commands/specweave-archive.md +2 -1
- package/plugins/specweave/commands/specweave-costs.md +4 -4
- package/plugins/specweave/commands/specweave-do.md +44 -10
- package/plugins/specweave/commands/specweave-done.md +109 -0
- package/plugins/specweave/commands/specweave-import-external.md +45 -18
- package/plugins/specweave/commands/specweave-increment.md +331 -33
- package/plugins/specweave/commands/specweave-jobs.md +2 -2
- package/plugins/specweave/commands/specweave-progress.md +4 -4
- package/plugins/specweave/commands/specweave-restore-feature.md +5 -4
- package/plugins/specweave/commands/specweave-sync-docs.md +1 -1
- package/plugins/specweave/commands/specweave-sync-specs.md +216 -322
- package/plugins/specweave/commands/specweave-validate-features.md +13 -8
- package/plugins/specweave/commands/specweave-validate.md +27 -1
- package/plugins/specweave/hooks/docs-changed.sh.backup +79 -0
- package/plugins/specweave/hooks/hooks.json +43 -4
- package/plugins/specweave/hooks/human-input-required.sh.backup +75 -0
- package/plugins/specweave/hooks/lib/common-setup.sh +375 -0
- package/plugins/specweave/hooks/lib/crash-prevention.sh +336 -0
- package/plugins/specweave/hooks/post-first-increment.sh.backup +61 -0
- package/plugins/specweave/hooks/post-increment-change.sh.backup +98 -0
- package/plugins/specweave/hooks/post-increment-completion.sh.backup +231 -0
- package/plugins/specweave/hooks/post-increment-planning.sh.backup +1048 -0
- package/plugins/specweave/hooks/post-increment-status-change.sh.backup +147 -0
- package/plugins/specweave/hooks/post-spec-update.sh.backup +158 -0
- package/plugins/specweave/hooks/post-task-completion.sh +4 -23
- package/plugins/specweave/hooks/post-user-story-complete.sh.backup +179 -0
- package/plugins/specweave/hooks/pre-command-deduplication.sh +1 -6
- package/plugins/specweave/hooks/pre-command-deduplication.sh.backup +83 -0
- package/plugins/specweave/hooks/pre-implementation.sh.backup +67 -0
- package/plugins/specweave/hooks/pre-task-completion.sh +8 -37
- package/plugins/specweave/hooks/pre-task-completion.sh.backup +194 -0
- package/plugins/specweave/hooks/pre-tool-use.sh +2 -11
- package/plugins/specweave/hooks/pre-tool-use.sh.backup +133 -0
- package/plugins/specweave/hooks/spec-project-validator.sh +80 -25
- package/plugins/specweave/hooks/universal/dispatcher.mjs +135 -42
- package/plugins/specweave/hooks/universal/fail-fast-wrapper.sh +183 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh +140 -38
- package/plugins/specweave/hooks/user-prompt-submit.sh.backup +386 -0
- package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +12 -0
- package/plugins/specweave/hooks/v2/dispatchers/session-start.sh +89 -0
- package/plugins/specweave/hooks/v2/guards/bash-file-guard.sh +211 -0
- package/plugins/specweave/hooks/v2/guards/bash-file-guard.test.sh +163 -0
- package/plugins/specweave/hooks/v2/guards/completion-guard.sh +26 -28
- package/plugins/specweave/hooks/v2/guards/features-folder-guard.sh +50 -0
- package/plugins/specweave/hooks/v2/guards/increment-duplicate-guard.sh +135 -0
- package/plugins/specweave/lib/vendor/core/increment/duplicate-detector.js +2 -2
- package/plugins/specweave/lib/vendor/core/increment/duplicate-detector.js.map +1 -1
- package/plugins/specweave/scripts/README.md +166 -0
- package/plugins/specweave/scripts/cleanup-state.sh +142 -0
- package/plugins/specweave/scripts/force-kill.sh +142 -0
- package/plugins/specweave/scripts/jobs.js +171 -0
- package/plugins/specweave/scripts/progress.js +170 -0
- package/plugins/specweave/scripts/read-costs.sh +132 -0
- package/plugins/specweave/scripts/read-jobs.sh +324 -0
- package/plugins/specweave/scripts/read-progress.sh +185 -0
- package/plugins/specweave/scripts/read-status.sh +146 -0
- package/plugins/specweave/scripts/read-workflow.sh +173 -0
- package/plugins/specweave/scripts/rebuild-dashboard-cache.sh +327 -0
- package/plugins/specweave/scripts/session-watchdog.sh +192 -0
- package/plugins/specweave/scripts/status.js +154 -0
- package/plugins/specweave/scripts/update-dashboard-cache.sh +281 -0
- package/plugins/specweave/skills/code-standards-analyzer/SKILL.md +58 -6
- package/plugins/specweave/skills/increment-planner/SKILL.md +388 -48
- package/plugins/specweave/skills/increment-planner/templates/spec-multi-project.md +17 -7
- package/plugins/specweave/skills/increment-planner/templates/spec-single-project.md +6 -1
- package/plugins/specweave/skills/increment-planner/templates/tasks-multi-project.md +1 -1
- package/plugins/specweave/skills/increment-planner/templates/tasks-single-project.md +1 -1
- package/plugins/specweave/skills/instant-status/SKILL.md +70 -0
- package/plugins/specweave-ado/commands/cleanup-duplicates.md +212 -0
- package/plugins/specweave-ado/commands/reconcile.md +120 -0
- package/plugins/specweave-ado/hooks/post-living-docs-update.sh.backup +353 -0
- package/plugins/specweave-ado/hooks/post-task-completion.sh.backup +172 -0
- package/plugins/specweave-ado/lib/ado-duplicate-detector.js +279 -0
- package/plugins/specweave-ado/lib/ado-duplicate-detector.ts +407 -0
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
- package/plugins/specweave-docs/commands/build.md +32 -4
- package/plugins/specweave-docs/commands/preview.md +43 -1
- package/plugins/specweave-docs/commands/validate.md +250 -0
- package/plugins/specweave-github/agents/github-manager/AGENT.md +2 -2
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +1262 -0
- package/plugins/specweave-github/hooks/post-task-completion.sh.backup +258 -0
- package/plugins/specweave-github/lib/enhanced-github-sync.js +220 -0
- package/plugins/specweave-infrastructure/skills/hetzner-provisioner/README.md +1 -1
- package/plugins/specweave-jira/agents/jira-manager/AGENT.md +1 -1
- package/plugins/specweave-jira/agents/jira-multi-project-mapper/AGENT.md +530 -0
- package/plugins/specweave-jira/agents/jira-sync-judge/AGENT.md +438 -0
- package/plugins/specweave-jira/commands/cleanup-duplicates.md +219 -0
- package/plugins/specweave-jira/commands/close.md +297 -0
- package/plugins/specweave-jira/commands/create.md +198 -0
- package/plugins/specweave-jira/commands/reconcile.md +123 -0
- package/plugins/specweave-jira/commands/status.md +215 -0
- package/plugins/specweave-jira/hooks/post-task-completion.sh.backup +172 -0
- package/plugins/specweave-jira/lib/enhanced-jira-sync.js +134 -0
- package/plugins/specweave-jira/lib/jira-duplicate-detector.js +296 -0
- package/plugins/specweave-jira/lib/jira-duplicate-detector.ts +434 -0
- package/plugins/specweave-jira/lib/jira-permission-gate.js +160 -0
- package/plugins/specweave-jira/lib/jira-permission-gate.ts +276 -0
- package/plugins/specweave-jira/lib/jira-profile-resolver.js +222 -0
- package/plugins/specweave-jira/lib/jira-profile-resolver.ts +427 -0
- package/plugins/specweave-jira/reference/jira-specweave-mapping.md +16 -11
- package/plugins/specweave-release/commands/specweave-release-npm.md +140 -14
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +1254 -0
- package/plugins/specweave-release/hooks/post-task-completion.sh.backup +110 -0
- package/plugins/specweave/hooks/post-edit-spec.sh +0 -265
- package/plugins/specweave/hooks/post-write-spec.sh +0 -267
- package/plugins/specweave/hooks/pre-edit-spec.sh +0 -151
- package/plugins/specweave/hooks/pre-write-spec.sh +0 -151
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-detector.js","sourceRoot":"","sources":["../../../../src/core/increment/duplicate-detector.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"duplicate-detector.js","sourceRoot":"","sources":["../../../../src/core/increment/duplicate-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAqC5B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe;IAEf,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAErE,uCAAuC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;SAClB,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtD,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC;QACnC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC;QAC1D,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC;KAC7D,CAAC,CAAC;IAEH,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IACxD,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC;IAE7D,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM;YAAE,SAAS,CAAC,6BAA6B;QAEpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,sEAAsE;IACtE,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,mBAAmB;YACnB,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;YACvC,UAAU,CAAC,IAAI,CAAC;gBACd,eAAe,EAAE,MAAM;gBACvB,SAAS;gBACT,iBAAiB,EAAE,MAAM;gBACzB,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;gBACnD,gBAAgB,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,UAAU;QACV,YAAY,EAAE,aAAa,CAAC,MAAM;QAClC,cAAc,EAAE,UAAU,CAAC,MAAM;KAClC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,eAAuB,EACvB,OAAe;IAEf,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAErE,uCAAuC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,+CAA+C;IAC/C,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE1D,iCAAiC;IACjC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtD,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC;QACnC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC;QAC1D,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC;KAC7D,CAAC,CAAC;IAEH,8CAA8C;IAC9C,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC;IAC7D,MAAM,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QACpD,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,MAAM,KAAK,gBAAgB,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,GAAW,EACX,eAAwB,KAAK;IAE7B,IAAI,CAAC;QACH,4BAA4B;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,2DAA2D;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAErC,MAAM,SAAS,GAAwB,EAAE,CAAC;QAE1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;oBAAE,SAAS;gBAEnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAEpC,iCAAiC;gBACjC,IAAI,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EAAE,CAAC;oBACzD,SAAS;gBACX,CAAC;gBAED,gBAAgB;gBAChB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;gBACzD,IAAI,QAAQ,GAAQ;oBAClB,MAAM,EAAE,SAAS;oBACjB,YAAY,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;iBAClD,CAAC;gBAEF,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC;wBACH,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;oBAC7C,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,yDAAyD;oBAC3D,CAAC;gBACH,CAAC;gBAED,0BAA0B;gBAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;gBACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;oBAC1C,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAChC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;oBACzB,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC,CAAC,CAAC,MAAM,CAAC;gBAEV,uBAAuB;gBACvB,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACnC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;4BACpB,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC;wBAC3B,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,2BAA2B;oBAC7B,CAAC;gBACH,CAAC;gBAED,2BAA2B;gBAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAEnD,oCAAoC;gBACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;gBAE/D,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,OAAO;oBACb,IAAI;oBACJ,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,SAAS;oBACpC,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;oBAC1E,SAAS;oBACT,SAAS;oBACT,UAAU;oBACV,aAAa;iBACd,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gCAAgC;gBAChC,IAAI,YAAY;oBAAE,MAAM,KAAK,CAAC;YAChC,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,YAAY;YAAE,MAAM,KAAK,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,SAA8B;IAClD,uEAAuE;IACvE,MAAM,cAAc,GAA2B;QAC7C,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;KACX,CAAC;IAEF,mBAAmB;IACnB,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1C,qBAAqB;QACrB,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,GAAG,SAAS,CAAC;QAE1D,0BAA0B;QAC1B,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,KAAK,GAAG,KAAK,CAAC;QAE1C,gCAAgC;QAChC,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;QAElE,0DAA0D;QAC1D,MAAM,aAAa,GAAG,CAAC,GAAsB,EAAE,EAAE;YAC/C,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,CAAC,CAAC,CAAC,SAAS;QACrB,CAAC,CAAC;QACF,OAAO,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,MAAyB,EACzB,GAAwB;IAExB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,cAAc,GAA2B;QAC7C,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;KACX,CAAC;IAEF,eAAe;IACf,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACpC,GAAG,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,oBAAoB,CAC3E,CAAC;IACF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,gBAAgB;IAChB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3D,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACtC,GAAG,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,CACpE,CAAC;IACF,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,yBAAyB,IAAI,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,qBAAqB;IACrB,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1F,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,SAAS,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED,iBAAiB;IACjB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9E,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACtC,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QACxE,MAAM,gBAAgB,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACjE,OAAO,gBAAgB,CAAC,WAA4C,CAAC;YAC9D,gBAAgB,CAAC,cAA+C,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IACH,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,MAAM,cAAc,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# SpecWeave Instant Scripts
|
|
2
|
+
|
|
3
|
+
**Blazingly fast status commands that bypass LLM processing.**
|
|
4
|
+
|
|
5
|
+
These scripts provide instant (<100ms) output for status queries that don't require AI reasoning.
|
|
6
|
+
|
|
7
|
+
## Why These Exist
|
|
8
|
+
|
|
9
|
+
Status commands (`/specweave:status`, `/specweave:progress`, `/specweave:jobs`) were taking 3+ minutes because they expanded as prompts requiring LLM processing. These commands need NO reasoning - they just read JSON and format output.
|
|
10
|
+
|
|
11
|
+
**Performance comparison:**
|
|
12
|
+
|
|
13
|
+
| Command | Before | After |
|
|
14
|
+
|---------|--------|-------|
|
|
15
|
+
| `/specweave:status` | 3+ min | <100ms |
|
|
16
|
+
| `/specweave:progress` | 2+ min | <100ms |
|
|
17
|
+
| `/specweave:jobs` | 3+ min | <100ms |
|
|
18
|
+
|
|
19
|
+
## Scripts
|
|
20
|
+
|
|
21
|
+
### Bash Scripts (v0.32.0+ - Recommended)
|
|
22
|
+
|
|
23
|
+
These read from the pre-computed dashboard cache for <10ms response time.
|
|
24
|
+
|
|
25
|
+
#### read-status.sh - Increment Status Overview
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
bash plugins/specweave/scripts/read-status.sh
|
|
29
|
+
bash plugins/specweave/scripts/read-status.sh 0045 # Specific increment
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
#### read-progress.sh - Task Completion Progress
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
bash plugins/specweave/scripts/read-progress.sh
|
|
36
|
+
bash plugins/specweave/scripts/read-progress.sh 0045 # Specific increment
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
#### read-jobs.sh - Background Job Status
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
bash plugins/specweave/scripts/read-jobs.sh
|
|
43
|
+
bash plugins/specweave/scripts/read-jobs.sh --all # Include completed
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Node.js Scripts (Legacy - Fallback)
|
|
47
|
+
|
|
48
|
+
These are used when jq is not available or cache doesn't exist.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
node plugins/specweave/scripts/status.js
|
|
52
|
+
node plugins/specweave/scripts/progress.js
|
|
53
|
+
node plugins/specweave/scripts/jobs.js
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Three Execution Paths
|
|
57
|
+
|
|
58
|
+
These scripts work across all contexts through a layered architecture:
|
|
59
|
+
|
|
60
|
+
| Layer | Context | Speed | How It Works |
|
|
61
|
+
|-------|---------|-------|--------------|
|
|
62
|
+
| **Hook** | Claude Code | <100ms | `UserPromptSubmit` intercepts `/specweave:*`, runs script, blocks prompt |
|
|
63
|
+
| **Skill** | Any LLM | ~2s | Skill instructs LLM to run script via Bash |
|
|
64
|
+
| **CLI** | Terminal | ~500ms | `specweave status` / direct `node scripts/*.js` |
|
|
65
|
+
|
|
66
|
+
### 1. Claude Code (Hook - Fastest)
|
|
67
|
+
|
|
68
|
+
In Claude Code, the `UserPromptSubmit` hook automatically intercepts status commands:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
User types: /specweave:status
|
|
72
|
+
Hook runs: bash plugins/specweave/scripts/read-status.sh
|
|
73
|
+
Output appears instantly (<10ms)
|
|
74
|
+
LLM never processes the prompt
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 2. Other LLMs (Skill - Fast)
|
|
78
|
+
|
|
79
|
+
In Cursor, Windsurf, Copilot, or API usage, the `instant-status` skill provides instructions:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
User types: /specweave:status
|
|
83
|
+
Skill activates and instructs LLM to run the script
|
|
84
|
+
LLM executes: bash plugins/specweave/scripts/read-status.sh
|
|
85
|
+
Output appears (~2s)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 3. Terminal (CLI - Direct)
|
|
89
|
+
|
|
90
|
+
Users can run scripts directly without any LLM:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Full CLI command
|
|
94
|
+
specweave status
|
|
95
|
+
specweave jobs
|
|
96
|
+
|
|
97
|
+
# Direct script execution (bash preferred)
|
|
98
|
+
bash plugins/specweave/scripts/read-status.sh
|
|
99
|
+
bash plugins/specweave/scripts/read-progress.sh 0045
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## When to Use Which
|
|
103
|
+
|
|
104
|
+
| Situation | Recommended Path |
|
|
105
|
+
|-----------|------------------|
|
|
106
|
+
| Quick status check in Claude Code | Just type `/specweave:status` |
|
|
107
|
+
| Using Cursor/Windsurf/Copilot | Let skill guide execution |
|
|
108
|
+
| Terminal/scripting | `specweave status` or `node scripts/*.js` |
|
|
109
|
+
| CI/CD pipelines | Direct `node scripts/*.js` |
|
|
110
|
+
|
|
111
|
+
## Adding New Instant Commands
|
|
112
|
+
|
|
113
|
+
To add a new instant command:
|
|
114
|
+
|
|
115
|
+
1. Create script in `plugins/specweave/scripts/newcmd.js`
|
|
116
|
+
2. Add `--help` handling (required)
|
|
117
|
+
3. Add to hook dispatcher in `plugins/specweave/hooks/user-prompt-submit.sh`
|
|
118
|
+
4. Update `skills/instant-status/SKILL.md` with new command
|
|
119
|
+
5. Test all three paths (hook, skill, CLI)
|
|
120
|
+
|
|
121
|
+
### Script Template
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
#!/usr/bin/env node
|
|
125
|
+
/**
|
|
126
|
+
* Description of what this script does
|
|
127
|
+
* Usage: node newcmd.js [options] [--help]
|
|
128
|
+
*/
|
|
129
|
+
|
|
130
|
+
import fs from 'fs';
|
|
131
|
+
import path from 'path';
|
|
132
|
+
|
|
133
|
+
// Handle --help (REQUIRED)
|
|
134
|
+
if (process.argv.includes('--help') || process.argv.includes('-h')) {
|
|
135
|
+
console.log(`
|
|
136
|
+
SpecWeave Instant NewCmd
|
|
137
|
+
|
|
138
|
+
USAGE
|
|
139
|
+
node plugins/specweave/scripts/newcmd.js [options]
|
|
140
|
+
|
|
141
|
+
OPTIONS
|
|
142
|
+
--help, -h Show this help message
|
|
143
|
+
|
|
144
|
+
DESCRIPTION
|
|
145
|
+
What this command does...
|
|
146
|
+
|
|
147
|
+
EXECUTION PATHS
|
|
148
|
+
1. Claude Code: /specweave:newcmd (hook intercepts)
|
|
149
|
+
2. Any LLM: Skill instructs to run this script
|
|
150
|
+
3. Terminal: specweave newcmd
|
|
151
|
+
`);
|
|
152
|
+
process.exit(0);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Your implementation here
|
|
156
|
+
const cwd = process.cwd();
|
|
157
|
+
// ...
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Design Principles
|
|
161
|
+
|
|
162
|
+
1. **Zero LLM tokens**: Pure filesystem reads, no AI reasoning needed
|
|
163
|
+
2. **Single source of truth**: Hook, skill, and CLI all use these same scripts
|
|
164
|
+
3. **Universal compatibility**: Works in Claude Code, Cursor, Copilot, terminal
|
|
165
|
+
4. **Fast feedback**: <100ms response time for status queries
|
|
166
|
+
5. **Self-documenting**: All scripts support `--help`
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# cleanup-state.sh - Emergency state cleanup for stuck sessions
|
|
3
|
+
#
|
|
4
|
+
# Usage: bash cleanup-state.sh [--all]
|
|
5
|
+
#
|
|
6
|
+
# Cleans:
|
|
7
|
+
# - Lock files (.lock, .lock.d, .pid)
|
|
8
|
+
# - Dedup cache files
|
|
9
|
+
# - Stale event queue files (older than 5 minutes)
|
|
10
|
+
#
|
|
11
|
+
# With --all:
|
|
12
|
+
# - Also cleans circuit breaker state
|
|
13
|
+
# - Resets status line cache
|
|
14
|
+
#
|
|
15
|
+
# IMPORTANT: Run this if Claude Code is stuck or hangs
|
|
16
|
+
|
|
17
|
+
set -e
|
|
18
|
+
|
|
19
|
+
PROJECT_ROOT="$PWD"
|
|
20
|
+
while [[ "$PROJECT_ROOT" != "/" ]] && [[ ! -d "$PROJECT_ROOT/.specweave" ]]; do
|
|
21
|
+
PROJECT_ROOT=$(dirname "$PROJECT_ROOT")
|
|
22
|
+
done
|
|
23
|
+
|
|
24
|
+
if [[ ! -d "$PROJECT_ROOT/.specweave" ]]; then
|
|
25
|
+
echo "β No .specweave directory found. Are you in a SpecWeave project?"
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
STATE_DIR="$PROJECT_ROOT/.specweave/state"
|
|
30
|
+
LOGS_DIR="$PROJECT_ROOT/.specweave/logs"
|
|
31
|
+
|
|
32
|
+
echo "π§Ή SpecWeave State Cleanup"
|
|
33
|
+
echo "=========================="
|
|
34
|
+
echo "Project: $PROJECT_ROOT"
|
|
35
|
+
echo ""
|
|
36
|
+
|
|
37
|
+
# Kill any zombie processor processes
|
|
38
|
+
echo "β Killing zombie processes..."
|
|
39
|
+
pkill -f "processor\.sh.*daemon" 2>/dev/null || true
|
|
40
|
+
pkill -f "processor\.js.*daemon" 2>/dev/null || true
|
|
41
|
+
echo " β Done"
|
|
42
|
+
|
|
43
|
+
# Kill heredoc zombie processes (CRITICAL - prevents infinite hangs)
|
|
44
|
+
echo "β Killing heredoc zombies..."
|
|
45
|
+
pkill -f "cat.*EOF" 2>/dev/null || true
|
|
46
|
+
pkill -f "bash.*heredoc" 2>/dev/null || true
|
|
47
|
+
pkill -9 -f "bash.*specweave.*>" 2>/dev/null || true
|
|
48
|
+
echo " β Done"
|
|
49
|
+
|
|
50
|
+
# Clean lock files
|
|
51
|
+
echo "β Cleaning lock files..."
|
|
52
|
+
rm -f "$STATE_DIR"/.processor.pid 2>/dev/null || true
|
|
53
|
+
rm -rf "$STATE_DIR"/.processor.lock.d 2>/dev/null || true
|
|
54
|
+
rm -rf "$STATE_DIR"/.processor.lock 2>/dev/null || true
|
|
55
|
+
echo " β Done"
|
|
56
|
+
|
|
57
|
+
# Clean dedup cache
|
|
58
|
+
echo "β Cleaning dedup cache..."
|
|
59
|
+
rm -rf "$STATE_DIR"/.dedup-cache/*.lock 2>/dev/null || true
|
|
60
|
+
find "$STATE_DIR"/.dedup-cache -type f -mmin +5 -delete 2>/dev/null || true
|
|
61
|
+
echo " β Done"
|
|
62
|
+
|
|
63
|
+
# Clean stale event queue files
|
|
64
|
+
echo "β Cleaning stale event queue..."
|
|
65
|
+
EVENT_QUEUE="$STATE_DIR/event-queue"
|
|
66
|
+
if [[ -d "$EVENT_QUEUE" ]]; then
|
|
67
|
+
STALE_COUNT=$(find "$EVENT_QUEUE" -name "*.event" -mmin +5 2>/dev/null | wc -l | tr -d ' ')
|
|
68
|
+
if [[ "$STALE_COUNT" -gt 0 ]]; then
|
|
69
|
+
find "$EVENT_QUEUE" -name "*.event" -mmin +5 -delete 2>/dev/null
|
|
70
|
+
echo " β Removed $STALE_COUNT stale events"
|
|
71
|
+
else
|
|
72
|
+
echo " β No stale events"
|
|
73
|
+
fi
|
|
74
|
+
else
|
|
75
|
+
echo " β No event queue"
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
# Full cleanup with --all flag
|
|
79
|
+
if [[ "$1" == "--all" ]]; then
|
|
80
|
+
echo ""
|
|
81
|
+
echo "β Full cleanup (--all)..."
|
|
82
|
+
|
|
83
|
+
# Reset circuit breakers
|
|
84
|
+
echo " β Resetting circuit breakers..."
|
|
85
|
+
echo "0" > "$STATE_DIR/.hook-circuit-breaker" 2>/dev/null || true
|
|
86
|
+
echo "0" > "$STATE_DIR/.hook-circuit-breaker-pre" 2>/dev/null || true
|
|
87
|
+
echo " β Done"
|
|
88
|
+
|
|
89
|
+
# Reset status line cache
|
|
90
|
+
echo " β Resetting status line cache..."
|
|
91
|
+
rm -f "$STATE_DIR/status-line.json" 2>/dev/null || true
|
|
92
|
+
echo " β Done"
|
|
93
|
+
|
|
94
|
+
# Clean all US completion state
|
|
95
|
+
echo " β Cleaning US completion state..."
|
|
96
|
+
rm -f "$STATE_DIR"/.us-completion-* 2>/dev/null || true
|
|
97
|
+
rm -f "$STATE_DIR"/.prev-status-* 2>/dev/null || true
|
|
98
|
+
echo " β Done"
|
|
99
|
+
|
|
100
|
+
# Clean logs (keep last 10 lines for debugging)
|
|
101
|
+
echo " β Trimming logs..."
|
|
102
|
+
for log in "$LOGS_DIR"/*.log; do
|
|
103
|
+
if [[ -f "$log" ]]; then
|
|
104
|
+
tail -10 "$log" > "$log.tmp" 2>/dev/null && mv "$log.tmp" "$log" || rm -f "$log.tmp"
|
|
105
|
+
fi
|
|
106
|
+
done
|
|
107
|
+
echo " β Done"
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
# Check MCP connection issues
|
|
111
|
+
echo "β Checking MCP connection health..."
|
|
112
|
+
CLAUDE_DEBUG="$HOME/.claude/debug/latest"
|
|
113
|
+
if [[ -f "$CLAUDE_DEBUG" ]]; then
|
|
114
|
+
MCP_DROPS=$(grep -c "WS-IDE connection dropped" "$CLAUDE_DEBUG" 2>/dev/null | head -1 || echo "0")
|
|
115
|
+
MCP_DROPS="${MCP_DROPS//[^0-9]/}" # Strip non-numeric chars
|
|
116
|
+
MCP_DROPS="${MCP_DROPS:-0}"
|
|
117
|
+
if [[ "$MCP_DROPS" -gt 0 ]]; then
|
|
118
|
+
echo " β οΈ Found $MCP_DROPS MCP connection drops in latest session"
|
|
119
|
+
echo ""
|
|
120
|
+
echo " MCP FIX OPTIONS:"
|
|
121
|
+
echo " 1. In VS Code: Cmd+Shift+P β 'Developer: Restart Extension Host'"
|
|
122
|
+
echo " 2. Close extra files/tabs (reduces diagnostics payload)"
|
|
123
|
+
echo " 3. Run Claude Code in plain terminal instead"
|
|
124
|
+
echo ""
|
|
125
|
+
else
|
|
126
|
+
echo " β No MCP drops detected"
|
|
127
|
+
fi
|
|
128
|
+
else
|
|
129
|
+
echo " β No debug log to check"
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
echo ""
|
|
133
|
+
echo "β
Cleanup complete!"
|
|
134
|
+
echo ""
|
|
135
|
+
echo "Next steps:"
|
|
136
|
+
echo " 1. Restart Claude Code"
|
|
137
|
+
echo " 2. Run /specweave:progress to check status"
|
|
138
|
+
echo ""
|
|
139
|
+
echo "If MCP issues persist:"
|
|
140
|
+
echo " β’ Update Claude Code VS Code extension"
|
|
141
|
+
echo " β’ Use terminal mode: cd project && claude"
|
|
142
|
+
echo ""
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# force-kill.sh - AGGRESSIVE process killer for stuck Claude Code sessions
|
|
3
|
+
#
|
|
4
|
+
# This script KILLS processes, not just warns about them.
|
|
5
|
+
# Use when Claude Code is stuck and won't respond.
|
|
6
|
+
#
|
|
7
|
+
# Usage:
|
|
8
|
+
# bash force-kill.sh # Kill all stuck processes
|
|
9
|
+
# bash force-kill.sh --dry-run # Show what would be killed
|
|
10
|
+
#
|
|
11
|
+
# What gets killed:
|
|
12
|
+
# - Heredoc processes (cat.*EOF)
|
|
13
|
+
# - Stuck node processes from hooks
|
|
14
|
+
# - Background SpecWeave processors
|
|
15
|
+
# - Zombie bash processes
|
|
16
|
+
|
|
17
|
+
set -euo pipefail
|
|
18
|
+
|
|
19
|
+
DRY_RUN=false
|
|
20
|
+
VERBOSE=false
|
|
21
|
+
|
|
22
|
+
# Colors
|
|
23
|
+
RED='\033[0;31m'
|
|
24
|
+
GREEN='\033[0;32m'
|
|
25
|
+
YELLOW='\033[1;33m'
|
|
26
|
+
NC='\033[0m'
|
|
27
|
+
|
|
28
|
+
for arg in "$@"; do
|
|
29
|
+
case $arg in
|
|
30
|
+
--dry-run|-n)
|
|
31
|
+
DRY_RUN=true
|
|
32
|
+
;;
|
|
33
|
+
--verbose|-v)
|
|
34
|
+
VERBOSE=true
|
|
35
|
+
;;
|
|
36
|
+
esac
|
|
37
|
+
done
|
|
38
|
+
|
|
39
|
+
log() {
|
|
40
|
+
echo -e "$1"
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
kill_processes() {
|
|
44
|
+
local pattern="$1"
|
|
45
|
+
local desc="$2"
|
|
46
|
+
local signal="${3:--9}" # Default to SIGKILL
|
|
47
|
+
|
|
48
|
+
local pids
|
|
49
|
+
pids=$(pgrep -f "$pattern" 2>/dev/null || true)
|
|
50
|
+
|
|
51
|
+
if [[ -n "$pids" ]]; then
|
|
52
|
+
local count
|
|
53
|
+
count=$(echo "$pids" | wc -l | tr -d ' ')
|
|
54
|
+
|
|
55
|
+
if [[ "$DRY_RUN" == "true" ]]; then
|
|
56
|
+
log "${YELLOW}[DRY-RUN]${NC} Would kill $count $desc process(es):"
|
|
57
|
+
echo "$pids" | while read -r pid; do
|
|
58
|
+
ps -p "$pid" -o pid,command 2>/dev/null | tail -1 || true
|
|
59
|
+
done
|
|
60
|
+
else
|
|
61
|
+
log "${RED}Killing${NC} $count $desc process(es)..."
|
|
62
|
+
echo "$pids" | xargs kill $signal 2>/dev/null || true
|
|
63
|
+
sleep 0.5
|
|
64
|
+
# Double-tap with SIGKILL if still alive
|
|
65
|
+
for pid in $pids; do
|
|
66
|
+
if kill -0 "$pid" 2>/dev/null; then
|
|
67
|
+
kill -9 "$pid" 2>/dev/null || true
|
|
68
|
+
fi
|
|
69
|
+
done
|
|
70
|
+
fi
|
|
71
|
+
return 0
|
|
72
|
+
fi
|
|
73
|
+
return 1
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
# === Main execution ===
|
|
77
|
+
log "${RED}ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
78
|
+
log "${RED}FORCE KILL - Aggressive Process Termination${NC}"
|
|
79
|
+
log "${RED}ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
80
|
+
[[ "$DRY_RUN" == "true" ]] && log "${YELLOW}DRY RUN MODE - No processes will be killed${NC}"
|
|
81
|
+
echo
|
|
82
|
+
|
|
83
|
+
KILLED_ANY=false
|
|
84
|
+
|
|
85
|
+
# 1. Kill heredoc zombies (most common cause of hangs)
|
|
86
|
+
if kill_processes "cat.*EOF" "heredoc zombie"; then
|
|
87
|
+
KILLED_ANY=true
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
# 2. Kill stuck hook node processes
|
|
91
|
+
if kill_processes "node.*specweave.*hook" "hook node"; then
|
|
92
|
+
KILLED_ANY=true
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
# 3. Kill stuck dispatcher processes
|
|
96
|
+
if kill_processes "dispatcher.mjs" "dispatcher"; then
|
|
97
|
+
KILLED_ANY=true
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
# 4. Kill background processors
|
|
101
|
+
if kill_processes "processor.sh" "background processor"; then
|
|
102
|
+
KILLED_ANY=true
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
# 5. Kill stuck sync processes
|
|
106
|
+
if kill_processes "node.*sync.*specweave" "sync node"; then
|
|
107
|
+
KILLED_ANY=true
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
# 6. Kill any bash processes with specweave in command (older than 60s)
|
|
111
|
+
# This is more aggressive - use pattern carefully
|
|
112
|
+
if kill_processes "bash.*specweave.*hooks" "specweave bash"; then
|
|
113
|
+
KILLED_ANY=true
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
# 7. Clean up lock files
|
|
117
|
+
if [[ "$DRY_RUN" != "true" ]]; then
|
|
118
|
+
log "\n${GREEN}Cleaning lock files...${NC}"
|
|
119
|
+
rm -f .specweave/state/.processor.lock 2>/dev/null || true
|
|
120
|
+
rm -f .specweave/state/.processor.pid 2>/dev/null || true
|
|
121
|
+
rm -f .specweave/state/.hook-* 2>/dev/null || true
|
|
122
|
+
rm -rf .specweave/state/.dedup-cache/*.lock 2>/dev/null || true
|
|
123
|
+
log " β Lock files cleaned"
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
echo
|
|
127
|
+
if [[ "$KILLED_ANY" == "true" ]]; then
|
|
128
|
+
if [[ "$DRY_RUN" == "true" ]]; then
|
|
129
|
+
log "${YELLOW}Run without --dry-run to kill these processes${NC}"
|
|
130
|
+
else
|
|
131
|
+
log "${GREEN}β Stuck processes killed${NC}"
|
|
132
|
+
log ""
|
|
133
|
+
log "Next steps:"
|
|
134
|
+
log " 1. Close any stuck Claude Code terminals"
|
|
135
|
+
log " 2. Start a fresh Claude Code session"
|
|
136
|
+
fi
|
|
137
|
+
else
|
|
138
|
+
log "${GREEN}β No stuck processes found${NC}"
|
|
139
|
+
fi
|
|
140
|
+
|
|
141
|
+
log ""
|
|
142
|
+
log "${RED}ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Instant Background Jobs Status
|
|
4
|
+
*
|
|
5
|
+
* Executed by UserPromptSubmit hook for /specweave:jobs
|
|
6
|
+
* Bypasses LLM entirely - output shown directly to user
|
|
7
|
+
*
|
|
8
|
+
* Usage: node jobs.js [--all] [--id <jobId>] [--help]
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import fs from 'fs';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
|
|
14
|
+
// Handle --help
|
|
15
|
+
if (process.argv.includes('--help') || process.argv.includes('-h')) {
|
|
16
|
+
console.log(`
|
|
17
|
+
SpecWeave Instant Jobs
|
|
18
|
+
|
|
19
|
+
USAGE
|
|
20
|
+
node plugins/specweave/scripts/jobs.js [options]
|
|
21
|
+
specweave jobs [options]
|
|
22
|
+
|
|
23
|
+
OPTIONS
|
|
24
|
+
--help, -h Show this help message
|
|
25
|
+
--all Show all jobs including completed
|
|
26
|
+
--id <jobId> Show details for specific job
|
|
27
|
+
|
|
28
|
+
DESCRIPTION
|
|
29
|
+
Shows background job status (imports, cloning, sync operations).
|
|
30
|
+
This script bypasses LLM processing for instant results (<100ms).
|
|
31
|
+
|
|
32
|
+
EXECUTION PATHS
|
|
33
|
+
1. Claude Code: /specweave:jobs (hook intercepts, <100ms)
|
|
34
|
+
2. Any LLM: Skill instructs to run this script (~2s)
|
|
35
|
+
3. Terminal: specweave jobs (~500ms)
|
|
36
|
+
|
|
37
|
+
EXAMPLES
|
|
38
|
+
node plugins/specweave/scripts/jobs.js
|
|
39
|
+
node plugins/specweave/scripts/jobs.js --all
|
|
40
|
+
node plugins/specweave/scripts/jobs.js --id abc123
|
|
41
|
+
specweave jobs --all
|
|
42
|
+
`);
|
|
43
|
+
process.exit(0);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const cwd = process.cwd();
|
|
47
|
+
const stateFile = path.join(cwd, '.specweave/state/background-jobs.json');
|
|
48
|
+
const args = process.argv.slice(2);
|
|
49
|
+
|
|
50
|
+
// Parse arguments
|
|
51
|
+
const showAll = args.includes('--all');
|
|
52
|
+
const idIndex = args.indexOf('--id');
|
|
53
|
+
const specificId = idIndex !== -1 ? args[idIndex + 1] : null;
|
|
54
|
+
|
|
55
|
+
// Check if state file exists
|
|
56
|
+
if (!fs.existsSync(stateFile)) {
|
|
57
|
+
console.log('No background jobs found.');
|
|
58
|
+
console.log('Jobs are created during `specweave init` when importing large datasets.');
|
|
59
|
+
process.exit(0);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Read and parse state
|
|
63
|
+
let state;
|
|
64
|
+
try {
|
|
65
|
+
state = JSON.parse(fs.readFileSync(stateFile, 'utf-8'));
|
|
66
|
+
} catch (e) {
|
|
67
|
+
console.log('Error reading jobs state:', e.message);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const jobs = state.jobs || [];
|
|
72
|
+
|
|
73
|
+
if (jobs.length === 0) {
|
|
74
|
+
console.log('No background jobs found.');
|
|
75
|
+
process.exit(0);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// If specific job requested
|
|
79
|
+
if (specificId) {
|
|
80
|
+
const job = jobs.find(j => j.id === specificId || j.id.startsWith(specificId));
|
|
81
|
+
if (!job) {
|
|
82
|
+
console.log(`Job not found: ${specificId}`);
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
console.log(`\nπ¦ Job Details: ${job.id}\n`);
|
|
87
|
+
console.log(`Type: ${job.type}`);
|
|
88
|
+
console.log(`Status: ${job.status}`);
|
|
89
|
+
console.log(`Started: ${job.startedAt}`);
|
|
90
|
+
console.log(`Updated: ${job.updatedAt}`);
|
|
91
|
+
|
|
92
|
+
const p = job.progress;
|
|
93
|
+
const pct = p.total > 0 ? Math.round((p.current / p.total) * 100) : 0;
|
|
94
|
+
console.log(`Progress: ${p.current}/${p.total} (${pct}%)`);
|
|
95
|
+
|
|
96
|
+
if (job.error) {
|
|
97
|
+
console.log(`Error: ${job.error}`);
|
|
98
|
+
}
|
|
99
|
+
process.exit(0);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Group by status
|
|
103
|
+
const running = jobs.filter(j => j.status === 'running');
|
|
104
|
+
const paused = jobs.filter(j => j.status === 'paused');
|
|
105
|
+
const failed = jobs.filter(j => j.status === 'failed');
|
|
106
|
+
const completed = jobs.filter(j => j.status === 'completed');
|
|
107
|
+
|
|
108
|
+
console.log('\nπ Background Jobs\n');
|
|
109
|
+
|
|
110
|
+
// Running
|
|
111
|
+
if (running.length > 0) {
|
|
112
|
+
console.log(`π Running (${running.length}):`);
|
|
113
|
+
for (const job of running) {
|
|
114
|
+
const p = job.progress;
|
|
115
|
+
const pct = p.total > 0 ? Math.round((p.current / p.total) * 100) : 0;
|
|
116
|
+
const elapsed = (Date.now() - new Date(job.startedAt).getTime()) / 1000;
|
|
117
|
+
const rate = elapsed > 0 ? (p.current / elapsed).toFixed(1) : '0';
|
|
118
|
+
console.log(` [${job.id.slice(0,8)}] ${job.type}`);
|
|
119
|
+
console.log(` Progress: ${p.current}/${p.total} (${pct}%) | Rate: ${rate}/s`);
|
|
120
|
+
}
|
|
121
|
+
console.log('');
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Paused
|
|
125
|
+
if (paused.length > 0) {
|
|
126
|
+
console.log(`βΈοΈ Paused (${paused.length}):`);
|
|
127
|
+
for (const job of paused) {
|
|
128
|
+
const p = job.progress;
|
|
129
|
+
const pct = p.total > 0 ? Math.round((p.current / p.total) * 100) : 0;
|
|
130
|
+
console.log(` [${job.id.slice(0,8)}] ${job.type} - ${pct}%`);
|
|
131
|
+
}
|
|
132
|
+
console.log('');
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Failed
|
|
136
|
+
if (failed.length > 0) {
|
|
137
|
+
console.log(`β Failed (${failed.length}):`);
|
|
138
|
+
for (const job of failed) {
|
|
139
|
+
console.log(` [${job.id.slice(0,8)}] ${job.type}`);
|
|
140
|
+
if (job.error) {
|
|
141
|
+
console.log(` Error: ${job.error}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
console.log('');
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Completed (only if --all)
|
|
148
|
+
if (showAll && completed.length > 0) {
|
|
149
|
+
console.log(`β
Completed (${completed.length}):`);
|
|
150
|
+
for (const job of completed.slice(0, 10)) {
|
|
151
|
+
console.log(` [${job.id.slice(0,8)}] ${job.type} - ${job.progress.current} items`);
|
|
152
|
+
}
|
|
153
|
+
if (completed.length > 10) {
|
|
154
|
+
console.log(` ... and ${completed.length - 10} more`);
|
|
155
|
+
}
|
|
156
|
+
console.log('');
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Summary if no active jobs
|
|
160
|
+
if (running.length === 0 && paused.length === 0 && failed.length === 0) {
|
|
161
|
+
if (completed.length > 0) {
|
|
162
|
+
console.log(`No active jobs. ${completed.length} completed (use --all to see).`);
|
|
163
|
+
} else {
|
|
164
|
+
console.log('No jobs found.');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Help
|
|
169
|
+
console.log('π‘ Commands:');
|
|
170
|
+
console.log(' specweave jobs --id <id> View job details');
|
|
171
|
+
console.log(' specweave jobs --all Show completed jobs');
|