specweave 0.22.14 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +178 -1
- package/dist/src/cli/commands/import-external.d.ts +22 -0
- package/dist/src/cli/commands/import-external.d.ts.map +1 -0
- package/dist/src/cli/commands/import-external.js +282 -0
- package/dist/src/cli/commands/import-external.js.map +1 -0
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +46 -0
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/helpers/github-repo-selector.d.ts +59 -0
- package/dist/src/cli/helpers/github-repo-selector.d.ts.map +1 -0
- package/dist/src/cli/helpers/github-repo-selector.js +265 -0
- package/dist/src/cli/helpers/github-repo-selector.js.map +1 -0
- package/dist/src/config/types.d.ts +16 -16
- package/dist/src/core/increment/ac-status-manager.d.ts.map +1 -1
- package/dist/src/core/increment/ac-status-manager.js +4 -2
- package/dist/src/core/increment/ac-status-manager.js.map +1 -1
- package/dist/src/core/increment/completion-validator.d.ts +30 -1
- package/dist/src/core/increment/completion-validator.d.ts.map +1 -1
- package/dist/src/core/increment/completion-validator.js +151 -3
- package/dist/src/core/increment/completion-validator.js.map +1 -1
- package/dist/src/core/increment/increment-archiver.d.ts +25 -0
- package/dist/src/core/increment/increment-archiver.d.ts.map +1 -1
- package/dist/src/core/increment/increment-archiver.js +130 -3
- package/dist/src/core/increment/increment-archiver.js.map +1 -1
- package/dist/src/core/living-docs/feature-archiver.d.ts +37 -0
- package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -1
- package/dist/src/core/living-docs/feature-archiver.js +262 -18
- package/dist/src/core/living-docs/feature-archiver.js.map +1 -1
- package/dist/src/core/living-docs/feature-id-manager.d.ts +17 -0
- package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -1
- package/dist/src/core/living-docs/feature-id-manager.js +25 -0
- package/dist/src/core/living-docs/feature-id-manager.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts +14 -0
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +46 -0
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/sync/sync-event-logger.d.ts +15 -1
- package/dist/src/core/sync/sync-event-logger.d.ts.map +1 -1
- package/dist/src/core/sync/sync-event-logger.js +39 -1
- package/dist/src/core/sync/sync-event-logger.js.map +1 -1
- package/dist/src/core/types/sync-config-validator.d.ts +57 -0
- package/dist/src/core/types/sync-config-validator.d.ts.map +1 -0
- package/dist/src/core/types/sync-config-validator.js +116 -0
- package/dist/src/core/types/sync-config-validator.js.map +1 -0
- package/dist/src/importers/duplicate-detector.d.ts +107 -0
- package/dist/src/importers/duplicate-detector.d.ts.map +1 -0
- package/dist/src/importers/duplicate-detector.js +189 -0
- package/dist/src/importers/duplicate-detector.js.map +1 -0
- package/dist/src/importers/import-coordinator.d.ts +15 -0
- package/dist/src/importers/import-coordinator.d.ts.map +1 -1
- package/dist/src/importers/import-coordinator.js +43 -1
- package/dist/src/importers/import-coordinator.js.map +1 -1
- package/dist/src/importers/item-converter.d.ts +5 -0
- package/dist/src/importers/item-converter.d.ts.map +1 -1
- package/dist/src/importers/item-converter.js +27 -2
- package/dist/src/importers/item-converter.js.map +1 -1
- package/dist/src/importers/rate-limiter.d.ts +128 -0
- package/dist/src/importers/rate-limiter.d.ts.map +1 -0
- package/dist/src/importers/rate-limiter.js +200 -0
- package/dist/src/importers/rate-limiter.js.map +1 -0
- package/dist/src/init/compliance/types.d.ts +2 -2
- package/dist/src/integrations/ado/ado-client.d.ts +6 -0
- package/dist/src/integrations/ado/ado-client.d.ts.map +1 -1
- package/dist/src/integrations/ado/ado-client.js +23 -0
- package/dist/src/integrations/ado/ado-client.js.map +1 -1
- package/dist/src/integrations/jira/jira-client.d.ts +6 -0
- package/dist/src/integrations/jira/jira-client.d.ts.map +1 -1
- package/dist/src/integrations/jira/jira-client.js +38 -0
- package/dist/src/integrations/jira/jira-client.js.map +1 -1
- package/dist/src/sync/external-item-sync-service.d.ts +150 -0
- package/dist/src/sync/external-item-sync-service.d.ts.map +1 -0
- package/dist/src/sync/external-item-sync-service.js +241 -0
- package/dist/src/sync/external-item-sync-service.js.map +1 -0
- package/dist/src/sync/format-preservation-sync.d.ts +90 -0
- package/dist/src/sync/format-preservation-sync.d.ts.map +1 -0
- package/dist/src/sync/format-preservation-sync.js +173 -0
- package/dist/src/sync/format-preservation-sync.js.map +1 -0
- package/dist/src/sync/index.d.ts +8 -0
- package/dist/src/sync/index.d.ts.map +1 -0
- package/dist/src/sync/index.js +6 -0
- package/dist/src/sync/index.js.map +1 -0
- package/dist/src/sync/sync-coordinator.d.ts +49 -0
- package/dist/src/sync/sync-coordinator.d.ts.map +1 -0
- package/dist/src/sync/sync-coordinator.js +248 -0
- package/dist/src/sync/sync-coordinator.js.map +1 -0
- package/dist/src/sync/sync-metadata.d.ts +75 -0
- package/dist/src/sync/sync-metadata.d.ts.map +1 -0
- package/dist/src/sync/sync-metadata.js +100 -0
- package/dist/src/sync/sync-metadata.js.map +1 -0
- package/dist/src/types/living-docs-us-file.d.ts +63 -0
- package/dist/src/types/living-docs-us-file.d.ts.map +1 -0
- package/dist/src/types/living-docs-us-file.js +27 -0
- package/dist/src/types/living-docs-us-file.js.map +1 -0
- package/dist/src/validators/format-preservation-validator.d.ts +127 -0
- package/dist/src/validators/format-preservation-validator.d.ts.map +1 -0
- package/dist/src/validators/format-preservation-validator.js +187 -0
- package/dist/src/validators/format-preservation-validator.js.map +1 -0
- package/package.json +3 -2
- package/plugins/specweave/.claude-plugin/plugin.json +20 -0
- package/plugins/specweave/commands/specweave-archive-features.md +11 -1
- package/plugins/specweave/commands/specweave-import-docs.md +88 -278
- package/plugins/specweave/commands/specweave-import-external.md +407 -0
- package/plugins/specweave/hooks/post-edit-spec.sh +41 -0
- package/plugins/specweave/hooks/post-increment-completion.sh +0 -0
- package/plugins/specweave/hooks/post-spec-update.sh +0 -0
- package/plugins/specweave/hooks/post-task-completion.sh +13 -3
- package/plugins/specweave/hooks/post-write-spec.sh +37 -0
- package/plugins/specweave/lib/hooks/auto-transition.js +1 -1
- package/plugins/specweave/lib/hooks/auto-transition.ts +1 -1
- package/plugins/specweave/lib/hooks/invoke-translator-skill.js +1 -1
- package/plugins/specweave/lib/hooks/invoke-translator-skill.ts +1 -1
- package/plugins/specweave/lib/hooks/sync-living-docs.js +35 -1
- package/plugins/specweave/lib/hooks/sync-us-tasks.js +179 -3
- package/plugins/specweave/lib/hooks/translate-file.js +1 -1
- package/plugins/specweave/lib/hooks/translate-file.ts +1 -1
- package/plugins/specweave/lib/hooks/update-ac-status.js +1 -1
- package/plugins/specweave/lib/hooks/update-ac-status.ts +1 -1
- package/plugins/specweave/lib/vendor/core/increment/ac-status-manager.d.ts +115 -0
- package/plugins/specweave/lib/vendor/core/increment/ac-status-manager.js +345 -0
- package/plugins/specweave/lib/vendor/core/increment/ac-status-manager.js.map +1 -0
- package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.d.ts +106 -0
- package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js +220 -0
- package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js.map +1 -0
- package/plugins/specweave/lib/vendor/core/increment/auto-transition-manager.d.ts +60 -0
- package/plugins/specweave/lib/vendor/core/increment/auto-transition-manager.js +192 -0
- package/plugins/specweave/lib/vendor/core/increment/auto-transition-manager.js.map +1 -0
- package/plugins/specweave/lib/vendor/core/increment/duplicate-detector.d.ts +52 -0
- package/plugins/specweave/lib/vendor/core/increment/duplicate-detector.js +276 -0
- package/plugins/specweave/lib/vendor/core/increment/duplicate-detector.js.map +1 -0
- package/plugins/specweave/lib/vendor/core/increment/metadata-manager.d.ts +163 -0
- package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js +541 -0
- package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js.map +1 -0
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.d.ts +157 -0
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.js +191 -0
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.js.map +1 -0
- package/plugins/specweave/lib/vendor/generators/spec/task-parser.d.ts +95 -0
- package/plugins/specweave/lib/vendor/generators/spec/task-parser.js +301 -0
- package/plugins/specweave/lib/vendor/generators/spec/task-parser.js.map +1 -0
- package/plugins/specweave/lib/vendor/utils/logger.d.ts +48 -0
- package/plugins/specweave/lib/vendor/utils/logger.js +53 -0
- package/plugins/specweave/lib/vendor/utils/logger.js.map +1 -0
- package/plugins/specweave/lib/vendor/utils/translation.d.ts +187 -0
- package/plugins/specweave/lib/vendor/utils/translation.js +414 -0
- package/plugins/specweave/lib/vendor/utils/translation.js.map +1 -0
- package/plugins/specweave-ado/lib/ado-multi-project-sync.js +0 -1
- package/plugins/specweave-github/commands/specweave-github-update-user-story.md +1 -1
- package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +1 -1
- package/plugins/specweave-jira/lib/enhanced-jira-sync.js +3 -3
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -170
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +0 -5694
|
@@ -0,0 +1,163 @@
|
|
|
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
|
+
import { Logger } from '../../utils/logger.js';
|
|
9
|
+
/**
|
|
10
|
+
* Error thrown when metadata operations fail
|
|
11
|
+
*/
|
|
12
|
+
export declare class MetadataError extends Error {
|
|
13
|
+
incrementId: string;
|
|
14
|
+
cause?: Error;
|
|
15
|
+
constructor(message: string, incrementId: string, cause?: Error);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Metadata Manager
|
|
19
|
+
*
|
|
20
|
+
* Provides CRUD operations and queries for increment metadata
|
|
21
|
+
*/
|
|
22
|
+
export declare class MetadataManager {
|
|
23
|
+
/**
|
|
24
|
+
* Logger instance (injectable for testing)
|
|
25
|
+
*/
|
|
26
|
+
private static logger;
|
|
27
|
+
/**
|
|
28
|
+
* Set logger instance (primarily for testing with silentLogger)
|
|
29
|
+
*
|
|
30
|
+
* @param logger - Logger instance to use
|
|
31
|
+
*/
|
|
32
|
+
static setLogger(logger: Logger): void;
|
|
33
|
+
/**
|
|
34
|
+
* Get metadata file path for increment
|
|
35
|
+
*/
|
|
36
|
+
private static getMetadataPath;
|
|
37
|
+
/**
|
|
38
|
+
* Get increment directory path
|
|
39
|
+
*/
|
|
40
|
+
private static getIncrementPath;
|
|
41
|
+
/**
|
|
42
|
+
* Check if metadata file exists
|
|
43
|
+
*/
|
|
44
|
+
static exists(incrementId: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Read metadata from file
|
|
47
|
+
* Creates default metadata if file doesn't exist (lazy initialization)
|
|
48
|
+
*/
|
|
49
|
+
static read(incrementId: string): IncrementMetadata;
|
|
50
|
+
/**
|
|
51
|
+
* Reserved increment IDs that cannot be used
|
|
52
|
+
* These are status values, special folders, and state files
|
|
53
|
+
*/
|
|
54
|
+
private static readonly RESERVED_INCREMENT_IDS;
|
|
55
|
+
/**
|
|
56
|
+
* Validate increment ID is not a reserved name
|
|
57
|
+
* Throws if ID is reserved
|
|
58
|
+
*/
|
|
59
|
+
private static validateNotReserved;
|
|
60
|
+
/**
|
|
61
|
+
* Validate increment before creation (check for duplicates and reserved names)
|
|
62
|
+
* Throws if duplicates exist in other locations or ID is reserved
|
|
63
|
+
*/
|
|
64
|
+
static validateBeforeCreate(incrementId: string, rootDir?: string): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Write metadata to file
|
|
67
|
+
* Uses atomic write (temp file → rename)
|
|
68
|
+
*/
|
|
69
|
+
static write(incrementId: string, metadata: IncrementMetadata): void;
|
|
70
|
+
/**
|
|
71
|
+
* Delete metadata file
|
|
72
|
+
*/
|
|
73
|
+
static delete(incrementId: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Update increment status
|
|
76
|
+
* Validates transition and updates timestamps
|
|
77
|
+
*
|
|
78
|
+
* **CRITICAL**: Also updates active increment state automatically!
|
|
79
|
+
*
|
|
80
|
+
* NOTE: This method is now SYNCHRONOUS to ensure spec.md is updated
|
|
81
|
+
* before returning. This prevents race conditions in tests and ensures
|
|
82
|
+
* data consistency.
|
|
83
|
+
*/
|
|
84
|
+
static updateStatus(incrementId: string, newStatus: IncrementStatus, reason?: string): IncrementMetadata;
|
|
85
|
+
/**
|
|
86
|
+
* Update spec.md status synchronously (used by updateStatus)
|
|
87
|
+
*
|
|
88
|
+
* This is a private helper to avoid async/await in updateStatus() which would
|
|
89
|
+
* break backward compatibility with callers expecting sync behavior.
|
|
90
|
+
*/
|
|
91
|
+
private static updateSpecMdStatusSync;
|
|
92
|
+
/**
|
|
93
|
+
* Update increment type
|
|
94
|
+
*/
|
|
95
|
+
static updateType(incrementId: string, type: IncrementType): IncrementMetadata;
|
|
96
|
+
/**
|
|
97
|
+
* Touch increment (update lastActivity)
|
|
98
|
+
*/
|
|
99
|
+
static touch(incrementId: string): IncrementMetadata;
|
|
100
|
+
/**
|
|
101
|
+
* Get all increments
|
|
102
|
+
*/
|
|
103
|
+
static getAll(): IncrementMetadata[];
|
|
104
|
+
/**
|
|
105
|
+
* Get increments by status
|
|
106
|
+
*/
|
|
107
|
+
static getByStatus(status: IncrementStatus): IncrementMetadata[];
|
|
108
|
+
/**
|
|
109
|
+
* Get active increments (FAST: cache-first strategy)
|
|
110
|
+
*
|
|
111
|
+
* **PERFORMANCE UPGRADE**: Uses ActiveIncrementManager cache instead of scanning all increments
|
|
112
|
+
* - Old: Scan 31 metadata files (~50ms)
|
|
113
|
+
* - New: Read 1 cache file + 1-2 metadata files (~5ms) = **10x faster**
|
|
114
|
+
*
|
|
115
|
+
* Fallback to full scan if cache is stale or missing
|
|
116
|
+
*/
|
|
117
|
+
static getActive(): IncrementMetadata[];
|
|
118
|
+
/**
|
|
119
|
+
* Get backlog increments
|
|
120
|
+
*/
|
|
121
|
+
static getBacklog(): IncrementMetadata[];
|
|
122
|
+
/**
|
|
123
|
+
* Get paused increments
|
|
124
|
+
*/
|
|
125
|
+
static getPaused(): IncrementMetadata[];
|
|
126
|
+
/**
|
|
127
|
+
* Get completed increments
|
|
128
|
+
*/
|
|
129
|
+
static getCompleted(): IncrementMetadata[];
|
|
130
|
+
/**
|
|
131
|
+
* Get abandoned increments
|
|
132
|
+
*/
|
|
133
|
+
static getAbandoned(): IncrementMetadata[];
|
|
134
|
+
/**
|
|
135
|
+
* Get increments by type
|
|
136
|
+
*/
|
|
137
|
+
static getByType(type: IncrementType): IncrementMetadata[];
|
|
138
|
+
/**
|
|
139
|
+
* Get stale increments (paused >7 days or active >30 days)
|
|
140
|
+
*/
|
|
141
|
+
static getStale(): IncrementMetadata[];
|
|
142
|
+
/**
|
|
143
|
+
* Get increments that should be auto-abandoned (experiments inactive >14 days)
|
|
144
|
+
*/
|
|
145
|
+
static getShouldAutoAbandon(): IncrementMetadata[];
|
|
146
|
+
/**
|
|
147
|
+
* Get extended metadata with computed fields (progress, age, etc.)
|
|
148
|
+
*/
|
|
149
|
+
static getExtended(incrementId: string): IncrementMetadataExtended;
|
|
150
|
+
/**
|
|
151
|
+
* Validate metadata schema
|
|
152
|
+
*/
|
|
153
|
+
static validate(metadata: IncrementMetadata): boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Check if status transition is allowed
|
|
156
|
+
*/
|
|
157
|
+
static canTransition(from: IncrementStatus, to: IncrementStatus): boolean;
|
|
158
|
+
/**
|
|
159
|
+
* Get human-readable status transition error message
|
|
160
|
+
*/
|
|
161
|
+
static getTransitionError(from: IncrementStatus, to: IncrementStatus): string;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=metadata-manager.d.ts.map
|