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.
Files changed (58) hide show
  1. package/dist/src/core/external-tools/external-items-counter.d.ts +62 -0
  2. package/dist/src/core/external-tools/external-items-counter.d.ts.map +1 -0
  3. package/dist/src/core/external-tools/external-items-counter.js +206 -0
  4. package/dist/src/core/external-tools/external-items-counter.js.map +1 -0
  5. package/dist/src/core/external-tools/external-items-display.d.ts +39 -0
  6. package/dist/src/core/external-tools/external-items-display.d.ts.map +1 -0
  7. package/dist/src/core/external-tools/external-items-display.js +185 -0
  8. package/dist/src/core/external-tools/external-items-display.js.map +1 -0
  9. package/dist/src/core/external-tools/index.d.ts +8 -0
  10. package/dist/src/core/external-tools/index.d.ts.map +1 -0
  11. package/dist/src/core/external-tools/index.js +8 -0
  12. package/dist/src/core/external-tools/index.js.map +1 -0
  13. package/dist/src/core/external-tools/providers/ado-items-adapter.d.ts +39 -0
  14. package/dist/src/core/external-tools/providers/ado-items-adapter.d.ts.map +1 -0
  15. package/dist/src/core/external-tools/providers/ado-items-adapter.js +188 -0
  16. package/dist/src/core/external-tools/providers/ado-items-adapter.js.map +1 -0
  17. package/dist/src/core/external-tools/providers/github-items-adapter.d.ts +38 -0
  18. package/dist/src/core/external-tools/providers/github-items-adapter.d.ts.map +1 -0
  19. package/dist/src/core/external-tools/providers/github-items-adapter.js +136 -0
  20. package/dist/src/core/external-tools/providers/github-items-adapter.js.map +1 -0
  21. package/dist/src/core/external-tools/providers/index.d.ts +7 -0
  22. package/dist/src/core/external-tools/providers/index.d.ts.map +1 -0
  23. package/dist/src/core/external-tools/providers/index.js +7 -0
  24. package/dist/src/core/external-tools/providers/index.js.map +1 -0
  25. package/dist/src/core/external-tools/providers/jira-items-adapter.d.ts +42 -0
  26. package/dist/src/core/external-tools/providers/jira-items-adapter.d.ts.map +1 -0
  27. package/dist/src/core/external-tools/providers/jira-items-adapter.js +153 -0
  28. package/dist/src/core/external-tools/providers/jira-items-adapter.js.map +1 -0
  29. package/dist/src/core/external-tools/types.d.ts +78 -0
  30. package/dist/src/core/external-tools/types.d.ts.map +1 -0
  31. package/dist/src/core/external-tools/types.js +19 -0
  32. package/dist/src/core/external-tools/types.js.map +1 -0
  33. package/dist/src/core/increment/increment-utils.d.ts +13 -37
  34. package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
  35. package/dist/src/core/increment/increment-utils.js +17 -64
  36. package/dist/src/core/increment/increment-utils.js.map +1 -1
  37. package/dist/src/core/increment/status-change-sync-trigger.d.ts.map +1 -1
  38. package/dist/src/core/increment/status-change-sync-trigger.js +4 -0
  39. package/dist/src/core/increment/status-change-sync-trigger.js.map +1 -1
  40. package/dist/src/core/llm/providers/azure-openai-provider.d.ts.map +1 -1
  41. package/dist/src/core/llm/providers/azure-openai-provider.js +1 -0
  42. package/dist/src/core/llm/providers/azure-openai-provider.js.map +1 -1
  43. package/dist/src/core/llm/providers/bedrock-provider.d.ts.map +1 -1
  44. package/dist/src/core/llm/providers/bedrock-provider.js +2 -0
  45. package/dist/src/core/llm/providers/bedrock-provider.js.map +1 -1
  46. package/dist/src/core/llm/providers/openai-provider.d.ts.map +1 -1
  47. package/dist/src/core/llm/providers/openai-provider.js +1 -0
  48. package/dist/src/core/llm/providers/openai-provider.js.map +1 -1
  49. package/dist/src/core/llm/providers/vertex-ai-provider.d.ts.map +1 -1
  50. package/dist/src/core/llm/providers/vertex-ai-provider.js +1 -0
  51. package/dist/src/core/llm/providers/vertex-ai-provider.js.map +1 -1
  52. package/package.json +1 -5
  53. package/plugins/specweave/commands/specweave-external.md +150 -0
  54. package/plugins/specweave/hooks/universal/hook-wrapper.cmd +26 -26
  55. package/plugins/specweave/hooks/universal/session-start.cmd +16 -16
  56. package/plugins/specweave/hooks/universal/session-start.ps1 +16 -16
  57. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +0 -626
  58. 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