specweave 0.12.1 → 0.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +22 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +44 -12
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/core/specs/spec-metadata-manager.d.ts +70 -0
- package/dist/core/specs/spec-metadata-manager.d.ts.map +1 -0
- package/dist/core/specs/spec-metadata-manager.js +371 -0
- package/dist/core/specs/spec-metadata-manager.js.map +1 -0
- package/dist/core/specs/spec-parser.d.ts +66 -0
- package/dist/core/specs/spec-parser.d.ts.map +1 -0
- package/dist/core/specs/spec-parser.js +276 -0
- package/dist/core/specs/spec-parser.js.map +1 -0
- package/dist/core/types/config.d.ts.map +1 -1
- package/dist/core/types/config.js +7 -0
- package/dist/core/types/config.js.map +1 -1
- package/dist/core/types/spec-metadata.d.ts +229 -0
- package/dist/core/types/spec-metadata.d.ts.map +1 -0
- package/dist/core/types/spec-metadata.js +14 -0
- package/dist/core/types/spec-metadata.js.map +1 -0
- package/dist/hooks/lib/prepare-reflection-context.js +1 -1
- package/dist/hooks/lib/prepare-reflection-context.js.map +1 -1
- package/package.json +10 -3
- package/plugins/specweave/agents/pm/AGENT.md +183 -0
- package/plugins/specweave/hooks/post-spec-update.sh +158 -0
- package/plugins/specweave/hooks/post-user-story-complete.sh +179 -0
- package/plugins/specweave/skills/increment-planner/SKILL.md +17 -0
- package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +255 -0
- package/plugins/specweave-ado/lib/ado-spec-sync.ts +593 -0
- package/plugins/specweave-ado/skills/ado-sync/SKILL.md +12 -6
- package/plugins/specweave-github/commands/specweave-github-sync-spec.md +208 -0
- package/plugins/specweave-github/lib/github-spec-sync.ts +656 -0
- package/plugins/specweave-github/skills/github-sync/SKILL.md +16 -8
- package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +240 -0
- package/plugins/specweave-jira/lib/jira-spec-sync.ts +582 -0
- package/plugins/specweave-jira/skills/jira-sync/SKILL.md +20 -5
- package/dist/cli/commands/docs-build.d.ts +0 -7
- package/dist/cli/commands/docs-build.d.ts.map +0 -1
- package/dist/cli/commands/docs-build.js +0 -31
- package/dist/cli/commands/docs-build.js.map +0 -1
- package/dist/cli/commands/docs-preview.d.ts +0 -7
- package/dist/cli/commands/docs-preview.d.ts.map +0 -1
- package/dist/cli/commands/docs-preview.js +0 -50
- package/dist/cli/commands/docs-preview.js.map +0 -1
- package/dist/cli/commands/docs-setup.d.ts +0 -7
- package/dist/cli/commands/docs-setup.d.ts.map +0 -1
- package/dist/cli/commands/docs-setup.js +0 -31
- package/dist/cli/commands/docs-setup.js.map +0 -1
- package/dist/cli/commands/plugin.d.ts +0 -54
- package/dist/cli/commands/plugin.d.ts.map +0 -1
- package/dist/core/rfc-generator.d.ts +0 -147
- package/dist/core/rfc-generator.d.ts.map +0 -1
- package/dist/core/rfc-generator.js +0 -434
- package/dist/core/rfc-generator.js.map +0 -1
- package/dist/core/schemas/plugin-manifest.schema.json +0 -253
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts +0 -89
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js +0 -226
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts +0 -60
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js +0 -201
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts +0 -42
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js +0 -123
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts +0 -45
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js +0 -132
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts +0 -33
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js +0 -419
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts +0 -56
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js +0 -239
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts +0 -64
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js +0 -305
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts +0 -43
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js +0 -203
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts +0 -27
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +0 -116
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts +0 -59
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.js +0 -350
- package/dist/plugins/specweave/lib/hooks/translate-file.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts +0 -13
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js +0 -175
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts +0 -164
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js +0 -73
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts +0 -29
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js +0 -203
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.d.ts +0 -94
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.js +0 -219
- package/dist/plugins/specweave-ado/lib/ado-board-resolver.js.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-client-v2.d.ts +0 -124
- package/dist/plugins/specweave-ado/lib/ado-client-v2.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-client-v2.js +0 -382
- package/dist/plugins/specweave-ado/lib/ado-client-v2.js.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-client.d.ts +0 -112
- package/dist/plugins/specweave-ado/lib/ado-client.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-client.js +0 -257
- package/dist/plugins/specweave-ado/lib/ado-client.js.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts +0 -40
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.js +0 -370
- package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.js.map +0 -1
- package/dist/plugins/specweave-ado/lib/project-selector.d.ts +0 -42
- package/dist/plugins/specweave-ado/lib/project-selector.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/project-selector.js +0 -211
- package/dist/plugins/specweave-ado/lib/project-selector.js.map +0 -1
- package/dist/plugins/specweave-github/lib/github-board-resolver.d.ts +0 -54
- package/dist/plugins/specweave-github/lib/github-board-resolver.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/github-board-resolver.js +0 -122
- package/dist/plugins/specweave-github/lib/github-board-resolver.js.map +0 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +0 -104
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.js +0 -408
- package/dist/plugins/specweave-github/lib/github-client-v2.js.map +0 -1
- package/dist/plugins/specweave-github/lib/github-client.d.ts +0 -96
- package/dist/plugins/specweave-github/lib/github-client.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/github-client.js +0 -299
- package/dist/plugins/specweave-github/lib/github-client.js.map +0 -1
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.d.ts +0 -29
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.js +0 -268
- package/dist/plugins/specweave-github/lib/github-hierarchical-sync.js.map +0 -1
- package/dist/plugins/specweave-github/lib/index.d.ts +0 -10
- package/dist/plugins/specweave-github/lib/index.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/index.js +0 -10
- package/dist/plugins/specweave-github/lib/index.js.map +0 -1
- package/dist/plugins/specweave-github/lib/repo-selector.d.ts +0 -49
- package/dist/plugins/specweave-github/lib/repo-selector.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/repo-selector.js +0 -216
- package/dist/plugins/specweave-github/lib/repo-selector.js.map +0 -1
- package/dist/plugins/specweave-github/lib/subtask-sync.d.ts +0 -51
- package/dist/plugins/specweave-github/lib/subtask-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/subtask-sync.js +0 -147
- package/dist/plugins/specweave-github/lib/subtask-sync.js.map +0 -1
- package/dist/plugins/specweave-github/lib/task-parser.d.ts +0 -37
- package/dist/plugins/specweave-github/lib/task-parser.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/task-parser.js +0 -211
- package/dist/plugins/specweave-github/lib/task-parser.js.map +0 -1
- package/dist/plugins/specweave-github/lib/task-sync.d.ts +0 -51
- package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/task-sync.js +0 -332
- package/dist/plugins/specweave-github/lib/task-sync.js.map +0 -1
- package/dist/plugins/specweave-github/lib/types.d.ts +0 -80
- package/dist/plugins/specweave-github/lib/types.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/types.js +0 -5
- package/dist/plugins/specweave-github/lib/types.js.map +0 -1
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts +0 -50
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts.map +0 -1
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.js +0 -84
- package/dist/plugins/specweave-jira/lib/jira-board-resolver.js.map +0 -1
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts +0 -33
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.js +0 -206
- package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.js.map +0 -1
- package/dist/plugins/specweave-jira/lib/project-selector.d.ts +0 -42
- package/dist/plugins/specweave-jira/lib/project-selector.d.ts.map +0 -1
- package/dist/plugins/specweave-jira/lib/project-selector.js +0 -216
- package/dist/plugins/specweave-jira/lib/project-selector.js.map +0 -1
- package/dist/plugins/specweave-jira/lib/reorganization-detector.d.ts +0 -67
- package/dist/plugins/specweave-jira/lib/reorganization-detector.d.ts.map +0 -1
- package/dist/plugins/specweave-jira/lib/reorganization-detector.js +0 -252
- package/dist/plugins/specweave-jira/lib/reorganization-detector.js.map +0 -1
- package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts +0 -29
- package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts.map +0 -1
- package/dist/plugins/specweave-jira/lib/setup-wizard.js +0 -219
- package/dist/plugins/specweave-jira/lib/setup-wizard.js.map +0 -1
- package/dist/src/adapters/adapter-base.d.ts +0 -71
- package/dist/src/adapters/adapter-base.d.ts.map +0 -1
- package/dist/src/adapters/adapter-base.js +0 -139
- package/dist/src/adapters/adapter-base.js.map +0 -1
- package/dist/src/adapters/adapter-interface.d.ts +0 -149
- package/dist/src/adapters/adapter-interface.d.ts.map +0 -1
- package/dist/src/adapters/adapter-interface.js +0 -8
- package/dist/src/adapters/adapter-interface.js.map +0 -1
- package/dist/src/adapters/adapter-loader.d.ts +0 -91
- package/dist/src/adapters/adapter-loader.d.ts.map +0 -1
- package/dist/src/adapters/adapter-loader.js +0 -238
- package/dist/src/adapters/adapter-loader.js.map +0 -1
- package/dist/src/adapters/agents-md-generator.d.ts +0 -48
- package/dist/src/adapters/agents-md-generator.d.ts.map +0 -1
- package/dist/src/adapters/agents-md-generator.js +0 -193
- package/dist/src/adapters/agents-md-generator.js.map +0 -1
- package/dist/src/adapters/claude/adapter.d.ts +0 -128
- package/dist/src/adapters/claude/adapter.d.ts.map +0 -1
- package/dist/src/adapters/claude/adapter.js +0 -415
- package/dist/src/adapters/claude/adapter.js.map +0 -1
- package/dist/src/adapters/claude-md-generator.d.ts +0 -78
- package/dist/src/adapters/claude-md-generator.d.ts.map +0 -1
- package/dist/src/adapters/claude-md-generator.js +0 -307
- package/dist/src/adapters/claude-md-generator.js.map +0 -1
- package/dist/src/adapters/codex/adapter.d.ts +0 -50
- package/dist/src/adapters/codex/adapter.d.ts.map +0 -1
- package/dist/src/adapters/codex/adapter.js +0 -316
- package/dist/src/adapters/codex/adapter.js.map +0 -1
- package/dist/src/adapters/cursor/adapter.d.ts +0 -98
- package/dist/src/adapters/cursor/adapter.d.ts.map +0 -1
- package/dist/src/adapters/cursor/adapter.js +0 -406
- package/dist/src/adapters/cursor/adapter.js.map +0 -1
- package/dist/src/adapters/doc-generator.d.ts +0 -69
- package/dist/src/adapters/doc-generator.d.ts.map +0 -1
- package/dist/src/adapters/doc-generator.js +0 -247
- package/dist/src/adapters/doc-generator.js.map +0 -1
- package/dist/src/adapters/gemini/adapter.d.ts +0 -50
- package/dist/src/adapters/gemini/adapter.d.ts.map +0 -1
- package/dist/src/adapters/gemini/adapter.js +0 -281
- package/dist/src/adapters/gemini/adapter.js.map +0 -1
- package/dist/src/adapters/generic/adapter.d.ts +0 -86
- package/dist/src/adapters/generic/adapter.d.ts.map +0 -1
- package/dist/src/adapters/generic/adapter.js +0 -338
- package/dist/src/adapters/generic/adapter.js.map +0 -1
- package/dist/src/cli/commands/abandon.d.ts +0 -13
- package/dist/src/cli/commands/abandon.d.ts.map +0 -1
- package/dist/src/cli/commands/abandon.js +0 -15
- package/dist/src/cli/commands/abandon.js.map +0 -1
- package/dist/src/cli/commands/import-docs.d.ts +0 -21
- package/dist/src/cli/commands/import-docs.d.ts.map +0 -1
- package/dist/src/cli/commands/import-docs.js +0 -146
- package/dist/src/cli/commands/import-docs.js.map +0 -1
- package/dist/src/cli/commands/init-multiproject.d.ts +0 -11
- package/dist/src/cli/commands/init-multiproject.d.ts.map +0 -1
- package/dist/src/cli/commands/init-multiproject.js +0 -202
- package/dist/src/cli/commands/init-multiproject.js.map +0 -1
- package/dist/src/cli/commands/init.d.ts +0 -9
- package/dist/src/cli/commands/init.d.ts.map +0 -1
- package/dist/src/cli/commands/init.js +0 -1205
- package/dist/src/cli/commands/init.js.map +0 -1
- package/dist/src/cli/commands/install.d.ts +0 -9
- package/dist/src/cli/commands/install.d.ts.map +0 -1
- package/dist/src/cli/commands/install.js +0 -127
- package/dist/src/cli/commands/install.js.map +0 -1
- package/dist/src/cli/commands/list.d.ts +0 -8
- package/dist/src/cli/commands/list.d.ts.map +0 -1
- package/dist/src/cli/commands/list.js +0 -119
- package/dist/src/cli/commands/list.js.map +0 -1
- package/dist/src/cli/commands/migrate-to-multiproject.d.ts +0 -37
- package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +0 -1
- package/dist/src/cli/commands/migrate-to-multiproject.js +0 -189
- package/dist/src/cli/commands/migrate-to-multiproject.js.map +0 -1
- package/dist/src/cli/commands/migrate-to-profiles.d.ts +0 -25
- package/dist/src/cli/commands/migrate-to-profiles.d.ts.map +0 -1
- package/dist/src/cli/commands/migrate-to-profiles.js +0 -350
- package/dist/src/cli/commands/migrate-to-profiles.js.map +0 -1
- package/dist/src/cli/commands/pause.d.ts +0 -13
- package/dist/src/cli/commands/pause.d.ts.map +0 -1
- package/dist/src/cli/commands/pause.js +0 -15
- package/dist/src/cli/commands/pause.js.map +0 -1
- package/dist/src/cli/commands/qa.d.ts +0 -54
- package/dist/src/cli/commands/qa.d.ts.map +0 -1
- package/dist/src/cli/commands/qa.js +0 -98
- package/dist/src/cli/commands/qa.js.map +0 -1
- package/dist/src/cli/commands/resume.d.ts +0 -12
- package/dist/src/cli/commands/resume.d.ts.map +0 -1
- package/dist/src/cli/commands/resume.js +0 -14
- package/dist/src/cli/commands/resume.js.map +0 -1
- package/dist/src/cli/commands/status.d.ts +0 -12
- package/dist/src/cli/commands/status.d.ts.map +0 -1
- package/dist/src/cli/commands/status.js +0 -23
- package/dist/src/cli/commands/status.js.map +0 -1
- 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 -91
- package/dist/src/cli/commands/switch-project.js.map +0 -1
- package/dist/src/cli/commands/validate-jira.d.ts +0 -35
- package/dist/src/cli/commands/validate-jira.d.ts.map +0 -1
- package/dist/src/cli/commands/validate-jira.js +0 -112
- package/dist/src/cli/commands/validate-jira.js.map +0 -1
- package/dist/src/cli/commands/validate-plugins.d.ts +0 -41
- package/dist/src/cli/commands/validate-plugins.d.ts.map +0 -1
- package/dist/src/cli/commands/validate-plugins.js +0 -171
- package/dist/src/cli/commands/validate-plugins.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/ado.d.ts +0 -57
- package/dist/src/cli/helpers/issue-tracker/ado.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/ado.js +0 -243
- package/dist/src/cli/helpers/issue-tracker/ado.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/github.d.ts +0 -65
- package/dist/src/cli/helpers/issue-tracker/github.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/github.js +0 -426
- package/dist/src/cli/helpers/issue-tracker/github.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/index.d.ts +0 -22
- package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/index.js +0 -314
- package/dist/src/cli/helpers/issue-tracker/index.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/jira.d.ts +0 -61
- package/dist/src/cli/helpers/issue-tracker/jira.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/jira.js +0 -404
- package/dist/src/cli/helpers/issue-tracker/jira.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/types.d.ts +0 -107
- package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/types.js +0 -16
- package/dist/src/cli/helpers/issue-tracker/types.js.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/utils.d.ts +0 -112
- package/dist/src/cli/helpers/issue-tracker/utils.d.ts.map +0 -1
- package/dist/src/cli/helpers/issue-tracker/utils.js +0 -247
- package/dist/src/cli/helpers/issue-tracker/utils.js.map +0 -1
- package/dist/src/core/agent-model-manager.d.ts +0 -52
- package/dist/src/core/agent-model-manager.d.ts.map +0 -1
- package/dist/src/core/agent-model-manager.js +0 -120
- package/dist/src/core/agent-model-manager.js.map +0 -1
- package/dist/src/core/brownfield/analyzer.d.ts +0 -86
- package/dist/src/core/brownfield/analyzer.d.ts.map +0 -1
- package/dist/src/core/brownfield/analyzer.js +0 -365
- package/dist/src/core/brownfield/analyzer.js.map +0 -1
- package/dist/src/core/brownfield/importer.d.ts +0 -76
- package/dist/src/core/brownfield/importer.d.ts.map +0 -1
- package/dist/src/core/brownfield/importer.js +0 -287
- package/dist/src/core/brownfield/importer.js.map +0 -1
- package/dist/src/core/config-manager.d.ts +0 -47
- package/dist/src/core/config-manager.d.ts.map +0 -1
- package/dist/src/core/config-manager.js +0 -136
- package/dist/src/core/config-manager.js.map +0 -1
- package/dist/src/core/cost-tracker.d.ts +0 -108
- package/dist/src/core/cost-tracker.d.ts.map +0 -1
- package/dist/src/core/cost-tracker.js +0 -281
- package/dist/src/core/cost-tracker.js.map +0 -1
- package/dist/src/core/credentials-manager.d.ts +0 -107
- package/dist/src/core/credentials-manager.d.ts.map +0 -1
- package/dist/src/core/credentials-manager.js +0 -457
- package/dist/src/core/credentials-manager.js.map +0 -1
- package/dist/src/core/i18n/language-detector.d.ts +0 -29
- package/dist/src/core/i18n/language-detector.d.ts.map +0 -1
- package/dist/src/core/i18n/language-detector.js +0 -143
- package/dist/src/core/i18n/language-detector.js.map +0 -1
- package/dist/src/core/i18n/language-manager.d.ts +0 -101
- package/dist/src/core/i18n/language-manager.d.ts.map +0 -1
- package/dist/src/core/i18n/language-manager.js +0 -232
- package/dist/src/core/i18n/language-manager.js.map +0 -1
- package/dist/src/core/i18n/language-registry.d.ts +0 -44
- package/dist/src/core/i18n/language-registry.d.ts.map +0 -1
- package/dist/src/core/i18n/language-registry.js +0 -234
- package/dist/src/core/i18n/language-registry.js.map +0 -1
- package/dist/src/core/i18n/locale-manager.d.ts +0 -62
- package/dist/src/core/i18n/locale-manager.d.ts.map +0 -1
- package/dist/src/core/i18n/locale-manager.js +0 -137
- package/dist/src/core/i18n/locale-manager.js.map +0 -1
- package/dist/src/core/i18n/system-prompt-injector.d.ts +0 -33
- package/dist/src/core/i18n/system-prompt-injector.d.ts.map +0 -1
- package/dist/src/core/i18n/system-prompt-injector.js +0 -131
- package/dist/src/core/i18n/system-prompt-injector.js.map +0 -1
- package/dist/src/core/i18n/types.d.ts +0 -151
- package/dist/src/core/i18n/types.d.ts.map +0 -1
- package/dist/src/core/i18n/types.js +0 -11
- package/dist/src/core/i18n/types.js.map +0 -1
- package/dist/src/core/increment/limits.d.ts +0 -68
- package/dist/src/core/increment/limits.d.ts.map +0 -1
- package/dist/src/core/increment/limits.js +0 -224
- package/dist/src/core/increment/limits.js.map +0 -1
- package/dist/src/core/increment/metadata-manager.d.ts +0 -114
- package/dist/src/core/increment/metadata-manager.d.ts.map +0 -1
- package/dist/src/core/increment/metadata-manager.js +0 -320
- package/dist/src/core/increment/metadata-manager.js.map +0 -1
- package/dist/src/core/increment/status-commands.d.ts +0 -43
- package/dist/src/core/increment/status-commands.d.ts.map +0 -1
- package/dist/src/core/increment/status-commands.js +0 -277
- package/dist/src/core/increment/status-commands.js.map +0 -1
- package/dist/src/core/increment-status.d.ts +0 -72
- package/dist/src/core/increment-status.d.ts.map +0 -1
- package/dist/src/core/increment-status.js +0 -227
- package/dist/src/core/increment-status.js.map +0 -1
- package/dist/src/core/model-selector.d.ts +0 -57
- package/dist/src/core/model-selector.d.ts.map +0 -1
- package/dist/src/core/model-selector.js +0 -115
- package/dist/src/core/model-selector.js.map +0 -1
- package/dist/src/core/phase-detector.d.ts +0 -62
- package/dist/src/core/phase-detector.d.ts.map +0 -1
- package/dist/src/core/phase-detector.js +0 -229
- package/dist/src/core/phase-detector.js.map +0 -1
- package/dist/src/core/plugin-loader.d.ts +0 -131
- package/dist/src/core/plugin-loader.d.ts.map +0 -1
- package/dist/src/core/plugin-loader.js +0 -421
- package/dist/src/core/plugin-loader.js.map +0 -1
- package/dist/src/core/project-manager.d.ts +0 -127
- package/dist/src/core/project-manager.d.ts.map +0 -1
- package/dist/src/core/project-manager.js +0 -524
- package/dist/src/core/project-manager.js.map +0 -1
- package/dist/src/core/project-structure-detector.d.ts +0 -92
- package/dist/src/core/project-structure-detector.d.ts.map +0 -1
- package/dist/src/core/project-structure-detector.js +0 -289
- package/dist/src/core/project-structure-detector.js.map +0 -1
- package/dist/src/core/qa/qa-runner.d.ts +0 -16
- package/dist/src/core/qa/qa-runner.d.ts.map +0 -1
- package/dist/src/core/qa/qa-runner.js +0 -404
- package/dist/src/core/qa/qa-runner.js.map +0 -1
- package/dist/src/core/qa/quality-gate-decider.d.ts +0 -53
- package/dist/src/core/qa/quality-gate-decider.d.ts.map +0 -1
- package/dist/src/core/qa/quality-gate-decider.js +0 -268
- package/dist/src/core/qa/quality-gate-decider.js.map +0 -1
- package/dist/src/core/qa/risk-calculator.d.ts +0 -126
- package/dist/src/core/qa/risk-calculator.d.ts.map +0 -1
- package/dist/src/core/qa/risk-calculator.js +0 -247
- package/dist/src/core/qa/risk-calculator.js.map +0 -1
- package/dist/src/core/qa/types.d.ts +0 -315
- package/dist/src/core/qa/types.d.ts.map +0 -1
- package/dist/src/core/qa/types.js +0 -8
- package/dist/src/core/qa/types.js.map +0 -1
- package/dist/src/core/rfc-generator-v2.d.ts +0 -149
- package/dist/src/core/rfc-generator-v2.d.ts.map +0 -1
- package/dist/src/core/rfc-generator-v2.js +0 -399
- package/dist/src/core/rfc-generator-v2.js.map +0 -1
- package/dist/src/core/sync/bidirectional-engine.d.ts +0 -110
- package/dist/src/core/sync/bidirectional-engine.d.ts.map +0 -1
- package/dist/src/core/sync/bidirectional-engine.js +0 -356
- package/dist/src/core/sync/bidirectional-engine.js.map +0 -1
- package/dist/src/core/sync/folder-mapper.d.ts +0 -71
- package/dist/src/core/sync/folder-mapper.d.ts.map +0 -1
- package/dist/src/core/sync/folder-mapper.js +0 -168
- package/dist/src/core/sync/folder-mapper.js.map +0 -1
- package/dist/src/core/sync/profile-manager.d.ts +0 -72
- package/dist/src/core/sync/profile-manager.d.ts.map +0 -1
- package/dist/src/core/sync/profile-manager.js +0 -338
- package/dist/src/core/sync/profile-manager.js.map +0 -1
- package/dist/src/core/sync/profile-selector.d.ts +0 -52
- package/dist/src/core/sync/profile-selector.d.ts.map +0 -1
- package/dist/src/core/sync/profile-selector.js +0 -179
- package/dist/src/core/sync/profile-selector.js.map +0 -1
- package/dist/src/core/sync/profile-validator.d.ts +0 -52
- package/dist/src/core/sync/profile-validator.d.ts.map +0 -1
- package/dist/src/core/sync/profile-validator.js +0 -225
- package/dist/src/core/sync/profile-validator.js.map +0 -1
- package/dist/src/core/sync/project-context.d.ts +0 -81
- package/dist/src/core/sync/project-context.d.ts.map +0 -1
- package/dist/src/core/sync/project-context.js +0 -354
- package/dist/src/core/sync/project-context.js.map +0 -1
- package/dist/src/core/sync/rate-limiter.d.ts +0 -116
- package/dist/src/core/sync/rate-limiter.d.ts.map +0 -1
- package/dist/src/core/sync/rate-limiter.js +0 -308
- package/dist/src/core/sync/rate-limiter.js.map +0 -1
- package/dist/src/core/sync/time-range-selector.d.ts +0 -48
- package/dist/src/core/sync/time-range-selector.d.ts.map +0 -1
- package/dist/src/core/sync/time-range-selector.js +0 -224
- package/dist/src/core/sync/time-range-selector.js.map +0 -1
- package/dist/src/core/types/config.d.ts +0 -90
- package/dist/src/core/types/config.d.ts.map +0 -1
- package/dist/src/core/types/config.js +0 -37
- package/dist/src/core/types/config.js.map +0 -1
- package/dist/src/core/types/increment-metadata.d.ts +0 -120
- package/dist/src/core/types/increment-metadata.d.ts.map +0 -1
- package/dist/src/core/types/increment-metadata.js +0 -138
- package/dist/src/core/types/increment-metadata.js.map +0 -1
- package/dist/src/core/types/plugin.d.ts +0 -283
- package/dist/src/core/types/plugin.d.ts.map +0 -1
- package/dist/src/core/types/plugin.js +0 -49
- package/dist/src/core/types/plugin.js.map +0 -1
- package/dist/src/core/types/sync-profile.d.ts +0 -403
- package/dist/src/core/types/sync-profile.d.ts.map +0 -1
- package/dist/src/core/types/sync-profile.js +0 -55
- package/dist/src/core/types/sync-profile.js.map +0 -1
- package/dist/src/hooks/lib/types/reflection-types.d.ts +0 -125
- package/dist/src/hooks/lib/types/reflection-types.d.ts.map +0 -1
- package/dist/src/hooks/lib/types/reflection-types.js +0 -54
- package/dist/src/hooks/lib/types/reflection-types.js.map +0 -1
- package/dist/src/integrations/ado/ado-client.d.ts +0 -127
- package/dist/src/integrations/ado/ado-client.d.ts.map +0 -1
- package/dist/src/integrations/ado/ado-client.js +0 -416
- package/dist/src/integrations/ado/ado-client.js.map +0 -1
- package/dist/src/integrations/jira/jira-client.d.ts +0 -139
- package/dist/src/integrations/jira/jira-client.d.ts.map +0 -1
- package/dist/src/integrations/jira/jira-client.js +0 -386
- package/dist/src/integrations/jira/jira-client.js.map +0 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts +0 -75
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +0 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.js +0 -474
- package/dist/src/integrations/jira/jira-incremental-mapper.js.map +0 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts +0 -105
- package/dist/src/integrations/jira/jira-mapper.d.ts.map +0 -1
- package/dist/src/integrations/jira/jira-mapper.js +0 -494
- package/dist/src/integrations/jira/jira-mapper.js.map +0 -1
- package/dist/src/metrics/calculators/change-failure-rate.d.ts +0 -22
- package/dist/src/metrics/calculators/change-failure-rate.d.ts.map +0 -1
- package/dist/src/metrics/calculators/change-failure-rate.js +0 -70
- package/dist/src/metrics/calculators/change-failure-rate.js.map +0 -1
- package/dist/src/metrics/calculators/deployment-frequency.d.ts +0 -20
- package/dist/src/metrics/calculators/deployment-frequency.d.ts.map +0 -1
- package/dist/src/metrics/calculators/deployment-frequency.js +0 -61
- package/dist/src/metrics/calculators/deployment-frequency.js.map +0 -1
- package/dist/src/metrics/calculators/lead-time.d.ts +0 -22
- package/dist/src/metrics/calculators/lead-time.d.ts.map +0 -1
- package/dist/src/metrics/calculators/lead-time.js +0 -82
- package/dist/src/metrics/calculators/lead-time.js.map +0 -1
- package/dist/src/metrics/calculators/mttr.d.ts +0 -21
- package/dist/src/metrics/calculators/mttr.d.ts.map +0 -1
- package/dist/src/metrics/calculators/mttr.js +0 -60
- package/dist/src/metrics/calculators/mttr.js.map +0 -1
- package/dist/src/metrics/dora-calculator.d.ts +0 -28
- package/dist/src/metrics/dora-calculator.d.ts.map +0 -1
- package/dist/src/metrics/dora-calculator.js +0 -117
- package/dist/src/metrics/dora-calculator.js.map +0 -1
- package/dist/src/metrics/github-client.d.ts +0 -51
- package/dist/src/metrics/github-client.d.ts.map +0 -1
- package/dist/src/metrics/github-client.js +0 -133
- package/dist/src/metrics/github-client.js.map +0 -1
- package/dist/src/metrics/report-generator.d.ts +0 -17
- package/dist/src/metrics/report-generator.d.ts.map +0 -1
- package/dist/src/metrics/report-generator.js +0 -403
- package/dist/src/metrics/report-generator.js.map +0 -1
- package/dist/src/metrics/types.d.ts +0 -112
- package/dist/src/metrics/types.d.ts.map +0 -1
- package/dist/src/metrics/types.js +0 -10
- package/dist/src/metrics/types.js.map +0 -1
- package/dist/src/metrics/utils/percentile.d.ts +0 -25
- package/dist/src/metrics/utils/percentile.d.ts.map +0 -1
- package/dist/src/metrics/utils/percentile.js +0 -46
- package/dist/src/metrics/utils/percentile.js.map +0 -1
- package/dist/src/metrics/utils/tier-classifier.d.ts +0 -61
- package/dist/src/metrics/utils/tier-classifier.d.ts.map +0 -1
- package/dist/src/metrics/utils/tier-classifier.js +0 -100
- package/dist/src/metrics/utils/tier-classifier.js.map +0 -1
- package/dist/src/testing/test-generator.d.ts +0 -117
- package/dist/src/testing/test-generator.d.ts.map +0 -1
- package/dist/src/testing/test-generator.js +0 -370
- package/dist/src/testing/test-generator.js.map +0 -1
- package/dist/src/types/cost-tracking.d.ts +0 -43
- package/dist/src/types/cost-tracking.d.ts.map +0 -1
- package/dist/src/types/cost-tracking.js +0 -8
- package/dist/src/types/cost-tracking.js.map +0 -1
- package/dist/src/types/model-selection.d.ts +0 -53
- package/dist/src/types/model-selection.d.ts.map +0 -1
- package/dist/src/types/model-selection.js +0 -12
- package/dist/src/types/model-selection.js.map +0 -1
- package/dist/src/utils/agents-md-compiler.d.ts +0 -68
- package/dist/src/utils/agents-md-compiler.d.ts.map +0 -1
- package/dist/src/utils/agents-md-compiler.js +0 -420
- package/dist/src/utils/agents-md-compiler.js.map +0 -1
- package/dist/src/utils/auth-helpers.d.ts +0 -58
- package/dist/src/utils/auth-helpers.d.ts.map +0 -1
- package/dist/src/utils/auth-helpers.js +0 -108
- package/dist/src/utils/auth-helpers.js.map +0 -1
- package/dist/src/utils/auto-install.d.ts +0 -47
- package/dist/src/utils/auto-install.d.ts.map +0 -1
- package/dist/src/utils/auto-install.js +0 -211
- package/dist/src/utils/auto-install.js.map +0 -1
- package/dist/src/utils/claude-cli-detector.d.ts +0 -75
- package/dist/src/utils/claude-cli-detector.d.ts.map +0 -1
- package/dist/src/utils/claude-cli-detector.js +0 -285
- package/dist/src/utils/claude-cli-detector.js.map +0 -1
- package/dist/src/utils/cost-reporter.d.ts +0 -58
- package/dist/src/utils/cost-reporter.d.ts.map +0 -1
- package/dist/src/utils/cost-reporter.js +0 -224
- package/dist/src/utils/cost-reporter.js.map +0 -1
- package/dist/src/utils/docs-preview/config-generator.d.ts +0 -46
- package/dist/src/utils/docs-preview/config-generator.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/config-generator.js +0 -377
- package/dist/src/utils/docs-preview/config-generator.js.map +0 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts +0 -38
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.js +0 -177
- package/dist/src/utils/docs-preview/docusaurus-setup.js.map +0 -1
- package/dist/src/utils/docs-preview/index.d.ts +0 -7
- package/dist/src/utils/docs-preview/index.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/index.js +0 -7
- package/dist/src/utils/docs-preview/index.js.map +0 -1
- package/dist/src/utils/docs-preview/package-installer.d.ts +0 -42
- package/dist/src/utils/docs-preview/package-installer.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/package-installer.js +0 -182
- package/dist/src/utils/docs-preview/package-installer.js.map +0 -1
- package/dist/src/utils/docs-preview/server-manager.d.ts +0 -30
- package/dist/src/utils/docs-preview/server-manager.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/server-manager.js +0 -212
- package/dist/src/utils/docs-preview/server-manager.js.map +0 -1
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts +0 -32
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/sidebar-builder.js +0 -202
- package/dist/src/utils/docs-preview/sidebar-builder.js.map +0 -1
- package/dist/src/utils/docs-preview/types.d.ts +0 -57
- package/dist/src/utils/docs-preview/types.d.ts.map +0 -1
- package/dist/src/utils/docs-preview/types.js +0 -2
- package/dist/src/utils/docs-preview/types.js.map +0 -1
- package/dist/src/utils/env-file.d.ts +0 -88
- package/dist/src/utils/env-file.d.ts.map +0 -1
- package/dist/src/utils/env-file.js +0 -180
- package/dist/src/utils/env-file.js.map +0 -1
- package/dist/src/utils/env-multi-project-parser.d.ts +0 -220
- package/dist/src/utils/env-multi-project-parser.d.ts.map +0 -1
- package/dist/src/utils/env-multi-project-parser.js +0 -403
- package/dist/src/utils/env-multi-project-parser.js.map +0 -1
- package/dist/src/utils/esm-helpers.d.ts +0 -50
- package/dist/src/utils/esm-helpers.d.ts.map +0 -1
- package/dist/src/utils/esm-helpers.js +0 -57
- package/dist/src/utils/esm-helpers.js.map +0 -1
- package/dist/src/utils/execFileNoThrow.d.ts +0 -99
- package/dist/src/utils/execFileNoThrow.d.ts.map +0 -1
- package/dist/src/utils/execFileNoThrow.js +0 -137
- package/dist/src/utils/execFileNoThrow.js.map +0 -1
- package/dist/src/utils/external-resource-validator.d.ts +0 -102
- package/dist/src/utils/external-resource-validator.d.ts.map +0 -1
- package/dist/src/utils/external-resource-validator.js +0 -400
- package/dist/src/utils/external-resource-validator.js.map +0 -1
- package/dist/src/utils/generate-skills-index.d.ts +0 -24
- package/dist/src/utils/generate-skills-index.d.ts.map +0 -1
- package/dist/src/utils/generate-skills-index.js +0 -410
- package/dist/src/utils/generate-skills-index.js.map +0 -1
- package/dist/src/utils/model-selection.d.ts +0 -75
- package/dist/src/utils/model-selection.d.ts.map +0 -1
- package/dist/src/utils/model-selection.js +0 -204
- package/dist/src/utils/model-selection.js.map +0 -1
- package/dist/src/utils/plugin-validator.d.ts +0 -161
- package/dist/src/utils/plugin-validator.d.ts.map +0 -1
- package/dist/src/utils/plugin-validator.js +0 -558
- package/dist/src/utils/plugin-validator.js.map +0 -1
- package/dist/src/utils/pricing-constants.d.ts +0 -70
- package/dist/src/utils/pricing-constants.d.ts.map +0 -1
- package/dist/src/utils/pricing-constants.js +0 -71
- package/dist/src/utils/pricing-constants.js.map +0 -1
- package/dist/src/utils/project-detection.d.ts +0 -141
- package/dist/src/utils/project-detection.d.ts.map +0 -1
- package/dist/src/utils/project-detection.js +0 -321
- package/dist/src/utils/project-detection.js.map +0 -1
- package/dist/src/utils/string-utils.d.ts +0 -40
- package/dist/src/utils/string-utils.d.ts.map +0 -1
- package/dist/src/utils/string-utils.js +0 -58
- package/dist/src/utils/string-utils.js.map +0 -1
- package/dist/src/utils/translation.d.ts +0 -187
- package/dist/src/utils/translation.d.ts.map +0 -1
- package/dist/src/utils/translation.js +0 -414
- package/dist/src/utils/translation.js.map +0 -1
- package/dist/utils/docs-preview.bak/config-generator.d.ts +0 -46
- package/dist/utils/docs-preview.bak/config-generator.d.ts.map +0 -1
- package/dist/utils/docs-preview.bak/config-generator.js +0 -377
- package/dist/utils/docs-preview.bak/config-generator.js.map +0 -1
- package/dist/utils/docs-preview.bak/package-installer.d.ts +0 -42
- package/dist/utils/docs-preview.bak/package-installer.d.ts.map +0 -1
- package/dist/utils/docs-preview.bak/package-installer.js +0 -182
- package/dist/utils/docs-preview.bak/package-installer.js.map +0 -1
- package/dist/utils/docs-preview.bak/server-manager.d.ts +0 -30
- package/dist/utils/docs-preview.bak/server-manager.d.ts.map +0 -1
- package/dist/utils/docs-preview.bak/server-manager.js +0 -207
- package/dist/utils/docs-preview.bak/server-manager.js.map +0 -1
- package/dist/utils/docs-preview.bak/sidebar-builder.d.ts +0 -31
- package/dist/utils/docs-preview.bak/sidebar-builder.d.ts.map +0 -1
- package/dist/utils/docs-preview.bak/sidebar-builder.js +0 -202
- package/dist/utils/docs-preview.bak/sidebar-builder.js.map +0 -1
- package/dist/utils/docs-preview.bak/types.d.ts +0 -60
- package/dist/utils/docs-preview.bak/types.d.ts.map +0 -1
- package/dist/utils/docs-preview.bak/types.js +0 -5
- package/dist/utils/docs-preview.bak/types.js.map +0 -1
- package/dist/utils/plugin-detection.d.ts +0 -50
- package/dist/utils/plugin-detection.d.ts.map +0 -1
- package/dist/utils/secrets-loader.d.ts +0 -88
- package/dist/utils/secrets-loader.d.ts.map +0 -1
- package/dist/utils/secrets-loader.js +0 -271
- package/dist/utils/secrets-loader.js.map +0 -1
- package/src/templates/environments/minimal/.env.production +0 -16
- package/src/templates/environments/standard/.env.production +0 -30
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Increment Limits
|
|
3
|
-
*
|
|
4
|
-
* Type-based limits for concurrent active increments.
|
|
5
|
-
* Part of increment 0007: Smart Status Management
|
|
6
|
-
*/
|
|
7
|
-
import { MetadataManager } from './metadata-manager';
|
|
8
|
-
import { IncrementType, IncrementStatus, TYPE_LIMITS } from '../types/increment-metadata';
|
|
9
|
-
/**
|
|
10
|
-
* Check if creating a new increment would exceed type-based limits
|
|
11
|
-
*/
|
|
12
|
-
export function checkIncrementLimits(type) {
|
|
13
|
-
// Get limit for this type
|
|
14
|
-
const limit = TYPE_LIMITS[type];
|
|
15
|
-
// Get active increments of this type (not paused, not completed, not abandoned)
|
|
16
|
-
const allIncrements = MetadataManager.getAll();
|
|
17
|
-
const activeOfType = allIncrements.filter(m => m.type === type && m.status === IncrementStatus.ACTIVE);
|
|
18
|
-
const current = activeOfType.length;
|
|
19
|
-
// If unlimited, no limit enforcement but still report current count
|
|
20
|
-
if (limit === null) {
|
|
21
|
-
return {
|
|
22
|
-
exceeded: false,
|
|
23
|
-
current,
|
|
24
|
-
limit: null,
|
|
25
|
-
severity: 'info'
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const exceeded = current >= limit;
|
|
29
|
-
// Build result
|
|
30
|
-
const result = {
|
|
31
|
-
exceeded,
|
|
32
|
-
current,
|
|
33
|
-
limit,
|
|
34
|
-
severity: exceeded ? 'warning' : 'info',
|
|
35
|
-
activeIncrements: activeOfType
|
|
36
|
-
};
|
|
37
|
-
// Add warning message if exceeded
|
|
38
|
-
if (exceeded) {
|
|
39
|
-
result.warning = buildLimitWarning(type, current, limit, activeOfType);
|
|
40
|
-
result.suggestions = buildSuggestions(type, activeOfType);
|
|
41
|
-
}
|
|
42
|
-
return result;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Check all increment types and return warnings
|
|
46
|
-
*/
|
|
47
|
-
export function checkAllLimits() {
|
|
48
|
-
const results = {};
|
|
49
|
-
for (const type of Object.values(IncrementType)) {
|
|
50
|
-
results[type] = checkIncrementLimits(type);
|
|
51
|
-
}
|
|
52
|
-
return results;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Get context switching warning for starting a new increment
|
|
56
|
-
*/
|
|
57
|
-
export function getContextSwitchWarning(newType) {
|
|
58
|
-
const activeIncrements = MetadataManager.getActive();
|
|
59
|
-
const activeCount = activeIncrements.length;
|
|
60
|
-
// No warning if no active increments
|
|
61
|
-
if (activeCount === 0) {
|
|
62
|
-
return {
|
|
63
|
-
show: false,
|
|
64
|
-
productivityCost: '0%',
|
|
65
|
-
message: '',
|
|
66
|
-
options: []
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
// No warning for hotfixes (emergency work)
|
|
70
|
-
if (newType === IncrementType.HOTFIX || newType === IncrementType.BUG) {
|
|
71
|
-
return {
|
|
72
|
-
show: false,
|
|
73
|
-
productivityCost: '0%',
|
|
74
|
-
message: '',
|
|
75
|
-
options: []
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
// Calculate productivity cost
|
|
79
|
-
const productivityCost = calculateProductivityCost(activeCount);
|
|
80
|
-
// Build warning message
|
|
81
|
-
const message = buildContextSwitchMessage(activeCount, productivityCost, activeIncrements);
|
|
82
|
-
// Build options
|
|
83
|
-
const options = [
|
|
84
|
-
{
|
|
85
|
-
label: 'Continue current work',
|
|
86
|
-
value: 'continue',
|
|
87
|
-
description: 'Finish active increment(s) before starting new work (recommended)'
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
label: 'Pause current work',
|
|
91
|
-
value: 'pause',
|
|
92
|
-
description: 'Pause active increment(s) to focus on new work'
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
label: 'Work in parallel',
|
|
96
|
-
value: 'parallel',
|
|
97
|
-
description: `Start new increment (${productivityCost} productivity cost)`
|
|
98
|
-
}
|
|
99
|
-
];
|
|
100
|
-
return {
|
|
101
|
-
show: true,
|
|
102
|
-
productivityCost,
|
|
103
|
-
message,
|
|
104
|
-
options
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Build warning message for exceeded limit
|
|
109
|
-
*/
|
|
110
|
-
function buildLimitWarning(type, current, limit, activeIncrements) {
|
|
111
|
-
const typeLabel = formatTypeLabel(type);
|
|
112
|
-
const incrementList = activeIncrements
|
|
113
|
-
.map(m => ` • ${m.id}`)
|
|
114
|
-
.join('\n');
|
|
115
|
-
return `
|
|
116
|
-
⚠️ You have ${current} active ${typeLabel} increment(s) (limit: ${limit})
|
|
117
|
-
|
|
118
|
-
Active ${typeLabel} increments:
|
|
119
|
-
${incrementList}
|
|
120
|
-
|
|
121
|
-
Recommendation: Complete or pause one before starting another.
|
|
122
|
-
Context switching reduces productivity by 20-40%.
|
|
123
|
-
`.trim();
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Build suggestions for resolving limit exceeded
|
|
127
|
-
*/
|
|
128
|
-
function buildSuggestions(type, activeIncrements) {
|
|
129
|
-
const suggestions = [];
|
|
130
|
-
// Suggest completing increments
|
|
131
|
-
suggestions.push(`Complete active increment: /done <id>`);
|
|
132
|
-
// Suggest pausing increments
|
|
133
|
-
suggestions.push(`Pause active increment: /pause <id>`);
|
|
134
|
-
// Show status
|
|
135
|
-
suggestions.push(`Check status: /status`);
|
|
136
|
-
// Type-specific suggestions
|
|
137
|
-
if (type === IncrementType.FEATURE) {
|
|
138
|
-
suggestions.push(`Reduce scope: Break large feature into smaller increments`);
|
|
139
|
-
}
|
|
140
|
-
else if (type === IncrementType.REFACTOR) {
|
|
141
|
-
suggestions.push(`Refactors need focus: Complete current refactor before starting new one`);
|
|
142
|
-
}
|
|
143
|
-
return suggestions;
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Build context switching warning message
|
|
147
|
-
*/
|
|
148
|
-
function buildContextSwitchMessage(activeCount, productivityCost, activeIncrements) {
|
|
149
|
-
const incrementList = activeIncrements
|
|
150
|
-
.map(m => ` • ${m.id} [${m.type}]`)
|
|
151
|
-
.join('\n');
|
|
152
|
-
return `
|
|
153
|
-
⚠️ You have ${activeCount} active increment(s)
|
|
154
|
-
|
|
155
|
-
Active increments:
|
|
156
|
-
${incrementList}
|
|
157
|
-
|
|
158
|
-
Starting new work will reduce productivity by ${productivityCost} due to context switching.
|
|
159
|
-
|
|
160
|
-
Research shows:
|
|
161
|
-
• 2 concurrent tasks = 20% slower
|
|
162
|
-
• 3+ concurrent tasks = 40% slower
|
|
163
|
-
• Frequent switches = more bugs
|
|
164
|
-
|
|
165
|
-
Recommended: Complete or pause active work first.
|
|
166
|
-
`.trim();
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Calculate productivity cost based on active increment count
|
|
170
|
-
*/
|
|
171
|
-
function calculateProductivityCost(activeCount) {
|
|
172
|
-
if (activeCount === 0)
|
|
173
|
-
return '0%';
|
|
174
|
-
if (activeCount === 1)
|
|
175
|
-
return '20%';
|
|
176
|
-
if (activeCount === 2)
|
|
177
|
-
return '30%';
|
|
178
|
-
return '40%';
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Format type label for display
|
|
182
|
-
*/
|
|
183
|
-
function formatTypeLabel(type) {
|
|
184
|
-
switch (type) {
|
|
185
|
-
case IncrementType.HOTFIX: return 'hotfix';
|
|
186
|
-
case IncrementType.FEATURE: return 'feature';
|
|
187
|
-
case IncrementType.BUG: return 'bug';
|
|
188
|
-
case IncrementType.CHANGE_REQUEST: return 'change request';
|
|
189
|
-
case IncrementType.REFACTOR: return 'refactor';
|
|
190
|
-
case IncrementType.EXPERIMENT: return 'experiment';
|
|
191
|
-
default: return type;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Get summary of all limits
|
|
196
|
-
*/
|
|
197
|
-
export function getLimitsSummary() {
|
|
198
|
-
const results = checkAllLimits();
|
|
199
|
-
const lines = [];
|
|
200
|
-
lines.push('Increment Limits:');
|
|
201
|
-
lines.push('');
|
|
202
|
-
for (const [type, result] of Object.entries(results)) {
|
|
203
|
-
const typeLabel = formatTypeLabel(type);
|
|
204
|
-
const limitStr = result.limit === null ? 'unlimited' : result.limit.toString();
|
|
205
|
-
const status = result.exceeded ? '⚠️ ' : '✅';
|
|
206
|
-
lines.push(`${status} ${typeLabel}: ${result.current}/${limitStr} active`);
|
|
207
|
-
}
|
|
208
|
-
return lines.join('\n');
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Check if starting a new increment of this type would be allowed
|
|
212
|
-
* (considering limits)
|
|
213
|
-
*/
|
|
214
|
-
export function canStartIncrement(type) {
|
|
215
|
-
const check = checkIncrementLimits(type);
|
|
216
|
-
if (!check.exceeded) {
|
|
217
|
-
return { allowed: true };
|
|
218
|
-
}
|
|
219
|
-
return {
|
|
220
|
-
allowed: false,
|
|
221
|
-
reason: check.warning
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
//# sourceMappingURL=limits.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../../src/core/increment/limits.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,aAAa,EACb,eAAe,EACf,WAAW,EAEZ,MAAM,6BAA6B,CAAC;AAiDrC;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAmB;IACtD,0BAA0B;IAC1B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAEhC,gFAAgF;IAChF,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,CAC5D,CAAC;IAEF,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;IAEpC,oEAAoE;IACpE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,OAAO;YACP,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,MAAM;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,CAAC;IAElC,eAAe;IACf,MAAM,MAAM,GAAqB;QAC/B,QAAQ;QACR,OAAO;QACP,KAAK;QACL,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;QACvC,gBAAgB,EAAE,YAAY;KAC/B,CAAC;IAEF,kCAAkC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAqD,EAAE,CAAC;IAErE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,OAAkD,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAsB;IAC5D,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC;IACrD,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAE5C,qCAAqC;IACrC,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,KAAK;YACX,gBAAgB,EAAE,IAAI;YACtB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,IAAI,OAAO,KAAK,aAAa,CAAC,MAAM,IAAI,OAAO,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;QACtE,OAAO;YACL,IAAI,EAAE,KAAK;YACX,gBAAgB,EAAE,IAAI;YACtB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAEhE,wBAAwB;IACxB,MAAM,OAAO,GAAG,yBAAyB,CAAC,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAE3F,gBAAgB;IAChB,MAAM,OAAO,GAAG;QACd;YACE,KAAK,EAAE,uBAAuB;YAC9B,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,mEAAmE;SACjF;QACD;YACE,KAAK,EAAE,oBAAoB;YAC3B,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,gDAAgD;SAC9D;QACD;YACE,KAAK,EAAE,kBAAkB;YACzB,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,wBAAwB,gBAAgB,qBAAqB;SAC3E;KACF,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,IAAI;QACV,gBAAgB;QAChB,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,IAAmB,EACnB,OAAe,EACf,KAAa,EACb,gBAAqC;IAErC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,gBAAgB;SACnC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;SACvB,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;eACM,OAAO,WAAW,SAAS,yBAAyB,KAAK;;SAE/D,SAAS;EAChB,aAAa;;;;CAId,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAmB,EAAE,gBAAqC;IAClF,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,gCAAgC;IAChC,WAAW,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAE1D,6BAA6B;IAC7B,WAAW,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAExD,cAAc;IACd,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAE1C,4BAA4B;IAC5B,IAAI,IAAI,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;QACnC,WAAW,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,IAAI,KAAK,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC3C,WAAW,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,WAAmB,EACnB,gBAAwB,EACxB,gBAAqC;IAErC,MAAM,aAAa,GAAG,gBAAgB;SACnC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;SACnC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;eACM,WAAW;;;EAGxB,aAAa;;gDAEiC,gBAAgB;;;;;;;;CAQ/D,CAAC,IAAI,EAAE,CAAC;AACT,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAAC,WAAmB;IACpD,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAmB;IAC1C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3C,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC7C,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC;QACrC,KAAK,aAAa,CAAC,cAAc,CAAC,CAAC,OAAO,gBAAgB,CAAC;QAC3D,KAAK,aAAa,CAAC,QAAQ,CAAC,CAAC,OAAO,UAAU,CAAC;QAC/C,KAAK,aAAa,CAAC,UAAU,CAAC,CAAC,OAAO,YAAY,CAAC;QACnD,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAqB,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QAE7C,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,SAAS,KAAK,MAAM,CAAC,OAAO,IAAI,QAAQ,SAAS,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAmB;IACnD,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAEzC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK,CAAC,OAAO;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metadata Manager
|
|
3
|
-
*
|
|
4
|
-
* Handles CRUD operations for increment metadata (status, type, timestamps).
|
|
5
|
-
* Part of increment 0007: Smart Status Management
|
|
6
|
-
*/
|
|
7
|
-
import { IncrementMetadata, IncrementMetadataExtended, IncrementStatus, IncrementType } from '../types/increment-metadata.js';
|
|
8
|
-
/**
|
|
9
|
-
* Error thrown when metadata operations fail
|
|
10
|
-
*/
|
|
11
|
-
export declare class MetadataError extends Error {
|
|
12
|
-
incrementId: string;
|
|
13
|
-
cause?: Error;
|
|
14
|
-
constructor(message: string, incrementId: string, cause?: Error);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Metadata Manager
|
|
18
|
-
*
|
|
19
|
-
* Provides CRUD operations and queries for increment metadata
|
|
20
|
-
*/
|
|
21
|
-
export declare class MetadataManager {
|
|
22
|
-
/**
|
|
23
|
-
* Get metadata file path for increment
|
|
24
|
-
*/
|
|
25
|
-
private static getMetadataPath;
|
|
26
|
-
/**
|
|
27
|
-
* Get increment directory path
|
|
28
|
-
*/
|
|
29
|
-
private static getIncrementPath;
|
|
30
|
-
/**
|
|
31
|
-
* Check if metadata file exists
|
|
32
|
-
*/
|
|
33
|
-
static exists(incrementId: string): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Read metadata from file
|
|
36
|
-
* Creates default metadata if file doesn't exist (lazy initialization)
|
|
37
|
-
*/
|
|
38
|
-
static read(incrementId: string): IncrementMetadata;
|
|
39
|
-
/**
|
|
40
|
-
* Write metadata to file
|
|
41
|
-
* Uses atomic write (temp file → rename)
|
|
42
|
-
*/
|
|
43
|
-
static write(incrementId: string, metadata: IncrementMetadata): void;
|
|
44
|
-
/**
|
|
45
|
-
* Delete metadata file
|
|
46
|
-
*/
|
|
47
|
-
static delete(incrementId: string): void;
|
|
48
|
-
/**
|
|
49
|
-
* Update increment status
|
|
50
|
-
* Validates transition and updates timestamps
|
|
51
|
-
*/
|
|
52
|
-
static updateStatus(incrementId: string, newStatus: IncrementStatus, reason?: string): IncrementMetadata;
|
|
53
|
-
/**
|
|
54
|
-
* Update increment type
|
|
55
|
-
*/
|
|
56
|
-
static updateType(incrementId: string, type: IncrementType): IncrementMetadata;
|
|
57
|
-
/**
|
|
58
|
-
* Touch increment (update lastActivity)
|
|
59
|
-
*/
|
|
60
|
-
static touch(incrementId: string): IncrementMetadata;
|
|
61
|
-
/**
|
|
62
|
-
* Get all increments
|
|
63
|
-
*/
|
|
64
|
-
static getAll(): IncrementMetadata[];
|
|
65
|
-
/**
|
|
66
|
-
* Get increments by status
|
|
67
|
-
*/
|
|
68
|
-
static getByStatus(status: IncrementStatus): IncrementMetadata[];
|
|
69
|
-
/**
|
|
70
|
-
* Get active increments
|
|
71
|
-
*/
|
|
72
|
-
static getActive(): IncrementMetadata[];
|
|
73
|
-
/**
|
|
74
|
-
* Get paused increments
|
|
75
|
-
*/
|
|
76
|
-
static getPaused(): IncrementMetadata[];
|
|
77
|
-
/**
|
|
78
|
-
* Get completed increments
|
|
79
|
-
*/
|
|
80
|
-
static getCompleted(): IncrementMetadata[];
|
|
81
|
-
/**
|
|
82
|
-
* Get abandoned increments
|
|
83
|
-
*/
|
|
84
|
-
static getAbandoned(): IncrementMetadata[];
|
|
85
|
-
/**
|
|
86
|
-
* Get increments by type
|
|
87
|
-
*/
|
|
88
|
-
static getByType(type: IncrementType): IncrementMetadata[];
|
|
89
|
-
/**
|
|
90
|
-
* Get stale increments (paused >7 days or active >30 days)
|
|
91
|
-
*/
|
|
92
|
-
static getStale(): IncrementMetadata[];
|
|
93
|
-
/**
|
|
94
|
-
* Get increments that should be auto-abandoned (experiments inactive >14 days)
|
|
95
|
-
*/
|
|
96
|
-
static getShouldAutoAbandon(): IncrementMetadata[];
|
|
97
|
-
/**
|
|
98
|
-
* Get extended metadata with computed fields (progress, age, etc.)
|
|
99
|
-
*/
|
|
100
|
-
static getExtended(incrementId: string): IncrementMetadataExtended;
|
|
101
|
-
/**
|
|
102
|
-
* Validate metadata schema
|
|
103
|
-
*/
|
|
104
|
-
static validate(metadata: IncrementMetadata): boolean;
|
|
105
|
-
/**
|
|
106
|
-
* Check if status transition is allowed
|
|
107
|
-
*/
|
|
108
|
-
static canTransition(from: IncrementStatus, to: IncrementStatus): boolean;
|
|
109
|
-
/**
|
|
110
|
-
* Get human-readable status transition error message
|
|
111
|
-
*/
|
|
112
|
-
static getTransitionError(from: IncrementStatus, to: IncrementStatus): string;
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=metadata-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-manager.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/metadata-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EACf,aAAa,EAKd,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACF,WAAW,EAAE,MAAM;IAAS,KAAK,CAAC,EAAE,KAAK;gBAAjE,OAAO,EAAE,MAAM,EAAS,WAAW,EAAE,MAAM,EAAS,KAAK,CAAC,EAAE,KAAK;CAI9E;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAK9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAK/B;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAK3C;;;OAGG;IACH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB;IAsCnD;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IA8BpE;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAmBxC;;;OAGG;IACH,MAAM,CAAC,YAAY,CACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,iBAAiB;IAgCpB;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,iBAAiB;IAQ9E;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB;IAOpD;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,iBAAiB,EAAE;IAyBpC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,iBAAiB,EAAE;IAIhE;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,iBAAiB,EAAE;IAIvC;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,iBAAiB,EAAE;IAIvC;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,iBAAiB,EAAE;IAI1C;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,iBAAiB,EAAE;IAI1C;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,iBAAiB,EAAE;IAI1D;;OAEG;IACH,MAAM,CAAC,QAAQ,IAAI,iBAAiB,EAAE;IAItC;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI,iBAAiB,EAAE;IAIlD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,yBAAyB;IAyClE;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO;IAwBrD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe,GAAG,OAAO;IAIzE;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe,GAAG,MAAM;CAe9E"}
|
|
@@ -1,320 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metadata Manager
|
|
3
|
-
*
|
|
4
|
-
* Handles CRUD operations for increment metadata (status, type, timestamps).
|
|
5
|
-
* Part of increment 0007: Smart Status Management
|
|
6
|
-
*/
|
|
7
|
-
import fs from 'fs-extra';
|
|
8
|
-
import path from 'path';
|
|
9
|
-
import { IncrementStatus, IncrementType, createDefaultMetadata, isValidTransition, isStale, shouldAutoAbandon } from '../types/increment-metadata.js';
|
|
10
|
-
/**
|
|
11
|
-
* Error thrown when metadata operations fail
|
|
12
|
-
*/
|
|
13
|
-
export class MetadataError extends Error {
|
|
14
|
-
constructor(message, incrementId, cause) {
|
|
15
|
-
super(message);
|
|
16
|
-
this.incrementId = incrementId;
|
|
17
|
-
this.cause = cause;
|
|
18
|
-
this.name = 'MetadataError';
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Metadata Manager
|
|
23
|
-
*
|
|
24
|
-
* Provides CRUD operations and queries for increment metadata
|
|
25
|
-
*/
|
|
26
|
-
export class MetadataManager {
|
|
27
|
-
/**
|
|
28
|
-
* Get metadata file path for increment
|
|
29
|
-
*/
|
|
30
|
-
static getMetadataPath(incrementId) {
|
|
31
|
-
const specweavePath = path.join(process.cwd(), '.specweave');
|
|
32
|
-
return path.join(specweavePath, 'increments', incrementId, 'metadata.json');
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Get increment directory path
|
|
36
|
-
*/
|
|
37
|
-
static getIncrementPath(incrementId) {
|
|
38
|
-
const specweavePath = path.join(process.cwd(), '.specweave');
|
|
39
|
-
return path.join(specweavePath, 'increments', incrementId);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Check if metadata file exists
|
|
43
|
-
*/
|
|
44
|
-
static exists(incrementId) {
|
|
45
|
-
const metadataPath = this.getMetadataPath(incrementId);
|
|
46
|
-
return fs.existsSync(metadataPath);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Read metadata from file
|
|
50
|
-
* Creates default metadata if file doesn't exist (lazy initialization)
|
|
51
|
-
*/
|
|
52
|
-
static read(incrementId) {
|
|
53
|
-
const metadataPath = this.getMetadataPath(incrementId);
|
|
54
|
-
// Lazy initialization: Create metadata if doesn't exist
|
|
55
|
-
if (!fs.existsSync(metadataPath)) {
|
|
56
|
-
// Check if increment folder exists
|
|
57
|
-
const incrementPath = this.getIncrementPath(incrementId);
|
|
58
|
-
if (!fs.existsSync(incrementPath)) {
|
|
59
|
-
throw new MetadataError(`Increment not found: ${incrementId}`, incrementId);
|
|
60
|
-
}
|
|
61
|
-
// Create default metadata
|
|
62
|
-
const defaultMetadata = createDefaultMetadata(incrementId);
|
|
63
|
-
this.write(incrementId, defaultMetadata);
|
|
64
|
-
return defaultMetadata;
|
|
65
|
-
}
|
|
66
|
-
try {
|
|
67
|
-
const content = fs.readFileSync(metadataPath, 'utf-8');
|
|
68
|
-
const metadata = JSON.parse(content);
|
|
69
|
-
// Validate schema
|
|
70
|
-
this.validate(metadata);
|
|
71
|
-
return metadata;
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
75
|
-
throw new MetadataError(`Failed to read metadata for ${incrementId}: ${errorMessage}`, incrementId, error instanceof Error ? error : new Error(String(error)));
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Write metadata to file
|
|
80
|
-
* Uses atomic write (temp file → rename)
|
|
81
|
-
*/
|
|
82
|
-
static write(incrementId, metadata) {
|
|
83
|
-
const metadataPath = this.getMetadataPath(incrementId);
|
|
84
|
-
const incrementPath = this.getIncrementPath(incrementId);
|
|
85
|
-
// Ensure increment directory exists
|
|
86
|
-
if (!fs.existsSync(incrementPath)) {
|
|
87
|
-
throw new MetadataError(`Increment directory not found: ${incrementId}`, incrementId);
|
|
88
|
-
}
|
|
89
|
-
try {
|
|
90
|
-
// Validate before writing
|
|
91
|
-
this.validate(metadata);
|
|
92
|
-
// Atomic write: temp file → rename
|
|
93
|
-
const tempPath = `${metadataPath}.tmp`;
|
|
94
|
-
fs.writeFileSync(tempPath, JSON.stringify(metadata, null, 2), 'utf-8');
|
|
95
|
-
fs.renameSync(tempPath, metadataPath);
|
|
96
|
-
}
|
|
97
|
-
catch (error) {
|
|
98
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
99
|
-
throw new MetadataError(`Failed to write metadata for ${incrementId}: ${errorMessage}`, incrementId, error instanceof Error ? error : new Error(String(error)));
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Delete metadata file
|
|
104
|
-
*/
|
|
105
|
-
static delete(incrementId) {
|
|
106
|
-
const metadataPath = this.getMetadataPath(incrementId);
|
|
107
|
-
if (!fs.existsSync(metadataPath)) {
|
|
108
|
-
return; // Already deleted
|
|
109
|
-
}
|
|
110
|
-
try {
|
|
111
|
-
fs.unlinkSync(metadataPath);
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
115
|
-
throw new MetadataError(`Failed to delete metadata for ${incrementId}: ${errorMessage}`, incrementId, error instanceof Error ? error : new Error(String(error)));
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Update increment status
|
|
120
|
-
* Validates transition and updates timestamps
|
|
121
|
-
*/
|
|
122
|
-
static updateStatus(incrementId, newStatus, reason) {
|
|
123
|
-
const metadata = this.read(incrementId);
|
|
124
|
-
// Validate transition
|
|
125
|
-
if (!isValidTransition(metadata.status, newStatus)) {
|
|
126
|
-
throw new MetadataError(`Invalid status transition: ${metadata.status} → ${newStatus}`, incrementId);
|
|
127
|
-
}
|
|
128
|
-
// Update status
|
|
129
|
-
metadata.status = newStatus;
|
|
130
|
-
metadata.lastActivity = new Date().toISOString();
|
|
131
|
-
// Update status-specific fields
|
|
132
|
-
if (newStatus === IncrementStatus.PAUSED) {
|
|
133
|
-
metadata.pausedReason = reason || 'No reason provided';
|
|
134
|
-
metadata.pausedAt = new Date().toISOString();
|
|
135
|
-
}
|
|
136
|
-
else if (newStatus === IncrementStatus.ACTIVE) {
|
|
137
|
-
// Clear paused fields when resuming
|
|
138
|
-
metadata.pausedReason = undefined;
|
|
139
|
-
metadata.pausedAt = undefined;
|
|
140
|
-
}
|
|
141
|
-
else if (newStatus === IncrementStatus.ABANDONED) {
|
|
142
|
-
metadata.abandonedReason = reason || 'No reason provided';
|
|
143
|
-
metadata.abandonedAt = new Date().toISOString();
|
|
144
|
-
}
|
|
145
|
-
this.write(incrementId, metadata);
|
|
146
|
-
return metadata;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Update increment type
|
|
150
|
-
*/
|
|
151
|
-
static updateType(incrementId, type) {
|
|
152
|
-
const metadata = this.read(incrementId);
|
|
153
|
-
metadata.type = type;
|
|
154
|
-
metadata.lastActivity = new Date().toISOString();
|
|
155
|
-
this.write(incrementId, metadata);
|
|
156
|
-
return metadata;
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Touch increment (update lastActivity)
|
|
160
|
-
*/
|
|
161
|
-
static touch(incrementId) {
|
|
162
|
-
const metadata = this.read(incrementId);
|
|
163
|
-
metadata.lastActivity = new Date().toISOString();
|
|
164
|
-
this.write(incrementId, metadata);
|
|
165
|
-
return metadata;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Get all increments
|
|
169
|
-
*/
|
|
170
|
-
static getAll() {
|
|
171
|
-
const incrementsPath = path.join(process.cwd(), '.specweave', 'increments');
|
|
172
|
-
if (!fs.existsSync(incrementsPath)) {
|
|
173
|
-
return [];
|
|
174
|
-
}
|
|
175
|
-
const incrementFolders = fs.readdirSync(incrementsPath)
|
|
176
|
-
.filter(name => {
|
|
177
|
-
const folderPath = path.join(incrementsPath, name);
|
|
178
|
-
return fs.statSync(folderPath).isDirectory() && !name.startsWith('_');
|
|
179
|
-
});
|
|
180
|
-
return incrementFolders
|
|
181
|
-
.map(folder => {
|
|
182
|
-
try {
|
|
183
|
-
return this.read(folder);
|
|
184
|
-
}
|
|
185
|
-
catch (error) {
|
|
186
|
-
// Skip increments with invalid/missing metadata
|
|
187
|
-
return null;
|
|
188
|
-
}
|
|
189
|
-
})
|
|
190
|
-
.filter((m) => m !== null);
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Get increments by status
|
|
194
|
-
*/
|
|
195
|
-
static getByStatus(status) {
|
|
196
|
-
return this.getAll().filter(m => m.status === status);
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Get active increments
|
|
200
|
-
*/
|
|
201
|
-
static getActive() {
|
|
202
|
-
return this.getByStatus(IncrementStatus.ACTIVE);
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Get paused increments
|
|
206
|
-
*/
|
|
207
|
-
static getPaused() {
|
|
208
|
-
return this.getByStatus(IncrementStatus.PAUSED);
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Get completed increments
|
|
212
|
-
*/
|
|
213
|
-
static getCompleted() {
|
|
214
|
-
return this.getByStatus(IncrementStatus.COMPLETED);
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Get abandoned increments
|
|
218
|
-
*/
|
|
219
|
-
static getAbandoned() {
|
|
220
|
-
return this.getByStatus(IncrementStatus.ABANDONED);
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Get increments by type
|
|
224
|
-
*/
|
|
225
|
-
static getByType(type) {
|
|
226
|
-
return this.getAll().filter(m => m.type === type);
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Get stale increments (paused >7 days or active >30 days)
|
|
230
|
-
*/
|
|
231
|
-
static getStale() {
|
|
232
|
-
return this.getAll().filter(m => isStale(m));
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Get increments that should be auto-abandoned (experiments inactive >14 days)
|
|
236
|
-
*/
|
|
237
|
-
static getShouldAutoAbandon() {
|
|
238
|
-
return this.getAll().filter(m => shouldAutoAbandon(m));
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Get extended metadata with computed fields (progress, age, etc.)
|
|
242
|
-
*/
|
|
243
|
-
static getExtended(incrementId) {
|
|
244
|
-
const metadata = this.read(incrementId);
|
|
245
|
-
const extended = { ...metadata };
|
|
246
|
-
// Calculate progress from tasks.md
|
|
247
|
-
try {
|
|
248
|
-
const tasksPath = path.join(this.getIncrementPath(incrementId), 'tasks.md');
|
|
249
|
-
if (fs.existsSync(tasksPath)) {
|
|
250
|
-
const tasksContent = fs.readFileSync(tasksPath, 'utf-8');
|
|
251
|
-
// Count completed tasks: [x] or [X]
|
|
252
|
-
const completedMatches = tasksContent.match(/\[x\]/gi);
|
|
253
|
-
extended.completedTasks = completedMatches ? completedMatches.length : 0;
|
|
254
|
-
// Count total tasks: [ ] or [x]
|
|
255
|
-
const totalMatches = tasksContent.match(/\[ \]|\[x\]/gi);
|
|
256
|
-
extended.totalTasks = totalMatches ? totalMatches.length : 0;
|
|
257
|
-
// Calculate progress percentage
|
|
258
|
-
if (extended.totalTasks > 0) {
|
|
259
|
-
extended.progress = Math.round((extended.completedTasks / extended.totalTasks) * 100);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
catch (error) {
|
|
264
|
-
// Ignore errors reading tasks.md
|
|
265
|
-
}
|
|
266
|
-
// Calculate age in days
|
|
267
|
-
const now = new Date();
|
|
268
|
-
const createdDate = new Date(metadata.created);
|
|
269
|
-
extended.ageInDays = Math.floor((now.getTime() - createdDate.getTime()) / (1000 * 60 * 60 * 24));
|
|
270
|
-
// Calculate days paused
|
|
271
|
-
if (metadata.status === IncrementStatus.PAUSED && metadata.pausedAt) {
|
|
272
|
-
const pausedDate = new Date(metadata.pausedAt);
|
|
273
|
-
extended.daysPaused = Math.floor((now.getTime() - pausedDate.getTime()) / (1000 * 60 * 60 * 24));
|
|
274
|
-
}
|
|
275
|
-
return extended;
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Validate metadata schema
|
|
279
|
-
*/
|
|
280
|
-
static validate(metadata) {
|
|
281
|
-
if (!metadata.id) {
|
|
282
|
-
throw new Error('Metadata missing required field: id');
|
|
283
|
-
}
|
|
284
|
-
if (!metadata.status || !Object.values(IncrementStatus).includes(metadata.status)) {
|
|
285
|
-
throw new Error(`Invalid status: ${metadata.status}`);
|
|
286
|
-
}
|
|
287
|
-
if (!metadata.type || !Object.values(IncrementType).includes(metadata.type)) {
|
|
288
|
-
throw new Error(`Invalid type: ${metadata.type}`);
|
|
289
|
-
}
|
|
290
|
-
if (!metadata.created) {
|
|
291
|
-
throw new Error('Metadata missing required field: created');
|
|
292
|
-
}
|
|
293
|
-
if (!metadata.lastActivity) {
|
|
294
|
-
throw new Error('Metadata missing required field: lastActivity');
|
|
295
|
-
}
|
|
296
|
-
return true;
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Check if status transition is allowed
|
|
300
|
-
*/
|
|
301
|
-
static canTransition(from, to) {
|
|
302
|
-
return isValidTransition(from, to);
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Get human-readable status transition error message
|
|
306
|
-
*/
|
|
307
|
-
static getTransitionError(from, to) {
|
|
308
|
-
if (from === IncrementStatus.COMPLETED) {
|
|
309
|
-
return `Cannot transition from completed state. Increment is already complete.`;
|
|
310
|
-
}
|
|
311
|
-
if (to === IncrementStatus.PAUSED && from === IncrementStatus.ABANDONED) {
|
|
312
|
-
return `Cannot pause an abandoned increment. Resume it first with /resume.`;
|
|
313
|
-
}
|
|
314
|
-
if (to === IncrementStatus.COMPLETED && from === IncrementStatus.ABANDONED) {
|
|
315
|
-
return `Cannot complete an abandoned increment. Resume it first with /resume.`;
|
|
316
|
-
}
|
|
317
|
-
return `Invalid transition: ${from} → ${to}`;
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
//# sourceMappingURL=metadata-manager.js.map
|