@wundr.io/cli 1.0.11 → 1.0.12

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 (269) hide show
  1. package/bin/wundr.js +8 -4
  2. package/package.json +23 -23
  3. package/src/ai/ai-service.ts +16 -17
  4. package/src/ai/claude-client.ts +16 -16
  5. package/src/ai/conversation-manager.ts +29 -29
  6. package/src/cli.ts +4 -4
  7. package/src/commands/ai.ts +246 -78
  8. package/src/commands/alignment.ts +74 -74
  9. package/src/commands/analyze-optimized.ts +111 -78
  10. package/src/commands/analyze.ts +14 -14
  11. package/src/commands/batch.ts +179 -42
  12. package/src/commands/chat.ts +37 -30
  13. package/src/commands/claude-init.ts +41 -45
  14. package/src/commands/claude-setup.ts +204 -119
  15. package/src/commands/computer-setup.ts +85 -43
  16. package/src/commands/create-command.ts +4 -4
  17. package/src/commands/create.ts +27 -27
  18. package/src/commands/dashboard.ts +24 -24
  19. package/src/commands/govern.ts +25 -25
  20. package/src/commands/governance.ts +34 -34
  21. package/src/commands/guardian.ts +56 -56
  22. package/src/commands/init.ts +25 -22
  23. package/src/commands/orchestrator.ts +68 -41
  24. package/src/commands/performance-optimizer.ts +34 -35
  25. package/src/commands/plugins.ts +27 -27
  26. package/src/commands/project-update.ts +175 -72
  27. package/src/commands/rag.ts +185 -78
  28. package/src/commands/session.ts +35 -35
  29. package/src/commands/setup.ts +40 -344
  30. package/src/commands/test-init.ts +3 -3
  31. package/src/commands/test.ts +4 -4
  32. package/src/commands/watch.ts +28 -29
  33. package/src/commands/worktree.ts +49 -49
  34. package/src/context/context-manager.ts +10 -10
  35. package/src/context/session-manager.ts +41 -41
  36. package/src/framework/command-interface.ts +520 -0
  37. package/src/framework/command-registry.ts +942 -0
  38. package/src/framework/completion-exporter.ts +383 -0
  39. package/src/framework/debug-logger.ts +519 -0
  40. package/src/framework/error-handler.ts +867 -0
  41. package/src/framework/help-generator.ts +540 -0
  42. package/src/framework/index.ts +169 -0
  43. package/src/framework/interactive-repl.ts +703 -0
  44. package/src/framework/output-formatter.ts +834 -0
  45. package/src/framework/progress-manager.ts +539 -0
  46. package/src/index.ts +4 -4
  47. package/src/interactive/interactive-mode.ts +16 -16
  48. package/src/lib/conflict-resolution.ts +799 -9
  49. package/src/lib/merge-strategy.ts +529 -7
  50. package/src/lib/safety-mechanisms.ts +422 -18
  51. package/src/lib/state-detection.ts +1015 -13
  52. package/src/nlp/command-mapper.ts +29 -29
  53. package/src/nlp/command-parser.ts +17 -17
  54. package/src/nlp/intent-classifier.ts +7 -7
  55. package/src/nlp/intent-parser.ts +54 -52
  56. package/src/plugins/plugin-manager.ts +61 -39
  57. package/src/tests/computer-setup-integration.test.ts +46 -15
  58. package/src/types/modules.d.ts +424 -1
  59. package/src/utils/backup-rollback-manager.ts +11 -8
  60. package/src/utils/config-manager.ts +3 -3
  61. package/src/utils/error-handler.ts +2 -2
  62. package/src/utils/logger.ts +22 -22
  63. package/templates/batch/ci-cd.yaml +7 -7
  64. package/test-suites/api/health.spec.ts +20 -23
  65. package/test-suites/helpers/test-config.ts +14 -13
  66. package/test-suites/ui/accessibility.spec.ts +27 -22
  67. package/test-suites/ui/smoke.spec.ts +26 -21
  68. package/LICENSE +0 -21
  69. package/dist/ai/ai-service.d.ts +0 -152
  70. package/dist/ai/ai-service.d.ts.map +0 -1
  71. package/dist/ai/ai-service.js +0 -430
  72. package/dist/ai/ai-service.js.map +0 -1
  73. package/dist/ai/claude-client.d.ts +0 -130
  74. package/dist/ai/claude-client.d.ts.map +0 -1
  75. package/dist/ai/claude-client.js +0 -340
  76. package/dist/ai/claude-client.js.map +0 -1
  77. package/dist/ai/conversation-manager.d.ts +0 -164
  78. package/dist/ai/conversation-manager.d.ts.map +0 -1
  79. package/dist/ai/conversation-manager.js +0 -614
  80. package/dist/ai/conversation-manager.js.map +0 -1
  81. package/dist/ai/index.d.ts +0 -5
  82. package/dist/ai/index.d.ts.map +0 -1
  83. package/dist/ai/index.js +0 -8
  84. package/dist/ai/index.js.map +0 -1
  85. package/dist/cli.d.ts +0 -36
  86. package/dist/cli.d.ts.map +0 -1
  87. package/dist/cli.js +0 -192
  88. package/dist/cli.js.map +0 -1
  89. package/dist/commands/ai.d.ts +0 -89
  90. package/dist/commands/ai.d.ts.map +0 -1
  91. package/dist/commands/ai.js +0 -799
  92. package/dist/commands/ai.js.map +0 -1
  93. package/dist/commands/alignment.d.ts +0 -78
  94. package/dist/commands/alignment.d.ts.map +0 -1
  95. package/dist/commands/alignment.js +0 -817
  96. package/dist/commands/alignment.js.map +0 -1
  97. package/dist/commands/analyze-optimized.d.ts +0 -14
  98. package/dist/commands/analyze-optimized.d.ts.map +0 -1
  99. package/dist/commands/analyze-optimized.js +0 -600
  100. package/dist/commands/analyze-optimized.js.map +0 -1
  101. package/dist/commands/analyze.d.ts +0 -65
  102. package/dist/commands/analyze.d.ts.map +0 -1
  103. package/dist/commands/analyze.js +0 -435
  104. package/dist/commands/analyze.js.map +0 -1
  105. package/dist/commands/batch.d.ts +0 -71
  106. package/dist/commands/batch.d.ts.map +0 -1
  107. package/dist/commands/batch.js +0 -738
  108. package/dist/commands/batch.js.map +0 -1
  109. package/dist/commands/chat.d.ts +0 -71
  110. package/dist/commands/chat.d.ts.map +0 -1
  111. package/dist/commands/chat.js +0 -674
  112. package/dist/commands/chat.js.map +0 -1
  113. package/dist/commands/claude-init.d.ts +0 -28
  114. package/dist/commands/claude-init.d.ts.map +0 -1
  115. package/dist/commands/claude-init.js +0 -591
  116. package/dist/commands/claude-init.js.map +0 -1
  117. package/dist/commands/claude-setup.d.ts +0 -119
  118. package/dist/commands/claude-setup.d.ts.map +0 -1
  119. package/dist/commands/claude-setup.js +0 -1073
  120. package/dist/commands/claude-setup.js.map +0 -1
  121. package/dist/commands/computer-setup-commands.d.ts +0 -53
  122. package/dist/commands/computer-setup-commands.d.ts.map +0 -1
  123. package/dist/commands/computer-setup-commands.js +0 -705
  124. package/dist/commands/computer-setup-commands.js.map +0 -1
  125. package/dist/commands/computer-setup.d.ts +0 -7
  126. package/dist/commands/computer-setup.d.ts.map +0 -1
  127. package/dist/commands/computer-setup.js +0 -849
  128. package/dist/commands/computer-setup.js.map +0 -1
  129. package/dist/commands/create-command.d.ts +0 -7
  130. package/dist/commands/create-command.d.ts.map +0 -1
  131. package/dist/commands/create-command.js +0 -158
  132. package/dist/commands/create-command.js.map +0 -1
  133. package/dist/commands/create.d.ts +0 -74
  134. package/dist/commands/create.d.ts.map +0 -1
  135. package/dist/commands/create.js +0 -556
  136. package/dist/commands/create.js.map +0 -1
  137. package/dist/commands/dashboard.d.ts +0 -91
  138. package/dist/commands/dashboard.d.ts.map +0 -1
  139. package/dist/commands/dashboard.js +0 -538
  140. package/dist/commands/dashboard.js.map +0 -1
  141. package/dist/commands/govern.d.ts +0 -70
  142. package/dist/commands/govern.d.ts.map +0 -1
  143. package/dist/commands/govern.js +0 -481
  144. package/dist/commands/govern.js.map +0 -1
  145. package/dist/commands/governance.d.ts +0 -17
  146. package/dist/commands/governance.d.ts.map +0 -1
  147. package/dist/commands/governance.js +0 -703
  148. package/dist/commands/governance.js.map +0 -1
  149. package/dist/commands/guardian.d.ts +0 -20
  150. package/dist/commands/guardian.d.ts.map +0 -1
  151. package/dist/commands/guardian.js +0 -597
  152. package/dist/commands/guardian.js.map +0 -1
  153. package/dist/commands/init.d.ts +0 -59
  154. package/dist/commands/init.d.ts.map +0 -1
  155. package/dist/commands/init.js +0 -650
  156. package/dist/commands/init.js.map +0 -1
  157. package/dist/commands/orchestrator.d.ts +0 -7
  158. package/dist/commands/orchestrator.d.ts.map +0 -1
  159. package/dist/commands/orchestrator.js +0 -571
  160. package/dist/commands/orchestrator.js.map +0 -1
  161. package/dist/commands/performance-optimizer.d.ts +0 -30
  162. package/dist/commands/performance-optimizer.d.ts.map +0 -1
  163. package/dist/commands/performance-optimizer.js +0 -650
  164. package/dist/commands/performance-optimizer.js.map +0 -1
  165. package/dist/commands/plugins.d.ts +0 -87
  166. package/dist/commands/plugins.d.ts.map +0 -1
  167. package/dist/commands/plugins.js +0 -685
  168. package/dist/commands/plugins.js.map +0 -1
  169. package/dist/commands/rag.d.ts +0 -7
  170. package/dist/commands/rag.d.ts.map +0 -1
  171. package/dist/commands/rag.js +0 -748
  172. package/dist/commands/rag.js.map +0 -1
  173. package/dist/commands/session.d.ts +0 -41
  174. package/dist/commands/session.d.ts.map +0 -1
  175. package/dist/commands/session.js +0 -441
  176. package/dist/commands/session.js.map +0 -1
  177. package/dist/commands/setup.d.ts +0 -29
  178. package/dist/commands/setup.d.ts.map +0 -1
  179. package/dist/commands/setup.js +0 -397
  180. package/dist/commands/setup.js.map +0 -1
  181. package/dist/commands/test-init.d.ts +0 -9
  182. package/dist/commands/test-init.d.ts.map +0 -1
  183. package/dist/commands/test-init.js +0 -222
  184. package/dist/commands/test-init.js.map +0 -1
  185. package/dist/commands/test.d.ts +0 -25
  186. package/dist/commands/test.d.ts.map +0 -1
  187. package/dist/commands/test.js +0 -217
  188. package/dist/commands/test.js.map +0 -1
  189. package/dist/commands/vp.d.ts +0 -7
  190. package/dist/commands/vp.d.ts.map +0 -1
  191. package/dist/commands/vp.js +0 -571
  192. package/dist/commands/vp.js.map +0 -1
  193. package/dist/commands/watch.d.ts +0 -76
  194. package/dist/commands/watch.d.ts.map +0 -1
  195. package/dist/commands/watch.js +0 -613
  196. package/dist/commands/watch.js.map +0 -1
  197. package/dist/commands/worktree.d.ts +0 -63
  198. package/dist/commands/worktree.d.ts.map +0 -1
  199. package/dist/commands/worktree.js +0 -774
  200. package/dist/commands/worktree.js.map +0 -1
  201. package/dist/context/context-manager.d.ts +0 -155
  202. package/dist/context/context-manager.d.ts.map +0 -1
  203. package/dist/context/context-manager.js +0 -383
  204. package/dist/context/context-manager.js.map +0 -1
  205. package/dist/context/index.d.ts +0 -3
  206. package/dist/context/index.d.ts.map +0 -1
  207. package/dist/context/index.js +0 -6
  208. package/dist/context/index.js.map +0 -1
  209. package/dist/context/session-manager.d.ts +0 -207
  210. package/dist/context/session-manager.d.ts.map +0 -1
  211. package/dist/context/session-manager.js +0 -686
  212. package/dist/context/session-manager.js.map +0 -1
  213. package/dist/index.d.ts +0 -8
  214. package/dist/index.d.ts.map +0 -1
  215. package/dist/index.js +0 -51
  216. package/dist/index.js.map +0 -1
  217. package/dist/interactive/interactive-mode.d.ts +0 -76
  218. package/dist/interactive/interactive-mode.d.ts.map +0 -1
  219. package/dist/interactive/interactive-mode.js +0 -732
  220. package/dist/interactive/interactive-mode.js.map +0 -1
  221. package/dist/nlp/command-mapper.d.ts +0 -174
  222. package/dist/nlp/command-mapper.d.ts.map +0 -1
  223. package/dist/nlp/command-mapper.js +0 -624
  224. package/dist/nlp/command-mapper.js.map +0 -1
  225. package/dist/nlp/command-parser.d.ts +0 -106
  226. package/dist/nlp/command-parser.d.ts.map +0 -1
  227. package/dist/nlp/command-parser.js +0 -417
  228. package/dist/nlp/command-parser.js.map +0 -1
  229. package/dist/nlp/index.d.ts +0 -5
  230. package/dist/nlp/index.d.ts.map +0 -1
  231. package/dist/nlp/index.js +0 -8
  232. package/dist/nlp/index.js.map +0 -1
  233. package/dist/nlp/intent-classifier.d.ts +0 -59
  234. package/dist/nlp/intent-classifier.d.ts.map +0 -1
  235. package/dist/nlp/intent-classifier.js +0 -384
  236. package/dist/nlp/intent-classifier.js.map +0 -1
  237. package/dist/nlp/intent-parser.d.ts +0 -152
  238. package/dist/nlp/intent-parser.d.ts.map +0 -1
  239. package/dist/nlp/intent-parser.js +0 -744
  240. package/dist/nlp/intent-parser.js.map +0 -1
  241. package/dist/plugins/plugin-manager.d.ts +0 -120
  242. package/dist/plugins/plugin-manager.d.ts.map +0 -1
  243. package/dist/plugins/plugin-manager.js +0 -595
  244. package/dist/plugins/plugin-manager.js.map +0 -1
  245. package/dist/types/index.d.ts +0 -224
  246. package/dist/types/index.d.ts.map +0 -1
  247. package/dist/types/index.js +0 -3
  248. package/dist/types/index.js.map +0 -1
  249. package/dist/utils/backup-rollback-manager.d.ts +0 -72
  250. package/dist/utils/backup-rollback-manager.d.ts.map +0 -1
  251. package/dist/utils/backup-rollback-manager.js +0 -289
  252. package/dist/utils/backup-rollback-manager.js.map +0 -1
  253. package/dist/utils/claude-config-installer.d.ts +0 -98
  254. package/dist/utils/claude-config-installer.d.ts.map +0 -1
  255. package/dist/utils/claude-config-installer.js +0 -678
  256. package/dist/utils/claude-config-installer.js.map +0 -1
  257. package/dist/utils/config-manager.d.ts +0 -73
  258. package/dist/utils/config-manager.d.ts.map +0 -1
  259. package/dist/utils/config-manager.js +0 -339
  260. package/dist/utils/config-manager.js.map +0 -1
  261. package/dist/utils/error-handler.d.ts +0 -46
  262. package/dist/utils/error-handler.d.ts.map +0 -1
  263. package/dist/utils/error-handler.js +0 -169
  264. package/dist/utils/error-handler.js.map +0 -1
  265. package/dist/utils/logger.d.ts +0 -25
  266. package/dist/utils/logger.d.ts.map +0 -1
  267. package/dist/utils/logger.js +0 -105
  268. package/dist/utils/logger.js.map +0 -1
  269. package/src/commands/computer-setup-commands.ts +0 -872
