specweave 0.30.19 → 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/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 +2 -0
- 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/package.json +1 -5
- package/plugins/specweave/commands/specweave-external.md +150 -0
- 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-github/hooks/.specweave/logs/hooks-debug.log +0 -626
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +0 -939
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave:external
|
|
3
|
+
description: View external items dashboard - open issues from GitHub, JIRA, and Azure DevOps
|
|
4
|
+
usage: /specweave:external [--refresh]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# External Items Dashboard
|
|
8
|
+
|
|
9
|
+
**Usage**: `/specweave:external [--refresh]`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Display a comprehensive dashboard of open external items from all configured providers:
|
|
16
|
+
- **GitHub Issues** - Open issues in linked repository
|
|
17
|
+
- **JIRA Tickets** - Open issues in configured project
|
|
18
|
+
- **Azure DevOps Work Items** - Open work items in configured project
|
|
19
|
+
|
|
20
|
+
Helps you stay aware of pending work and unaddressed items across all tools.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Output Format
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
═══════════════════════════════════════════════════════════════
|
|
28
|
+
External Items Dashboard
|
|
29
|
+
═══════════════════════════════════════════════════════════════
|
|
30
|
+
|
|
31
|
+
GitHub Issues (4 open, 2 stale)
|
|
32
|
+
───────────────────────────────────────────────────────────────
|
|
33
|
+
#779 DORA Metrics Workflow Failed 10h ago
|
|
34
|
+
#778 DORA Metrics Workflow Failed 1d ago
|
|
35
|
+
#777 DORA Metrics Workflow Failed 1d ago ⚠️ stale
|
|
36
|
+
#776 DORA Metrics Workflow Failed 3d ago ⚠️ stale
|
|
37
|
+
|
|
38
|
+
JIRA: not configured
|
|
39
|
+
|
|
40
|
+
ADO: not configured
|
|
41
|
+
|
|
42
|
+
───────────────────────────────────────────────────────────────
|
|
43
|
+
Total: 4 open (2 stale >7d)
|
|
44
|
+
Last updated: 2 minutes ago (use --refresh to update)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Options
|
|
50
|
+
|
|
51
|
+
### --refresh
|
|
52
|
+
|
|
53
|
+
Force refresh the cache and fetch latest data from all providers.
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
/specweave:external --refresh
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Implementation
|
|
62
|
+
|
|
63
|
+
When this command is invoked, execute the following:
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import { ExternalItemsCounter, displayDetailedDashboard } from '../src/core/external-tools/index';
|
|
67
|
+
|
|
68
|
+
// Parse options
|
|
69
|
+
const refresh = args.includes('--refresh');
|
|
70
|
+
|
|
71
|
+
// Create counter
|
|
72
|
+
const counter = new ExternalItemsCounter({
|
|
73
|
+
projectRoot: process.cwd(),
|
|
74
|
+
forceRefresh: refresh,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// Get summary
|
|
78
|
+
const summary = await counter.getSummary();
|
|
79
|
+
|
|
80
|
+
// Display dashboard
|
|
81
|
+
displayDetailedDashboard(summary);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Stale Detection
|
|
87
|
+
|
|
88
|
+
Items older than 7 days are marked as "stale" with ⚠️ indicator:
|
|
89
|
+
|
|
90
|
+
- **Stale** = created more than 7 days ago and still open
|
|
91
|
+
- Review stale items regularly to avoid accumulating technical debt
|
|
92
|
+
- Close or address items promptly
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Caching
|
|
97
|
+
|
|
98
|
+
- Default TTL: 15 minutes
|
|
99
|
+
- Uses `.specweave/cache/external-items-summary.json`
|
|
100
|
+
- Use `--refresh` to force update from APIs
|
|
101
|
+
- Stale cache is used as fallback when rate limited
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Provider Configuration
|
|
106
|
+
|
|
107
|
+
### GitHub
|
|
108
|
+
|
|
109
|
+
Auto-detected from git remote. Requires:
|
|
110
|
+
- GitHub CLI (`gh`) installed
|
|
111
|
+
- Authenticated: `gh auth login`
|
|
112
|
+
|
|
113
|
+
### JIRA
|
|
114
|
+
|
|
115
|
+
Set environment variables:
|
|
116
|
+
- `JIRA_BASE_URL` - JIRA instance URL
|
|
117
|
+
- `JIRA_EMAIL` - Your email
|
|
118
|
+
- `JIRA_API_TOKEN` - API token
|
|
119
|
+
- `JIRA_PROJECT_KEY` - Project key (optional)
|
|
120
|
+
|
|
121
|
+
### Azure DevOps
|
|
122
|
+
|
|
123
|
+
Set environment variables:
|
|
124
|
+
- `ADO_ORG_URL` or `AZURE_DEVOPS_ORG_URL` - Organization URL
|
|
125
|
+
- `ADO_PROJECT` or `AZURE_DEVOPS_PROJECT` - Project name
|
|
126
|
+
- `ADO_PAT` or `AZURE_DEVOPS_PAT` - Personal Access Token
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Integration Points
|
|
131
|
+
|
|
132
|
+
External items are also shown in:
|
|
133
|
+
- `/specweave:status` - Summary section at bottom
|
|
134
|
+
- `/specweave:increment` - Notification after planning
|
|
135
|
+
- `/specweave:progress` - Footer line
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Related Commands
|
|
140
|
+
|
|
141
|
+
- `/specweave:status` - Show increment status with external items summary
|
|
142
|
+
- `/specweave:progress` - Show detailed progress with external items footer
|
|
143
|
+
- `/specweave:import-external` - Import external items as increments
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
**Command**: `/specweave:external`
|
|
148
|
+
**Plugin**: specweave (core)
|
|
149
|
+
**Version**: v0.31.0+
|
|
150
|
+
**Part of**: Increment 0109 - External Items Dashboard
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
@echo off
|
|
2
|
-
REM hook-wrapper.cmd - Windows resilient hook launcher
|
|
3
|
-
REM Prevents crashes when dispatcher.mjs is temporarily unavailable
|
|
4
|
-
|
|
5
|
-
setlocal enabledelayedexpansion
|
|
6
|
-
|
|
7
|
-
set "HOOK_TYPE=%~1"
|
|
8
|
-
if "%HOOK_TYPE%"=="" set "HOOK_TYPE=unknown"
|
|
9
|
-
|
|
10
|
-
set "SCRIPT_DIR=%~dp0"
|
|
11
|
-
set "DISPATCHER=%SCRIPT_DIR%dispatcher.mjs"
|
|
12
|
-
|
|
13
|
-
REM Check if dispatcher exists
|
|
14
|
-
if not exist "%DISPATCHER%" (
|
|
15
|
-
echo {"continue":true,"systemMessage":"Hook skipped: dispatcher.mjs not found"}
|
|
16
|
-
exit /b 0
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
REM Run dispatcher with error suppression
|
|
20
|
-
node "%DISPATCHER%" "%HOOK_TYPE%" 2>nul
|
|
21
|
-
if errorlevel 1 (
|
|
22
|
-
echo {"continue":true,"systemMessage":"Hook error, continuing"}
|
|
23
|
-
exit /b 0
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
exit /b 0
|
|
1
|
+
@echo off
|
|
2
|
+
REM hook-wrapper.cmd - Windows resilient hook launcher
|
|
3
|
+
REM Prevents crashes when dispatcher.mjs is temporarily unavailable
|
|
4
|
+
|
|
5
|
+
setlocal enabledelayedexpansion
|
|
6
|
+
|
|
7
|
+
set "HOOK_TYPE=%~1"
|
|
8
|
+
if "%HOOK_TYPE%"=="" set "HOOK_TYPE=unknown"
|
|
9
|
+
|
|
10
|
+
set "SCRIPT_DIR=%~dp0"
|
|
11
|
+
set "DISPATCHER=%SCRIPT_DIR%dispatcher.mjs"
|
|
12
|
+
|
|
13
|
+
REM Check if dispatcher exists
|
|
14
|
+
if not exist "%DISPATCHER%" (
|
|
15
|
+
echo {"continue":true,"systemMessage":"Hook skipped: dispatcher.mjs not found"}
|
|
16
|
+
exit /b 0
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
REM Run dispatcher with error suppression
|
|
20
|
+
node "%DISPATCHER%" "%HOOK_TYPE%" 2>nul
|
|
21
|
+
if errorlevel 1 (
|
|
22
|
+
echo {"continue":true,"systemMessage":"Hook error, continuing"}
|
|
23
|
+
exit /b 0
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
exit /b 0
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
@echo off
|
|
2
|
-
:: Universal Session Start Hook for Windows
|
|
3
|
-
:: Calls the Node.js dispatcher
|
|
4
|
-
|
|
5
|
-
:: Find node.exe
|
|
6
|
-
where node >nul 2>&1
|
|
7
|
-
if %ERRORLEVEL% neq 0 (
|
|
8
|
-
echo {"continue": true, "error": "Node.js not found"}
|
|
9
|
-
exit /b 0
|
|
10
|
-
)
|
|
11
|
-
|
|
12
|
-
:: Get the directory of this script
|
|
13
|
-
set "SCRIPT_DIR=%~dp0"
|
|
14
|
-
|
|
15
|
-
:: Run the dispatcher
|
|
16
|
-
node "%SCRIPT_DIR%dispatcher.mjs" session-start
|
|
1
|
+
@echo off
|
|
2
|
+
:: Universal Session Start Hook for Windows
|
|
3
|
+
:: Calls the Node.js dispatcher
|
|
4
|
+
|
|
5
|
+
:: Find node.exe
|
|
6
|
+
where node >nul 2>&1
|
|
7
|
+
if %ERRORLEVEL% neq 0 (
|
|
8
|
+
echo {"continue": true, "error": "Node.js not found"}
|
|
9
|
+
exit /b 0
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
:: Get the directory of this script
|
|
13
|
+
set "SCRIPT_DIR=%~dp0"
|
|
14
|
+
|
|
15
|
+
:: Run the dispatcher
|
|
16
|
+
node "%SCRIPT_DIR%dispatcher.mjs" session-start
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# Universal Session Start Hook for Windows PowerShell
|
|
2
|
-
# Calls the Node.js dispatcher for cross-platform compatibility
|
|
3
|
-
|
|
4
|
-
# Find node.exe
|
|
5
|
-
$nodePath = Get-Command node -ErrorAction SilentlyContinue
|
|
6
|
-
|
|
7
|
-
if (-not $nodePath) {
|
|
8
|
-
Write-Host '{"continue": true, "error": "Node.js not found"}'
|
|
9
|
-
exit 0
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
# Get script directory
|
|
13
|
-
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
14
|
-
|
|
15
|
-
# Run the dispatcher
|
|
16
|
-
& node "$scriptDir\dispatcher.mjs" session-start
|
|
1
|
+
# Universal Session Start Hook for Windows PowerShell
|
|
2
|
+
# Calls the Node.js dispatcher for cross-platform compatibility
|
|
3
|
+
|
|
4
|
+
# Find node.exe
|
|
5
|
+
$nodePath = Get-Command node -ErrorAction SilentlyContinue
|
|
6
|
+
|
|
7
|
+
if (-not $nodePath) {
|
|
8
|
+
Write-Host '{"continue": true, "error": "Node.js not found"}'
|
|
9
|
+
exit 0
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
# Get script directory
|
|
13
|
+
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
14
|
+
|
|
15
|
+
# Run the dispatcher
|
|
16
|
+
& node "$scriptDir\dispatcher.mjs" session-start
|