specweave 1.0.477 → 1.0.479
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/README.md +3 -1
- package/dist/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js +2 -1
- package/dist/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js.map +1 -1
- package/dist/src/cli/commands/refresh-plugins.js +2 -2
- package/dist/src/cli/commands/refresh-plugins.js.map +1 -1
- package/dist/src/cli/helpers/init/plugin-installer.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/plugin-installer.js +11 -0
- package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
- package/dist/src/core/config/types.d.ts +20 -0
- package/dist/src/core/config/types.d.ts.map +1 -1
- package/dist/src/core/config/types.js.map +1 -1
- package/dist/src/core/hooks/LifecycleHookDispatcher.d.ts.map +1 -1
- package/dist/src/core/hooks/LifecycleHookDispatcher.js +13 -0
- package/dist/src/core/hooks/LifecycleHookDispatcher.js.map +1 -1
- package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
- package/dist/src/core/increment/active-increment-manager.js +2 -1
- package/dist/src/core/increment/active-increment-manager.js.map +1 -1
- package/dist/src/core/lazy-loading/project-detector.d.ts.map +1 -1
- package/dist/src/core/lazy-loading/project-detector.js +7 -5
- package/dist/src/core/lazy-loading/project-detector.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +9 -0
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/skill-gen/drift-detector.d.ts +24 -0
- package/dist/src/core/skill-gen/drift-detector.d.ts.map +1 -0
- package/dist/src/core/skill-gen/drift-detector.js +123 -0
- package/dist/src/core/skill-gen/drift-detector.js.map +1 -0
- package/dist/src/core/skill-gen/signal-collector.d.ts +51 -0
- package/dist/src/core/skill-gen/signal-collector.d.ts.map +1 -0
- package/dist/src/core/skill-gen/signal-collector.js +224 -0
- package/dist/src/core/skill-gen/signal-collector.js.map +1 -0
- package/dist/src/core/skill-gen/suggestion-engine.d.ts +21 -0
- package/dist/src/core/skill-gen/suggestion-engine.d.ts.map +1 -0
- package/dist/src/core/skill-gen/suggestion-engine.js +92 -0
- package/dist/src/core/skill-gen/suggestion-engine.js.map +1 -0
- package/dist/src/core/skill-gen/types.d.ts +65 -0
- package/dist/src/core/skill-gen/types.d.ts.map +1 -0
- package/dist/src/core/skill-gen/types.js +25 -0
- package/dist/src/core/skill-gen/types.js.map +1 -0
- package/dist/src/core/skills/activation-tracker.d.ts.map +1 -1
- package/dist/src/core/skills/activation-tracker.js +2 -1
- package/dist/src/core/skills/activation-tracker.js.map +1 -1
- package/dist/src/core/specs/spec-detector.d.ts.map +1 -1
- package/dist/src/core/specs/spec-detector.js +2 -1
- package/dist/src/core/specs/spec-detector.js.map +1 -1
- package/dist/src/core/types/plugin-scope.d.ts +1 -2
- package/dist/src/core/types/plugin-scope.d.ts.map +1 -1
- package/dist/src/core/types/plugin-scope.js +3 -7
- package/dist/src/core/types/plugin-scope.js.map +1 -1
- package/dist/src/hooks/platform.d.ts +1 -11
- package/dist/src/hooks/platform.d.ts.map +1 -1
- package/dist/src/hooks/platform.js +2 -24
- package/dist/src/hooks/platform.js.map +1 -1
- package/dist/src/utils/auto-install.d.ts.map +1 -1
- package/dist/src/utils/auto-install.js +9 -0
- package/dist/src/utils/auto-install.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js +2 -1
- package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js.map +1 -1
- package/plugins/specweave/skills/architect/SKILL.md +4 -0
- package/plugins/specweave/skills/auto/SKILL.md +4 -0
- package/plugins/specweave/skills/brainstorm/SKILL.md +4 -0
- package/plugins/specweave/skills/debug/SKILL.md +4 -0
- package/plugins/specweave/skills/do/SKILL.md +4 -0
- package/plugins/specweave/skills/done/SKILL.md +4 -0
- package/plugins/specweave/skills/e2e/SKILL.md +4 -0
- package/plugins/specweave/skills/get/SKILL.md +4 -0
- package/plugins/specweave/skills/grill/SKILL.md +4 -0
- package/plugins/specweave/skills/import/SKILL.md +4 -0
- package/plugins/specweave/skills/increment/SKILL.md +4 -0
- package/plugins/specweave/skills/judge-llm/SKILL.md +4 -0
- package/plugins/specweave/skills/npm/SKILL.md +4 -0
- package/plugins/specweave/skills/plan/SKILL.md +4 -0
- package/plugins/specweave/skills/pm/SKILL.md +4 -0
- package/plugins/specweave/skills/pr/SKILL.md +4 -0
- package/plugins/specweave/skills/progress-sync/SKILL.md +4 -0
- package/plugins/specweave/skills/skill-gen/SKILL.md +160 -0
- package/plugins/specweave/skills/skill-gen/evals/evals.json +79 -0
- package/plugins/specweave/skills/sync-docs/SKILL.md +4 -0
- package/plugins/specweave/skills/tdd-cycle/SKILL.md +4 -0
- package/plugins/specweave/skills/tdd-green/SKILL.md +4 -0
- package/plugins/specweave/skills/tdd-red/SKILL.md +4 -0
- package/plugins/specweave/skills/tdd-refactor/SKILL.md +4 -0
- package/plugins/specweave/skills/team-build/SKILL.md +4 -0
- package/plugins/specweave/skills/team-lead/SKILL.md +4 -0
- package/plugins/specweave/skills/team-merge/SKILL.md +4 -0
- package/plugins/specweave/skills/validate/SKILL.md +4 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signal Collector — detects recurring patterns from living docs output.
|
|
3
|
+
*
|
|
4
|
+
* Runs on every increment closure (wired into LifecycleHookDispatcher.onIncrementDone).
|
|
5
|
+
* Reads markdown files from .specweave/docs/internal/, extracts pattern candidates,
|
|
6
|
+
* and persists them to .specweave/state/skill-signals.json.
|
|
7
|
+
*
|
|
8
|
+
* Error-isolated: never throws, never blocks increment closure.
|
|
9
|
+
*
|
|
10
|
+
* @module core/skill-gen/signal-collector
|
|
11
|
+
*/
|
|
12
|
+
import { readFile, writeFile, readdir, mkdir, copyFile } from 'fs/promises';
|
|
13
|
+
import { join, relative } from 'path';
|
|
14
|
+
import { EMPTY_SIGNAL_STORE, SKILL_GEN_DEFAULTS } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Pattern detection categories with keyword indicators.
|
|
17
|
+
* A category is detected when 3+ keywords appear in a single file.
|
|
18
|
+
*/
|
|
19
|
+
const PATTERN_CATEGORIES = {
|
|
20
|
+
'error-handling': {
|
|
21
|
+
keywords: ['error-handling', 'error handling', 'try/catch', 'error boundar', 'catch block', 'error middleware'],
|
|
22
|
+
description: 'Consistent error handling patterns',
|
|
23
|
+
},
|
|
24
|
+
'naming-conventions': {
|
|
25
|
+
keywords: ['naming convention', 'file naming', 'variable naming', 'kebab-case', 'camelCase', 'PascalCase'],
|
|
26
|
+
description: 'Consistent naming convention patterns',
|
|
27
|
+
},
|
|
28
|
+
'architecture-patterns': {
|
|
29
|
+
keywords: ['architecture pattern', 'module organization', 'dependency injection', 'clean architecture', 'layered', 'hexagonal'],
|
|
30
|
+
description: 'Architectural organization patterns',
|
|
31
|
+
},
|
|
32
|
+
'testing-patterns': {
|
|
33
|
+
keywords: ['test pattern', 'mock pattern', 'test organization', 'test fixture', 'test factory', 'test helper'],
|
|
34
|
+
description: 'Testing convention patterns',
|
|
35
|
+
},
|
|
36
|
+
'api-patterns': {
|
|
37
|
+
keywords: ['api pattern', 'api boundary', 'endpoint pattern', 'route pattern', 'validation', 'zod', 'schema validation'],
|
|
38
|
+
description: 'API design and validation patterns',
|
|
39
|
+
},
|
|
40
|
+
'auth-patterns': {
|
|
41
|
+
keywords: ['auth pattern', 'authentication', 'authorization', 'jwt', 'session', 'oauth', 'auth middleware'],
|
|
42
|
+
description: 'Authentication and authorization patterns',
|
|
43
|
+
},
|
|
44
|
+
'data-model': {
|
|
45
|
+
keywords: ['data model', 'database', 'schema', 'migration', 'orm', 'prisma', 'typeorm', 'sequelize'],
|
|
46
|
+
description: 'Data model and database patterns',
|
|
47
|
+
},
|
|
48
|
+
'state-management': {
|
|
49
|
+
keywords: ['state management', 'redux', 'zustand', 'context', 'store', 'global state'],
|
|
50
|
+
description: 'State management patterns',
|
|
51
|
+
},
|
|
52
|
+
'integration-patterns': {
|
|
53
|
+
keywords: ['integration', 'external api', 'third-party', 'webhook', 'event-driven', 'message queue'],
|
|
54
|
+
description: 'External integration patterns',
|
|
55
|
+
},
|
|
56
|
+
'build-deploy': {
|
|
57
|
+
keywords: ['build pattern', 'deploy', 'ci/cd', 'pipeline', 'docker', 'containeriz'],
|
|
58
|
+
description: 'Build and deployment patterns',
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
const MIN_KEYWORD_HITS = 3;
|
|
62
|
+
export class SignalCollector {
|
|
63
|
+
constructor(projectRoot, options) {
|
|
64
|
+
this.projectRoot = projectRoot;
|
|
65
|
+
this.maxSignals = options?.maxSignals ?? SKILL_GEN_DEFAULTS.maxSignals;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Collect signals from living docs for the given increment.
|
|
69
|
+
* Never throws — all errors are caught and logged.
|
|
70
|
+
*/
|
|
71
|
+
async collect(incrementId) {
|
|
72
|
+
try {
|
|
73
|
+
const store = await this.loadStore();
|
|
74
|
+
const docsDir = join(this.projectRoot, '.specweave', 'docs', 'internal');
|
|
75
|
+
const patterns = await this.detectPatterns(docsDir);
|
|
76
|
+
for (const detected of patterns) {
|
|
77
|
+
this.upsertSignal(store, detected, incrementId);
|
|
78
|
+
}
|
|
79
|
+
this.pruneIfNeeded(store);
|
|
80
|
+
await this.saveStore(store);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// Error-isolated: log and continue
|
|
84
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
85
|
+
console.warn(`[SignalCollector] Warning: ${msg}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Load signal store from disk, recovering from corruption.
|
|
90
|
+
*/
|
|
91
|
+
async loadStore() {
|
|
92
|
+
const signalsPath = this.getSignalsPath();
|
|
93
|
+
try {
|
|
94
|
+
const content = await readFile(signalsPath, 'utf-8');
|
|
95
|
+
return JSON.parse(content);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (error?.code === 'ENOENT') {
|
|
99
|
+
return { ...EMPTY_SIGNAL_STORE, signals: [] };
|
|
100
|
+
}
|
|
101
|
+
// Corrupted file — backup and start fresh
|
|
102
|
+
try {
|
|
103
|
+
await copyFile(signalsPath, signalsPath + '.bak');
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// backup failed, continue anyway
|
|
107
|
+
}
|
|
108
|
+
return { ...EMPTY_SIGNAL_STORE, signals: [] };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Save signal store to disk.
|
|
113
|
+
*/
|
|
114
|
+
async saveStore(store) {
|
|
115
|
+
const signalsPath = this.getSignalsPath();
|
|
116
|
+
const dir = join(this.projectRoot, '.specweave', 'state');
|
|
117
|
+
await mkdir(dir, { recursive: true });
|
|
118
|
+
await writeFile(signalsPath, JSON.stringify(store, null, 2));
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Detect patterns from living docs markdown files.
|
|
122
|
+
*/
|
|
123
|
+
async detectPatterns(docsDir) {
|
|
124
|
+
const files = await this.collectMarkdownFiles(docsDir);
|
|
125
|
+
const detectedMap = new Map();
|
|
126
|
+
for (const filePath of files) {
|
|
127
|
+
try {
|
|
128
|
+
const content = (await readFile(filePath, 'utf-8')).toLowerCase();
|
|
129
|
+
const relPath = relative(this.projectRoot, filePath);
|
|
130
|
+
for (const [category, { keywords }] of Object.entries(PATTERN_CATEGORIES)) {
|
|
131
|
+
const hits = keywords.filter((kw) => content.includes(kw.toLowerCase()));
|
|
132
|
+
if (hits.length >= MIN_KEYWORD_HITS) {
|
|
133
|
+
const existing = detectedMap.get(category) || [];
|
|
134
|
+
if (!existing.includes(relPath)) {
|
|
135
|
+
existing.push(relPath);
|
|
136
|
+
}
|
|
137
|
+
detectedMap.set(category, existing);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// Skip unreadable files
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return Array.from(detectedMap.entries()).map(([category, evidence]) => ({
|
|
146
|
+
category,
|
|
147
|
+
evidence,
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Recursively collect markdown files from a directory.
|
|
152
|
+
*/
|
|
153
|
+
async collectMarkdownFiles(dir) {
|
|
154
|
+
const results = [];
|
|
155
|
+
try {
|
|
156
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
157
|
+
for (const entry of entries) {
|
|
158
|
+
const fullPath = join(dir, entry.name);
|
|
159
|
+
if (entry.isDirectory()) {
|
|
160
|
+
results.push(...(await this.collectMarkdownFiles(fullPath)));
|
|
161
|
+
}
|
|
162
|
+
else if (entry.name.endsWith('.md')) {
|
|
163
|
+
results.push(fullPath);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// Directory doesn't exist or is unreadable
|
|
169
|
+
}
|
|
170
|
+
return results;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Create or update a signal entry.
|
|
174
|
+
*/
|
|
175
|
+
upsertSignal(store, detected, incrementId) {
|
|
176
|
+
const existing = store.signals.find((s) => s.category === detected.category);
|
|
177
|
+
const now = new Date().toISOString();
|
|
178
|
+
if (existing) {
|
|
179
|
+
if (!existing.incrementIds.includes(incrementId)) {
|
|
180
|
+
existing.incrementIds.push(incrementId);
|
|
181
|
+
}
|
|
182
|
+
existing.lastSeen = now;
|
|
183
|
+
// Merge evidence (deduplicated)
|
|
184
|
+
for (const ev of detected.evidence) {
|
|
185
|
+
if (!existing.evidence.includes(ev)) {
|
|
186
|
+
existing.evidence.push(ev);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Recalculate confidence based on increment count
|
|
190
|
+
existing.confidence = Math.min(1.0, existing.incrementIds.length / SKILL_GEN_DEFAULTS.minSignalCount);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
const meta = PATTERN_CATEGORIES[detected.category];
|
|
194
|
+
const newSignal = {
|
|
195
|
+
id: `sig-${detected.category}`,
|
|
196
|
+
pattern: `${detected.category}-pattern`,
|
|
197
|
+
category: detected.category,
|
|
198
|
+
description: meta?.description ?? `Detected ${detected.category} pattern`,
|
|
199
|
+
incrementIds: [incrementId],
|
|
200
|
+
firstSeen: now,
|
|
201
|
+
lastSeen: now,
|
|
202
|
+
confidence: 1 / SKILL_GEN_DEFAULTS.minSignalCount,
|
|
203
|
+
evidence: detected.evidence,
|
|
204
|
+
suggested: false,
|
|
205
|
+
declined: false,
|
|
206
|
+
generated: false,
|
|
207
|
+
};
|
|
208
|
+
store.signals.push(newSignal);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Prune lowest-confidence signals when store exceeds maxSignals.
|
|
213
|
+
*/
|
|
214
|
+
pruneIfNeeded(store) {
|
|
215
|
+
if (store.signals.length > this.maxSignals) {
|
|
216
|
+
store.signals.sort((a, b) => b.confidence - a.confidence);
|
|
217
|
+
store.signals = store.signals.slice(0, this.maxSignals);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
getSignalsPath() {
|
|
221
|
+
return join(this.projectRoot, '.specweave', 'state', 'skill-signals.json');
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=signal-collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-collector.js","sourceRoot":"","sources":["../../../../src/core/skill-gen/signal-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Suggestion Engine — evaluates signals and prints a single suggestion.
|
|
3
|
+
*
|
|
4
|
+
* Runs after signal collection on increment closure.
|
|
5
|
+
* Prints at most one suggestion per closure, picking the highest-confidence qualifying signal.
|
|
6
|
+
*
|
|
7
|
+
* @module core/skill-gen/suggestion-engine
|
|
8
|
+
*/
|
|
9
|
+
export declare class SuggestionEngine {
|
|
10
|
+
private projectRoot;
|
|
11
|
+
constructor(projectRoot: string);
|
|
12
|
+
/**
|
|
13
|
+
* Evaluate signals and print a suggestion if one qualifies.
|
|
14
|
+
* Never throws — all errors are caught and logged.
|
|
15
|
+
*/
|
|
16
|
+
evaluate(): Promise<void>;
|
|
17
|
+
private loadConfig;
|
|
18
|
+
private loadStore;
|
|
19
|
+
private saveStore;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=suggestion-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggestion-engine.d.ts","sourceRoot":"","sources":["../../../../src/core/skill-gen/suggestion-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAI/B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YA8CjB,UAAU;YAwBV,SAAS;YAST,SAAS;CAIxB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Suggestion Engine — evaluates signals and prints a single suggestion.
|
|
3
|
+
*
|
|
4
|
+
* Runs after signal collection on increment closure.
|
|
5
|
+
* Prints at most one suggestion per closure, picking the highest-confidence qualifying signal.
|
|
6
|
+
*
|
|
7
|
+
* @module core/skill-gen/suggestion-engine
|
|
8
|
+
*/
|
|
9
|
+
import { readFile, writeFile } from 'fs/promises';
|
|
10
|
+
import { join } from 'path';
|
|
11
|
+
import { SKILL_GEN_DEFAULTS } from './types.js';
|
|
12
|
+
export class SuggestionEngine {
|
|
13
|
+
constructor(projectRoot) {
|
|
14
|
+
this.projectRoot = projectRoot;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Evaluate signals and print a suggestion if one qualifies.
|
|
18
|
+
* Never throws — all errors are caught and logged.
|
|
19
|
+
*/
|
|
20
|
+
async evaluate() {
|
|
21
|
+
try {
|
|
22
|
+
const config = await this.loadConfig();
|
|
23
|
+
if (!config.suggest) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const store = await this.loadStore();
|
|
27
|
+
if (!store) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const minCount = config.minSignalCount ?? SKILL_GEN_DEFAULTS.minSignalCount;
|
|
31
|
+
const declined = new Set(config.declinedSuggestions ?? SKILL_GEN_DEFAULTS.declinedSuggestions);
|
|
32
|
+
// Filter qualifying signals
|
|
33
|
+
const qualifying = store.signals.filter((s) => s.incrementIds.length >= minCount &&
|
|
34
|
+
!s.declined &&
|
|
35
|
+
!s.generated &&
|
|
36
|
+
!declined.has(s.id));
|
|
37
|
+
if (qualifying.length === 0) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Pick highest confidence
|
|
41
|
+
qualifying.sort((a, b) => b.confidence - a.confidence);
|
|
42
|
+
const top = qualifying[0];
|
|
43
|
+
// Print suggestion
|
|
44
|
+
console.log(`\u{1F4A1} Skill suggestion: Detected "${top.pattern}" pattern across ${top.incrementIds.length} increments. Run /sw:skill-gen to generate project skills.`);
|
|
45
|
+
// Mark as suggested and save
|
|
46
|
+
top.suggested = true;
|
|
47
|
+
await this.saveStore(store);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
51
|
+
console.warn(`[SuggestionEngine] Warning: ${msg}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async loadConfig() {
|
|
55
|
+
try {
|
|
56
|
+
const configPath = join(this.projectRoot, '.specweave', 'config.json');
|
|
57
|
+
const content = JSON.parse(await readFile(configPath, 'utf-8'));
|
|
58
|
+
return {
|
|
59
|
+
detection: SKILL_GEN_DEFAULTS.detection,
|
|
60
|
+
suggest: SKILL_GEN_DEFAULTS.suggest,
|
|
61
|
+
minSignalCount: SKILL_GEN_DEFAULTS.minSignalCount,
|
|
62
|
+
declinedSuggestions: SKILL_GEN_DEFAULTS.declinedSuggestions,
|
|
63
|
+
maxSignals: SKILL_GEN_DEFAULTS.maxSignals,
|
|
64
|
+
...content.skillGen,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Config missing — use defaults
|
|
69
|
+
return {
|
|
70
|
+
detection: SKILL_GEN_DEFAULTS.detection,
|
|
71
|
+
suggest: SKILL_GEN_DEFAULTS.suggest,
|
|
72
|
+
minSignalCount: SKILL_GEN_DEFAULTS.minSignalCount,
|
|
73
|
+
declinedSuggestions: [...SKILL_GEN_DEFAULTS.declinedSuggestions],
|
|
74
|
+
maxSignals: SKILL_GEN_DEFAULTS.maxSignals,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async loadStore() {
|
|
79
|
+
try {
|
|
80
|
+
const signalsPath = join(this.projectRoot, '.specweave', 'state', 'skill-signals.json');
|
|
81
|
+
return JSON.parse(await readFile(signalsPath, 'utf-8'));
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async saveStore(store) {
|
|
88
|
+
const signalsPath = join(this.projectRoot, '.specweave', 'state', 'skill-signals.json');
|
|
89
|
+
await writeFile(signalsPath, JSON.stringify(store, null, 2));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=suggestion-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggestion-engine.js","sourceRoot":"","sources":["../../../../src/core/skill-gen/suggestion-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Generation Signal Types
|
|
3
|
+
*
|
|
4
|
+
* Defines the structure for .specweave/state/skill-signals.json
|
|
5
|
+
*
|
|
6
|
+
* @module core/skill-gen/types
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Signal categories for pattern classification.
|
|
10
|
+
* Uses semantic slugs for deduplication — not exact library names.
|
|
11
|
+
*/
|
|
12
|
+
export type SignalCategory = 'error-handling' | 'naming-conventions' | 'architecture-patterns' | 'testing-patterns' | 'integration-patterns' | 'data-model' | 'api-patterns' | 'auth-patterns' | 'state-management' | 'build-deploy' | string;
|
|
13
|
+
/**
|
|
14
|
+
* A single detected pattern signal
|
|
15
|
+
*/
|
|
16
|
+
export interface SignalEntry {
|
|
17
|
+
/** Unique signal identifier (UUID or slug) */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Short human-readable pattern name (e.g., "error-boundary-pattern") */
|
|
20
|
+
pattern: string;
|
|
21
|
+
/** Category slug for deduplication */
|
|
22
|
+
category: SignalCategory;
|
|
23
|
+
/** Human-readable description of the detected pattern */
|
|
24
|
+
description: string;
|
|
25
|
+
/** Increment IDs where this pattern was observed */
|
|
26
|
+
incrementIds: string[];
|
|
27
|
+
/** ISO date when first detected */
|
|
28
|
+
firstSeen: string;
|
|
29
|
+
/** ISO date when last detected */
|
|
30
|
+
lastSeen: string;
|
|
31
|
+
/** Confidence score 0.0-1.0 */
|
|
32
|
+
confidence: number;
|
|
33
|
+
/** Evidence: file paths, snippets, or analysis references */
|
|
34
|
+
evidence: string[];
|
|
35
|
+
/** Whether this signal has been surfaced as a suggestion */
|
|
36
|
+
suggested: boolean;
|
|
37
|
+
/** Whether the user has declined this suggestion */
|
|
38
|
+
declined: boolean;
|
|
39
|
+
/** Whether a skill has been generated from this signal */
|
|
40
|
+
generated: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Top-level structure of skill-signals.json
|
|
44
|
+
*/
|
|
45
|
+
export interface SignalStore {
|
|
46
|
+
/** Schema version for migration support */
|
|
47
|
+
version: string;
|
|
48
|
+
/** Array of detected pattern signals */
|
|
49
|
+
signals: SignalEntry[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Default empty signal store
|
|
53
|
+
*/
|
|
54
|
+
export declare const EMPTY_SIGNAL_STORE: SignalStore;
|
|
55
|
+
/**
|
|
56
|
+
* Default SkillGen config values (applied when config.skillGen is absent)
|
|
57
|
+
*/
|
|
58
|
+
export declare const SKILL_GEN_DEFAULTS: {
|
|
59
|
+
detection: "on-close";
|
|
60
|
+
suggest: boolean;
|
|
61
|
+
minSignalCount: number;
|
|
62
|
+
declinedSuggestions: string[];
|
|
63
|
+
maxSignals: number;
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/skill-gen/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,oBAAoB,GACpB,uBAAuB,GACvB,kBAAkB,GAClB,sBAAsB,GACtB,YAAY,GACZ,cAAc,GACd,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,QAAQ,EAAE,cAAc,CAAC;IACzB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAGhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;yBAIF,MAAM,EAAE;;CAEpC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Generation Signal Types
|
|
3
|
+
*
|
|
4
|
+
* Defines the structure for .specweave/state/skill-signals.json
|
|
5
|
+
*
|
|
6
|
+
* @module core/skill-gen/types
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Default empty signal store
|
|
10
|
+
*/
|
|
11
|
+
export const EMPTY_SIGNAL_STORE = {
|
|
12
|
+
version: '1.0',
|
|
13
|
+
signals: [],
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Default SkillGen config values (applied when config.skillGen is absent)
|
|
17
|
+
*/
|
|
18
|
+
export const SKILL_GEN_DEFAULTS = {
|
|
19
|
+
detection: 'on-close',
|
|
20
|
+
suggest: true,
|
|
21
|
+
minSignalCount: 3,
|
|
22
|
+
declinedSuggestions: [],
|
|
23
|
+
maxSignals: 100,
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/skill-gen/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2DH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC7C,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,SAAS,EAAE,UAAmB;IAC9B,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,CAAC;IACjB,mBAAmB,EAAE,EAAc;IACnC,UAAU,EAAE,GAAG;CAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activation-tracker.d.ts","sourceRoot":"","sources":["../../../../src/core/skills/activation-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"activation-tracker.d.ts","sourceRoot":"","sources":["../../../../src/core/skills/activation-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAUD;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAY5E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe,CAiBpF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAC3C,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI,CA6BN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAM3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAGlE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBjE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwB/C"}
|
|
@@ -8,11 +8,12 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import * as fs from '../../utils/fs-native.js';
|
|
10
10
|
import * as path from 'path';
|
|
11
|
+
import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
|
|
11
12
|
/**
|
|
12
13
|
* Get activation state file path
|
|
13
14
|
*/
|
|
14
15
|
function getStatePath(projectRoot) {
|
|
15
|
-
const root = projectRoot ||
|
|
16
|
+
const root = projectRoot || resolveEffectiveRoot();
|
|
16
17
|
return path.join(root, '.specweave', 'state', 'skill-activations.json');
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activation-tracker.js","sourceRoot":"","sources":["../../../../src/core/skills/activation-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"activation-tracker.js","sourceRoot":"","sources":["../../../../src/core/skills/activation-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAwBxE;;GAEG;AACH,SAAS,YAAY,CAAC,WAAoB;IACxC,MAAM,IAAI,GAAG,WAAW,IAAI,oBAAoB,EAAE,CAAC;IACnD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAoB;IAClD,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,SAAS,CAAoB,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,WAAoB;IACjE,MAAM,KAAK,GAAoB;QAC7B,SAAS;QACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA2C,EAC3C,WAAoB;IAEpB,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAE5C,uBAAuB;IACvB,IAAI,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,uCAAuC;QACvC,KAAK,GAAG,WAAW,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;IACzD,CAAC;IAED,wBAAwB;IACxB,MAAM,UAAU,GAAqB;QACnC,GAAG,MAAM;QACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IAEF,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEnC,uBAAuB;IACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,aAAa;IACb,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAoB;IACnD,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAoB;IACtD,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,WAAoB;IACjD,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAoB;IACvD,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAE3C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,qDAAqD,CAAC;IAC/D,CAAC;IAED,MAAM,KAAK,GAAa;QACtB,YAAY,KAAK,CAAC,SAAS,EAAE;QAC7B,YAAY,KAAK,CAAC,SAAS,EAAE;QAC7B,gBAAgB,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;QAC1C,YAAY,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACtC,EAAE;QACF,qBAAqB;KACtB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAEhC,mCAAmC;IACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChH,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjH,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7G,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChH,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1G,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/G,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-detector.d.ts","sourceRoot":"","sources":["../../../../src/core/specs/spec-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"spec-detector.d.ts","sourceRoot":"","sources":["../../../../src/core/specs/spec-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,MAAM,WAAW,YAAY;IAC3B,sBAAsB;IACtB,UAAU,EAAE,cAAc,CAAC;IAE3B,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAEhB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IAEb,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,yBAAyB;IACzB,KAAK,EAAE,YAAY,EAAE,CAAC;IAEtB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,6CAA6C;IAC7C,WAAW,EAAE,OAAO,CAAC;IAErB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,GAAQ,GACf,OAAO,CAAC,wBAAwB,CAAC,CAUnC;AAoJD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,wCAAwC,CACtD,aAAa,EAAE,MAAM,EACrB,WAAW,GAAE,MAAW,EACxB,MAAM,GAAE,GAAQ,GACf,sBAAsB,CA8CxB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,WAAW,GAAE,MAAW,EACxB,MAAM,GAAE,GAAQ,GACf,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,GAAE,GAAQ,GAAG,OAAO,CAO5E"}
|
|
@@ -10,6 +10,7 @@ import * as fs from '../../utils/fs-native.js';
|
|
|
10
10
|
import path from 'path';
|
|
11
11
|
import matter from 'gray-matter';
|
|
12
12
|
import { detectSpecIdentifier } from './spec-identifier-detector.js';
|
|
13
|
+
import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
|
|
13
14
|
/**
|
|
14
15
|
* Detect all specs referenced in an increment
|
|
15
16
|
*
|
|
@@ -47,7 +48,7 @@ function getFeatureIdFromIncrement(incrementPath) {
|
|
|
47
48
|
* Detect all user stories for a given feature_id
|
|
48
49
|
*/
|
|
49
50
|
async function detectSpecsByFeatureId(featureId, config = {}) {
|
|
50
|
-
const specsFolder = path.join(
|
|
51
|
+
const specsFolder = path.join(resolveEffectiveRoot(), '.specweave/docs/internal/specs');
|
|
51
52
|
const emptyResult = { specs: [], isMultiSpec: false, projects: [] };
|
|
52
53
|
if (!fs.existsSync(specsFolder)) {
|
|
53
54
|
return emptyResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-detector.js","sourceRoot":"","sources":["../../../../src/core/specs/spec-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAe,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"spec-detector.js","sourceRoot":"","sources":["../../../../src/core/specs/spec-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,8 +60,7 @@ export interface PluginScopeConfig {
|
|
|
60
60
|
* Default plugin scope configuration
|
|
61
61
|
*
|
|
62
62
|
* - LSP plugins: project scope (language-specific, don't pollute global)
|
|
63
|
-
* - SpecWeave/vskill plugins (
|
|
64
|
-
* - Core SpecWeave plugin (sw): user scope (needed across all projects)
|
|
63
|
+
* - SpecWeave/vskill plugins (sw, sw-github, etc.): user scope (framework tools, needed across all projects)
|
|
65
64
|
* - Other plugins: user scope (default)
|
|
66
65
|
*/
|
|
67
66
|
export declare const DEFAULT_PLUGIN_SCOPE_CONFIG: PluginScopeConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-scope.d.ts","sourceRoot":"","sources":["../../../../src/core/types/plugin-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,uBAAuB,CAAC;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IAEnC;;;OAGG;IACH,cAAc,CAAC,EAAE,uBAAuB,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CAC1D;AAED
|
|
1
|
+
{"version":3,"file":"plugin-scope.d.ts","sourceRoot":"","sources":["../../../../src/core/types/plugin-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,uBAAuB,CAAC;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IAEnC;;;OAGG;IACH,cAAc,CAAC,EAAE,uBAAuB,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CAC1D;AAED;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBAKzC,CAAC;AA8BF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAChC,uBAAuB,CAgCzB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAMtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,EAAE,CAKrE"}
|
|
@@ -14,18 +14,14 @@
|
|
|
14
14
|
* Default plugin scope configuration
|
|
15
15
|
*
|
|
16
16
|
* - LSP plugins: project scope (language-specific, don't pollute global)
|
|
17
|
-
* - SpecWeave/vskill plugins (
|
|
18
|
-
* - Core SpecWeave plugin (sw): user scope (needed across all projects)
|
|
17
|
+
* - SpecWeave/vskill plugins (sw, sw-github, etc.): user scope (framework tools, needed across all projects)
|
|
19
18
|
* - Other plugins: user scope (default)
|
|
20
19
|
*/
|
|
21
20
|
export const DEFAULT_PLUGIN_SCOPE_CONFIG = {
|
|
22
21
|
defaultScope: 'user',
|
|
23
22
|
lspScope: 'project',
|
|
24
|
-
specweaveScope: '
|
|
25
|
-
scopeOverrides: {
|
|
26
|
-
// Core SW plugin stays at user level - it's the framework itself
|
|
27
|
-
'sw': 'user',
|
|
28
|
-
},
|
|
23
|
+
specweaveScope: 'user',
|
|
24
|
+
scopeOverrides: {},
|
|
29
25
|
};
|
|
30
26
|
/**
|
|
31
27
|
* LSP marketplace identifier
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-scope.js","sourceRoot":"","sources":["../../../../src/core/types/plugin-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAqDH
|
|
1
|
+
{"version":3,"file":"plugin-scope.js","sourceRoot":"","sources":["../../../../src/core/types/plugin-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAqDH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAsB;IAC5D,YAAY,EAAE,MAAM;IACpB,QAAQ,EAAE,SAAS;IACnB,cAAc,EAAE,MAAM;IACtB,cAAc,EAAE,EAAE;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C;;GAEG;AACH,MAAM,qBAAqB,GAAG,WAAW,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,OAAO;IACP,SAAS;IACT,eAAe;IACf,OAAO;IACP,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,SAAS;IACT,SAAS;IACT,WAAW;IACX,gBAAgB;IAChB,YAAY;CACb,CAAC,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,WAAmB,EACnB,MAAiC;IAEjC,sBAAsB;IACtB,MAAM,eAAe,GAAsB;QACzC,GAAG,2BAA2B;QAC9B,GAAG,MAAM;KACV,CAAC;IAEF,iCAAiC;IACjC,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QACjD,OAAO,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,+DAA+D;IAC/D,MAAM,WAAW,GACf,WAAW,KAAK,eAAe;QAC/B,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3B,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAE9B,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,eAAe,CAAC,QAAQ,IAAI,2BAA2B,CAAC,QAAS,CAAC;IAC3E,CAAC;IAED,+BAA+B;IAC/B,MAAM,iBAAiB,GACrB,WAAW,KAAK,qBAAqB,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,KAAK,IAAI,CAAC;IAE/F,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,eAAe,CAAC,cAAc,IAAI,2BAA2B,CAAC,cAAe,CAAC;IACvF,CAAC;IAED,mBAAmB;IACnB,OAAO,eAAe,CAAC,YAAY,IAAI,2BAA2B,CAAC,YAAa,CAAC;AACnF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAA8B;IAC5D,4CAA4C;IAC5C,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,WAAW,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,KAA8B;IACzD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC"}
|