specweave 0.8.2 → 0.8.4

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.
Files changed (93) hide show
  1. package/.claude-plugin/marketplace.json +11 -0
  2. package/dist/adapters/adapter-loader.d.ts +4 -4
  3. package/dist/adapters/adapter-loader.d.ts.map +1 -1
  4. package/dist/adapters/adapter-loader.js +8 -7
  5. package/dist/adapters/adapter-loader.js.map +1 -1
  6. package/dist/cli/commands/init.d.ts.map +1 -1
  7. package/dist/cli/commands/init.js +78 -21
  8. package/dist/cli/commands/init.js.map +1 -1
  9. package/dist/metrics/calculators/change-failure-rate.d.ts +1 -1
  10. package/dist/metrics/calculators/change-failure-rate.d.ts.map +1 -1
  11. package/dist/metrics/calculators/change-failure-rate.js +1 -1
  12. package/dist/metrics/calculators/change-failure-rate.js.map +1 -1
  13. package/dist/metrics/calculators/deployment-frequency.d.ts +1 -1
  14. package/dist/metrics/calculators/deployment-frequency.d.ts.map +1 -1
  15. package/dist/metrics/calculators/deployment-frequency.js +1 -1
  16. package/dist/metrics/calculators/deployment-frequency.js.map +1 -1
  17. package/dist/metrics/calculators/lead-time.d.ts +1 -1
  18. package/dist/metrics/calculators/lead-time.d.ts.map +1 -1
  19. package/dist/metrics/calculators/lead-time.js +2 -2
  20. package/dist/metrics/calculators/lead-time.js.map +1 -1
  21. package/dist/metrics/calculators/mttr.d.ts +1 -1
  22. package/dist/metrics/calculators/mttr.d.ts.map +1 -1
  23. package/dist/metrics/calculators/mttr.js +2 -2
  24. package/dist/metrics/calculators/mttr.js.map +1 -1
  25. package/dist/metrics/dora-calculator.d.ts +2 -2
  26. package/dist/metrics/dora-calculator.d.ts.map +1 -1
  27. package/dist/metrics/dora-calculator.js +5 -5
  28. package/dist/metrics/dora-calculator.js.map +1 -1
  29. package/dist/metrics/github-client.d.ts +1 -1
  30. package/dist/metrics/github-client.d.ts.map +1 -1
  31. package/dist/metrics/utils/tier-classifier.d.ts +1 -1
  32. package/dist/metrics/utils/tier-classifier.d.ts.map +1 -1
  33. package/dist/utils/docs-preview/config-generator.d.ts +46 -0
  34. package/dist/utils/docs-preview/config-generator.d.ts.map +1 -0
  35. package/dist/utils/docs-preview/config-generator.js +377 -0
  36. package/dist/utils/docs-preview/config-generator.js.map +1 -0
  37. package/dist/utils/docs-preview/docusaurus-setup.d.ts +38 -0
  38. package/dist/utils/docs-preview/docusaurus-setup.d.ts.map +1 -0
  39. package/dist/utils/docs-preview/docusaurus-setup.js +177 -0
  40. package/dist/utils/docs-preview/docusaurus-setup.js.map +1 -0
  41. package/dist/utils/docs-preview/index.d.ts +11 -0
  42. package/dist/utils/docs-preview/index.d.ts.map +1 -0
  43. package/dist/utils/docs-preview/index.js +17 -0
  44. package/dist/utils/docs-preview/index.js.map +1 -0
  45. package/dist/utils/docs-preview/package-installer.d.ts +42 -0
  46. package/dist/utils/docs-preview/package-installer.d.ts.map +1 -0
  47. package/dist/utils/docs-preview/package-installer.js +182 -0
  48. package/dist/utils/docs-preview/package-installer.js.map +1 -0
  49. package/dist/utils/docs-preview/server-manager.d.ts +30 -0
  50. package/dist/utils/docs-preview/server-manager.d.ts.map +1 -0
  51. package/dist/utils/docs-preview/server-manager.js +207 -0
  52. package/dist/utils/docs-preview/server-manager.js.map +1 -0
  53. package/dist/utils/docs-preview/sidebar-builder.d.ts +31 -0
  54. package/dist/utils/docs-preview/sidebar-builder.d.ts.map +1 -0
  55. package/dist/utils/docs-preview/sidebar-builder.js +202 -0
  56. package/dist/utils/docs-preview/sidebar-builder.js.map +1 -0
  57. package/dist/utils/docs-preview/types.d.ts +60 -0
  58. package/dist/utils/docs-preview/types.d.ts.map +1 -0
  59. package/dist/utils/docs-preview/types.js +5 -0
  60. package/dist/utils/docs-preview/types.js.map +1 -0
  61. package/dist/utils/docs-preview.bak/config-generator.d.ts +46 -0
  62. package/dist/utils/docs-preview.bak/config-generator.d.ts.map +1 -0
  63. package/dist/utils/docs-preview.bak/config-generator.js +377 -0
  64. package/dist/utils/docs-preview.bak/config-generator.js.map +1 -0
  65. package/dist/utils/docs-preview.bak/package-installer.d.ts +42 -0
  66. package/dist/utils/docs-preview.bak/package-installer.d.ts.map +1 -0
  67. package/dist/utils/docs-preview.bak/package-installer.js +182 -0
  68. package/dist/utils/docs-preview.bak/package-installer.js.map +1 -0
  69. package/dist/utils/docs-preview.bak/server-manager.d.ts +30 -0
  70. package/dist/utils/docs-preview.bak/server-manager.d.ts.map +1 -0
  71. package/dist/utils/docs-preview.bak/server-manager.js +207 -0
  72. package/dist/utils/docs-preview.bak/server-manager.js.map +1 -0
  73. package/dist/utils/docs-preview.bak/sidebar-builder.d.ts +31 -0
  74. package/dist/utils/docs-preview.bak/sidebar-builder.d.ts.map +1 -0
  75. package/dist/utils/docs-preview.bak/sidebar-builder.js +202 -0
  76. package/dist/utils/docs-preview.bak/sidebar-builder.js.map +1 -0
  77. package/dist/utils/docs-preview.bak/types.d.ts +60 -0
  78. package/dist/utils/docs-preview.bak/types.d.ts.map +1 -0
  79. package/dist/utils/docs-preview.bak/types.js +5 -0
  80. package/dist/utils/docs-preview.bak/types.js.map +1 -0
  81. package/package.json +2 -1
  82. package/dist/cli/commands/plugin.js +0 -322
  83. package/dist/cli/commands/plugin.js.map +0 -1
  84. package/dist/core/plugin-detector.d.ts +0 -97
  85. package/dist/core/plugin-detector.d.ts.map +0 -1
  86. package/dist/core/plugin-detector.js +0 -374
  87. package/dist/core/plugin-detector.js.map +0 -1
  88. package/dist/core/plugin-manager.d.ts +0 -144
  89. package/dist/core/plugin-manager.d.ts.map +0 -1
  90. package/dist/core/plugin-manager.js +0 -393
  91. package/dist/core/plugin-manager.js.map +0 -1
  92. package/dist/utils/plugin-detection.js +0 -229
  93. package/dist/utils/plugin-detection.js.map +0 -1
