specweave 0.7.1 ā 0.8.2
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 +307 -11
- package/README.md +41 -3
- package/bin/specweave.js +0 -27
- package/dist/cli/commands/import-docs.d.ts +21 -0
- package/dist/cli/commands/import-docs.d.ts.map +1 -0
- package/dist/cli/commands/import-docs.js +146 -0
- package/dist/cli/commands/import-docs.js.map +1 -0
- package/dist/cli/commands/init-multiproject.d.ts +11 -0
- package/dist/cli/commands/init-multiproject.d.ts.map +1 -0
- package/dist/cli/commands/init-multiproject.js +202 -0
- package/dist/cli/commands/init-multiproject.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +4 -93
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/migrate-to-multiproject.d.ts +37 -0
- package/dist/cli/commands/migrate-to-multiproject.d.ts.map +1 -0
- package/dist/cli/commands/migrate-to-multiproject.js +189 -0
- package/dist/cli/commands/migrate-to-multiproject.js.map +1 -0
- package/dist/cli/commands/migrate-to-profiles.d.ts +25 -0
- package/dist/cli/commands/migrate-to-profiles.d.ts.map +1 -0
- package/dist/cli/commands/migrate-to-profiles.js +350 -0
- package/dist/cli/commands/migrate-to-profiles.js.map +1 -0
- package/dist/cli/commands/switch-project.d.ts +13 -0
- package/dist/cli/commands/switch-project.d.ts.map +1 -0
- package/dist/cli/commands/switch-project.js +91 -0
- package/dist/cli/commands/switch-project.js.map +1 -0
- package/dist/cli/helpers/issue-tracker/index.js +4 -4
- package/dist/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/cli/helpers/issue-tracker/utils.d.ts +6 -3
- package/dist/cli/helpers/issue-tracker/utils.d.ts.map +1 -1
- package/dist/cli/helpers/issue-tracker/utils.js +9 -7
- package/dist/cli/helpers/issue-tracker/utils.js.map +1 -1
- package/dist/core/brownfield/analyzer.d.ts +86 -0
- package/dist/core/brownfield/analyzer.d.ts.map +1 -0
- package/dist/core/brownfield/analyzer.js +365 -0
- package/dist/core/brownfield/analyzer.js.map +1 -0
- package/dist/core/brownfield/importer.d.ts +76 -0
- package/dist/core/brownfield/importer.d.ts.map +1 -0
- package/dist/core/brownfield/importer.js +287 -0
- package/dist/core/brownfield/importer.js.map +1 -0
- package/dist/core/config-manager.d.ts +47 -0
- package/dist/core/config-manager.d.ts.map +1 -0
- package/dist/core/config-manager.js +136 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/project-manager.d.ts +127 -0
- package/dist/core/project-manager.d.ts.map +1 -0
- package/dist/core/project-manager.js +524 -0
- package/dist/core/project-manager.js.map +1 -0
- package/dist/core/sync/profile-manager.d.ts +72 -0
- package/dist/core/sync/profile-manager.d.ts.map +1 -0
- package/dist/core/sync/profile-manager.js +338 -0
- package/dist/core/sync/profile-manager.js.map +1 -0
- package/dist/core/sync/profile-selector.d.ts +52 -0
- package/dist/core/sync/profile-selector.d.ts.map +1 -0
- package/dist/core/sync/profile-selector.js +179 -0
- package/dist/core/sync/profile-selector.js.map +1 -0
- package/dist/core/sync/project-context.d.ts +81 -0
- package/dist/core/sync/project-context.d.ts.map +1 -0
- package/dist/core/sync/project-context.js +354 -0
- package/dist/core/sync/project-context.js.map +1 -0
- package/dist/core/sync/rate-limiter.d.ts +116 -0
- package/dist/core/sync/rate-limiter.d.ts.map +1 -0
- package/dist/core/sync/rate-limiter.js +308 -0
- package/dist/core/sync/rate-limiter.js.map +1 -0
- package/dist/core/sync/time-range-selector.d.ts +48 -0
- package/dist/core/sync/time-range-selector.d.ts.map +1 -0
- package/dist/core/sync/time-range-selector.js +224 -0
- package/dist/core/sync/time-range-selector.js.map +1 -0
- package/dist/core/types/config.d.ts +4 -0
- package/dist/core/types/config.d.ts.map +1 -1
- package/dist/core/types/config.js.map +1 -1
- package/dist/core/types/sync-profile.d.ts +205 -0
- package/dist/core/types/sync-profile.d.ts.map +1 -0
- package/dist/core/types/sync-profile.js +8 -0
- package/dist/core/types/sync-profile.js.map +1 -0
- package/dist/utils/project-detection.d.ts +141 -0
- package/dist/utils/project-detection.d.ts.map +1 -0
- package/dist/utils/project-detection.js +321 -0
- package/dist/utils/project-detection.js.map +1 -0
- package/package.json +2 -1
- package/plugins/specweave/agents/pm/AGENT.md +7 -4
- package/plugins/specweave/commands/specweave-abandon.md +17 -17
- package/plugins/specweave/commands/specweave-check-tests.md +14 -14
- package/plugins/specweave/commands/specweave-costs.md +1 -1
- package/plugins/specweave/commands/specweave-do.md +12 -12
- package/plugins/specweave/commands/specweave-done.md +28 -15
- package/plugins/specweave/commands/specweave-import-docs.md +212 -0
- package/plugins/specweave/commands/specweave-increment.md +10 -10
- package/plugins/specweave/commands/specweave-init-multiproject.md +146 -0
- package/plugins/specweave/commands/specweave-next.md +16 -16
- package/plugins/specweave/commands/specweave-pause.md +17 -17
- package/plugins/specweave/commands/specweave-progress.md +10 -10
- package/plugins/specweave/commands/specweave-qa.md +11 -11
- package/plugins/specweave/commands/specweave-resume.md +22 -22
- package/plugins/specweave/commands/specweave-status.md +18 -18
- package/plugins/specweave/commands/specweave-switch-project.md +168 -0
- package/plugins/specweave/commands/specweave-sync-docs.md +1 -1
- package/plugins/specweave/commands/specweave-sync-tasks.md +9 -9
- package/plugins/specweave/commands/specweave-tdd-cycle.md +7 -0
- package/plugins/specweave/commands/specweave-tdd-green.md +7 -0
- package/plugins/specweave/commands/specweave-tdd-red.md +7 -0
- package/plugins/specweave/commands/specweave-tdd-refactor.md +7 -0
- package/plugins/specweave/commands/specweave-translate.md +1 -1
- package/plugins/specweave/commands/specweave-update-scope.md +8 -8
- package/plugins/specweave/commands/specweave-validate.md +18 -20
- package/plugins/specweave/commands/specweave.md +5 -5
- package/plugins/specweave/skills/SKILLS-INDEX.md +1 -1
- package/plugins/specweave/skills/increment-planner/SKILL.md +40 -4
- package/plugins/specweave/skills/increment-quality-judge/SKILL.md +5 -5
- package/plugins/specweave/skills/increment-quality-judge-v2/SKILL.md +5 -5
- package/plugins/specweave/skills/specweave-detector/SKILL.md +3 -3
- package/plugins/specweave-ado/commands/{close-workitem.md ā specweave-ado-close-workitem.md} +1 -1
- package/plugins/specweave-ado/commands/{create-workitem.md ā specweave-ado-create-workitem.md} +1 -1
- package/plugins/specweave-ado/commands/{status.md ā specweave-ado-status.md} +1 -1
- package/plugins/specweave-ado/commands/{sync.md ā specweave-ado-sync.md} +1 -1
- package/plugins/specweave-ado/lib/ado-client-v2.ts +547 -0
- package/plugins/specweave-github/commands/{close-issue.md ā specweave-github-close-issue.md} +1 -1
- package/plugins/specweave-github/commands/{create-issue.md ā specweave-github-create-issue.md} +1 -1
- package/plugins/specweave-github/commands/{status.md ā specweave-github-status.md} +1 -1
- package/plugins/specweave-github/commands/{sync-tasks.md ā specweave-github-sync-tasks.md} +1 -1
- package/plugins/specweave-github/commands/specweave-github-sync.md +568 -0
- package/plugins/specweave-github/lib/github-client-v2.ts +555 -0
- package/plugins/specweave-infrastructure/commands/{monitor-setup.md ā specweave-infrastructure-monitor-setup.md} +1 -1
- package/plugins/specweave-infrastructure/commands/{slo-implement.md ā specweave-infrastructure-slo-implement.md} +1 -1
- package/plugins/specweave-jira/commands/{sync.md ā specweave-jira-sync.md} +1 -1
- package/plugins/specweave-jira/lib/jira-client-v2.ts +529 -0
- package/plugins/specweave-ml/commands/{ml-deploy.md ā specweave-ml-deploy.md} +1 -1
- package/plugins/specweave-ml/commands/{ml-evaluate.md ā specweave-ml-evaluate.md} +1 -1
- package/plugins/specweave-ml/commands/{ml-explain.md ā specweave-ml-explain.md} +1 -1
- package/plugins/specweave-ml/commands/{ml-pipeline.md ā specweave-ml-pipeline.md} +1 -1
- package/src/templates/AGENTS.md.template +1 -0
- package/src/templates/CLAUDE.md.template +1 -0
- package/plugins/specweave/hooks/post-increment-plugin-detect.sh +0 -142
- package/plugins/specweave/hooks/pre-task-plugin-detect.sh +0 -96
- package/plugins/specweave/skills/plugin-detector/SKILL.md +0 -324
- package/plugins/specweave-github/commands/sync.md +0 -443
- /package/plugins/specweave/{commands/README.md ā COMMANDS.md} +0 -0
package/CLAUDE.md
CHANGED
|
@@ -1282,8 +1282,8 @@ specweave/
|
|
|
1282
1282
|
ā āāā docs/
|
|
1283
1283
|
ā ā āāā internal/ # Strategic docs (NEVER published) - 6 core folders
|
|
1284
1284
|
ā ā ā āāā strategy/ # Business rationale, vision, PRDs, OKRs
|
|
1285
|
-
ā ā ā āāā
|
|
1286
|
-
ā ā ā ā āāā
|
|
1285
|
+
ā ā ā āāā specs/ # Feature specifications (detailed requirements, project history)
|
|
1286
|
+
ā ā ā ā āāā spec-###-{name}.md # User stories, AC, implementation plans
|
|
1287
1287
|
ā ā ā āāā architecture/ # Technical design (HLD, LLD, ADR, diagrams)
|
|
1288
1288
|
ā ā ā ā āāā adr/ # Architecture Decision Records (why we chose X over Y)
|
|
1289
1289
|
ā ā ā ā āāā diagrams/ # Mermaid + SVG (C4 model diagrams)
|
|
@@ -1366,22 +1366,80 @@ specweave/
|
|
|
1366
1366
|
|
|
1367
1367
|
## Internal Documentation Structure
|
|
1368
1368
|
|
|
1369
|
-
**Location**: `.specweave/docs/internal/` -
|
|
1369
|
+
**Location**: `.specweave/docs/internal/` - Cross-project folders + multi-project organization
|
|
1370
1370
|
|
|
1371
|
-
|
|
1371
|
+
### Cross-Project Documentation (Top-Level)
|
|
1372
|
+
|
|
1373
|
+
**Five cross-project folders** apply to the entire system:
|
|
1372
1374
|
|
|
1373
1375
|
| Folder | Purpose | Use When | Examples |
|
|
1374
1376
|
|--------|---------|----------|----------|
|
|
1375
1377
|
| **strategy/** | Business rationale (Why?) | Defining business case for features | `prd-user-auth.md` |
|
|
1376
|
-
| **
|
|
1377
|
-
| **architecture/** | Technical design (How?) | System architecture, decisions | `hld-system.md`, `adr/0001-postgres.md` |
|
|
1378
|
+
| **architecture/** | System-wide technical design | Architecture affecting all projects | `hld-system.md`, `adr/0001-postgres.md` |
|
|
1378
1379
|
| **delivery/** | Build & release (How we build) | Git workflow, DORA metrics, CI/CD | `branch-strategy.md`, `dora-metrics.md` |
|
|
1379
1380
|
| **operations/** | Production ops (How we run) | Runbooks, incidents, performance | `runbook-api.md`, `performance-tuning.md` |
|
|
1380
1381
|
| **governance/** | Policies (Guardrails) | Security, compliance, coding standards | `security-policy.md`, `coding-standards.md` |
|
|
1381
1382
|
|
|
1383
|
+
### Multi-Project Organization (v0.8.0+)
|
|
1384
|
+
|
|
1385
|
+
**NEW**: Projects folder for multi-team/multi-repo organizations
|
|
1386
|
+
|
|
1387
|
+
```
|
|
1388
|
+
.specweave/docs/internal/
|
|
1389
|
+
āāā strategy/ # Cross-project
|
|
1390
|
+
āāā architecture/ # System-wide ADRs
|
|
1391
|
+
āāā delivery/ # Cross-project
|
|
1392
|
+
āāā operations/ # Cross-project
|
|
1393
|
+
āāā governance/ # Cross-project
|
|
1394
|
+
ā
|
|
1395
|
+
āāā projects/ # š Multi-project support
|
|
1396
|
+
āāā default/ # Default project (single-project mode)
|
|
1397
|
+
ā āāā specs/ # Living docs specs (feature-level)
|
|
1398
|
+
ā āāā modules/ # Module/component documentation
|
|
1399
|
+
ā āāā team/ # Team playbooks (conventions, workflows)
|
|
1400
|
+
ā āāā architecture/ # Project-specific ADRs
|
|
1401
|
+
ā āāā legacy/ # Brownfield imports
|
|
1402
|
+
ā
|
|
1403
|
+
āāā web-app/ # Additional projects
|
|
1404
|
+
āāā mobile-app/
|
|
1405
|
+
āāā platform-infra/
|
|
1406
|
+
```
|
|
1407
|
+
|
|
1408
|
+
**Five Documentation Types Per Project**:
|
|
1409
|
+
|
|
1410
|
+
1. **specs/** - Living documentation specs (user stories, acceptance criteria)
|
|
1411
|
+
- Permanent, feature-level knowledge base
|
|
1412
|
+
- ALL user stories for a feature area
|
|
1413
|
+
- 3-digit numbers: `spec-001-user-auth.md`
|
|
1414
|
+
|
|
1415
|
+
2. **modules/** - Module/component documentation
|
|
1416
|
+
- Architecture, API contracts, integration guides
|
|
1417
|
+
- Created when module >1000 lines or has security implications
|
|
1418
|
+
- Example: `auth-module.md`, `payment-module.md`
|
|
1419
|
+
|
|
1420
|
+
3. **team/** - Team playbooks
|
|
1421
|
+
- Onboarding, conventions, workflows, contacts
|
|
1422
|
+
- Team-specific processes and practices
|
|
1423
|
+
- Example: `onboarding.md`, `conventions.md`, `workflows.md`
|
|
1424
|
+
|
|
1425
|
+
4. **architecture/** - Project-specific ADRs (optional)
|
|
1426
|
+
- Decisions affecting only this project
|
|
1427
|
+
- Use top-level `architecture/` for system-wide decisions
|
|
1428
|
+
- Example: `adr/0001-use-postgres.md`
|
|
1429
|
+
|
|
1430
|
+
5. **legacy/** - Brownfield imports (temporary)
|
|
1431
|
+
- Imported from Notion, Confluence, Wiki
|
|
1432
|
+
- Migration report + classified files
|
|
1433
|
+
- Clean up after migration complete
|
|
1434
|
+
|
|
1435
|
+
**Key Architecture Principle**: Single project = multi-project with 1 project called "default" (NO special cases!)
|
|
1436
|
+
|
|
1382
1437
|
**Document Flow**: `PRD ā Spec ā Architecture ā Delivery ā Operations`
|
|
1383
1438
|
|
|
1384
|
-
**See**:
|
|
1439
|
+
**See**:
|
|
1440
|
+
- [Internal Docs README](.specweave/docs/internal/README.md) for complete guidance
|
|
1441
|
+
- [Multi-Project Setup Guide](.specweave/docs/public/guides/multi-project-setup.md) for usage
|
|
1442
|
+
- [ADR-0017](/.specweave/docs/internal/architecture/adr/0017-multi-project-internal-structure.md) for architecture decisions
|
|
1385
1443
|
|
|
1386
1444
|
---
|
|
1387
1445
|
|
|
@@ -1391,7 +1449,7 @@ specweave/
|
|
|
1391
1449
|
|
|
1392
1450
|
### The Core Question: Why Two Locations?
|
|
1393
1451
|
|
|
1394
|
-
1. **Living Docs Specs**: `.specweave/docs/internal/specs/spec-NNN-feature-area.md` - **Permanent, feature-level knowledge base**
|
|
1452
|
+
1. **Living Docs Specs**: `.specweave/docs/internal/projects/{project-id}/specs/spec-NNN-feature-area.md` - **Permanent, feature-level knowledge base**
|
|
1395
1453
|
2. **Increment Specs**: `.specweave/increments/####-name/spec.md` - **Temporary, focused implementation snapshot**
|
|
1396
1454
|
|
|
1397
1455
|
**Key Difference**: Specs use **3-digit numbers** (001, 002, 003) for **feature areas**, increments use **4-digit numbers** (0001, 0002, 0003) for **implementations**.
|
|
@@ -1400,7 +1458,7 @@ specweave/
|
|
|
1400
1458
|
|
|
1401
1459
|
**Living Docs Specs = Permanent, Feature-Level Knowledge Base**
|
|
1402
1460
|
|
|
1403
|
-
- **Location**: `.specweave/docs/internal/specs/spec-001-core-framework-architecture.md`
|
|
1461
|
+
- **Location**: `.specweave/docs/internal/projects/default/specs/spec-001-core-framework-architecture.md` (single project) or `.specweave/docs/internal/projects/web-app/specs/spec-001-user-auth.md` (multi-project)
|
|
1404
1462
|
- **Purpose**: COMPLETE, PERMANENT source of truth for entire feature area
|
|
1405
1463
|
- **Lifecycle**: Created once, updated over time, NEVER deleted
|
|
1406
1464
|
- **Scope**: Comprehensive feature area (e.g., "Core Framework", 10-50 user stories)
|
|
@@ -1429,7 +1487,7 @@ specweave/
|
|
|
1429
1487
|
|
|
1430
1488
|
**Living Docs Spec** (Permanent, Feature-Level):
|
|
1431
1489
|
```
|
|
1432
|
-
File: .specweave/docs/internal/specs/spec-001-core-framework-architecture.md
|
|
1490
|
+
File: .specweave/docs/internal/projects/default/specs/spec-001-core-framework-architecture.md
|
|
1433
1491
|
|
|
1434
1492
|
# SPEC-001: Core Framework & Architecture
|
|
1435
1493
|
Foundation framework with CLI, plugin system, cross-platform support
|
|
@@ -1457,7 +1515,7 @@ File: .specweave/increments/0001-core-framework/spec.md
|
|
|
1457
1515
|
|
|
1458
1516
|
# Increment 0001: Core Framework MVP
|
|
1459
1517
|
**Implements**: SPEC-001-core-framework-architecture (US-001 to US-002 only)
|
|
1460
|
-
**Complete Specification**: See ../../docs/internal/specs/spec-001-core-framework-architecture.md
|
|
1518
|
+
**Complete Specification**: See ../../docs/internal/projects/default/specs/spec-001-core-framework-architecture.md
|
|
1461
1519
|
|
|
1462
1520
|
## What We're Implementing (This Increment Only)
|
|
1463
1521
|
- US-001: NPM installation + CLI basics ā
|
|
@@ -2062,6 +2120,244 @@ vim .claude-plugin/marketplace.json
|
|
|
2062
2120
|
|
|
2063
2121
|
---
|
|
2064
2122
|
|
|
2123
|
+
## Multi-Project Sync Architecture
|
|
2124
|
+
|
|
2125
|
+
**SpecWeave supports syncing increments to unlimited external repositories** (GitHub, JIRA, Azure DevOps) with intelligent rate limiting and time range filtering.
|
|
2126
|
+
|
|
2127
|
+
### Core Concepts
|
|
2128
|
+
|
|
2129
|
+
**3-Layer Architecture**:
|
|
2130
|
+
|
|
2131
|
+
```
|
|
2132
|
+
Layer 1: Credentials (.env)
|
|
2133
|
+
āāā GITHUB_TOKEN=...
|
|
2134
|
+
āāā JIRA_API_TOKEN=...
|
|
2135
|
+
āāā AZURE_DEVOPS_PAT=...
|
|
2136
|
+
|
|
2137
|
+
Layer 2: Sync Profiles (config.json)
|
|
2138
|
+
āāā specweave-dev (GitHub: anton-abyzov/specweave)
|
|
2139
|
+
āāā client-mobile (GitHub: client-org/mobile-app)
|
|
2140
|
+
āāā internal-jira (JIRA: company.atlassian.net/PROJ)
|
|
2141
|
+
āāā ado-backend (ADO: myorg/backend-services)
|
|
2142
|
+
|
|
2143
|
+
Layer 3: Per-Increment Metadata (metadata.json)
|
|
2144
|
+
āāā 0004-plugin-architecture
|
|
2145
|
+
āāā profile: specweave-dev
|
|
2146
|
+
āāā issueNumber: 130
|
|
2147
|
+
āāā timeRange: 1M
|
|
2148
|
+
```
|
|
2149
|
+
|
|
2150
|
+
### Sync Profiles
|
|
2151
|
+
|
|
2152
|
+
**Profiles** define how to connect to external systems:
|
|
2153
|
+
|
|
2154
|
+
```json
|
|
2155
|
+
{
|
|
2156
|
+
"sync": {
|
|
2157
|
+
"profiles": {
|
|
2158
|
+
"specweave-dev": {
|
|
2159
|
+
"provider": "github",
|
|
2160
|
+
"displayName": "SpecWeave Development",
|
|
2161
|
+
"config": {
|
|
2162
|
+
"owner": "anton-abyzov",
|
|
2163
|
+
"repo": "specweave"
|
|
2164
|
+
},
|
|
2165
|
+
"timeRange": {
|
|
2166
|
+
"default": "1M",
|
|
2167
|
+
"max": "6M"
|
|
2168
|
+
},
|
|
2169
|
+
"rateLimits": {
|
|
2170
|
+
"maxItemsPerSync": 500,
|
|
2171
|
+
"warnThreshold": 100
|
|
2172
|
+
}
|
|
2173
|
+
}
|
|
2174
|
+
}
|
|
2175
|
+
}
|
|
2176
|
+
}
|
|
2177
|
+
```
|
|
2178
|
+
|
|
2179
|
+
**Benefits**:
|
|
2180
|
+
- ā
Unlimited profiles per provider (3+, 5+, 10+ repos)
|
|
2181
|
+
- ā
Different increments sync to different repos
|
|
2182
|
+
- ā
Team-based organization (Frontend ā repo-A, Backend ā repo-B)
|
|
2183
|
+
- ā
Multi-client support (Client-A, Client-B, Client-C)
|
|
2184
|
+
|
|
2185
|
+
### Project Contexts
|
|
2186
|
+
|
|
2187
|
+
**Projects** organize work into logical groups:
|
|
2188
|
+
|
|
2189
|
+
```json
|
|
2190
|
+
{
|
|
2191
|
+
"sync": {
|
|
2192
|
+
"projects": {
|
|
2193
|
+
"specweave-core": {
|
|
2194
|
+
"id": "specweave-core",
|
|
2195
|
+
"name": "SpecWeave Core",
|
|
2196
|
+
"description": "Core framework development",
|
|
2197
|
+
"keywords": ["framework", "cli", "plugin"],
|
|
2198
|
+
"team": "Core Team",
|
|
2199
|
+
"defaultSyncProfile": "specweave-dev",
|
|
2200
|
+
"specsFolder": ".specweave/docs/internal/specs/specweave-core",
|
|
2201
|
+
"increments": ["0001-core-framework", "0002-core-enhancements"]
|
|
2202
|
+
}
|
|
2203
|
+
}
|
|
2204
|
+
}
|
|
2205
|
+
}
|
|
2206
|
+
```
|
|
2207
|
+
|
|
2208
|
+
**Smart Project Detection**:
|
|
2209
|
+
- Project name match: +10 points
|
|
2210
|
+
- Team name match: +5 points
|
|
2211
|
+
- Keyword match: +3 points per keyword
|
|
2212
|
+
- Auto-select if confidence > 0.7
|
|
2213
|
+
|
|
2214
|
+
**Example**:
|
|
2215
|
+
```
|
|
2216
|
+
Increment: "Add React Native dark mode for mobile app"
|
|
2217
|
+
ā Detects project "mobile-app" (keywords: mobile, react-native)
|
|
2218
|
+
ā Uses profile "client-mobile" automatically
|
|
2219
|
+
ā Syncs to client-org/mobile-app repo
|
|
2220
|
+
```
|
|
2221
|
+
|
|
2222
|
+
### Time Range Filtering
|
|
2223
|
+
|
|
2224
|
+
**Problem**: Syncing ALL data takes 25+ minutes and hits rate limits.
|
|
2225
|
+
|
|
2226
|
+
**Solution**: Time range presets filter data by creation date:
|
|
2227
|
+
|
|
2228
|
+
| Preset | Duration | Items | API Calls | Duration | Impact |
|
|
2229
|
+
|--------|----------|-------|-----------|----------|--------|
|
|
2230
|
+
| **1W** | 1 week | ~50 | 75 | 30 sec | Low |
|
|
2231
|
+
| **1M** | 1 month | ~200 | 300 | 2 min | Medium (ā
Recommended) |
|
|
2232
|
+
| **3M** | 3 months | ~600 | 900 | 5 min | Medium |
|
|
2233
|
+
| **6M** | 6 months | ~1,200 | 1,800 | 10 min | High |
|
|
2234
|
+
| **ALL** | All time | ~5,000+ | 7,500+ | 30+ min | Critical (ā Avoid) |
|
|
2235
|
+
|
|
2236
|
+
**Usage**:
|
|
2237
|
+
```bash
|
|
2238
|
+
# Interactive (select time range)
|
|
2239
|
+
/specweave-github:sync 0004
|
|
2240
|
+
|
|
2241
|
+
# Specify time range
|
|
2242
|
+
/specweave-github:sync 0004 --time-range 1M
|
|
2243
|
+
|
|
2244
|
+
# Preview before executing
|
|
2245
|
+
/specweave-github:sync 0004 --dry-run
|
|
2246
|
+
```
|
|
2247
|
+
|
|
2248
|
+
### Rate Limiting Protection
|
|
2249
|
+
|
|
2250
|
+
**Pre-Flight Validation**:
|
|
2251
|
+
1. Estimate API calls based on time range
|
|
2252
|
+
2. Check current rate limit status (GitHub: 5000/hour, JIRA: 100/min, ADO: 200/5min)
|
|
2253
|
+
3. Calculate impact: low (<250 calls), medium (250-1000), high (1000-2500), critical (2500+)
|
|
2254
|
+
4. Warn or block if risky
|
|
2255
|
+
|
|
2256
|
+
**Example: Critical Impact Blocked**:
|
|
2257
|
+
```
|
|
2258
|
+
ā This sync may FAIL due to:
|
|
2259
|
+
|
|
2260
|
+
Blockers:
|
|
2261
|
+
⢠CRITICAL rate limit impact: 7,500 API calls exceeds safe threshold
|
|
2262
|
+
⢠Not enough rate limit remaining (need 7,500, only 4,850 remaining)
|
|
2263
|
+
|
|
2264
|
+
Recommendations:
|
|
2265
|
+
1. Reduce time range to 1 month (~300 API calls, SAFE)
|
|
2266
|
+
2. Wait for rate limit reset (25 minutes)
|
|
2267
|
+
3. Split sync across multiple time periods
|
|
2268
|
+
```
|
|
2269
|
+
|
|
2270
|
+
### File Organization
|
|
2271
|
+
|
|
2272
|
+
**Specs organized by project**:
|
|
2273
|
+
```
|
|
2274
|
+
.specweave/docs/internal/specs/
|
|
2275
|
+
āāā specweave-core/
|
|
2276
|
+
ā āāā spec-001-core-framework.md
|
|
2277
|
+
ā āāā spec-002-plugin-architecture.md
|
|
2278
|
+
āāā client-mobile/
|
|
2279
|
+
ā āāā spec-001-mvp.md
|
|
2280
|
+
ā āāā spec-002-dark-mode.md
|
|
2281
|
+
āāā internal-backend/
|
|
2282
|
+
āāā spec-001-api-v2.md
|
|
2283
|
+
```
|
|
2284
|
+
|
|
2285
|
+
### Key Files
|
|
2286
|
+
|
|
2287
|
+
**Core Infrastructure**:
|
|
2288
|
+
- `src/core/types/sync-profile.ts` - Type definitions (432 lines)
|
|
2289
|
+
- `src/core/sync/profile-manager.ts` - CRUD for profiles (463 lines)
|
|
2290
|
+
- `src/core/sync/rate-limiter.ts` - Rate limiting logic (365 lines)
|
|
2291
|
+
- `src/core/sync/project-context.ts` - Project management (379 lines)
|
|
2292
|
+
|
|
2293
|
+
**Client Libraries** (Profile-Based):
|
|
2294
|
+
- `plugins/specweave-github/lib/github-client-v2.ts` - GitHub sync (466 lines)
|
|
2295
|
+
- `plugins/specweave-jira/lib/jira-client-v2.ts` - JIRA sync (520 lines)
|
|
2296
|
+
- `plugins/specweave-ado/lib/ado-client-v2.ts` - ADO sync (485 lines)
|
|
2297
|
+
|
|
2298
|
+
**UX Components**:
|
|
2299
|
+
- `src/core/sync/time-range-selector.ts` - Interactive time range selection (295 lines)
|
|
2300
|
+
- `src/core/sync/profile-selector.ts` - Interactive profile selection (230 lines)
|
|
2301
|
+
|
|
2302
|
+
**Migration**:
|
|
2303
|
+
- `src/cli/commands/migrate-to-profiles.ts` - Automatic migration from V1 (425 lines)
|
|
2304
|
+
|
|
2305
|
+
### Common Commands
|
|
2306
|
+
|
|
2307
|
+
```bash
|
|
2308
|
+
# Profile management
|
|
2309
|
+
/specweave:sync-profile create
|
|
2310
|
+
/specweave:sync-profile list
|
|
2311
|
+
/specweave:sync-profile get <id>
|
|
2312
|
+
/specweave:sync-profile update <id>
|
|
2313
|
+
/specweave:sync-profile delete <id>
|
|
2314
|
+
|
|
2315
|
+
# Project management
|
|
2316
|
+
/specweave:project create
|
|
2317
|
+
/specweave:project list
|
|
2318
|
+
/specweave:project link <project-id> <increment-id>
|
|
2319
|
+
/specweave:project stats
|
|
2320
|
+
|
|
2321
|
+
# Syncing (GitHub example)
|
|
2322
|
+
/specweave-github:sync <increment-id>
|
|
2323
|
+
/specweave-github:sync <increment-id> --profile <id>
|
|
2324
|
+
/specweave-github:sync <increment-id> --time-range 1M
|
|
2325
|
+
/specweave-github:sync <increment-id> --dry-run
|
|
2326
|
+
|
|
2327
|
+
# Migration from V1
|
|
2328
|
+
specweave migrate-to-profiles
|
|
2329
|
+
```
|
|
2330
|
+
|
|
2331
|
+
### Migration from V1 (Single Project)
|
|
2332
|
+
|
|
2333
|
+
**Automatic**:
|
|
2334
|
+
```bash
|
|
2335
|
+
specweave migrate-to-profiles
|
|
2336
|
+
```
|
|
2337
|
+
|
|
2338
|
+
**Output**:
|
|
2339
|
+
```
|
|
2340
|
+
ā
Created GitHub profile: default-github
|
|
2341
|
+
Repository: anton-abyzov/specweave
|
|
2342
|
+
|
|
2343
|
+
ā
Created default project context
|
|
2344
|
+
Name: specweave
|
|
2345
|
+
Default profile: default-github
|
|
2346
|
+
|
|
2347
|
+
š Migration Summary:
|
|
2348
|
+
Profiles created: 1
|
|
2349
|
+
Projects created: 1
|
|
2350
|
+
```
|
|
2351
|
+
|
|
2352
|
+
### Documentation
|
|
2353
|
+
|
|
2354
|
+
**User Guide**: `.specweave/increments/0011-multi-project-sync/reports/USER-GUIDE-MULTI-PROJECT-SYNC.md`
|
|
2355
|
+
**ADR**: `.specweave/docs/internal/architecture/adr/0016-multi-project-external-sync.md`
|
|
2356
|
+
**Implementation Summary**: `.specweave/increments/0011-multi-project-sync/COMPLETE-IMPLEMENTATION.md`
|
|
2357
|
+
**Command Docs**: `plugins/specweave-github/commands/specweave-github-sync.md`
|
|
2358
|
+
|
|
2359
|
+
---
|
|
2360
|
+
|
|
2065
2361
|
## Key SpecWeave Principles (for Contributors)
|
|
2066
2362
|
|
|
2067
2363
|
### 1. Source of Truth Discipline
|
package/README.md
CHANGED
|
@@ -156,11 +156,49 @@ Work in 9 languages (Russian, Spanish, Chinese, German, French, Japanese, Korean
|
|
|
156
156
|
|
|
157
157
|
---
|
|
158
158
|
|
|
159
|
-
##
|
|
159
|
+
## Enterprise Features
|
|
160
160
|
|
|
161
|
-
|
|
161
|
+
### š¢ Multi-Project Support (v0.8.0+)
|
|
162
162
|
|
|
163
|
-
|
|
163
|
+
Organize documentation by team, repo, or microservice:
|
|
164
|
+
|
|
165
|
+
- **Team-Based Organization**: Frontend, Backend, Mobile, Platform teams with separate documentation
|
|
166
|
+
- **Microservices Architecture**: Each service gets its own specs, modules, and team playbooks
|
|
167
|
+
- **Per-Project Sync**: Link projects to different GitHub repos, JIRA projects, or ADO boards
|
|
168
|
+
- **Unified Architecture**: Single project = multi-project with 1 project (NO special cases!)
|
|
169
|
+
|
|
170
|
+
**Five Documentation Types Per Project**:
|
|
171
|
+
1. **specs/** - Living documentation specs (user stories, AC)
|
|
172
|
+
2. **modules/** - Module/component documentation (architecture, APIs)
|
|
173
|
+
3. **team/** - Team playbooks (onboarding, conventions, workflows)
|
|
174
|
+
4. **architecture/** - Project-specific ADRs (optional)
|
|
175
|
+
5. **legacy/** - Brownfield imports (temporary)
|
|
176
|
+
|
|
177
|
+
**[ā Multi-Project Setup Guide](https://spec-weave.com/docs/guides/multi-project-setup)**
|
|
178
|
+
|
|
179
|
+
### š¦ Brownfield Import
|
|
180
|
+
|
|
181
|
+
Import existing documentation from external sources:
|
|
182
|
+
|
|
183
|
+
- **Automatic Classification**: AI-powered keyword detection (85%+ accuracy)
|
|
184
|
+
- **Supported Sources**: Notion, Confluence, GitHub Wiki, custom markdown folders
|
|
185
|
+
- **Smart Organization**: Classifies into specs, modules, team docs, or legacy
|
|
186
|
+
- **Migration Reports**: Complete audit trail with confidence scores and manual review checklist
|
|
187
|
+
|
|
188
|
+
**Example**:
|
|
189
|
+
```bash
|
|
190
|
+
# Import Notion export to web-app project
|
|
191
|
+
/specweave:import-docs ~/Downloads/notion-export --source=notion --project=web-app
|
|
192
|
+
|
|
193
|
+
# Result:
|
|
194
|
+
# ā
Classified 127 files
|
|
195
|
+
# - 37 specs ā projects/web-app/specs/
|
|
196
|
+
# - 18 modules ā projects/web-app/modules/
|
|
197
|
+
# - 12 team docs ā projects/web-app/team/
|
|
198
|
+
# - 60 legacy ā projects/web-app/legacy/notion/
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**[ā Brownfield Integration Guide](https://spec-weave.com/docs/workflows/brownfield)**
|
|
164
202
|
|
|
165
203
|
---
|
|
166
204
|
|
package/bin/specweave.js
CHANGED
|
@@ -72,28 +72,6 @@ program
|
|
|
72
72
|
await listCommand(options);
|
|
73
73
|
});
|
|
74
74
|
|
|
75
|
-
// Adapters command - List available adapters
|
|
76
|
-
program
|
|
77
|
-
.command('adapters')
|
|
78
|
-
.description('List available AI tool adapters')
|
|
79
|
-
.action(async () => {
|
|
80
|
-
const { AdapterLoader } = await import('../dist/adapters/adapter-loader.js');
|
|
81
|
-
const loader = new AdapterLoader();
|
|
82
|
-
await loader.listAdapters();
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
// Plugin commands - Manage plugins
|
|
86
|
-
program
|
|
87
|
-
.command('plugin <action> [plugin-name]')
|
|
88
|
-
.description('Manage plugins (list, enable, disable, info)')
|
|
89
|
-
.option('--enabled', 'Show only enabled plugins (for list)')
|
|
90
|
-
.option('--available', 'Show only available plugins (for list)')
|
|
91
|
-
.option('--force', 'Force operation (for enable/disable)')
|
|
92
|
-
.action(async (action, pluginName, options) => {
|
|
93
|
-
const { pluginCommand } = await import('../dist/cli/commands/plugin.js');
|
|
94
|
-
await pluginCommand(action, pluginName, options);
|
|
95
|
-
});
|
|
96
|
-
|
|
97
75
|
// Increment status commands
|
|
98
76
|
program
|
|
99
77
|
.command('pause <increment-id>')
|
|
@@ -160,11 +138,6 @@ program.on('--help', () => {
|
|
|
160
138
|
console.log(' $ specweave init my-saas # Create new project (auto-detect tool)');
|
|
161
139
|
console.log(' $ specweave init my-saas --adapter cursor # Create project for Cursor');
|
|
162
140
|
console.log(' $ specweave init my-saas --language ru # Create project with Russian language');
|
|
163
|
-
console.log(' $ specweave adapters # List available AI tool adapters');
|
|
164
|
-
console.log(' $ specweave plugin list # List all plugins');
|
|
165
|
-
console.log(' $ specweave plugin enable specweave-github # Enable GitHub plugin');
|
|
166
|
-
console.log(' $ specweave plugin disable specweave-github # Disable GitHub plugin');
|
|
167
|
-
console.log(' $ specweave plugin info specweave-github # Show plugin details');
|
|
168
141
|
console.log(' $ specweave install pm --local # Install PM agent locally');
|
|
169
142
|
console.log(' $ specweave install --global # Install all (interactive)');
|
|
170
143
|
console.log(' $ specweave list # List all available components');
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Command: /specweave:import-docs
|
|
3
|
+
*
|
|
4
|
+
* Import brownfield documentation from external sources
|
|
5
|
+
*/
|
|
6
|
+
export interface ImportDocsArgs {
|
|
7
|
+
sourcePath: string;
|
|
8
|
+
source?: 'notion' | 'confluence' | 'wiki' | 'custom';
|
|
9
|
+
project?: string;
|
|
10
|
+
preserveStructure?: boolean;
|
|
11
|
+
dryRun?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function importDocs(projectRoot: string, args: ImportDocsArgs): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Parse command-line arguments for import-docs
|
|
16
|
+
*
|
|
17
|
+
* @param args - Raw command-line arguments
|
|
18
|
+
* @returns Parsed arguments
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseImportDocsArgs(args: string[]): ImportDocsArgs;
|
|
21
|
+
//# sourceMappingURL=import-docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-docs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/import-docs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAkHf;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,CA6BlE"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Command: /specweave:import-docs
|
|
3
|
+
*
|
|
4
|
+
* Import brownfield documentation from external sources
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import inquirer from 'inquirer';
|
|
8
|
+
import { BrownfieldImporter } from '../../core/brownfield/importer';
|
|
9
|
+
import { ProjectManager } from '../../core/project-manager';
|
|
10
|
+
export async function importDocs(projectRoot, args) {
|
|
11
|
+
console.log('\nš„ Import Brownfield Documentation\n');
|
|
12
|
+
try {
|
|
13
|
+
// Validate source path
|
|
14
|
+
if (!args.sourcePath) {
|
|
15
|
+
throw new Error('Source path is required. Usage: /specweave:import-docs <source-path> [options]');
|
|
16
|
+
}
|
|
17
|
+
// Resolve source path (handle relative paths)
|
|
18
|
+
const sourcePath = path.isAbsolute(args.sourcePath)
|
|
19
|
+
? args.sourcePath
|
|
20
|
+
: path.resolve(process.cwd(), args.sourcePath);
|
|
21
|
+
// Get source type if not provided
|
|
22
|
+
let source = args.source;
|
|
23
|
+
if (!source) {
|
|
24
|
+
const { sourceType } = await inquirer.prompt([{
|
|
25
|
+
type: 'list',
|
|
26
|
+
name: 'sourceType',
|
|
27
|
+
message: 'Select source type:',
|
|
28
|
+
choices: [
|
|
29
|
+
{ name: 'Notion (markdown export)', value: 'notion' },
|
|
30
|
+
{ name: 'Confluence (HTML/markdown export)', value: 'confluence' },
|
|
31
|
+
{ name: 'GitHub Wiki (git repository)', value: 'wiki' },
|
|
32
|
+
{ name: 'Custom (any markdown folder)', value: 'custom' }
|
|
33
|
+
]
|
|
34
|
+
}]);
|
|
35
|
+
source = sourceType;
|
|
36
|
+
}
|
|
37
|
+
// Get target project
|
|
38
|
+
const projectManager = new ProjectManager(projectRoot);
|
|
39
|
+
const allProjects = projectManager.getAllProjects();
|
|
40
|
+
const activeProject = projectManager.getActiveProject();
|
|
41
|
+
let targetProject = args.project || activeProject.id;
|
|
42
|
+
if (!args.project && allProjects.length > 1) {
|
|
43
|
+
const { projectId } = await inquirer.prompt([{
|
|
44
|
+
type: 'list',
|
|
45
|
+
name: 'projectId',
|
|
46
|
+
message: 'Select target project:',
|
|
47
|
+
choices: allProjects.map(p => ({
|
|
48
|
+
name: `${p.name} (${p.id})`,
|
|
49
|
+
value: p.id
|
|
50
|
+
})),
|
|
51
|
+
default: activeProject.id
|
|
52
|
+
}]);
|
|
53
|
+
targetProject = projectId;
|
|
54
|
+
}
|
|
55
|
+
// Confirm before import (unless dry run)
|
|
56
|
+
if (!args.dryRun) {
|
|
57
|
+
console.log('\nš Import Configuration:\n');
|
|
58
|
+
console.log(` Source: ${sourcePath}`);
|
|
59
|
+
console.log(` Type: ${source}`);
|
|
60
|
+
console.log(` Target project: ${targetProject}`);
|
|
61
|
+
console.log(` Preserve structure: ${args.preserveStructure ? 'Yes' : 'No'}\n`);
|
|
62
|
+
const { confirm } = await inquirer.prompt([{
|
|
63
|
+
type: 'confirm',
|
|
64
|
+
name: 'confirm',
|
|
65
|
+
message: 'Proceed with import?',
|
|
66
|
+
default: true
|
|
67
|
+
}]);
|
|
68
|
+
if (!confirm) {
|
|
69
|
+
console.log('\nā Import cancelled\n');
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Create importer
|
|
74
|
+
const importer = new BrownfieldImporter(projectRoot);
|
|
75
|
+
// Import options
|
|
76
|
+
const options = {
|
|
77
|
+
sourcePath,
|
|
78
|
+
project: targetProject,
|
|
79
|
+
source: source,
|
|
80
|
+
preserveStructure: args.preserveStructure || false,
|
|
81
|
+
dryRun: args.dryRun || false
|
|
82
|
+
};
|
|
83
|
+
// Import
|
|
84
|
+
const report = await importer.import(options);
|
|
85
|
+
if (args.dryRun) {
|
|
86
|
+
console.log('\nš Dry run complete - no files were imported');
|
|
87
|
+
console.log(' Remove --dry-run flag to perform actual import\n');
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// Show summary
|
|
91
|
+
console.log('\nš Import Summary:\n');
|
|
92
|
+
console.log(` Total files: ${report.totalFiles}`);
|
|
93
|
+
console.log(` - Specs: ${report.specsImported}`);
|
|
94
|
+
console.log(` - Modules: ${report.modulesImported}`);
|
|
95
|
+
console.log(` - Team docs: ${report.teamImported}`);
|
|
96
|
+
console.log(` - Legacy: ${report.legacyImported}\n`);
|
|
97
|
+
console.log('š Migration report created:');
|
|
98
|
+
console.log(` ${path.join(report.destination, '../README.md')}\n`);
|
|
99
|
+
console.log('ā
Next steps:');
|
|
100
|
+
console.log(' 1. Review migration report for classification accuracy');
|
|
101
|
+
console.log(' 2. Manually move misclassified files if needed');
|
|
102
|
+
console.log(' 3. Update spec numbers to follow SpecWeave conventions');
|
|
103
|
+
console.log(' 4. Clean up legacy/ folder when migration complete\n');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
console.error(`\nā Import failed: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Parse command-line arguments for import-docs
|
|
113
|
+
*
|
|
114
|
+
* @param args - Raw command-line arguments
|
|
115
|
+
* @returns Parsed arguments
|
|
116
|
+
*/
|
|
117
|
+
export function parseImportDocsArgs(args) {
|
|
118
|
+
const result = {
|
|
119
|
+
sourcePath: ''
|
|
120
|
+
};
|
|
121
|
+
// First arg is source path
|
|
122
|
+
if (args.length > 0) {
|
|
123
|
+
result.sourcePath = args[0];
|
|
124
|
+
}
|
|
125
|
+
// Parse options
|
|
126
|
+
for (let i = 1; i < args.length; i++) {
|
|
127
|
+
const arg = args[i];
|
|
128
|
+
if (arg.startsWith('--source=')) {
|
|
129
|
+
const value = arg.substring('--source='.length);
|
|
130
|
+
if (['notion', 'confluence', 'wiki', 'custom'].includes(value)) {
|
|
131
|
+
result.source = value;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else if (arg.startsWith('--project=')) {
|
|
135
|
+
result.project = arg.substring('--project='.length);
|
|
136
|
+
}
|
|
137
|
+
else if (arg === '--preserve-structure') {
|
|
138
|
+
result.preserveStructure = true;
|
|
139
|
+
}
|
|
140
|
+
else if (arg === '--dry-run') {
|
|
141
|
+
result.dryRun = true;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=import-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-docs.js","sourceRoot":"","sources":["../../../src/cli/commands/import-docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Command: /specweave:init-multiproject
|
|
3
|
+
*
|
|
4
|
+
* Initialize multi-project mode for SpecWeave
|
|
5
|
+
*/
|
|
6
|
+
export declare function initMultiProject(projectRoot: string): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* List all projects
|
|
9
|
+
*/
|
|
10
|
+
export declare function listProjects(projectRoot: string): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=init-multiproject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-multiproject.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init-multiproject.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFzE;AA0GD;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBrE"}
|