specweave 1.0.288 → 1.0.290

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 (110) hide show
  1. package/bin/specweave.js +1 -33
  2. package/dist/dashboard/assets/index-BGpS5omm.css +1 -0
  3. package/dist/dashboard/assets/index-BvNL0nTV.js +11 -0
  4. package/dist/dashboard/index.html +2 -2
  5. package/dist/src/cli/commands/refresh-plugins.d.ts.map +1 -1
  6. package/dist/src/cli/commands/refresh-plugins.js +12 -0
  7. package/dist/src/cli/commands/refresh-plugins.js.map +1 -1
  8. package/dist/src/cli/commands/update.d.ts.map +1 -1
  9. package/dist/src/cli/commands/update.js +13 -0
  10. package/dist/src/cli/commands/update.js.map +1 -1
  11. package/dist/src/cli/helpers/init/plugin-installer.js +20 -0
  12. package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
  13. package/dist/src/cli/workers/marketplace-scanner-worker.d.ts.map +1 -1
  14. package/dist/src/cli/workers/marketplace-scanner-worker.js +42 -7
  15. package/dist/src/cli/workers/marketplace-scanner-worker.js.map +1 -1
  16. package/dist/src/config/types.d.ts +2 -2
  17. package/dist/src/core/fabric/discovery/content-fetcher.d.ts +15 -0
  18. package/dist/src/core/fabric/discovery/content-fetcher.d.ts.map +1 -0
  19. package/dist/src/core/fabric/discovery/content-fetcher.js +32 -0
  20. package/dist/src/core/fabric/discovery/content-fetcher.js.map +1 -0
  21. package/dist/src/core/fabric/discovery/github-provider.d.ts +22 -0
  22. package/dist/src/core/fabric/discovery/github-provider.d.ts.map +1 -0
  23. package/dist/src/core/fabric/discovery/github-provider.js +61 -0
  24. package/dist/src/core/fabric/discovery/github-provider.js.map +1 -0
  25. package/dist/src/core/fabric/discovery/npm-provider.d.ts +13 -0
  26. package/dist/src/core/fabric/discovery/npm-provider.d.ts.map +1 -0
  27. package/dist/src/core/fabric/discovery/npm-provider.js +57 -0
  28. package/dist/src/core/fabric/discovery/npm-provider.js.map +1 -0
  29. package/dist/src/core/fabric/discovery/scan-pipeline.d.ts +23 -0
  30. package/dist/src/core/fabric/discovery/scan-pipeline.d.ts.map +1 -0
  31. package/dist/src/core/fabric/discovery/scan-pipeline.js +67 -0
  32. package/dist/src/core/fabric/discovery/scan-pipeline.js.map +1 -0
  33. package/dist/src/core/fabric/discovery/skillssh-provider.d.ts +13 -0
  34. package/dist/src/core/fabric/discovery/skillssh-provider.d.ts.map +1 -0
  35. package/dist/src/core/fabric/discovery/skillssh-provider.js +47 -0
  36. package/dist/src/core/fabric/discovery/skillssh-provider.js.map +1 -0
  37. package/dist/src/core/fabric/discovery/source-registry.d.ts +21 -0
  38. package/dist/src/core/fabric/discovery/source-registry.d.ts.map +1 -0
  39. package/dist/src/core/fabric/discovery/source-registry.js +38 -0
  40. package/dist/src/core/fabric/discovery/source-registry.js.map +1 -0
  41. package/dist/src/core/fabric/security-judge.d.ts +2 -0
  42. package/dist/src/core/fabric/security-judge.d.ts.map +1 -1
  43. package/dist/src/core/fabric/security-judge.js +48 -0
  44. package/dist/src/core/fabric/security-judge.js.map +1 -1
  45. package/dist/src/core/fabric/submission-queue-types.d.ts +1 -0
  46. package/dist/src/core/fabric/submission-queue-types.d.ts.map +1 -1
  47. package/dist/src/core/fabric/submission-queue.d.ts +5 -0
  48. package/dist/src/core/fabric/submission-queue.d.ts.map +1 -1
  49. package/dist/src/core/fabric/submission-queue.js +13 -0
  50. package/dist/src/core/fabric/submission-queue.js.map +1 -1
  51. package/dist/src/core/lazy-loading/llm-plugin-detector.d.ts.map +1 -1
  52. package/dist/src/core/lazy-loading/llm-plugin-detector.js +3 -2
  53. package/dist/src/core/lazy-loading/llm-plugin-detector.js.map +1 -1
  54. package/dist/src/core/llm/budget-guard.d.ts +56 -0
  55. package/dist/src/core/llm/budget-guard.d.ts.map +1 -0
  56. package/dist/src/core/llm/budget-guard.js +165 -0
  57. package/dist/src/core/llm/budget-guard.js.map +1 -0
  58. package/dist/src/core/llm/fallback-provider.d.ts +32 -0
  59. package/dist/src/core/llm/fallback-provider.d.ts.map +1 -0
  60. package/dist/src/core/llm/fallback-provider.js +53 -0
  61. package/dist/src/core/llm/fallback-provider.js.map +1 -0
  62. package/dist/src/core/llm/index.d.ts +5 -0
  63. package/dist/src/core/llm/index.d.ts.map +1 -1
  64. package/dist/src/core/llm/index.js +5 -0
  65. package/dist/src/core/llm/index.js.map +1 -1
  66. package/dist/src/core/llm/provider-factory.d.ts.map +1 -1
  67. package/dist/src/core/llm/provider-factory.js +31 -0
  68. package/dist/src/core/llm/provider-factory.js.map +1 -1
  69. package/dist/src/core/llm/providers/workers-ai-provider.d.ts +45 -0
  70. package/dist/src/core/llm/providers/workers-ai-provider.d.ts.map +1 -0
  71. package/dist/src/core/llm/providers/workers-ai-provider.js +140 -0
  72. package/dist/src/core/llm/providers/workers-ai-provider.js.map +1 -0
  73. package/dist/src/core/llm/types.d.ts +21 -1
  74. package/dist/src/core/llm/types.d.ts.map +1 -1
  75. package/dist/src/core/llm/types.js +7 -0
  76. package/dist/src/core/llm/types.js.map +1 -1
  77. package/dist/src/core/notifications/notification-types.d.ts +1 -1
  78. package/dist/src/core/notifications/notification-types.d.ts.map +1 -1
  79. package/dist/src/core/notifications/notification-types.js +2 -0
  80. package/dist/src/core/notifications/notification-types.js.map +1 -1
  81. package/dist/src/core/plugins/plugin-loader.d.ts +0 -7
  82. package/dist/src/core/plugins/plugin-loader.d.ts.map +1 -1
  83. package/dist/src/core/plugins/plugin-loader.js +0 -21
  84. package/dist/src/core/plugins/plugin-loader.js.map +1 -1
  85. package/dist/src/core/plugins/skill-trigger-extractor.d.ts.map +1 -1
  86. package/dist/src/core/plugins/skill-trigger-extractor.js +6 -0
  87. package/dist/src/core/plugins/skill-trigger-extractor.js.map +1 -1
  88. package/dist/src/core/types/plugin.d.ts +0 -5
  89. package/dist/src/core/types/plugin.d.ts.map +1 -1
  90. package/dist/src/core/types/plugin.js.map +1 -1
  91. package/dist/src/init/research/types.d.ts +1 -1
  92. package/dist/src/utils/claude-plugin-cli.d.ts +32 -0
  93. package/dist/src/utils/claude-plugin-cli.d.ts.map +1 -0
  94. package/dist/src/utils/claude-plugin-cli.js +71 -0
  95. package/dist/src/utils/claude-plugin-cli.js.map +1 -0
  96. package/dist/src/utils/plugin-copier.d.ts +5 -0
  97. package/dist/src/utils/plugin-copier.d.ts.map +1 -1
  98. package/dist/src/utils/plugin-copier.js +24 -1
  99. package/dist/src/utils/plugin-copier.js.map +1 -1
  100. package/package.json +1 -1
  101. package/plugins/specweave/hooks/user-prompt-submit.sh +34 -1
  102. package/plugins/specweave/skills/npm/SKILL.md +1 -0
  103. package/plugins/specweave-jira/skills/jira-mapper/SKILL.md +77 -7
  104. package/plugins/specweave-jira/skills/jira-sync/SKILL.md +21 -71
  105. package/dist/dashboard/assets/index-Cs3Zq6E2.css +0 -1
  106. package/dist/dashboard/assets/index-DQ_KfIRg.js +0 -11
  107. package/dist/src/cli/commands/context.d.ts +0 -92
  108. package/dist/src/cli/commands/context.d.ts.map +0 -1
  109. package/dist/src/cli/commands/context.js +0 -205
  110. package/dist/src/cli/commands/context.js.map +0 -1
