specweave 0.30.18 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +22 -0
- package/dist/src/adapters/README.md +275 -0
- package/dist/src/adapters/adapter-base.d.ts +1 -1
- package/dist/src/adapters/adapter-base.js +3 -3
- package/dist/src/adapters/adapter-base.js.map +1 -1
- package/dist/src/adapters/adapter-loader.d.ts +11 -10
- package/dist/src/adapters/adapter-loader.d.ts.map +1 -1
- package/dist/src/adapters/adapter-loader.js +31 -21
- package/dist/src/adapters/adapter-loader.js.map +1 -1
- package/dist/src/adapters/claude/README.md +233 -0
- package/dist/src/adapters/codex/README.md +105 -0
- package/dist/src/adapters/cursor/.cursor/context/docs-context.md +62 -0
- package/dist/src/adapters/cursor/.cursor/context/increments-context.md +71 -0
- package/dist/src/adapters/cursor/.cursor/context/strategy-context.md +73 -0
- package/dist/src/adapters/cursor/.cursor/context/tests-context.md +89 -0
- package/dist/src/adapters/cursor/README.md +283 -0
- package/dist/src/adapters/cursor/adapter.d.ts +5 -1
- package/dist/src/adapters/cursor/adapter.d.ts.map +1 -1
- package/dist/src/adapters/cursor/adapter.js +18 -115
- package/dist/src/adapters/cursor/adapter.js.map +1 -1
- package/dist/src/adapters/gemini/README.md +97 -0
- package/dist/src/adapters/generic/README.md +277 -0
- package/dist/src/adapters/registry.yaml +197 -0
- package/dist/src/cli/helpers/init/living-docs-preflight.js +12 -12
- package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -1
- package/dist/src/config/types.d.ts +1208 -203
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/core/external-tools/external-items-counter.d.ts +62 -0
- package/dist/src/core/external-tools/external-items-counter.d.ts.map +1 -0
- package/dist/src/core/external-tools/external-items-counter.js +206 -0
- package/dist/src/core/external-tools/external-items-counter.js.map +1 -0
- package/dist/src/core/external-tools/external-items-display.d.ts +39 -0
- package/dist/src/core/external-tools/external-items-display.d.ts.map +1 -0
- package/dist/src/core/external-tools/external-items-display.js +185 -0
- package/dist/src/core/external-tools/external-items-display.js.map +1 -0
- package/dist/src/core/external-tools/index.d.ts +8 -0
- package/dist/src/core/external-tools/index.d.ts.map +1 -0
- package/dist/src/core/external-tools/index.js +8 -0
- package/dist/src/core/external-tools/index.js.map +1 -0
- package/dist/src/core/external-tools/providers/ado-items-adapter.d.ts +39 -0
- package/dist/src/core/external-tools/providers/ado-items-adapter.d.ts.map +1 -0
- package/dist/src/core/external-tools/providers/ado-items-adapter.js +188 -0
- package/dist/src/core/external-tools/providers/ado-items-adapter.js.map +1 -0
- package/dist/src/core/external-tools/providers/github-items-adapter.d.ts +38 -0
- package/dist/src/core/external-tools/providers/github-items-adapter.d.ts.map +1 -0
- package/dist/src/core/external-tools/providers/github-items-adapter.js +136 -0
- package/dist/src/core/external-tools/providers/github-items-adapter.js.map +1 -0
- package/dist/src/core/external-tools/providers/index.d.ts +7 -0
- package/dist/src/core/external-tools/providers/index.d.ts.map +1 -0
- package/dist/src/core/external-tools/providers/index.js +7 -0
- package/dist/src/core/external-tools/providers/index.js.map +1 -0
- package/dist/src/core/external-tools/providers/jira-items-adapter.d.ts +42 -0
- package/dist/src/core/external-tools/providers/jira-items-adapter.d.ts.map +1 -0
- package/dist/src/core/external-tools/providers/jira-items-adapter.js +153 -0
- package/dist/src/core/external-tools/providers/jira-items-adapter.js.map +1 -0
- package/dist/src/core/external-tools/types.d.ts +78 -0
- package/dist/src/core/external-tools/types.d.ts.map +1 -0
- package/dist/src/core/external-tools/types.js +19 -0
- package/dist/src/core/external-tools/types.js.map +1 -0
- package/dist/src/core/increment/increment-utils.d.ts +13 -37
- package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
- package/dist/src/core/increment/increment-utils.js +17 -64
- package/dist/src/core/increment/increment-utils.js.map +1 -1
- package/dist/src/core/increment/status-change-sync-trigger.d.ts.map +1 -1
- package/dist/src/core/increment/status-change-sync-trigger.js +4 -0
- package/dist/src/core/increment/status-change-sync-trigger.js.map +1 -1
- package/dist/src/core/llm/providers/azure-openai-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/azure-openai-provider.js +1 -0
- package/dist/src/core/llm/providers/azure-openai-provider.js.map +1 -1
- package/dist/src/core/llm/providers/bedrock-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/bedrock-provider.js +4 -3
- package/dist/src/core/llm/providers/bedrock-provider.js.map +1 -1
- package/dist/src/core/llm/providers/openai-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/openai-provider.js +1 -0
- package/dist/src/core/llm/providers/openai-provider.js.map +1 -1
- package/dist/src/core/llm/providers/vertex-ai-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/vertex-ai-provider.js +1 -0
- package/dist/src/core/llm/providers/vertex-ai-provider.js.map +1 -1
- package/dist/src/importers/ado-importer.d.ts.map +1 -1
- package/dist/src/importers/ado-importer.js +2 -1
- package/dist/src/importers/ado-importer.js.map +1 -1
- package/dist/src/importers/github-importer.d.ts.map +1 -1
- package/dist/src/importers/github-importer.js +2 -1
- package/dist/src/importers/github-importer.js.map +1 -1
- package/dist/src/importers/jira-importer.d.ts.map +1 -1
- package/dist/src/importers/jira-importer.js +2 -1
- package/dist/src/importers/jira-importer.js.map +1 -1
- package/dist/src/init/architecture/types.d.ts +140 -33
- package/dist/src/init/architecture/types.d.ts.map +1 -1
- package/dist/src/init/compliance/types.d.ts +27 -30
- package/dist/src/init/compliance/types.d.ts.map +1 -1
- package/dist/src/init/repo/types.d.ts +34 -11
- package/dist/src/init/repo/types.d.ts.map +1 -1
- package/dist/src/init/research/src/config/types.d.ts +82 -15
- package/dist/src/init/research/src/config/types.d.ts.map +1 -1
- package/dist/src/init/research/types.d.ts +93 -38
- package/dist/src/init/research/types.d.ts.map +1 -1
- package/dist/src/init/team/types.d.ts +42 -4
- package/dist/src/init/team/types.d.ts.map +1 -1
- package/dist/src/utils/fs-native.d.ts +2 -1
- package/dist/src/utils/fs-native.d.ts.map +1 -1
- package/dist/src/utils/fs-native.js +6 -1
- package/dist/src/utils/fs-native.js.map +1 -1
- package/dist/src/utils/html-to-mdx.d.ts +37 -0
- package/dist/src/utils/html-to-mdx.d.ts.map +1 -0
- package/dist/src/utils/html-to-mdx.js +98 -0
- package/dist/src/utils/html-to-mdx.js.map +1 -0
- package/package.json +3 -3
- package/plugins/specweave/commands/specweave-external.md +150 -0
- package/plugins/specweave/commands/specweave-judge.md +11 -0
- package/plugins/specweave/hooks/lib/update-status-line.sh +16 -4
- package/plugins/specweave/hooks/universal/hook-wrapper.cmd +26 -26
- package/plugins/specweave/hooks/universal/session-start.cmd +16 -16
- package/plugins/specweave/hooks/universal/session-start.ps1 +16 -16
- package/plugins/specweave/lib/vendor/utils/fs-native.d.ts +2 -1
- package/plugins/specweave/lib/vendor/utils/fs-native.js +6 -1
- package/plugins/specweave/lib/vendor/utils/fs-native.js.map +1 -1
- package/plugins/specweave-docs/commands/build.md +47 -73
- package/plugins/specweave-docs/commands/preview.md +181 -87
- package/plugins/specweave-docs/skills/preview/SKILL.md +45 -56
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +0 -296
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +0 -444
package/CLAUDE.md
CHANGED
|
@@ -166,6 +166,28 @@ READ: limit:50 | EDIT: 1 per response | AGENTS: none | FLOW: "Done. Next?"
|
|
|
166
166
|
|
|
167
167
|
**Format:** `ACTION. CONSTRAINT. CONSTRAINT.` (periods, not commas)
|
|
168
168
|
|
|
169
|
+
### 8. MDX Compatibility (Docusaurus Preview)
|
|
170
|
+
|
|
171
|
+
**External HTML content = MDX compilation errors** (blocks docs preview)
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
❌ MDX FAILS ON:
|
|
175
|
+
- target=_blank (unquoted attribute) → target="_blank"
|
|
176
|
+
- <br> (self-closing without /) → <br />
|
|
177
|
+
- dir=auto, rel=noopener, alt=image (all unquoted)
|
|
178
|
+
|
|
179
|
+
✅ PREVENTION (automatic in importers since v0.32.0):
|
|
180
|
+
- ADO/JIRA/GitHub importers use sanitizeHtmlForMdx()
|
|
181
|
+
- Located: src/utils/html-to-mdx.ts
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**If Docusaurus preview fails with "Unexpected character":**
|
|
185
|
+
```bash
|
|
186
|
+
# Batch fix existing files (macOS):
|
|
187
|
+
find .specweave/docs -name "*.md" -exec sed -i '' 's/target=_blank/target="_blank"/g' {} \;
|
|
188
|
+
find .specweave/docs -name "*.md" -exec sed -i '' 's/dir=auto/dir="auto"/g' {} \;
|
|
189
|
+
```
|
|
190
|
+
|
|
169
191
|
---
|
|
170
192
|
|
|
171
193
|
## Development Setup
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
# SpecWeave Adapters
|
|
2
|
+
|
|
3
|
+
**Version**: 0.2.0 (Multi-Tool Support)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
SpecWeave adapters enable the framework to work with **ANY AI coding tool**, not just Claude Code. This directory contains all adapter implementations that provide tool-specific enhancements while maintaining a tool-agnostic core.
|
|
8
|
+
|
|
9
|
+
## Architecture
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
SpecWeave
|
|
13
|
+
├── Core (Tool-Agnostic)
|
|
14
|
+
│ └── .specweave/ # Plain Markdown + YAML
|
|
15
|
+
│ ├── increments/
|
|
16
|
+
│ └── docs/
|
|
17
|
+
│
|
|
18
|
+
└── Adapters (Optional)
|
|
19
|
+
├── Claude # Full automation (native)
|
|
20
|
+
│ ├── .claude/skills/
|
|
21
|
+
│ ├── .claude/agents/
|
|
22
|
+
│ └── .claude/hooks/
|
|
23
|
+
│
|
|
24
|
+
├── Cursor # Partial automation
|
|
25
|
+
│ ├── .cursorrules (legacy)
|
|
26
|
+
│ └── AGENTS.md
|
|
27
|
+
│
|
|
28
|
+
└── Generic # Limited features
|
|
29
|
+
└── AGENTS.md # Works with Copilot, ChatGPT, Gemini
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Available Adapters
|
|
33
|
+
|
|
34
|
+
| Adapter | Automation | Tools | Status |
|
|
35
|
+
|---------|------------|-------|--------|
|
|
36
|
+
| **Claude** | Full (skills, agents, hooks) | Claude Code | ✅ Active |
|
|
37
|
+
| **Cursor** | Partial (AGENTS.md, team commands, less reliable) | Cursor | ✅ Active |
|
|
38
|
+
| **Generic** | Limited (AGENTS.md, no hooks, manual workflow) | Copilot, ChatGPT, Gemini, etc. | ✅ Active |
|
|
39
|
+
|
|
40
|
+
**Total Market Coverage**: 100% (works with ANY AI tool)
|
|
41
|
+
|
|
42
|
+
**Note**: Claude Code is the only fully reliable option. Others have reduced features and reliability.
|
|
43
|
+
|
|
44
|
+
## Adapter Interface
|
|
45
|
+
|
|
46
|
+
All adapters implement the `IAdapter` interface defined in `adapter-interface.ts`:
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
interface IAdapter {
|
|
50
|
+
name: string;
|
|
51
|
+
description: string;
|
|
52
|
+
automationLevel: 'full' | 'semi' | 'basic' | 'manual';
|
|
53
|
+
|
|
54
|
+
detect(): Promise<boolean>;
|
|
55
|
+
checkRequirements(): Promise<RequirementsResult>;
|
|
56
|
+
getFiles(): AdapterFile[];
|
|
57
|
+
install(options: AdapterOptions): Promise<void>;
|
|
58
|
+
postInstall(options: AdapterOptions): Promise<void>;
|
|
59
|
+
getInstructions(): string;
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## How Adapters Work
|
|
64
|
+
|
|
65
|
+
### 1. Claude Adapter (Full Automation)
|
|
66
|
+
|
|
67
|
+
**Files Installed**:
|
|
68
|
+
- `.claude/skills/` - Auto-activating skills (specweave-detector, skill-router, etc.)
|
|
69
|
+
- `.claude/agents/` - Specialized agents (PM, Architect, DevOps, QA, Security)
|
|
70
|
+
- `.claude/commands/` - Slash commands (/create-increment, /sync-docs, etc.)
|
|
71
|
+
- `.claude/hooks/` - Auto-update hooks (post-task-completion, etc.)
|
|
72
|
+
|
|
73
|
+
**Features**:
|
|
74
|
+
- Skills auto-activate based on user requests
|
|
75
|
+
- Agents coordinate complex workflows
|
|
76
|
+
- Hooks auto-update documentation
|
|
77
|
+
- Slash commands for quick actions
|
|
78
|
+
- Best-in-class experience
|
|
79
|
+
|
|
80
|
+
**Detection**: Checks for Claude Code CLI
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
### 2. Cursor Adapter (Semi-Automation)
|
|
85
|
+
|
|
86
|
+
**Files Installed**:
|
|
87
|
+
- `.cursorrules` - Workflow instructions for Cursor AI
|
|
88
|
+
- `.cursor/context/` - Context shortcut files
|
|
89
|
+
|
|
90
|
+
**Features**:
|
|
91
|
+
- @ shortcuts: `@increments`, `@docs`, `@strategy`
|
|
92
|
+
- Composer multi-file editing guided by .cursorrules
|
|
93
|
+
- Context manifests work via manual reference
|
|
94
|
+
|
|
95
|
+
**Workflow Instructions** (in .cursorrules):
|
|
96
|
+
```markdown
|
|
97
|
+
# SpecWeave Configuration for Cursor
|
|
98
|
+
|
|
99
|
+
## When user requests a feature:
|
|
100
|
+
1. Check if increment exists in `.specweave/increments/####-name/`
|
|
101
|
+
2. If not, create: spec.md, plan.md, tasks.md
|
|
102
|
+
|
|
103
|
+
## Context Loading (70%+ Token Reduction)
|
|
104
|
+
**CRITICAL**: Always read `context-manifest.yaml` first!
|
|
105
|
+
Only load files listed in manifest.
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Detection**: Checks for Cursor editor process or .cursor/ directory
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
### 3. Generic Adapter (Limited Features)
|
|
113
|
+
|
|
114
|
+
**Files Installed**:
|
|
115
|
+
- `AGENTS.md` - Universal instruction file for all AI tools
|
|
116
|
+
|
|
117
|
+
**Features**:
|
|
118
|
+
- Works with Copilot, ChatGPT, Gemini, and ANY AI tool
|
|
119
|
+
- AGENTS.md format (https://agents.md/)
|
|
120
|
+
- No automation (manual workflow)
|
|
121
|
+
- No hooks (manual living docs sync)
|
|
122
|
+
- High context usage
|
|
123
|
+
|
|
124
|
+
**Manual Guide** (SPECWEAVE.md):
|
|
125
|
+
```markdown
|
|
126
|
+
# SpecWeave Manual Workflow
|
|
127
|
+
|
|
128
|
+
## Step 1: Create Feature
|
|
129
|
+
```bash
|
|
130
|
+
mkdir -p .specweave/increments/0001-feature-name
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Step 2: Create spec.md
|
|
134
|
+
[Detailed template and instructions]
|
|
135
|
+
|
|
136
|
+
## Step 3: Load Context
|
|
137
|
+
Copy files listed in `context-manifest.yaml` to your AI chat.
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Detection**: Always returns `true` (universal fallback)
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Command Mechanism
|
|
145
|
+
|
|
146
|
+
**Critical Insight**: Commands work differently across tools.
|
|
147
|
+
|
|
148
|
+
### Claude Code (Native Slash Commands)
|
|
149
|
+
- User types `/create-increment "user auth"` in Claude chat
|
|
150
|
+
- Command file in `.claude/commands/create-increment.md` is loaded
|
|
151
|
+
- Command executes with full context
|
|
152
|
+
|
|
153
|
+
### Cursor (Instruction-Based)
|
|
154
|
+
- User types: "create increment for user auth"
|
|
155
|
+
- Cursor reads `.cursorrules` which contains workflow instructions
|
|
156
|
+
- AI follows instructions step-by-step
|
|
157
|
+
|
|
158
|
+
### Generic / Copilot / ChatGPT (AGENTS.md)
|
|
159
|
+
- All tools read `AGENTS.md` (universal standard)
|
|
160
|
+
- Copilot reads it automatically in VS Code
|
|
161
|
+
- ChatGPT/Gemini: User copies sections to chat
|
|
162
|
+
- Manual workflow with AI assistance
|
|
163
|
+
|
|
164
|
+
**Pattern**: AGENTS.md is the universal instruction format. Only Claude Code uses native plugins (.claude/).
|
|
165
|
+
|
|
166
|
+
## Installation
|
|
167
|
+
|
|
168
|
+
### For Users (Select Adapter)
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# Auto-detect tool and install appropriate adapter
|
|
172
|
+
npx specweave init my-project
|
|
173
|
+
|
|
174
|
+
# Or specify adapter explicitly
|
|
175
|
+
npx specweave init my-project --adapter claude
|
|
176
|
+
npx specweave init my-project --adapter cursor
|
|
177
|
+
npx specweave init my-project --adapter generic # For Copilot, ChatGPT, Gemini
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### For Developers (Install All Adapters)
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
# Install all adapters to SpecWeave framework
|
|
184
|
+
npm run install:adapters
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Adding New Adapters
|
|
188
|
+
|
|
189
|
+
To add support for a new tool:
|
|
190
|
+
|
|
191
|
+
1. **Create adapter directory**: `src/adapters/your-tool/`
|
|
192
|
+
2. **Create adapter class**: `src/adapters/your-tool/adapter.ts`
|
|
193
|
+
3. **Implement IAdapter interface**
|
|
194
|
+
4. **Add template files**: Tool-specific instruction files
|
|
195
|
+
5. **Add to registry**: Update `registry.yaml`
|
|
196
|
+
6. **Add test cases**: Minimum 3 test cases
|
|
197
|
+
7. **Update CLI**: Add detection logic
|
|
198
|
+
|
|
199
|
+
**Example**:
|
|
200
|
+
```typescript
|
|
201
|
+
// src/adapters/windsurf/adapter.ts
|
|
202
|
+
import { AdapterBase } from '../adapter-base';
|
|
203
|
+
|
|
204
|
+
export class WindsurfAdapter extends AdapterBase {
|
|
205
|
+
name = 'windsurf';
|
|
206
|
+
description = 'Windsurf adapter with semi-automation';
|
|
207
|
+
automationLevel = 'semi' as const;
|
|
208
|
+
|
|
209
|
+
async detect(): Promise<boolean> {
|
|
210
|
+
// Check if Windsurf is installed
|
|
211
|
+
return this.commandExists('windsurf');
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
getFiles(): AdapterFile[] {
|
|
215
|
+
return [
|
|
216
|
+
{
|
|
217
|
+
sourcePath: '.windsurfrules',
|
|
218
|
+
targetPath: '.windsurfrules',
|
|
219
|
+
description: 'Windsurf workflow instructions'
|
|
220
|
+
}
|
|
221
|
+
];
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
getInstructions(): string {
|
|
225
|
+
return `
|
|
226
|
+
# Windsurf Adapter Installed
|
|
227
|
+
|
|
228
|
+
Your project is now configured for Windsurf.
|
|
229
|
+
...
|
|
230
|
+
`;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## Testing Adapters
|
|
236
|
+
|
|
237
|
+
Each adapter MUST have minimum 3 test cases in `test-cases/`:
|
|
238
|
+
|
|
239
|
+
```
|
|
240
|
+
src/adapters/cursor/
|
|
241
|
+
├── adapter.ts
|
|
242
|
+
├── .cursorrules (template)
|
|
243
|
+
└── test-cases/
|
|
244
|
+
├── test-1-install.yaml
|
|
245
|
+
├── test-2-detection.yaml
|
|
246
|
+
└── test-3-workflow.yaml
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## Related Documentation
|
|
250
|
+
|
|
251
|
+
- [adapter-interface.ts](./adapter-interface.ts) - Complete interface definition
|
|
252
|
+
- [adapter-base.ts](./adapter-base.ts) - Base class implementation
|
|
253
|
+
- [registry.yaml](./registry.yaml) - List of all adapters
|
|
254
|
+
- [.specweave/increments/0002-multi-tool-support/](../../.specweave/increments/0002-multi-tool-support/) - Implementation plan
|
|
255
|
+
|
|
256
|
+
## Design Philosophy
|
|
257
|
+
|
|
258
|
+
**Core Principle**: Separate tool-agnostic core from tool-specific enhancements.
|
|
259
|
+
|
|
260
|
+
**Benefits**:
|
|
261
|
+
1. ✅ Users can switch AI tools without losing SpecWeave benefits
|
|
262
|
+
2. ✅ 100% market coverage (works with ANY AI)
|
|
263
|
+
3. ✅ No tool lock-in
|
|
264
|
+
4. ✅ Best experience with supported tools, functional experience with any tool
|
|
265
|
+
5. ✅ Easy to add support for new tools
|
|
266
|
+
|
|
267
|
+
**Inspiration**:
|
|
268
|
+
- **spec-kit** (GitHub): Agent-agnostic approach, plain text commands
|
|
269
|
+
- **Quantitative risk methodologies**: Portable prompt bundles work across multiple AIs
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
**Status**: Implementation in progress (Increment 0002)
|
|
274
|
+
**Branch**: features/002-multi-tool-support
|
|
275
|
+
**Target**: v0.2.0-beta.1
|
|
@@ -36,7 +36,7 @@ export declare abstract class AdapterBase implements IAdapter {
|
|
|
36
36
|
*/
|
|
37
37
|
abstract getInstructions(): string;
|
|
38
38
|
/**
|
|
39
|
-
* Helper: Check if a command exists in PATH
|
|
39
|
+
* Helper: Check if a command exists in PATH (cross-platform)
|
|
40
40
|
*/
|
|
41
41
|
protected commandExists(command: string): Promise<boolean>;
|
|
42
42
|
/**
|
|
@@ -72,12 +72,12 @@ export class AdapterBase {
|
|
|
72
72
|
console.log('\n' + this.getInstructions());
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
|
-
* Helper: Check if a command exists in PATH
|
|
75
|
+
* Helper: Check if a command exists in PATH (cross-platform)
|
|
76
76
|
*/
|
|
77
77
|
async commandExists(command) {
|
|
78
78
|
try {
|
|
79
|
-
const
|
|
80
|
-
execSync(
|
|
79
|
+
const checkCmd = process.platform === 'win32' ? `where ${command}` : `which ${command}`;
|
|
80
|
+
execSync(checkCmd, { stdio: 'ignore' });
|
|
81
81
|
return true;
|
|
82
82
|
}
|
|
83
83
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-base.js","sourceRoot":"","sources":["../../../src/adapters/adapter-base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"adapter-base.js","sourceRoot":"","sources":["../../../src/adapters/adapter-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,17 +47,16 @@ export declare class AdapterLoader {
|
|
|
47
47
|
/**
|
|
48
48
|
* Auto-detect which tool is being used
|
|
49
49
|
*
|
|
50
|
-
* Detection priority (
|
|
51
|
-
* 1.
|
|
52
|
-
* 2.
|
|
53
|
-
* 3.
|
|
54
|
-
* 4. Claude
|
|
55
|
-
* - If claude CLI found in PATH: Shows "✅ Detected: Claude Code"
|
|
56
|
-
* - If NOT found: Shows "ℹ️ No tool detected, recommending Claude Code"
|
|
50
|
+
* Detection priority (Claude-first! SpecWeave is built for Claude):
|
|
51
|
+
* 1. Claude Code (FIRST! If claude CLI is available, use it - active indicator)
|
|
52
|
+
* 2. Cursor (only if Claude unavailable AND cursor indicators exist)
|
|
53
|
+
* 3. Gemini CLI (only if Claude unavailable)
|
|
54
|
+
* 4. Codex (only if Claude unavailable)
|
|
57
55
|
* 5. Generic (only if explicitly requested via --adapter generic)
|
|
58
56
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
57
|
+
* Rationale: Claude CLI being available is an ACTIVE indicator (user installed it).
|
|
58
|
+
* `.cursor/` directory is a PASSIVE indicator (may exist from old usage).
|
|
59
|
+
* If user has both, they almost certainly want Claude (since SpecWeave is native to it).
|
|
61
60
|
*
|
|
62
61
|
* @returns Promise<string> Detected tool name (not adapter - Claude has no adapter!)
|
|
63
62
|
*/
|
|
@@ -85,7 +84,9 @@ export declare class AdapterLoader {
|
|
|
85
84
|
private getAutomationIcon;
|
|
86
85
|
/**
|
|
87
86
|
* Get recommended adapter based on detection and user preference
|
|
87
|
+
*
|
|
88
|
+
* Returns null if Claude is detected (native experience, no adapter needed)
|
|
88
89
|
*/
|
|
89
|
-
getRecommendedAdapter(explicitChoice?: string): Promise<IAdapter>;
|
|
90
|
+
getRecommendedAdapter(explicitChoice?: string): Promise<IAdapter | null>;
|
|
90
91
|
}
|
|
91
92
|
//# sourceMappingURL=adapter-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-loader.d.ts","sourceRoot":"","sources":["../../../src/adapters/adapter-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAWlD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,QAAQ,CAAgC;;IAMhD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IAiB9C;;OAEG;IACH,cAAc,IAAI,QAAQ,EAAE;IAI5B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI9C
|
|
1
|
+
{"version":3,"file":"adapter-loader.d.ts","sourceRoot":"","sources":["../../../src/adapters/adapter-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAWlD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,QAAQ,CAAgC;;IAMhD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IAiB9C;;OAEG;IACH,cAAc,IAAI,QAAQ,EAAE;IAI5B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI9C;;;;;;;;;;;;;;;OAeG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IA8CnC;;;OAGG;YACW,aAAa;IAW3B;;OAEG;YACW,UAAU;IASxB;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3D;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;OAIG;IACG,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;CA+B/E"}
|
|
@@ -68,24 +68,32 @@ export class AdapterLoader {
|
|
|
68
68
|
/**
|
|
69
69
|
* Auto-detect which tool is being used
|
|
70
70
|
*
|
|
71
|
-
* Detection priority (
|
|
72
|
-
* 1.
|
|
73
|
-
* 2.
|
|
74
|
-
* 3.
|
|
75
|
-
* 4. Claude
|
|
76
|
-
* - If claude CLI found in PATH: Shows "✅ Detected: Claude Code"
|
|
77
|
-
* - If NOT found: Shows "ℹ️ No tool detected, recommending Claude Code"
|
|
71
|
+
* Detection priority (Claude-first! SpecWeave is built for Claude):
|
|
72
|
+
* 1. Claude Code (FIRST! If claude CLI is available, use it - active indicator)
|
|
73
|
+
* 2. Cursor (only if Claude unavailable AND cursor indicators exist)
|
|
74
|
+
* 3. Gemini CLI (only if Claude unavailable)
|
|
75
|
+
* 4. Codex (only if Claude unavailable)
|
|
78
76
|
* 5. Generic (only if explicitly requested via --adapter generic)
|
|
79
77
|
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
78
|
+
* Rationale: Claude CLI being available is an ACTIVE indicator (user installed it).
|
|
79
|
+
* `.cursor/` directory is a PASSIVE indicator (may exist from old usage).
|
|
80
|
+
* If user has both, they almost certainly want Claude (since SpecWeave is native to it).
|
|
82
81
|
*
|
|
83
82
|
* @returns Promise<string> Detected tool name (not adapter - Claude has no adapter!)
|
|
84
83
|
*/
|
|
85
84
|
async detectTool() {
|
|
86
85
|
console.log('🔍 Detecting AI coding tool...\n');
|
|
87
|
-
//
|
|
88
|
-
//
|
|
86
|
+
// ✅ CLAUDE FIRST! SpecWeave is built for Claude Code.
|
|
87
|
+
// Claude CLI being available = user wants Claude (active indicator)
|
|
88
|
+
const claudeStatus = detectClaudeCli();
|
|
89
|
+
if (claudeStatus.available) {
|
|
90
|
+
// Claude CLI is fully functional - this is the native experience!
|
|
91
|
+
console.log(`✅ Detected: Claude Code (native plugin system, full automation)`);
|
|
92
|
+
console.log(` Found 'claude' command in PATH`);
|
|
93
|
+
console.log('');
|
|
94
|
+
return 'claude';
|
|
95
|
+
}
|
|
96
|
+
// Claude not available - check other tools (passive indicators)
|
|
89
97
|
const detectionOrder = ['cursor', 'gemini', 'codex'];
|
|
90
98
|
for (const adapterName of detectionOrder) {
|
|
91
99
|
const adapter = this.adapters.get(adapterName);
|
|
@@ -97,16 +105,8 @@ export class AdapterLoader {
|
|
|
97
105
|
return adapterName;
|
|
98
106
|
}
|
|
99
107
|
}
|
|
100
|
-
// No
|
|
101
|
-
|
|
102
|
-
const claudeStatus = detectClaudeCli();
|
|
103
|
-
if (claudeStatus.available) {
|
|
104
|
-
// Claude CLI is fully functional - show positive detection message
|
|
105
|
-
console.log(`✅ Detected: Claude Code (native plugin system, full automation)`);
|
|
106
|
-
console.log(` Found 'claude' command in PATH`);
|
|
107
|
-
console.log('');
|
|
108
|
-
}
|
|
109
|
-
else if (claudeStatus.commandExists) {
|
|
108
|
+
// No tool detected at all
|
|
109
|
+
if (claudeStatus.commandExists) {
|
|
110
110
|
// Claude command exists but plugin commands don't work
|
|
111
111
|
console.log(`⚠️ Claude command found but not fully functional`);
|
|
112
112
|
console.log(` Issue: ${claudeStatus.error}`);
|
|
@@ -216,10 +216,16 @@ export class AdapterLoader {
|
|
|
216
216
|
}
|
|
217
217
|
/**
|
|
218
218
|
* Get recommended adapter based on detection and user preference
|
|
219
|
+
*
|
|
220
|
+
* Returns null if Claude is detected (native experience, no adapter needed)
|
|
219
221
|
*/
|
|
220
222
|
async getRecommendedAdapter(explicitChoice) {
|
|
221
223
|
// If user explicitly chose an adapter, use it
|
|
222
224
|
if (explicitChoice) {
|
|
225
|
+
// 'claude' is a valid explicit choice - means "use native Claude"
|
|
226
|
+
if (explicitChoice === 'claude') {
|
|
227
|
+
return null; // No adapter needed for Claude
|
|
228
|
+
}
|
|
223
229
|
const adapter = this.adapters.get(explicitChoice);
|
|
224
230
|
if (!adapter) {
|
|
225
231
|
throw new Error(`Invalid adapter: ${explicitChoice}. Use 'claude', 'cursor', or 'generic'`);
|
|
@@ -228,6 +234,10 @@ export class AdapterLoader {
|
|
|
228
234
|
}
|
|
229
235
|
// Otherwise, auto-detect
|
|
230
236
|
const detectedName = await this.detectTool();
|
|
237
|
+
// Claude detected - native experience, no adapter needed
|
|
238
|
+
if (detectedName === 'claude') {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
231
241
|
const adapter = this.adapters.get(detectedName);
|
|
232
242
|
if (!adapter) {
|
|
233
243
|
throw new Error(`Detected adapter not found: ${detectedName}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter-loader.js","sourceRoot":"","sources":["../../../src/adapters/adapter-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAgB9C;;GAEG;AACH,MAAM,OAAO,aAAa;IAIxB;QAHQ,aAAQ,GAA0B,IAAI,GAAG,EAAE,CAAC;QAC5C,aAAQ,GAA2B,IAAI,CAAC;QAG9C,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACK,kBAAkB;QACxB,sEAAsE;QACtE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,0DAA0D;QAC1D,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;QAEvD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"adapter-loader.js","sourceRoot":"","sources":["../../../src/adapters/adapter-loader.ts"],"names":[],"mappings":"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"}
|