@@ -1,322 +0,0 @@
1
- /**
2
- * Plugin CLI Command (DEPRECATED in v0.6.0)
3
- *
4
- * ⚠️ DEPRECATION NOTICE:
5
- * This command is deprecated. Use Claude Code's native plugin system instead:
6
- * - `/plugin list specweave` - List available plugins
7
- * - `/plugin install specweave-{name}@specweave` - Install a plugin
8
- * - `/plugin uninstall specweave-{name}` - Uninstall a plugin
9
- *
10
- * SpecWeave now uses ONLY Claude Code's native plugin system (global install).
11
- * No per-project plugin management is needed.
12
- *
13
- * This command will be removed in v0.7.0.
14
- *
15
- * Legacy functionality (for backwards compatibility):
16
- * - list: List available plugins
17
- * - enable: Enable a plugin (deprecated - use /plugin install)
18
- * - disable: Disable a plugin (deprecated - use /plugin uninstall)
19
- * - info: Show detailed plugin information
20
- */
21
- import chalk from 'chalk';
22
- import { PluginManager } from '../../core/plugin-manager.js';
23
- import { PluginDetector } from '../../core/plugin-detector.js';
24
- import { AdapterLoader } from '../../adapters/adapter-loader.js';
25
- import { fileURLToPath } from 'url';
26
- import { dirname } from 'path';
27
- import { getLocaleManager } from '../../core/i18n/locale-manager.js';
28
- const __filename = fileURLToPath(import.meta.url);
29
- const __dirname = dirname(__filename);
30
- /**
31
- * List available and enabled plugins
32
- */
33
- export async function listPlugins(options) {
34
- const locale = getLocaleManager(options.language || 'en');
35
- // Show deprecation warning
36
- console.log(chalk.yellow(`\n⚠️ DEPRECATED: Use Claude Code's native plugin commands instead:`));
37
- console.log(chalk.gray(` /plugin list specweave`));
38
- console.log(chalk.gray(` /plugin install specweave-{name}@specweave\n`));
39
- try {
40
- console.log(chalk.blue(`\n${locale.t('cli', 'plugin.list.header')}\n`));
41
- const projectRoot = process.cwd();
42
- const manager = new PluginManager(projectRoot);
43
- if (options.enabled || (!options.enabled && !options.available)) {
44
- // Show enabled plugins
45
- const enabledPlugins = await manager.getEnabledPlugins();
46
- console.log(chalk.green(locale.t('cli', 'plugin.list.enabledHeader')));
47
- if (enabledPlugins.length === 0) {
48
- console.log(chalk.gray(` ${locale.t('cli', 'plugin.list.enabledNone')}`));
49
- }
50
- else {
51
- for (const pluginName of enabledPlugins) {
52
- try {
53
- const plugin = manager.getPlugin(pluginName);
54
- console.log(` ${chalk.cyan(plugin.manifest.name)} ${chalk.gray(`v${plugin.manifest.version}`)}`);
55
- console.log(` ${chalk.gray(plugin.manifest.description)}`);
56
- console.log(` ${chalk.gray(locale.t('cli', 'plugin.list.statsFormat', {
57
- skills: plugin.skills.length,
58
- agents: plugin.agents.length,
59
- commands: plugin.commands.length
60
- }))}`);
61
- }
62
- catch (error) {
63
- console.log(` ${chalk.cyan(pluginName)} ${chalk.red(locale.t('cli', 'plugin.list.errorLoading'))}`);
64
- }
65
- }
66
- }
67
- console.log();
68
- }
69
- if (options.available || (!options.enabled && !options.available)) {
70
- // Show available plugins
71
- const availablePlugins = await manager.getAvailablePlugins();
72
- const enabledPlugins = await manager.getEnabledPlugins();
73
- const disabledPlugins = availablePlugins.filter(p => !enabledPlugins.includes(p.name));
74
- console.log(chalk.yellow(locale.t('cli', 'plugin.list.availableHeader')));
75
- if (disabledPlugins.length === 0) {
76
- console.log(chalk.gray(` ${locale.t('cli', 'plugin.list.availableNone')}`));
77
- }
78
- else {
79
- for (const plugin of disabledPlugins) {
80
- console.log(` ${chalk.cyan(plugin.name)} ${chalk.gray(`v${plugin.version}`)}`);
81
- console.log(` ${chalk.gray(plugin.description)}`);
82
- }
83
- }
84
- console.log();
85
- }
86
- // Show auto-detection suggestions
87
- const detector = new PluginDetector();
88
- const detectionResults = await detector.detectFromProject(projectRoot);
89
- const suggestions = detectionResults.map(r => r.pluginName);
90
- const enabledPlugins = await manager.getEnabledPlugins();
91
- const newSuggestions = suggestions.filter(s => !enabledPlugins.includes(s));
92
- if (newSuggestions.length > 0) {
93
- console.log(chalk.magenta(locale.t('cli', 'plugin.list.suggestedHeader')));
94
- for (const suggestion of newSuggestions) {
95
- console.log(` ${chalk.cyan(suggestion)}`);
96
- }
97
- console.log(chalk.gray(`\n${locale.t('cli', 'plugin.list.enableHint')}`));
98
- }
99
- }
100
- catch (error) {
101
- console.error(chalk.red(locale.t('cli', 'plugin.list.errorListing')), error instanceof Error ? error.message : error);
102
- process.exit(1);
103
- }
104
- }
105
- /**
106
- * Enable a plugin
107
- */
108
- export async function enablePlugin(pluginName, options) {
109
- const locale = getLocaleManager(options.language || 'en');
110
- try {
111
- console.log(chalk.blue(`\n${locale.t('cli', 'plugin.enable.enablingPlugin', { name: pluginName })}\n`));
112
- const projectRoot = process.cwd();
113
- const adapterLoader = new AdapterLoader();
114
- const toolName = await adapterLoader.detectTool();
115
- const adapter = adapterLoader.getAdapter(toolName);
116
- if (!adapter) {
117
- throw new Error(`Adapter not found for tool: ${toolName}`);
118
- }
119
- const manager = new PluginManager(projectRoot);
120
- // Check if already enabled
121
- const enabledPlugins = await manager.getEnabledPlugins();
122
- if (enabledPlugins.includes(pluginName) && !options.force) {
123
- console.log(chalk.yellow(locale.t('cli', 'plugin.enable.alreadyEnabled', { name: pluginName })));
124
- console.log(chalk.gray(locale.t('cli', 'plugin.enable.useForce')));
125
- return;
126
- }
127
- // Load and enable plugin
128
- const loadOptions = {
129
- force: options.force,
130
- autoInstallDependencies: true
131
- };
132
- await manager.loadPlugin(pluginName, adapter, loadOptions);
133
- console.log(chalk.green(`\n${locale.t('cli', 'plugin.enable.success', { name: pluginName })}`));
134
- // Show what was installed
135
- try {
136
- const plugin = manager.getPlugin(pluginName);
137
- console.log(chalk.gray(`\n${locale.t('cli', 'plugin.enable.installed')}`));
138
- if (plugin.skills.length > 0) {
139
- console.log(chalk.gray(` ${locale.t('cli', 'plugin.enable.skills', { names: plugin.skills.map(s => s.name).join(', ') })}`));
140
- }
141
- if (plugin.agents.length > 0) {
142
- console.log(chalk.gray(` ${locale.t('cli', 'plugin.enable.agents', { names: plugin.agents.map(a => a.name).join(', ') })}`));
143
- }
144
- if (plugin.commands.length > 0) {
145
- console.log(chalk.gray(` ${locale.t('cli', 'plugin.enable.commands', { names: plugin.commands.map(c => c.name).join(', ') })}`));
146
- }
147
- }
148
- catch (error) {
149
- // Plugin info not available, skip
150
- }
151
- console.log(chalk.gray(`\n${locale.t('cli', 'plugin.enable.installedTo', { location: adapter.name === 'claude' ? '.claude/' : 'AGENTS.md' })}`));
152
- if (adapter.name === 'claude') {
153
- console.log(chalk.yellow(`\n${locale.t('cli', 'plugin.enable.restartClaude')}`));
154
- }
155
- }
156
- catch (error) {
157
- console.error(chalk.red(locale.t('cli', 'plugin.enable.errorEnabling')), error instanceof Error ? error.message : error);
158
- process.exit(1);
159
- }
160
- }
161
- /**
162
- * Disable a plugin
163
- */
164
- export async function disablePlugin(pluginName, options) {
165
- const locale = getLocaleManager(options.language || 'en');
166
- try {
167
- console.log(chalk.blue(`\n${locale.t('cli', 'plugin.disable.disablingPlugin', { name: pluginName })}\n`));
168
- const projectRoot = process.cwd();
169
- const adapterLoader = new AdapterLoader();
170
- const toolName = await adapterLoader.detectTool();
171
- const adapter = adapterLoader.getAdapter(toolName);
172
- if (!adapter) {
173
- throw new Error(`Adapter not found for tool: ${toolName}`);
174
- }
175
- const manager = new PluginManager(projectRoot);
176
- // Check if enabled
177
- const enabledPlugins = await manager.getEnabledPlugins();
178
- if (!enabledPlugins.includes(pluginName)) {
179
- console.log(chalk.yellow(locale.t('cli', 'plugin.disable.notEnabled', { name: pluginName })));
180
- return;
181
- }
182
- // Unload plugin
183
- const unloadOptions = {
184
- force: options.force
185
- };
186
- await manager.unloadPlugin(pluginName, adapter, unloadOptions);
187
- console.log(chalk.green(`\n${locale.t('cli', 'plugin.disable.success', { name: pluginName })}`));
188
- if (adapter.name === 'claude') {
189
- console.log(chalk.yellow(`\n${locale.t('cli', 'plugin.disable.restartClaude')}`));
190
- }
191
- }
192
- catch (error) {
193
- console.error(chalk.red(locale.t('cli', 'plugin.disable.errorDisabling')), error instanceof Error ? error.message : error);
194
- process.exit(1);
195
- }
196
- }
197
- /**
198
- * Show detailed plugin information
199
- */
200
- export async function pluginInfo(pluginName, options) {
201
- const locale = getLocaleManager(options?.language || 'en');
202
- try {
203
- console.log(chalk.blue(`\n${locale.t('cli', 'plugin.info.header', { name: pluginName })}\n`));
204
- const projectRoot = process.cwd();
205
- const manager = new PluginManager(projectRoot);
206
- const { PluginLoader } = await import('../../core/plugin-loader.js');
207
- // Check if plugin exists
208
- const availablePlugins = await manager.getAvailablePlugins();
209
- const basicInfo = availablePlugins.find(p => p.name === pluginName);
210
- if (!basicInfo) {
211
- console.log(chalk.red(locale.t('cli', 'plugin.info.notFound', { name: pluginName })));
212
- console.log(chalk.gray(`\n${locale.t('cli', 'plugin.info.listHint')}`));
213
- return;
214
- }
215
- // Load full plugin to get manifest details
216
- const loader = new PluginLoader();
217
- const plugin = await loader.loadFromDirectory(basicInfo.path);
218
- const manifest = plugin.manifest;
219
- // Basic info
220
- console.log(chalk.cyan(locale.t('cli', 'plugin.info.name')), manifest.name);
221
- console.log(chalk.cyan(locale.t('cli', 'plugin.info.version')), manifest.version);
222
- console.log(chalk.cyan(locale.t('cli', 'plugin.info.description')), manifest.description);
223
- if (manifest.author) {
224
- console.log(chalk.cyan(locale.t('cli', 'plugin.info.author')), manifest.author);
225
- }
226
- if (manifest.license) {
227
- console.log(chalk.cyan(locale.t('cli', 'plugin.info.license')), manifest.license);
228
- }
229
- console.log(chalk.cyan(locale.t('cli', 'plugin.info.coreVersion')), manifest.specweave_core_version);
230
- // Status
231
- const enabledPlugins = await manager.getEnabledPlugins();
232
- const isEnabled = enabledPlugins.includes(pluginName);
233
- console.log(chalk.cyan(locale.t('cli', 'plugin.info.status')), isEnabled ? chalk.green(locale.t('cli', 'plugin.info.statusEnabled')) : chalk.gray(locale.t('cli', 'plugin.info.statusDisabled')));
234
- // Provides
235
- console.log(chalk.cyan(`\n${locale.t('cli', 'plugin.info.provides')}`));
236
- const noneValue = chalk.gray(locale.t('cli', 'plugin.info.noneValue'));
237
- console.log(` ${locale.t('cli', 'plugin.info.skillsFormat', { skills: manifest.provides.skills.length > 0 ? manifest.provides.skills.join(', ') : noneValue })}`);
238
- console.log(` ${locale.t('cli', 'plugin.info.agentsFormat', { agents: manifest.provides.agents.length > 0 ? manifest.provides.agents.join(', ') : noneValue })}`);
239
- console.log(` ${locale.t('cli', 'plugin.info.commandsFormat', { commands: manifest.provides.commands.length > 0 ? manifest.provides.commands.join(', ') : noneValue })}`);
240
- // Dependencies
241
- if (manifest.dependencies?.plugins && manifest.dependencies.plugins.length > 0) {
242
- console.log(chalk.cyan(`\n${locale.t('cli', 'plugin.info.dependencies')}`));
243
- for (const dep of manifest.dependencies.plugins) {
244
- console.log(` - ${dep}`);
245
- }
246
- }
247
- // Auto-detection
248
- if (manifest.auto_detect) {
249
- console.log(chalk.cyan(`\n${locale.t('cli', 'plugin.info.autoDetect')}`));
250
- if (manifest.auto_detect.files) {
251
- console.log(` ${locale.t('cli', 'plugin.info.autoDetectFiles', { files: manifest.auto_detect.files.join(', ') })}`);
252
- }
253
- if (manifest.auto_detect.packages) {
254
- console.log(` ${locale.t('cli', 'plugin.info.autoDetectPackages', { packages: manifest.auto_detect.packages.join(', ') })}`);
255
- }
256
- if (manifest.auto_detect.env_vars) {
257
- console.log(` ${locale.t('cli', 'plugin.info.autoDetectEnv', { env: manifest.auto_detect.env_vars.join(', ') })}`);
258
- }
259
- if (manifest.auto_detect.git_remote_pattern) {
260
- console.log(` ${locale.t('cli', 'plugin.info.autoDetectGit', { pattern: manifest.auto_detect.git_remote_pattern })}`);
261
- }
262
- }
263
- // Credits
264
- if (manifest.credits) {
265
- console.log(chalk.cyan(`\n${locale.t('cli', 'plugin.info.credits')}`));
266
- if (manifest.credits.based_on) {
267
- console.log(` ${locale.t('cli', 'plugin.info.basedOn', { source: manifest.credits.based_on })}`);
268
- }
269
- if (manifest.credits.original_author) {
270
- console.log(` ${locale.t('cli', 'plugin.info.originalAuthor', { author: manifest.credits.original_author })}`);
271
- }
272
- if (manifest.credits.contributors && manifest.credits.contributors.length > 0) {
273
- console.log(` ${locale.t('cli', 'plugin.info.contributors', { contributors: manifest.credits.contributors.join(', ') })}`);
274
- }
275
- }
276
- console.log();
277
- }
278
- catch (error) {
279
- console.error(chalk.red(locale.t('cli', 'plugin.info.errorGettingInfo')), error instanceof Error ? error.message : error);
280
- process.exit(1);
281
- }
282
- }
283
- /**
284
- * Main plugin command handler
285
- */
286
- export async function pluginCommand(action, pluginName, options) {
287
- const locale = getLocaleManager(options?.language || 'en');
288
- switch (action) {
289
- case 'list':
290
- await listPlugins(options || {});
291
- break;
292
- case 'enable':
293
- if (!pluginName) {
294
- console.error(chalk.red(locale.t('cli', 'plugin.errors.nameRequired', { command: 'enable' })));
295
- console.log(chalk.gray(locale.t('cli', 'plugin.errors.usageEnable')));
296
- process.exit(1);
297
- }
298
- await enablePlugin(pluginName, options || {});
299
- break;
300
- case 'disable':
301
- if (!pluginName) {
302
- console.error(chalk.red(locale.t('cli', 'plugin.errors.nameRequired', { command: 'disable' })));
303
- console.log(chalk.gray(locale.t('cli', 'plugin.errors.usageDisable')));
304
- process.exit(1);
305
- }
306
- await disablePlugin(pluginName, options || {});
307
- break;
308
- case 'info':
309
- if (!pluginName) {
310
- console.error(chalk.red(locale.t('cli', 'plugin.errors.nameRequired', { command: 'info' })));
311
- console.log(chalk.gray(locale.t('cli', 'plugin.errors.usageInfo')));
312
- process.exit(1);
313
- }
314
- await pluginInfo(pluginName, options);
315
- break;
316
- default:
317
- console.error(chalk.red(locale.t('cli', 'plugin.errors.unknownAction', { action })));
318
- console.log(chalk.gray(locale.t('cli', 'plugin.errors.validActions')));
319
- process.exit(1);
320
- }
321
- }
322
- //# sourceMappingURL=plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/cli/commands/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,97 +0,0 @@
1
- /**
2
- * Plugin Detector
3
- *
4
- * Automatically detects which plugins should be enabled based on:
5
- * 1. Project structure (package.json, directories, env vars, git remote)
6
- * 2. Spec content (keywords, domain analysis)
7
- * 3. Task descriptions (pre-task hook)
8
- * 4. Git changes (post-increment hook)
9
- *
10
- * @module core/plugin-detector
11
- * @version 0.4.0
12
- */
13
- import type { DetectionResult } from './types/plugin.js';
14
- /**
15
- * PluginDetector - Auto-detects relevant plugins for a project
16
- */
17
- export declare class PluginDetector {
18
- private loader;
19
- private availablePlugins;
20
- private pluginsDir;
21
- /**
22
- * Create a new PluginDetector
23
- *
24
- * @param pluginsDir - Path to plugins directory (default: src/plugins)
25
- */
26
- constructor(pluginsDir?: string);
27
- /**
28
- * Load available plugins for detection
29
- *
30
- * Scans plugins directory and loads all plugin manifests
31
- */
32
- loadAvailablePlugins(): Promise<void>;
33
- /**
34
- * Phase 1: Init-time detection
35
- *
36
- * Detects plugins based on project structure during `specweave init`
37
- * NOW uses the new plugin-detection.ts utility for comprehensive scanning
38
- *
39
- * @param projectPath - Path to project root
40
- * @returns Array of detection results with confidence scores
41
- */
42
- detectFromProject(projectPath: string): Promise<DetectionResult[]>;
43
- /**
44
- * Phase 2: Spec-based detection
45
- *
46
- * Detects plugins based on increment spec content during `/specweave.inc`
47
- *
48
- * @param specContent - Content of spec.md
49
- * @returns Array of detection results
50
- */
51
- detectFromSpec(specContent: string): Promise<DetectionResult[]>;
52
- /**
53
- * Phase 3: Task-based detection
54
- *
55
- * Detects plugins based on task description (pre-task hook)
56
- *
57
- * @param taskContent - Content of task description
58
- * @returns Array of detection results
59
- */
60
- detectFromTask(taskContent: string): Promise<DetectionResult[]>;
61
- /**
62
- * Phase 4: Git diff detection
63
- *
64
- * Detects plugins based on recent git changes (post-increment hook)
65
- *
66
- * @param diff - Git diff output
67
- * @returns Array of detection results
68
- */
69
- detectFromChanges(diff: string): Promise<DetectionResult[]>;
70
- /**
71
- * Combine detection results from multiple sources
72
- *
73
- * Merges results and adjusts confidence scores
74
- *
75
- * @param results - Array of detection result arrays
76
- * @returns Merged and deduplicated results
77
- */
78
- combineResults(...results: DetectionResult[][]): DetectionResult[];
79
- /**
80
- * Get high-confidence suggestions
81
- *
82
- * Filters detection results by confidence threshold
83
- *
84
- * @param results - Detection results
85
- * @param threshold - Minimum confidence (default: 0.6)
86
- * @returns High-confidence plugin suggestions
87
- */
88
- getHighConfidenceSuggestions(results: DetectionResult[], threshold?: number): string[];
89
- /**
90
- * Format detection results for display
91
- *
92
- * @param results - Detection results
93
- * @returns Formatted string for CLI output
94
- */
95
- formatResults(results: DetectionResult[]): string;
96
- }
97
- //# sourceMappingURL=plugin-detector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-detector.d.ts","sourceRoot":"","sources":["../../src/core/plugin-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAU,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGjE;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,UAAU,CAAS;IAE3B;;;;OAIG;gBACS,UAAU,CAAC,EAAE,MAAM;IAK/B;;;;OAIG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3C;;;;;;;;OAQG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAgHxE;;;;;;;OAOG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA4CrE;;;;;;;OAOG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAyCrE;;;;;;;OAOG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAqEjE;;;;;;;OAOG;IACH,cAAc,CAAC,GAAG,OAAO,EAAE,eAAe,EAAE,EAAE,GAAG,eAAe,EAAE;IAwBlE;;;;;;;;OAQG;IACH,4BAA4B,CAC1B,OAAO,EAAE,eAAe,EAAE,EAC1B,SAAS,GAAE,MAAY,GACtB,MAAM,EAAE;IAMX;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM;CAkBlD"}