@@ -1,92 +0,0 @@
1
- /**
2
- * CLI Context Command
3
- *
4
- * Provides project/board context for increment planning.
5
- * Used by Claude Code agents to get valid project/board values
6
- * before generating spec.md files.
7
- *
8
- * @module cli/commands/context
9
- */
10
- import { StructureLevelConfig, ProjectInfo, BoardInfo } from '../../utils/structure-level-detector.js';
11
- /**
12
- * Output format for projects subcommand
13
- */
14
- interface ProjectsOutput {
15
- /** Structure level (1 or 2) */
16
- level: 1 | 2;
17
- /** Available projects */
18
- projects: ProjectInfo[];
19
- /** Available boards organized by project (only for 2-level) */
20
- boardsByProject?: Record<string, BoardInfo[]>;
21
- /** Detection reason for debugging */
22
- detectionReason: string;
23
- /** Source of configuration */
24
- source: string;
25
- }
26
- /**
27
- * Output format for boards subcommand
28
- */
29
- interface BoardsOutput {
30
- /** Project ID that boards belong to */
31
- project: string;
32
- /** Available boards for the project */
33
- boards: BoardInfo[];
34
- /** Warning if 1-level structure (no boards) */
35
- warning?: string;
36
- }
37
- /**
38
- * Output format for select subcommand
39
- */
40
- interface SelectOutput {
41
- /** Selected project and board */
42
- selected: {
43
- project: string;
44
- board?: string;
45
- };
46
- /** Whether selection was automatic (single option) */
47
- autoSelected: boolean;
48
- /** Structure level */
49
- level: 1 | 2;
50
- }
51
- /**
52
- * Get all available projects and structure level
53
- * Used by Claude before generating spec.md
54
- *
55
- * @param projectRoot - Path to project root
56
- * @returns JSON-serializable projects context
57
- */
58
- export declare function getProjectsContext(projectRoot?: string): ProjectsOutput;
59
- /**
60
- * Get boards for a specific project
61
- *
62
- * @param projectId - Project ID to get boards for
63
- * @param projectRoot - Path to project root
64
- * @returns JSON-serializable boards context
65
- */
66
- export declare function getBoardsContext(projectId: string, projectRoot?: string): BoardsOutput;
67
- /**
68
- * Auto-select or prompt for project/board selection
69
- *
70
- * @param config - Structure level config
71
- * @returns Selection result with auto-select flag
72
- */
73
- export declare function autoSelectProjectBoard(config: StructureLevelConfig): SelectOutput;
74
- /**
75
- * CLI handler for 'specweave context projects' command
76
- */
77
- export declare function contextProjectsCommand(): Promise<void>;
78
- /**
79
- * CLI handler for 'specweave context boards' command
80
- *
81
- * @param options - Command options with project ID
82
- */
83
- export declare function contextBoardsCommand(options: {
84
- project?: string;
85
- }): Promise<void>;
86
- /**
87
- * CLI handler for 'specweave context select' command
88
- * Returns auto-selected values or prompts interactively
89
- */
90
- export declare function contextSelectCommand(): Promise<void>;
91
- export {};
92
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,oBAAoB,EACpB,WAAW,EACX,SAAS,EACV,MAAM,yCAAyC,CAAC;AAEjD;;GAEG;AACH,UAAU,cAAc;IACtB,+BAA+B;IAC/B,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,yBAAyB;IACzB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9C,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,iCAAiC;IACjC,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,sDAAsD;IACtD,YAAY,EAAE,OAAO,CAAC;IACtB,sBAAsB;IACtB,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,GAAE,MAAsB,GAAG,cAAc,CAgBtF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAsB,GAClC,YAAY,CA8Bd;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,GAC3B,YAAY,CAoDd;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG5D;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBvF;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2D1D"}
@@ -1,205 +0,0 @@
1
- /**
2
- * CLI Context Command
3
- *
4
- * Provides project/board context for increment planning.
5
- * Used by Claude Code agents to get valid project/board values
6
- * before generating spec.md files.
7
- *
8
- * @module cli/commands/context
9
- */
10
- import { detectStructureLevel } from '../../utils/structure-level-detector.js';
11
- /**
12
- * Get all available projects and structure level
13
- * Used by Claude before generating spec.md
14
- *
15
- * @param projectRoot - Path to project root
16
- * @returns JSON-serializable projects context
17
- */
18
- export function getProjectsContext(projectRoot = process.cwd()) {
19
- const config = detectStructureLevel(projectRoot);
20
- const output = {
21
- level: config.level,
22
- projects: config.projects,
23
- detectionReason: config.detectionReason,
24
- source: config.source
25
- };
26
- // Include boards only for 2-level structures
27
- if (config.level === 2 && config.boardsByProject) {
28
- output.boardsByProject = config.boardsByProject;
29
- }
30
- return output;
31
- }
32
- /**
33
- * Get boards for a specific project
34
- *
35
- * @param projectId - Project ID to get boards for
36
- * @param projectRoot - Path to project root
37
- * @returns JSON-serializable boards context
38
- */
39
- export function getBoardsContext(projectId, projectRoot = process.cwd()) {
40
- const config = detectStructureLevel(projectRoot);
41
- // 1-level structure has no boards
42
- if (config.level === 1) {
43
- return {
44
- project: projectId,
45
- boards: [],
46
- warning: '1-level structure detected - boards are not applicable'
47
- };
48
- }
49
- // Normalize project ID for lookup
50
- const normalizedId = projectId.toLowerCase().replace(/\s+/g, '-');
51
- // Find boards for the project
52
- const boards = config.boardsByProject?.[normalizedId] || [];
53
- // Try original ID if normalized doesn't match
54
- if (boards.length === 0 && config.boardsByProject?.[projectId]) {
55
- return {
56
- project: projectId,
57
- boards: config.boardsByProject[projectId]
58
- };
59
- }
60
- return {
61
- project: projectId,
62
- boards
63
- };
64
- }
65
- /**
66
- * Auto-select or prompt for project/board selection
67
- *
68
- * @param config - Structure level config
69
- * @returns Selection result with auto-select flag
70
- */
71
- export function autoSelectProjectBoard(config) {
72
- // Single project in 1-level = auto-select
73
- if (config.level === 1 && config.projects.length === 1) {
74
- return {
75
- selected: {
76
- project: config.projects[0].id
77
- },
78
- autoSelected: true,
79
- level: 1
80
- };
81
- }
82
- // Single project + single board in 2-level = auto-select
83
- if (config.level === 2 && config.projects.length === 1 && config.boardsByProject) {
84
- const projectId = config.projects[0].id;
85
- const boards = config.boardsByProject[projectId] || [];
86
- if (boards.length === 1) {
87
- return {
88
- selected: {
89
- project: projectId,
90
- board: boards[0].id
91
- },
92
- autoSelected: true,
93
- level: 2
94
- };
95
- }
96
- }
97
- // Multiple options - cannot auto-select
98
- // Return first project as default (caller should prompt user)
99
- if (config.level === 2 && config.projects.length > 0 && config.boardsByProject) {
100
- const projectId = config.projects[0].id;
101
- const boards = config.boardsByProject[projectId] || [];
102
- return {
103
- selected: {
104
- project: projectId,
105
- board: boards.length > 0 ? boards[0].id : undefined
106
- },
107
- autoSelected: false,
108
- level: 2
109
- };
110
- }
111
- return {
112
- selected: {
113
- project: config.projects.length > 0 ? config.projects[0].id : 'default'
114
- },
115
- autoSelected: false,
116
- level: config.level
117
- };
118
- }
119
- /**
120
- * CLI handler for 'specweave context projects' command
121
- */
122
- export async function contextProjectsCommand() {
123
- const output = getProjectsContext(process.cwd());
124
- console.log(JSON.stringify(output, null, 2));
125
- }
126
- /**
127
- * CLI handler for 'specweave context boards' command
128
- *
129
- * @param options - Command options with project ID
130
- */
131
- export async function contextBoardsCommand(options) {
132
- if (!options.project) {
133
- // If no project specified, show all boards for all projects
134
- const config = detectStructureLevel(process.cwd());
135
- if (config.level === 1) {
136
- console.log(JSON.stringify({
137
- warning: '1-level structure detected - boards are not applicable',
138
- boards: []
139
- }, null, 2));
140
- return;
141
- }
142
- console.log(JSON.stringify({
143
- boardsByProject: config.boardsByProject || {}
144
- }, null, 2));
145
- return;
146
- }
147
- const output = getBoardsContext(options.project, process.cwd());
148
- console.log(JSON.stringify(output, null, 2));
149
- }
150
- /**
151
- * CLI handler for 'specweave context select' command
152
- * Returns auto-selected values or prompts interactively
153
- */
154
- export async function contextSelectCommand() {
155
- const config = detectStructureLevel(process.cwd());
156
- const output = autoSelectProjectBoard(config);
157
- // If auto-selected, just output
158
- if (output.autoSelected) {
159
- console.log(JSON.stringify(output, null, 2));
160
- return;
161
- }
162
- // Multiple options - need to prompt interactively
163
- // Use @inquirer/prompts for interactive selection
164
- try {
165
- const { select } = await import('@inquirer/prompts');
166
- // Prompt for project
167
- const projectChoices = config.projects.map(p => ({
168
- name: p.name || p.id,
169
- value: p.id
170
- }));
171
- const selectedProject = await select({
172
- message: 'Select project:',
173
- choices: projectChoices
174
- });
175
- let selectedBoard;
176
- // Prompt for board if 2-level
177
- if (config.level === 2 && config.boardsByProject) {
178
- const boards = config.boardsByProject[selectedProject] || [];
179
- if (boards.length > 0) {
180
- const boardChoices = boards.map(b => ({
181
- name: b.name || b.id,
182
- value: b.id
183
- }));
184
- selectedBoard = await select({
185
- message: 'Select board:',
186
- choices: boardChoices
187
- });
188
- }
189
- }
190
- const result = {
191
- selected: {
192
- project: selectedProject,
193
- board: selectedBoard
194
- },
195
- autoSelected: false,
196
- level: config.level
197
- };
198
- console.log(JSON.stringify(result, null, 2));
199
- }
200
- catch {
201
- // Fallback if prompts fail (non-interactive mode)
202
- console.log(JSON.stringify(output, null, 2));
203
- }
204
- }
205
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/cli/commands/context.ts"],"names":[],"mappings":"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"}