@@ -1,597 +0,0 @@
1
- "use strict";
2
- /**
3
- * Guardian Dashboard CLI Commands
4
- *
5
- * Provides CLI access to the Guardian Dashboard for alignment monitoring,
6
- * drift detection, and intervention management.
7
- *
8
- * Commands:
9
- * - wundr guardian report - Generate daily alignment report
10
- * - wundr guardian review - Show sessions requiring review
11
- * - wundr guardian interventions - List recent interventions
12
- * - wundr guardian dashboard - Open/display dashboard
13
- */
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.createGuardianCommand = createGuardianCommand;
16
- exports.guardianCommand = createGuardianCommand;
17
- const tslib_1 = require("tslib");
18
- const fs = tslib_1.__importStar(require("fs/promises"));
19
- const os = tslib_1.__importStar(require("os"));
20
- const path = tslib_1.__importStar(require("path"));
21
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
22
- const commander_1 = require("commander");
23
- const ora_1 = tslib_1.__importDefault(require("ora"));
24
- const guardian_dashboard_1 = require("@wundr.io/guardian-dashboard");
25
- // ============================================================================
26
- // Constants
27
- // ============================================================================
28
- const GUARDIAN_BASE_DIR = path.join(os.homedir(), '.wundr', 'guardian');
29
- const INTERVENTIONS_FILE = path.join(GUARDIAN_BASE_DIR, 'interventions.json');
30
- const REVIEW_QUEUE_FILE = path.join(GUARDIAN_BASE_DIR, 'review-queue.json');
31
- const SESSIONS_STATE_FILE = path.join(os.homedir(), '.wundr', 'sessions', 'state.json');
32
- const REPORTS_DIR = path.join(GUARDIAN_BASE_DIR, 'reports');
33
- // ============================================================================
34
- // Utility Functions
35
- // ============================================================================
36
- function getTimestamp() {
37
- return new Date().toISOString();
38
- }
39
- function formatDate(date) {
40
- return date.toISOString().split('T')[0] ?? '';
41
- }
42
- function padRight(str, length) {
43
- return str.length >= length
44
- ? str.substring(0, length)
45
- : str + ' '.repeat(length - str.length);
46
- }
47
- function truncate(str, length) {
48
- if (str.length <= length) {
49
- return str;
50
- }
51
- return str.substring(0, length - 3) + '...';
52
- }
53
- async function ensureGuardianDir() {
54
- await fs.mkdir(GUARDIAN_BASE_DIR, { recursive: true });
55
- await fs.mkdir(REPORTS_DIR, { recursive: true });
56
- }
57
- /**
58
- * Get color function based on severity
59
- */
60
- function getSeverityColor(severity) {
61
- switch (severity) {
62
- case 'critical':
63
- return chalk_1.default.red;
64
- case 'high':
65
- return chalk_1.default.yellow;
66
- case 'medium':
67
- return chalk_1.default.blue;
68
- case 'low':
69
- return chalk_1.default.gray;
70
- default:
71
- return chalk_1.default.white;
72
- }
73
- }
74
- /**
75
- * Get color function based on health status
76
- */
77
- function getStatusColor(status) {
78
- switch (status) {
79
- case 'HEALTHY':
80
- return chalk_1.default.green;
81
- case 'CONCERNING':
82
- return chalk_1.default.yellow;
83
- case 'CRITICAL':
84
- return chalk_1.default.red;
85
- default:
86
- return chalk_1.default.white;
87
- }
88
- }
89
- /**
90
- * Format severity badge
91
- */
92
- function getSeverityBadge(severity) {
93
- const badges = {
94
- critical: '[CRITICAL]',
95
- high: '[HIGH]',
96
- medium: '[MEDIUM]',
97
- low: '[LOW]',
98
- };
99
- return badges[severity] ?? '[UNKNOWN]';
100
- }
101
- /**
102
- * Load guardian state from disk
103
- */
104
- async function loadGuardianState() {
105
- try {
106
- await ensureGuardianDir();
107
- let interventions = [];
108
- let reviewQueue = [];
109
- try {
110
- const interventionsContent = await fs.readFile(INTERVENTIONS_FILE, 'utf-8');
111
- interventions = JSON.parse(interventionsContent);
112
- }
113
- catch {
114
- // File doesn't exist yet
115
- }
116
- try {
117
- const reviewQueueContent = await fs.readFile(REVIEW_QUEUE_FILE, 'utf-8');
118
- reviewQueue = JSON.parse(reviewQueueContent);
119
- }
120
- catch {
121
- // File doesn't exist yet
122
- }
123
- return { interventions, reviewQueue };
124
- }
125
- catch {
126
- return { interventions: [], reviewQueue: [] };
127
- }
128
- }
129
- /**
130
- * Save guardian state to disk
131
- */
132
- async function saveGuardianState(state) {
133
- await ensureGuardianDir();
134
- await fs.writeFile(INTERVENTIONS_FILE, JSON.stringify(state.interventions, null, 2));
135
- await fs.writeFile(REVIEW_QUEUE_FILE, JSON.stringify(state.reviewQueue, null, 2));
136
- }
137
- /**
138
- * Load session drift data from sessions state
139
- */
140
- async function loadSessionDriftData() {
141
- try {
142
- const content = await fs.readFile(SESSIONS_STATE_FILE, 'utf-8');
143
- const state = JSON.parse(content);
144
- // Convert session data to drift data format
145
- return (state.sessions ?? []).map(session => ({
146
- sessionId: session.sessionId,
147
- timestamp: new Date(session.startedAt),
148
- driftScore: calculateDriftScoreFromSession(session),
149
- metrics: {
150
- testCoverage: 80, // Default values - would come from actual session data
151
- codePatternAdherence: 85,
152
- documentationCoverage: 70,
153
- securityCompliance: 90,
154
- performanceBenchmark: 75,
155
- },
156
- }));
157
- }
158
- catch {
159
- return [];
160
- }
161
- }
162
- /**
163
- * Calculate drift score from session data
164
- */
165
- function calculateDriftScoreFromSession(session) {
166
- // Simplified drift calculation - in production would use actual metrics
167
- const baseScore = 85;
168
- const errorPenalty = (session.metrics?.errors ?? 0) * 5;
169
- return Math.max(0, Math.min(100, baseScore - errorPenalty));
170
- }
171
- // ============================================================================
172
- // Command Implementations
173
- // ============================================================================
174
- /**
175
- * Generate daily alignment report
176
- */
177
- async function generateReport(options) {
178
- const spinner = (0, ora_1.default)('Generating alignment report...').start();
179
- try {
180
- await ensureGuardianDir();
181
- // Parse date option
182
- const reportDate = options.date ? new Date(options.date) : new Date();
183
- const dateStr = formatDate(reportDate);
184
- // Load session data
185
- const sessionData = await loadSessionDriftData();
186
- const guardianState = await loadGuardianState();
187
- // Create aggregator and calculate report
188
- const aggregator = new guardian_dashboard_1.DriftScoreAggregator();
189
- aggregator.addSessions(sessionData);
190
- const report = aggregator.aggregateSessionScores(sessionData);
191
- // Get intervention recommendations
192
- const recommender = new guardian_dashboard_1.InterventionRecommender();
193
- const recommendations = sessionData.length > 0
194
- ? recommender.recommendInterventions({
195
- policyViolationRate: 0.02,
196
- intentOutcomeGap: 0.1,
197
- evaluatorDisagreementRate: 0.15,
198
- })
199
- : [];
200
- spinner.stop();
201
- // Format output
202
- const format = options.format ?? 'md';
203
- if (format === 'json') {
204
- const jsonReport = {
205
- date: dateStr,
206
- generatedAt: getTimestamp(),
207
- summary: {
208
- totalSessions: report.totalSessions,
209
- averageDriftScore: report.averageScore,
210
- minScore: report.minScore,
211
- maxScore: report.maxScore,
212
- overallStatus: report.overallStatus,
213
- trend: report.trend,
214
- },
215
- criticalSessions: report.criticalSessions.length,
216
- concerningSessions: report.concerningSessions.length,
217
- interventions: recommendations,
218
- reviewQueue: guardianState.reviewQueue.filter(r => !r.reviewed).length,
219
- };
220
- if (options.output) {
221
- await fs.writeFile(options.output, JSON.stringify(jsonReport, null, 2));
222
- console.log(chalk_1.default.green(`Report saved to: ${options.output}`));
223
- }
224
- else {
225
- console.log(JSON.stringify(jsonReport, null, 2));
226
- }
227
- return;
228
- }
229
- // Markdown format
230
- const mdReport = generateMarkdownReport(dateStr, report, recommendations, guardianState);
231
- if (options.output) {
232
- await fs.writeFile(options.output, mdReport);
233
- console.log(chalk_1.default.green(`Report saved to: ${options.output}`));
234
- }
235
- else {
236
- // Display in terminal
237
- displayTerminalReport(dateStr, report, recommendations, guardianState);
238
- }
239
- }
240
- catch (error) {
241
- spinner.fail('Failed to generate report');
242
- console.error(chalk_1.default.red(error instanceof Error ? error.message : String(error)));
243
- }
244
- }
245
- /**
246
- * Generate markdown report
247
- */
248
- function generateMarkdownReport(dateStr, report, recommendations, guardianState) {
249
- let md = '# Guardian Daily Alignment Report\n\n';
250
- md += `**Date:** ${dateStr}\n`;
251
- md += `**Generated:** ${getTimestamp()}\n\n`;
252
- md += '## Summary\n\n';
253
- md += '| Metric | Value |\n';
254
- md += '|--------|-------|\n';
255
- md += `| Total Sessions | ${report.totalSessions} |\n`;
256
- md += `| Average Drift Score | ${report.averageScore.toFixed(1)} |\n`;
257
- md += `| Overall Status | ${report.overallStatus} |\n`;
258
- md += `| Trend | ${report.trend} |\n`;
259
- md += `| Critical Sessions | ${report.criticalSessions.length} |\n`;
260
- md += `| Concerning Sessions | ${report.concerningSessions.length} |\n`;
261
- md += '\n';
262
- if (recommendations.length > 0) {
263
- md += '## Intervention Recommendations\n\n';
264
- for (const rec of recommendations) {
265
- md += `### ${rec.dimension} (${rec.severity.toUpperCase()})\n\n`;
266
- md += `- **Action:** ${rec.action}\n`;
267
- md += `- **Rationale:** ${rec.rationale}\n`;
268
- md += `- **Urgency:** ${rec.urgency} hours\n\n`;
269
- }
270
- }
271
- const pendingReviews = guardianState.reviewQueue.filter(r => !r.reviewed);
272
- if (pendingReviews.length > 0) {
273
- md += '## Sessions Requiring Review\n\n';
274
- md += '| Session ID | Severity | Drift Score | Reason |\n';
275
- md += '|------------|----------|-------------|--------|\n';
276
- for (const item of pendingReviews) {
277
- md += `| ${item.sessionId} | ${item.severity.toUpperCase()} | ${item.driftScore.toFixed(1)} | ${item.reason} |\n`;
278
- }
279
- md += '\n';
280
- }
281
- return md;
282
- }
283
- /**
284
- * Display report in terminal with colors
285
- */
286
- function displayTerminalReport(dateStr, report, recommendations, guardianState) {
287
- console.log(chalk_1.default.cyan('\n' + '='.repeat(70)));
288
- console.log(chalk_1.default.cyan.bold(' GUARDIAN DAILY ALIGNMENT REPORT'));
289
- console.log(chalk_1.default.cyan('='.repeat(70)));
290
- console.log(chalk_1.default.gray(`Date: ${dateStr}`));
291
- console.log(chalk_1.default.gray(`Generated: ${getTimestamp()}\n`));
292
- // Summary section
293
- console.log(chalk_1.default.bold('Summary'));
294
- console.log(chalk_1.default.gray('-'.repeat(40)));
295
- const statusColor = getStatusColor(report.overallStatus);
296
- console.log(`Total Sessions: ${chalk_1.default.white(report.totalSessions)}`);
297
- console.log(`Average Drift Score: ${chalk_1.default.white(report.averageScore.toFixed(1))}`);
298
- console.log(`Overall Status: ${statusColor(report.overallStatus)}`);
299
- console.log(`Trend: ${chalk_1.default.white(report.trend)}`);
300
- console.log(`Critical Sessions: ${report.criticalSessions.length > 0 ? chalk_1.default.red(report.criticalSessions.length) : chalk_1.default.green('0')}`);
301
- console.log(`Concerning Sessions: ${report.concerningSessions.length > 0 ? chalk_1.default.yellow(report.concerningSessions.length) : chalk_1.default.green('0')}`);
302
- console.log('');
303
- // Interventions section
304
- if (recommendations.length > 0) {
305
- console.log(chalk_1.default.bold('Intervention Recommendations'));
306
- console.log(chalk_1.default.gray('-'.repeat(40)));
307
- for (const rec of recommendations) {
308
- const severityColor = getSeverityColor(rec.severity);
309
- console.log(`${severityColor(getSeverityBadge(rec.severity))} ${chalk_1.default.white(rec.dimension)}`);
310
- console.log(` Action: ${rec.action}`);
311
- console.log(` Urgency: ${rec.urgency}h`);
312
- console.log('');
313
- }
314
- }
315
- else {
316
- console.log(chalk_1.default.green('No interventions required.'));
317
- console.log('');
318
- }
319
- // Review queue
320
- const pendingReviews = guardianState.reviewQueue.filter(r => !r.reviewed);
321
- if (pendingReviews.length > 0) {
322
- console.log(chalk_1.default.bold('Sessions Requiring Review'));
323
- console.log(chalk_1.default.gray('-'.repeat(40)));
324
- console.log(chalk_1.default.yellow(`${pendingReviews.length} session(s) flagged for Guardian attention.`));
325
- console.log(chalk_1.default.gray('Run "wundr guardian review" for details.\n'));
326
- }
327
- console.log(chalk_1.default.cyan('='.repeat(70)));
328
- }
329
- /**
330
- * Show sessions requiring Guardian review
331
- */
332
- async function showReviewQueue() {
333
- const spinner = (0, ora_1.default)('Loading review queue...').start();
334
- try {
335
- const state = await loadGuardianState();
336
- const pendingReviews = state.reviewQueue.filter(r => !r.reviewed);
337
- spinner.stop();
338
- console.log(chalk_1.default.cyan('\nGuardian Review Queue'));
339
- console.log(chalk_1.default.gray('='.repeat(90)));
340
- if (pendingReviews.length === 0) {
341
- console.log(chalk_1.default.green('\nNo sessions require Guardian review.'));
342
- console.log(chalk_1.default.gray('All systems operating within acceptable parameters.\n'));
343
- return;
344
- }
345
- // Table header
346
- console.log(chalk_1.default.cyan(padRight('Session ID', 20) +
347
- padRight('Severity', 12) +
348
- padRight('Drift Score', 14) +
349
- padRight('Flagged At', 22) +
350
- padRight('Reason', 22)));
351
- console.log(chalk_1.default.gray('-'.repeat(90)));
352
- // Table rows
353
- for (const item of pendingReviews) {
354
- const severityColor = getSeverityColor(item.severity);
355
- const flaggedAt = new Date(item.flaggedAt).toLocaleString();
356
- console.log(padRight(item.sessionId, 20) +
357
- severityColor(padRight(getSeverityBadge(item.severity), 12)) +
358
- padRight(item.driftScore.toFixed(1), 14) +
359
- padRight(flaggedAt, 22) +
360
- chalk_1.default.gray(truncate(item.reason, 22)));
361
- }
362
- console.log(chalk_1.default.gray('-'.repeat(90)));
363
- console.log(chalk_1.default.gray(`Total: ${pendingReviews.length} session(s) pending review\n`));
364
- // Show summary by severity
365
- const criticalCount = pendingReviews.filter(r => r.severity === 'critical').length;
366
- const highCount = pendingReviews.filter(r => r.severity === 'high').length;
367
- const mediumCount = pendingReviews.filter(r => r.severity === 'medium').length;
368
- if (criticalCount > 0) {
369
- console.log(chalk_1.default.red(` CRITICAL: ${criticalCount}`));
370
- }
371
- if (highCount > 0) {
372
- console.log(chalk_1.default.yellow(` HIGH: ${highCount}`));
373
- }
374
- if (mediumCount > 0) {
375
- console.log(chalk_1.default.blue(` MEDIUM: ${mediumCount}`));
376
- }
377
- console.log('');
378
- }
379
- catch (error) {
380
- spinner.fail('Failed to load review queue');
381
- console.error(chalk_1.default.red(error instanceof Error ? error.message : String(error)));
382
- }
383
- }
384
- /**
385
- * List recent interventions
386
- */
387
- async function listInterventions(options) {
388
- const spinner = (0, ora_1.default)('Loading interventions...').start();
389
- try {
390
- const state = await loadGuardianState();
391
- let interventions = state.interventions;
392
- // Filter by days
393
- const days = parseInt(options.days ?? '7', 10);
394
- const cutoffDate = new Date();
395
- cutoffDate.setDate(cutoffDate.getDate() - days);
396
- interventions = interventions.filter(i => new Date(i.timestamp) >= cutoffDate);
397
- // Filter by session
398
- if (options.session) {
399
- interventions = interventions.filter(i => i.sessionId === options.session);
400
- }
401
- // Sort by timestamp descending (most recent first)
402
- interventions.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
403
- spinner.stop();
404
- console.log(chalk_1.default.cyan('\nGuardian Interventions'));
405
- console.log(chalk_1.default.gray(`Last ${days} days${options.session ? ` - Session: ${options.session}` : ''}`));
406
- console.log(chalk_1.default.gray('='.repeat(100)));
407
- if (interventions.length === 0) {
408
- console.log(chalk_1.default.green('\nNo interventions recorded in the specified time period.'));
409
- console.log('');
410
- return;
411
- }
412
- // Table header
413
- console.log(chalk_1.default.cyan(padRight('ID', 12) +
414
- padRight('Session', 16) +
415
- padRight('Severity', 12) +
416
- padRight('Dimension', 20) +
417
- padRight('Status', 12) +
418
- padRight('Time', 18)));
419
- console.log(chalk_1.default.gray('-'.repeat(100)));
420
- // Table rows
421
- for (const intervention of interventions) {
422
- const severityColor = getSeverityColor(intervention.severity);
423
- const statusColor = intervention.status === 'applied'
424
- ? chalk_1.default.green
425
- : intervention.status === 'dismissed'
426
- ? chalk_1.default.gray
427
- : chalk_1.default.yellow;
428
- const timestamp = new Date(intervention.timestamp).toLocaleString();
429
- console.log(padRight(intervention.id, 12) +
430
- padRight(truncate(intervention.sessionId, 14), 16) +
431
- severityColor(padRight(getSeverityBadge(intervention.severity), 12)) +
432
- padRight(truncate(intervention.dimension, 18), 20) +
433
- statusColor(padRight(`[${intervention.status.toUpperCase()}]`, 12)) +
434
- chalk_1.default.gray(padRight(timestamp, 18)));
435
- }
436
- console.log(chalk_1.default.gray('-'.repeat(100)));
437
- console.log(chalk_1.default.gray(`Total: ${interventions.length} intervention(s)\n`));
438
- // Show summary
439
- const applied = interventions.filter(i => i.status === 'applied').length;
440
- const pending = interventions.filter(i => i.status === 'pending').length;
441
- const dismissed = interventions.filter(i => i.status === 'dismissed').length;
442
- console.log(chalk_1.default.gray('Summary:'));
443
- console.log(` Applied: ${chalk_1.default.green(applied)} Pending: ${chalk_1.default.yellow(pending)} Dismissed: ${chalk_1.default.gray(dismissed)}`);
444
- console.log('');
445
- }
446
- catch (error) {
447
- spinner.fail('Failed to load interventions');
448
- console.error(chalk_1.default.red(error instanceof Error ? error.message : String(error)));
449
- }
450
- }
451
- /**
452
- * Display terminal-based dashboard
453
- */
454
- async function displayDashboard() {
455
- const spinner = (0, ora_1.default)('Loading Guardian Dashboard...').start();
456
- try {
457
- const guardianState = await loadGuardianState();
458
- const sessionData = await loadSessionDriftData();
459
- // Calculate aggregated stats
460
- const aggregator = new guardian_dashboard_1.DriftScoreAggregator();
461
- aggregator.addSessions(sessionData);
462
- const report = aggregator.aggregateSessionScores(sessionData);
463
- // Get recommendations
464
- const recommender = new guardian_dashboard_1.InterventionRecommender();
465
- const recommendations = recommender.recommendInterventions({
466
- policyViolationRate: 0.02,
467
- intentOutcomeGap: 0.1,
468
- evaluatorDisagreementRate: 0.15,
469
- });
470
- spinner.stop();
471
- // Clear screen and display dashboard
472
- console.clear();
473
- console.log(chalk_1.default.cyan.bold('\n' + '='.repeat(80)));
474
- console.log(chalk_1.default.cyan.bold(' GUARDIAN ALIGNMENT DASHBOARD'));
475
- console.log(chalk_1.default.cyan.bold('='.repeat(80)));
476
- console.log(chalk_1.default.gray(` Last Updated: ${new Date().toLocaleString()}`));
477
- console.log('');
478
- // Status Overview Panel
479
- console.log(chalk_1.default.cyan.bold(' STATUS OVERVIEW'));
480
- console.log(chalk_1.default.gray(' ' + '-'.repeat(78)));
481
- const statusColor = getStatusColor(report.overallStatus);
482
- console.log(` Overall Status: ${statusColor(report.overallStatus.padEnd(12))} Avg Drift Score: ${chalk_1.default.white(report.averageScore.toFixed(1).padEnd(8))} Trend: ${chalk_1.default.white(report.trend)}`);
483
- console.log('');
484
- // Sessions Panel
485
- console.log(chalk_1.default.cyan.bold(' SESSIONS'));
486
- console.log(chalk_1.default.gray(' ' + '-'.repeat(78)));
487
- console.log(` Total: ${chalk_1.default.white(report.totalSessions.toString().padEnd(6))} Critical: ${report.criticalSessions.length > 0 ? chalk_1.default.red(report.criticalSessions.length.toString().padEnd(4)) : chalk_1.default.green('0'.padEnd(4))} Concerning: ${report.concerningSessions.length > 0 ? chalk_1.default.yellow(report.concerningSessions.length.toString().padEnd(4)) : chalk_1.default.green('0'.padEnd(4))} Healthy: ${chalk_1.default.green((report.totalSessions - report.criticalSessions.length - report.concerningSessions.length).toString())}`);
488
- console.log('');
489
- // Interventions Panel
490
- console.log(chalk_1.default.cyan.bold(' INTERVENTIONS'));
491
- console.log(chalk_1.default.gray(' ' + '-'.repeat(78)));
492
- const pendingInterventions = guardianState.interventions.filter(i => i.status === 'pending');
493
- const recentApplied = guardianState.interventions.filter(i => i.status === 'applied' &&
494
- new Date(i.timestamp) > new Date(Date.now() - 24 * 60 * 60 * 1000));
495
- console.log(` Pending: ${pendingInterventions.length > 0 ? chalk_1.default.yellow(pendingInterventions.length.toString().padEnd(6)) : chalk_1.default.green('0'.padEnd(6))} Applied (24h): ${chalk_1.default.white(recentApplied.length.toString().padEnd(6))} Recommended: ${recommendations.length > 0 ? chalk_1.default.yellow(recommendations.length.toString()) : chalk_1.default.green('0')}`);
496
- console.log('');
497
- // Review Queue Panel
498
- console.log(chalk_1.default.cyan.bold(' REVIEW QUEUE'));
499
- console.log(chalk_1.default.gray(' ' + '-'.repeat(78)));
500
- const pendingReviews = guardianState.reviewQueue.filter(r => !r.reviewed);
501
- if (pendingReviews.length === 0) {
502
- console.log(chalk_1.default.green(' No sessions require Guardian review.'));
503
- }
504
- else {
505
- const criticalReviews = pendingReviews.filter(r => r.severity === 'critical').length;
506
- const highReviews = pendingReviews.filter(r => r.severity === 'high').length;
507
- console.log(` Pending: ${chalk_1.default.yellow(pendingReviews.length.toString().padEnd(6))} Critical: ${criticalReviews > 0 ? chalk_1.default.red(criticalReviews.toString().padEnd(6)) : chalk_1.default.green('0'.padEnd(6))} High: ${highReviews > 0 ? chalk_1.default.yellow(highReviews.toString()) : chalk_1.default.green('0')}`);
508
- }
509
- console.log('');
510
- // Recommendations Panel
511
- if (recommendations.length > 0) {
512
- console.log(chalk_1.default.cyan.bold(' ACTIVE RECOMMENDATIONS'));
513
- console.log(chalk_1.default.gray(' ' + '-'.repeat(78)));
514
- for (const rec of recommendations.slice(0, 3)) {
515
- const severityColor = getSeverityColor(rec.severity);
516
- console.log(` ${severityColor(getSeverityBadge(rec.severity))} ${rec.dimension}: ${truncate(rec.action, 50)}`);
517
- }
518
- if (recommendations.length > 3) {
519
- console.log(chalk_1.default.gray(` ... and ${recommendations.length - 3} more`));
520
- }
521
- console.log('');
522
- }
523
- // Quick Actions
524
- console.log(chalk_1.default.cyan.bold(' QUICK ACTIONS'));
525
- console.log(chalk_1.default.gray(' ' + '-'.repeat(78)));
526
- console.log(chalk_1.default.gray(' wundr guardian report - Generate full alignment report'));
527
- console.log(chalk_1.default.gray(' wundr guardian review - View sessions requiring attention'));
528
- console.log(chalk_1.default.gray(' wundr guardian interventions - List recent interventions'));
529
- console.log('');
530
- console.log(chalk_1.default.cyan.bold('='.repeat(80)));
531
- console.log('');
532
- }
533
- catch (error) {
534
- spinner.fail('Failed to load dashboard');
535
- console.error(chalk_1.default.red(error instanceof Error ? error.message : String(error)));
536
- }
537
- }
538
- // ============================================================================
539
- // Command Factory
540
- // ============================================================================
541
- /**
542
- * Creates the guardian command with all subcommands
543
- */
544
- function createGuardianCommand() {
545
- const guardian = new commander_1.Command('guardian')
546
- .description('Guardian Dashboard - AI alignment monitoring and intervention management')
547
- .addHelpText('after', chalk_1.default.gray(`
548
- Examples:
549
- ${chalk_1.default.green('wundr guardian')} Display Guardian dashboard
550
- ${chalk_1.default.green('wundr guardian report')} Generate daily alignment report
551
- ${chalk_1.default.green('wundr guardian report --date 2025-01-15')} Generate report for specific date
552
- ${chalk_1.default.green('wundr guardian report -o report.md')} Save report to file
553
- ${chalk_1.default.green('wundr guardian review')} Show sessions requiring Guardian review
554
- ${chalk_1.default.green('wundr guardian interventions')} List recent interventions
555
- ${chalk_1.default.green('wundr guardian interventions --days 14')} Show interventions from last 14 days
556
- `));
557
- // Default action - show dashboard
558
- guardian.action(async () => {
559
- await displayDashboard();
560
- });
561
- // Report subcommand
562
- guardian
563
- .command('report')
564
- .description('Generate daily alignment report')
565
- .option('-d, --date <date>', 'Report date (YYYY-MM-DD format)')
566
- .option('-o, --output <file>', 'Output file path')
567
- .option('-f, --format <format>', 'Output format (md|json|html)', 'md')
568
- .action(async (options) => {
569
- await generateReport(options);
570
- });
571
- // Review subcommand
572
- guardian
573
- .command('review')
574
- .description('Show sessions requiring Guardian review')
575
- .action(async () => {
576
- await showReviewQueue();
577
- });
578
- // Interventions subcommand
579
- guardian
580
- .command('interventions')
581
- .description('List recent interventions')
582
- .option('-d, --days <n>', 'Number of days to look back', '7')
583
- .option('-s, --session <id>', 'Filter by session ID')
584
- .action(async (options) => {
585
- await listInterventions(options);
586
- });
587
- // Dashboard subcommand (explicit)
588
- guardian
589
- .command('dashboard')
590
- .description('Display Guardian dashboard in terminal')
591
- .action(async () => {
592
- await displayDashboard();
593
- });
594
- return guardian;
595
- }
596
- exports.default = createGuardianCommand;
597
- //# sourceMappingURL=guardian.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guardian.js","sourceRoot":"","sources":["../../src/commands/guardian.ts"],"names":[],"mappings":"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"}