specweave 0.29.0 → 0.29.1
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/package.json +3 -1
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +12 -0
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +18 -0
- package/dist/plugins/specweave-github/lib/enhanced-github-sync.d.ts +0 -26
- package/dist/plugins/specweave-github/lib/enhanced-github-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-github/lib/enhanced-github-sync.js +0 -249
- package/dist/plugins/specweave-github/lib/enhanced-github-sync.js.map +0 -1
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +0 -28
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +0 -156
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +0 -1
- package/dist/src/core/sync/bidirectional-engine.d.ts +0 -119
- package/dist/src/core/sync/bidirectional-engine.d.ts.map +0 -1
- package/dist/src/core/sync/bidirectional-engine.js +0 -359
- package/dist/src/core/sync/bidirectional-engine.js.map +0 -1
- package/dist/src/core/sync/conflict-resolver.d.ts +0 -66
- package/dist/src/core/sync/conflict-resolver.d.ts.map +0 -1
- package/dist/src/core/sync/conflict-resolver.js +0 -108
- package/dist/src/core/sync/conflict-resolver.js.map +0 -1
- package/dist/src/core/sync/enhanced-content-builder.d.ts +0 -55
- package/dist/src/core/sync/enhanced-content-builder.d.ts.map +0 -1
- package/dist/src/core/sync/enhanced-content-builder.js +0 -203
- package/dist/src/core/sync/enhanced-content-builder.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 -203
- package/dist/src/core/sync/folder-mapper.js.map +0 -1
- package/dist/src/core/sync/label-detector.d.ts +0 -66
- package/dist/src/core/sync/label-detector.d.ts.map +0 -1
- package/dist/src/core/sync/label-detector.js +0 -224
- package/dist/src/core/sync/label-detector.js.map +0 -1
- package/dist/src/core/sync/performance-optimizer.d.ts +0 -153
- package/dist/src/core/sync/performance-optimizer.d.ts.map +0 -1
- package/dist/src/core/sync/performance-optimizer.js +0 -220
- package/dist/src/core/sync/performance-optimizer.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 -170
- package/dist/src/core/sync/profile-validator.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/retry-handler.d.ts +0 -98
- package/dist/src/core/sync/retry-handler.d.ts.map +0 -1
- package/dist/src/core/sync/retry-handler.js +0 -196
- package/dist/src/core/sync/retry-handler.js.map +0 -1
- package/dist/src/core/sync/retry-logic.d.ts +0 -64
- package/dist/src/core/sync/retry-logic.d.ts.map +0 -1
- package/dist/src/core/sync/retry-logic.js +0 -165
- package/dist/src/core/sync/retry-logic.js.map +0 -1
- package/dist/src/core/sync/status-cache.d.ts +0 -91
- package/dist/src/core/sync/status-cache.d.ts.map +0 -1
- package/dist/src/core/sync/status-cache.js +0 -140
- package/dist/src/core/sync/status-cache.js.map +0 -1
- package/dist/src/core/sync/status-mapper.d.ts +0 -69
- package/dist/src/core/sync/status-mapper.d.ts.map +0 -1
- package/dist/src/core/sync/status-mapper.js +0 -90
- package/dist/src/core/sync/status-mapper.js.map +0 -1
- package/dist/src/core/sync/status-sync-engine.d.ts +0 -162
- package/dist/src/core/sync/status-sync-engine.d.ts.map +0 -1
- package/dist/src/core/sync/status-sync-engine.js +0 -347
- package/dist/src/core/sync/status-sync-engine.js.map +0 -1
- package/dist/src/core/sync/sync-event-logger.d.ts +0 -113
- package/dist/src/core/sync/sync-event-logger.d.ts.map +0 -1
- package/dist/src/core/sync/sync-event-logger.js +0 -141
- package/dist/src/core/sync/sync-event-logger.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/sync/types.d.ts +0 -52
- package/dist/src/core/sync/types.d.ts.map +0 -1
- package/dist/src/core/sync/types.js +0 -5
- package/dist/src/core/sync/types.js.map +0 -1
- package/dist/src/core/sync/workflow-detector.d.ts +0 -95
- package/dist/src/core/sync/workflow-detector.d.ts.map +0 -1
- package/dist/src/core/sync/workflow-detector.js +0 -175
- package/dist/src/core/sync/workflow-detector.js.map +0 -1
- package/plugins/specweave-github/lib/enhanced-github-sync.js +0 -220
- package/plugins/specweave-github/lib/enhanced-github-sync.ts +0 -322
- package/plugins/specweave-jira/lib/enhanced-jira-sync.js +0 -134
- package/plugins/specweave-jira/lib/enhanced-jira-sync.ts +0 -196
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"folder-mapper.js","sourceRoot":"","sources":["../../../../src/core/sync/folder-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Label Detector
|
|
3
|
-
*
|
|
4
|
-
* Detects increment type and applies appropriate labels for external tools.
|
|
5
|
-
* Supports GitHub labels, Jira labels, and ADO tags.
|
|
6
|
-
*
|
|
7
|
-
* @author SpecWeave Team
|
|
8
|
-
* @version 1.0.0
|
|
9
|
-
*/
|
|
10
|
-
export type IncrementType = 'bug' | 'feature' | 'docs' | 'hotfix' | 'refactor' | 'chore' | 'experiment';
|
|
11
|
-
export interface LabelConfig {
|
|
12
|
-
bug: string;
|
|
13
|
-
feature: string;
|
|
14
|
-
docs: string;
|
|
15
|
-
hotfix?: string;
|
|
16
|
-
refactor?: string;
|
|
17
|
-
chore?: string;
|
|
18
|
-
experiment?: string;
|
|
19
|
-
}
|
|
20
|
-
export interface DetectionResult {
|
|
21
|
-
type: IncrementType;
|
|
22
|
-
confidence: number;
|
|
23
|
-
labels: string[];
|
|
24
|
-
detectionMethod: 'frontmatter' | 'title' | 'content' | 'filename';
|
|
25
|
-
}
|
|
26
|
-
export declare class LabelDetector {
|
|
27
|
-
private labelConfig;
|
|
28
|
-
constructor(labelConfig?: Partial<LabelConfig>, useUserFormat?: boolean);
|
|
29
|
-
/**
|
|
30
|
-
* Detect increment type from spec content
|
|
31
|
-
*/
|
|
32
|
-
detectType(specContent: string, incrementId?: string): DetectionResult;
|
|
33
|
-
/**
|
|
34
|
-
* Detect from YAML frontmatter (type: bug, type: feature, etc.)
|
|
35
|
-
*/
|
|
36
|
-
private detectFromFrontmatter;
|
|
37
|
-
/**
|
|
38
|
-
* Detect from title/heading (# Fix: Bug Title, # Feature: New Feature, etc.)
|
|
39
|
-
*/
|
|
40
|
-
private detectFromTitle;
|
|
41
|
-
/**
|
|
42
|
-
* Detect from increment filename (0001-bugfix-auth, 0002-feature-dashboard, etc.)
|
|
43
|
-
*/
|
|
44
|
-
private detectFromFilename;
|
|
45
|
-
/**
|
|
46
|
-
* Detect from content keywords
|
|
47
|
-
*/
|
|
48
|
-
private detectFromContent;
|
|
49
|
-
/**
|
|
50
|
-
* Get labels for GitHub (standard format)
|
|
51
|
-
*/
|
|
52
|
-
getGitHubLabels(type: IncrementType): string[];
|
|
53
|
-
/**
|
|
54
|
-
* Get labels for Jira (supports labels)
|
|
55
|
-
*/
|
|
56
|
-
getJiraLabels(type: IncrementType): string[];
|
|
57
|
-
/**
|
|
58
|
-
* Get tags for Azure DevOps (supports tags)
|
|
59
|
-
*/
|
|
60
|
-
getAdoTags(type: IncrementType): string[];
|
|
61
|
-
/**
|
|
62
|
-
* Get user-friendly labels (with brackets: [Bug], [Feature], etc.)
|
|
63
|
-
*/
|
|
64
|
-
getUserLabels(type: IncrementType): string[];
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=label-detector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"label-detector.d.ts","sourceRoot":"","sources":["../../../../src/core/sync/label-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,CAAC;AAExG,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,EAAE,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;CACnE;AAmCD,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAc;gBAErB,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,aAAa,GAAE,OAAc;IAK7E;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe;IAyBtE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0CzB;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE;IAc9C;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE;IAI5C;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE;IAIzC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE;CAG7C"}
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Label Detector
|
|
3
|
-
*
|
|
4
|
-
* Detects increment type and applies appropriate labels for external tools.
|
|
5
|
-
* Supports GitHub labels, Jira labels, and ADO tags.
|
|
6
|
-
*
|
|
7
|
-
* @author SpecWeave Team
|
|
8
|
-
* @version 1.0.0
|
|
9
|
-
*/
|
|
10
|
-
const DEFAULT_GITHUB_LABELS = {
|
|
11
|
-
bug: 'bug',
|
|
12
|
-
feature: 'enhancement',
|
|
13
|
-
docs: 'documentation',
|
|
14
|
-
hotfix: 'hotfix',
|
|
15
|
-
refactor: 'refactor',
|
|
16
|
-
chore: 'chore',
|
|
17
|
-
experiment: 'experiment'
|
|
18
|
-
};
|
|
19
|
-
/**
|
|
20
|
-
* User-friendly labels for display purposes ONLY.
|
|
21
|
-
*
|
|
22
|
-
* CRITICAL: These are NOT for use in GitHub issue titles!
|
|
23
|
-
* GitHub issue titles MUST follow [FS-XXX][US-YYY] format.
|
|
24
|
-
*
|
|
25
|
-
* Use these labels:
|
|
26
|
-
* - As GitHub issue labels (via addLabels)
|
|
27
|
-
* - For display in CLI output
|
|
28
|
-
* - For categorization in reports
|
|
29
|
-
*
|
|
30
|
-
* DO NOT use in issue titles - that causes format violations like issue #749.
|
|
31
|
-
*/
|
|
32
|
-
const DEFAULT_USER_DISPLAY_LABELS = {
|
|
33
|
-
bug: 'Bug',
|
|
34
|
-
feature: 'Feature',
|
|
35
|
-
docs: 'Docs',
|
|
36
|
-
hotfix: 'Hotfix',
|
|
37
|
-
refactor: 'Refactor',
|
|
38
|
-
chore: 'Chore',
|
|
39
|
-
experiment: 'Experiment'
|
|
40
|
-
};
|
|
41
|
-
export class LabelDetector {
|
|
42
|
-
constructor(labelConfig, useUserFormat = true) {
|
|
43
|
-
const defaults = useUserFormat ? DEFAULT_USER_DISPLAY_LABELS : DEFAULT_GITHUB_LABELS;
|
|
44
|
-
this.labelConfig = { ...defaults, ...labelConfig };
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Detect increment type from spec content
|
|
48
|
-
*/
|
|
49
|
-
detectType(specContent, incrementId) {
|
|
50
|
-
// Try detection methods in order of confidence
|
|
51
|
-
const methods = [
|
|
52
|
-
() => this.detectFromFrontmatter(specContent),
|
|
53
|
-
() => this.detectFromTitle(specContent),
|
|
54
|
-
() => this.detectFromFilename(incrementId),
|
|
55
|
-
() => this.detectFromContent(specContent)
|
|
56
|
-
];
|
|
57
|
-
for (const method of methods) {
|
|
58
|
-
const result = method();
|
|
59
|
-
if (result && result.confidence >= 70) {
|
|
60
|
-
return result;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
// Fallback: default to feature with low confidence
|
|
64
|
-
return {
|
|
65
|
-
type: 'feature',
|
|
66
|
-
confidence: 30,
|
|
67
|
-
labels: [this.labelConfig.feature],
|
|
68
|
-
detectionMethod: 'content'
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Detect from YAML frontmatter (type: bug, type: feature, etc.)
|
|
73
|
-
*/
|
|
74
|
-
detectFromFrontmatter(content) {
|
|
75
|
-
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
76
|
-
if (!frontmatterMatch)
|
|
77
|
-
return null;
|
|
78
|
-
const frontmatter = frontmatterMatch[1];
|
|
79
|
-
// Look for "type: bug" or "type: feature"
|
|
80
|
-
const typeMatch = frontmatter.match(/^type:\s*(.+)$/m);
|
|
81
|
-
if (!typeMatch)
|
|
82
|
-
return null;
|
|
83
|
-
const type = typeMatch[1].trim().toLowerCase();
|
|
84
|
-
const label = this.labelConfig[type];
|
|
85
|
-
if (!label)
|
|
86
|
-
return null;
|
|
87
|
-
return {
|
|
88
|
-
type,
|
|
89
|
-
confidence: 100,
|
|
90
|
-
labels: [label],
|
|
91
|
-
detectionMethod: 'frontmatter'
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Detect from title/heading (# Fix: Bug Title, # Feature: New Feature, etc.)
|
|
96
|
-
*/
|
|
97
|
-
detectFromTitle(content) {
|
|
98
|
-
const titleMatch = content.match(/^#\s+(?:Increment\s+\d+:\s+)?(.+)$/m);
|
|
99
|
-
if (!titleMatch)
|
|
100
|
-
return null;
|
|
101
|
-
const title = titleMatch[1].toLowerCase();
|
|
102
|
-
// Check for explicit markers
|
|
103
|
-
const markers = {
|
|
104
|
-
bug: ['fix:', 'bug:', 'bugfix:', 'hotfix:'],
|
|
105
|
-
feature: ['feature:', 'feat:', 'add:', 'implement:'],
|
|
106
|
-
docs: ['docs:', 'doc:', 'documentation:'],
|
|
107
|
-
hotfix: ['hotfix:', 'emergency:', 'critical:'],
|
|
108
|
-
refactor: ['refactor:', 'refactoring:', 'cleanup:'],
|
|
109
|
-
chore: ['chore:', 'maintenance:']
|
|
110
|
-
};
|
|
111
|
-
for (const [type, patterns] of Object.entries(markers)) {
|
|
112
|
-
if (patterns.some(p => title.startsWith(p))) {
|
|
113
|
-
return {
|
|
114
|
-
type: type,
|
|
115
|
-
confidence: 90,
|
|
116
|
-
labels: [this.labelConfig[type]],
|
|
117
|
-
detectionMethod: 'title'
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return null;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Detect from increment filename (0001-bugfix-auth, 0002-feature-dashboard, etc.)
|
|
125
|
-
*/
|
|
126
|
-
detectFromFilename(incrementId) {
|
|
127
|
-
if (!incrementId)
|
|
128
|
-
return null;
|
|
129
|
-
const filename = incrementId.toLowerCase();
|
|
130
|
-
const patterns = {
|
|
131
|
-
bug: /\b(bug|bugfix|fix)\b/,
|
|
132
|
-
feature: /\b(feature|feat)\b/,
|
|
133
|
-
docs: /\b(docs?|documentation)\b/,
|
|
134
|
-
hotfix: /\b(hotfix|emergency)\b/,
|
|
135
|
-
refactor: /\b(refactor|cleanup)\b/,
|
|
136
|
-
chore: /\b(chore|maintenance)\b/,
|
|
137
|
-
experiment: /\b(experiment|poc|spike)\b/
|
|
138
|
-
};
|
|
139
|
-
for (const [type, pattern] of Object.entries(patterns)) {
|
|
140
|
-
if (pattern.test(filename)) {
|
|
141
|
-
return {
|
|
142
|
-
type: type,
|
|
143
|
-
confidence: 80,
|
|
144
|
-
labels: [this.labelConfig[type]],
|
|
145
|
-
detectionMethod: 'filename'
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
return null;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Detect from content keywords
|
|
153
|
-
*/
|
|
154
|
-
detectFromContent(content) {
|
|
155
|
-
const lower = content.toLowerCase();
|
|
156
|
-
// Bug indicators
|
|
157
|
-
const bugKeywords = ['error', 'crash', 'issue', 'problem', 'broken', 'not working'];
|
|
158
|
-
const bugCount = bugKeywords.filter(k => lower.includes(k)).length;
|
|
159
|
-
// Feature indicators
|
|
160
|
-
const featureKeywords = ['implement', 'add', 'create', 'new feature', 'enhancement'];
|
|
161
|
-
const featureCount = featureKeywords.filter(k => lower.includes(k)).length;
|
|
162
|
-
// Docs indicators
|
|
163
|
-
const docsKeywords = ['documentation', 'readme', 'guide', 'tutorial', 'docs'];
|
|
164
|
-
const docsCount = docsKeywords.filter(k => lower.includes(k)).length;
|
|
165
|
-
// Determine type by keyword frequency
|
|
166
|
-
const max = Math.max(bugCount, featureCount, docsCount);
|
|
167
|
-
if (max === 0)
|
|
168
|
-
return null;
|
|
169
|
-
let type;
|
|
170
|
-
let confidence;
|
|
171
|
-
if (bugCount === max) {
|
|
172
|
-
type = 'bug';
|
|
173
|
-
confidence = Math.min(50 + bugCount * 10, 100);
|
|
174
|
-
}
|
|
175
|
-
else if (featureCount === max) {
|
|
176
|
-
type = 'feature';
|
|
177
|
-
confidence = Math.min(50 + featureCount * 10, 100);
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
type = 'docs';
|
|
181
|
-
confidence = Math.min(50 + docsCount * 10, 100);
|
|
182
|
-
}
|
|
183
|
-
return {
|
|
184
|
-
type,
|
|
185
|
-
confidence,
|
|
186
|
-
labels: [this.labelConfig[type]],
|
|
187
|
-
detectionMethod: 'content'
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Get labels for GitHub (standard format)
|
|
192
|
-
*/
|
|
193
|
-
getGitHubLabels(type) {
|
|
194
|
-
const githubLabels = {
|
|
195
|
-
bug: 'bug',
|
|
196
|
-
feature: 'enhancement',
|
|
197
|
-
docs: 'documentation',
|
|
198
|
-
hotfix: 'hotfix',
|
|
199
|
-
refactor: 'refactor',
|
|
200
|
-
chore: 'chore',
|
|
201
|
-
experiment: 'experiment'
|
|
202
|
-
};
|
|
203
|
-
return [githubLabels[type]];
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Get labels for Jira (supports labels)
|
|
207
|
-
*/
|
|
208
|
-
getJiraLabels(type) {
|
|
209
|
-
return [type]; // Jira labels are just lowercase type names
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Get tags for Azure DevOps (supports tags)
|
|
213
|
-
*/
|
|
214
|
-
getAdoTags(type) {
|
|
215
|
-
return [type]; // ADO tags are also lowercase type names
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Get user-friendly labels (with brackets: [Bug], [Feature], etc.)
|
|
219
|
-
*/
|
|
220
|
-
getUserLabels(type) {
|
|
221
|
-
return [this.labelConfig[type]];
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
//# sourceMappingURL=label-detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"label-detector.js","sourceRoot":"","sources":["../../../../src/core/sync/label-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Performance Optimizer for Status Sync
|
|
3
|
-
*
|
|
4
|
-
* Implements caching, batching, and optimization strategies to ensure
|
|
5
|
-
* status sync operations complete within performance targets:
|
|
6
|
-
* - Status sync: <2 seconds
|
|
7
|
-
* - Conflict detection: <1 second
|
|
8
|
-
* - Bulk sync (10 items): <5 seconds
|
|
9
|
-
*
|
|
10
|
-
* @module performance-optimizer
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Performance metrics
|
|
14
|
-
*/
|
|
15
|
-
export interface PerformanceMetrics {
|
|
16
|
-
operationType: 'status-sync' | 'conflict-detection' | 'bulk-sync';
|
|
17
|
-
duration: number;
|
|
18
|
-
itemCount: number;
|
|
19
|
-
cacheHits: number;
|
|
20
|
-
cacheMisses: number;
|
|
21
|
-
timestamp: string;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Performance Optimizer
|
|
25
|
-
*
|
|
26
|
-
* Provides caching and optimization for status sync operations.
|
|
27
|
-
*/
|
|
28
|
-
export declare class PerformanceOptimizer {
|
|
29
|
-
private cache;
|
|
30
|
-
private readonly DEFAULT_TTL_MS;
|
|
31
|
-
private metrics;
|
|
32
|
-
/**
|
|
33
|
-
* Get cached value if available and not expired
|
|
34
|
-
*
|
|
35
|
-
* @param key - Cache key
|
|
36
|
-
* @returns Cached value or null if not found/expired
|
|
37
|
-
*/
|
|
38
|
-
get<T>(key: string): T | null;
|
|
39
|
-
/**
|
|
40
|
-
* Set cache value with TTL
|
|
41
|
-
*
|
|
42
|
-
* @param key - Cache key
|
|
43
|
-
* @param value - Value to cache
|
|
44
|
-
* @param ttlMs - Time to live in milliseconds (default: 5 minutes)
|
|
45
|
-
*/
|
|
46
|
-
set<T>(key: string, value: T, ttlMs?: number): void;
|
|
47
|
-
/**
|
|
48
|
-
* Clear specific cache entry
|
|
49
|
-
*
|
|
50
|
-
* @param key - Cache key
|
|
51
|
-
*/
|
|
52
|
-
clear(key: string): void;
|
|
53
|
-
/**
|
|
54
|
-
* Clear all cache entries
|
|
55
|
-
*/
|
|
56
|
-
clearAll(): void;
|
|
57
|
-
/**
|
|
58
|
-
* Clear expired cache entries
|
|
59
|
-
*/
|
|
60
|
-
clearExpired(): void;
|
|
61
|
-
/**
|
|
62
|
-
* Get cache statistics
|
|
63
|
-
*/
|
|
64
|
-
getCacheStats(): {
|
|
65
|
-
size: number;
|
|
66
|
-
keys: string[];
|
|
67
|
-
hitRate: number;
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* Record performance metric
|
|
71
|
-
*
|
|
72
|
-
* @param metric - Performance metric
|
|
73
|
-
*/
|
|
74
|
-
recordMetric(metric: PerformanceMetrics): void;
|
|
75
|
-
/**
|
|
76
|
-
* Get performance metrics
|
|
77
|
-
*
|
|
78
|
-
* @param operationType - Filter by operation type
|
|
79
|
-
* @returns Performance metrics
|
|
80
|
-
*/
|
|
81
|
-
getMetrics(operationType?: PerformanceMetrics['operationType']): PerformanceMetrics[];
|
|
82
|
-
/**
|
|
83
|
-
* Get average duration for operation type
|
|
84
|
-
*
|
|
85
|
-
* @param operationType - Operation type
|
|
86
|
-
* @returns Average duration in milliseconds
|
|
87
|
-
*/
|
|
88
|
-
getAverageDuration(operationType: PerformanceMetrics['operationType']): number;
|
|
89
|
-
/**
|
|
90
|
-
* Check if performance targets are met
|
|
91
|
-
*
|
|
92
|
-
* Performance targets:
|
|
93
|
-
* - status-sync: <2000ms
|
|
94
|
-
* - conflict-detection: <1000ms
|
|
95
|
-
* - bulk-sync (10 items): <5000ms
|
|
96
|
-
*
|
|
97
|
-
* @returns Performance target status
|
|
98
|
-
*/
|
|
99
|
-
checkPerformanceTargets(): {
|
|
100
|
-
statusSync: {
|
|
101
|
-
target: number;
|
|
102
|
-
actual: number;
|
|
103
|
-
met: boolean;
|
|
104
|
-
};
|
|
105
|
-
conflictDetection: {
|
|
106
|
-
target: number;
|
|
107
|
-
actual: number;
|
|
108
|
-
met: boolean;
|
|
109
|
-
};
|
|
110
|
-
bulkSync: {
|
|
111
|
-
target: number;
|
|
112
|
-
actual: number;
|
|
113
|
-
met: boolean;
|
|
114
|
-
};
|
|
115
|
-
};
|
|
116
|
-
/**
|
|
117
|
-
* Generate cache key for external status
|
|
118
|
-
*
|
|
119
|
-
* @param tool - External tool
|
|
120
|
-
* @param identifier - Issue/item identifier
|
|
121
|
-
* @returns Cache key
|
|
122
|
-
*/
|
|
123
|
-
static generateStatusCacheKey(tool: string, identifier: string): string;
|
|
124
|
-
/**
|
|
125
|
-
* Generate cache key for workflow
|
|
126
|
-
*
|
|
127
|
-
* @param tool - External tool
|
|
128
|
-
* @param project - Project identifier
|
|
129
|
-
* @returns Cache key
|
|
130
|
-
*/
|
|
131
|
-
static generateWorkflowCacheKey(tool: string, project: string): string;
|
|
132
|
-
/**
|
|
133
|
-
* Batch process with delay
|
|
134
|
-
*
|
|
135
|
-
* Processes items in batches with configurable delay between batches
|
|
136
|
-
* to avoid rate limiting and improve throughput.
|
|
137
|
-
*
|
|
138
|
-
* @param items - Items to process
|
|
139
|
-
* @param processor - Async function to process each item
|
|
140
|
-
* @param batchSize - Batch size (default: 5)
|
|
141
|
-
* @param delayMs - Delay between batches in milliseconds (default: 1000)
|
|
142
|
-
* @returns Array of results
|
|
143
|
-
*/
|
|
144
|
-
static batchProcess<T, R>(items: T[], processor: (item: T) => Promise<R>, batchSize?: number, delayMs?: number): Promise<R[]>;
|
|
145
|
-
/**
|
|
146
|
-
* Measure execution time of an async function
|
|
147
|
-
*
|
|
148
|
-
* @param operation - Async operation to measure
|
|
149
|
-
* @returns Tuple of [result, duration in ms]
|
|
150
|
-
*/
|
|
151
|
-
static measureTime<T>(operation: () => Promise<T>): Promise<[T, number]>;
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=performance-optimizer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"performance-optimizer.d.ts","sourceRoot":"","sources":["../../../../src/core/sync/performance-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,aAAa,GAAG,oBAAoB,GAAG,WAAW,CAAC;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,OAAO,CAA4B;IAE3C;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAgB7B;;;;;;OAMG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAE,MAA4B,GAAG,IAAI;IAOxE;;;;OAIG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,YAAY,IAAI,IAAI;IASpB;;OAEG;IACH,aAAa,IAAI;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB;IAcD;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAS9C;;;;;OAKG;IACH,UAAU,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,GAAG,kBAAkB,EAAE;IAQrF;;;;;OAKG;IACH,kBAAkB,CAAC,aAAa,EAAE,kBAAkB,CAAC,eAAe,CAAC,GAAG,MAAM;IAW9E;;;;;;;;;OASG;IACH,uBAAuB,IAAI;QACzB,UAAU,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,OAAO,CAAA;SAAE,CAAC;QAC7D,iBAAiB,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,OAAO,CAAA;SAAE,CAAC;QACpE,QAAQ,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,OAAO,CAAA;SAAE,CAAC;KAC5D;IAwBD;;;;;;OAMG;IACH,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAIvE;;;;;;OAMG;IACH,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAItE;;;;;;;;;;;OAWG;WACU,YAAY,CAAC,CAAC,EAAE,CAAC,EAC5B,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,SAAS,GAAE,MAAU,EACrB,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,CAAC,EAAE,CAAC;IAsBf;;;;;OAKG;WACU,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;CAO/E"}
|