@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.
- package/bin/wundr.js +8 -4
- package/package.json +23 -23
- package/src/ai/ai-service.ts +16 -17
- package/src/ai/claude-client.ts +16 -16
- package/src/ai/conversation-manager.ts +29 -29
- package/src/cli.ts +4 -4
- package/src/commands/ai.ts +246 -78
- package/src/commands/alignment.ts +74 -74
- package/src/commands/analyze-optimized.ts +111 -78
- package/src/commands/analyze.ts +14 -14
- package/src/commands/batch.ts +179 -42
- package/src/commands/chat.ts +37 -30
- package/src/commands/claude-init.ts +41 -45
- package/src/commands/claude-setup.ts +204 -119
- package/src/commands/computer-setup.ts +85 -43
- package/src/commands/create-command.ts +4 -4
- package/src/commands/create.ts +27 -27
- package/src/commands/dashboard.ts +24 -24
- package/src/commands/govern.ts +25 -25
- package/src/commands/governance.ts +34 -34
- package/src/commands/guardian.ts +56 -56
- package/src/commands/init.ts +25 -22
- package/src/commands/orchestrator.ts +68 -41
- package/src/commands/performance-optimizer.ts +34 -35
- package/src/commands/plugins.ts +27 -27
- package/src/commands/project-update.ts +175 -72
- package/src/commands/rag.ts +185 -78
- package/src/commands/session.ts +35 -35
- package/src/commands/setup.ts +40 -344
- package/src/commands/test-init.ts +3 -3
- package/src/commands/test.ts +4 -4
- package/src/commands/watch.ts +28 -29
- package/src/commands/worktree.ts +49 -49
- package/src/context/context-manager.ts +10 -10
- package/src/context/session-manager.ts +41 -41
- package/src/framework/command-interface.ts +520 -0
- package/src/framework/command-registry.ts +942 -0
- package/src/framework/completion-exporter.ts +383 -0
- package/src/framework/debug-logger.ts +519 -0
- package/src/framework/error-handler.ts +867 -0
- package/src/framework/help-generator.ts +540 -0
- package/src/framework/index.ts +169 -0
- package/src/framework/interactive-repl.ts +703 -0
- package/src/framework/output-formatter.ts +834 -0
- package/src/framework/progress-manager.ts +539 -0
- package/src/index.ts +4 -4
- package/src/interactive/interactive-mode.ts +16 -16
- package/src/lib/conflict-resolution.ts +799 -9
- package/src/lib/merge-strategy.ts +529 -7
- package/src/lib/safety-mechanisms.ts +422 -18
- package/src/lib/state-detection.ts +1015 -13
- package/src/nlp/command-mapper.ts +29 -29
- package/src/nlp/command-parser.ts +17 -17
- package/src/nlp/intent-classifier.ts +7 -7
- package/src/nlp/intent-parser.ts +54 -52
- package/src/plugins/plugin-manager.ts +61 -39
- package/src/tests/computer-setup-integration.test.ts +46 -15
- package/src/types/modules.d.ts +424 -1
- package/src/utils/backup-rollback-manager.ts +11 -8
- package/src/utils/config-manager.ts +3 -3
- package/src/utils/error-handler.ts +2 -2
- package/src/utils/logger.ts +22 -22
- package/templates/batch/ci-cd.yaml +7 -7
- package/test-suites/api/health.spec.ts +20 -23
- package/test-suites/helpers/test-config.ts +14 -13
- package/test-suites/ui/accessibility.spec.ts +27 -22
- package/test-suites/ui/smoke.spec.ts +26 -21
- package/LICENSE +0 -21
- package/dist/ai/ai-service.d.ts +0 -152
- package/dist/ai/ai-service.d.ts.map +0 -1
- package/dist/ai/ai-service.js +0 -430
- package/dist/ai/ai-service.js.map +0 -1
- package/dist/ai/claude-client.d.ts +0 -130
- package/dist/ai/claude-client.d.ts.map +0 -1
- package/dist/ai/claude-client.js +0 -340
- package/dist/ai/claude-client.js.map +0 -1
- package/dist/ai/conversation-manager.d.ts +0 -164
- package/dist/ai/conversation-manager.d.ts.map +0 -1
- package/dist/ai/conversation-manager.js +0 -614
- package/dist/ai/conversation-manager.js.map +0 -1
- package/dist/ai/index.d.ts +0 -5
- package/dist/ai/index.d.ts.map +0 -1
- package/dist/ai/index.js +0 -8
- package/dist/ai/index.js.map +0 -1
- package/dist/cli.d.ts +0 -36
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -192
- package/dist/cli.js.map +0 -1
- package/dist/commands/ai.d.ts +0 -89
- package/dist/commands/ai.d.ts.map +0 -1
- package/dist/commands/ai.js +0 -799
- package/dist/commands/ai.js.map +0 -1
- package/dist/commands/alignment.d.ts +0 -78
- package/dist/commands/alignment.d.ts.map +0 -1
- package/dist/commands/alignment.js +0 -817
- package/dist/commands/alignment.js.map +0 -1
- package/dist/commands/analyze-optimized.d.ts +0 -14
- package/dist/commands/analyze-optimized.d.ts.map +0 -1
- package/dist/commands/analyze-optimized.js +0 -600
- package/dist/commands/analyze-optimized.js.map +0 -1
- package/dist/commands/analyze.d.ts +0 -65
- package/dist/commands/analyze.d.ts.map +0 -1
- package/dist/commands/analyze.js +0 -435
- package/dist/commands/analyze.js.map +0 -1
- package/dist/commands/batch.d.ts +0 -71
- package/dist/commands/batch.d.ts.map +0 -1
- package/dist/commands/batch.js +0 -738
- package/dist/commands/batch.js.map +0 -1
- package/dist/commands/chat.d.ts +0 -71
- package/dist/commands/chat.d.ts.map +0 -1
- package/dist/commands/chat.js +0 -674
- package/dist/commands/chat.js.map +0 -1
- package/dist/commands/claude-init.d.ts +0 -28
- package/dist/commands/claude-init.d.ts.map +0 -1
- package/dist/commands/claude-init.js +0 -591
- package/dist/commands/claude-init.js.map +0 -1
- package/dist/commands/claude-setup.d.ts +0 -119
- package/dist/commands/claude-setup.d.ts.map +0 -1
- package/dist/commands/claude-setup.js +0 -1073
- package/dist/commands/claude-setup.js.map +0 -1
- package/dist/commands/computer-setup-commands.d.ts +0 -53
- package/dist/commands/computer-setup-commands.d.ts.map +0 -1
- package/dist/commands/computer-setup-commands.js +0 -705
- package/dist/commands/computer-setup-commands.js.map +0 -1
- package/dist/commands/computer-setup.d.ts +0 -7
- package/dist/commands/computer-setup.d.ts.map +0 -1
- package/dist/commands/computer-setup.js +0 -849
- package/dist/commands/computer-setup.js.map +0 -1
- package/dist/commands/create-command.d.ts +0 -7
- package/dist/commands/create-command.d.ts.map +0 -1
- package/dist/commands/create-command.js +0 -158
- package/dist/commands/create-command.js.map +0 -1
- package/dist/commands/create.d.ts +0 -74
- package/dist/commands/create.d.ts.map +0 -1
- package/dist/commands/create.js +0 -556
- package/dist/commands/create.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -91
- package/dist/commands/dashboard.d.ts.map +0 -1
- package/dist/commands/dashboard.js +0 -538
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/govern.d.ts +0 -70
- package/dist/commands/govern.d.ts.map +0 -1
- package/dist/commands/govern.js +0 -481
- package/dist/commands/govern.js.map +0 -1
- package/dist/commands/governance.d.ts +0 -17
- package/dist/commands/governance.d.ts.map +0 -1
- package/dist/commands/governance.js +0 -703
- package/dist/commands/governance.js.map +0 -1
- package/dist/commands/guardian.d.ts +0 -20
- package/dist/commands/guardian.d.ts.map +0 -1
- package/dist/commands/guardian.js +0 -597
- package/dist/commands/guardian.js.map +0 -1
- package/dist/commands/init.d.ts +0 -59
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -650
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/orchestrator.d.ts +0 -7
- package/dist/commands/orchestrator.d.ts.map +0 -1
- package/dist/commands/orchestrator.js +0 -571
- package/dist/commands/orchestrator.js.map +0 -1
- package/dist/commands/performance-optimizer.d.ts +0 -30
- package/dist/commands/performance-optimizer.d.ts.map +0 -1
- package/dist/commands/performance-optimizer.js +0 -650
- package/dist/commands/performance-optimizer.js.map +0 -1
- package/dist/commands/plugins.d.ts +0 -87
- package/dist/commands/plugins.d.ts.map +0 -1
- package/dist/commands/plugins.js +0 -685
- package/dist/commands/plugins.js.map +0 -1
- package/dist/commands/rag.d.ts +0 -7
- package/dist/commands/rag.d.ts.map +0 -1
- package/dist/commands/rag.js +0 -748
- package/dist/commands/rag.js.map +0 -1
- package/dist/commands/session.d.ts +0 -41
- package/dist/commands/session.d.ts.map +0 -1
- package/dist/commands/session.js +0 -441
- package/dist/commands/session.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -29
- package/dist/commands/setup.d.ts.map +0 -1
- package/dist/commands/setup.js +0 -397
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/test-init.d.ts +0 -9
- package/dist/commands/test-init.d.ts.map +0 -1
- package/dist/commands/test-init.js +0 -222
- package/dist/commands/test-init.js.map +0 -1
- package/dist/commands/test.d.ts +0 -25
- package/dist/commands/test.d.ts.map +0 -1
- package/dist/commands/test.js +0 -217
- package/dist/commands/test.js.map +0 -1
- package/dist/commands/vp.d.ts +0 -7
- package/dist/commands/vp.d.ts.map +0 -1
- package/dist/commands/vp.js +0 -571
- package/dist/commands/vp.js.map +0 -1
- package/dist/commands/watch.d.ts +0 -76
- package/dist/commands/watch.d.ts.map +0 -1
- package/dist/commands/watch.js +0 -613
- package/dist/commands/watch.js.map +0 -1
- package/dist/commands/worktree.d.ts +0 -63
- package/dist/commands/worktree.d.ts.map +0 -1
- package/dist/commands/worktree.js +0 -774
- package/dist/commands/worktree.js.map +0 -1
- package/dist/context/context-manager.d.ts +0 -155
- package/dist/context/context-manager.d.ts.map +0 -1
- package/dist/context/context-manager.js +0 -383
- package/dist/context/context-manager.js.map +0 -1
- package/dist/context/index.d.ts +0 -3
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/index.js +0 -6
- package/dist/context/index.js.map +0 -1
- package/dist/context/session-manager.d.ts +0 -207
- package/dist/context/session-manager.d.ts.map +0 -1
- package/dist/context/session-manager.js +0 -686
- package/dist/context/session-manager.js.map +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -51
- package/dist/index.js.map +0 -1
- package/dist/interactive/interactive-mode.d.ts +0 -76
- package/dist/interactive/interactive-mode.d.ts.map +0 -1
- package/dist/interactive/interactive-mode.js +0 -732
- package/dist/interactive/interactive-mode.js.map +0 -1
- package/dist/nlp/command-mapper.d.ts +0 -174
- package/dist/nlp/command-mapper.d.ts.map +0 -1
- package/dist/nlp/command-mapper.js +0 -624
- package/dist/nlp/command-mapper.js.map +0 -1
- package/dist/nlp/command-parser.d.ts +0 -106
- package/dist/nlp/command-parser.d.ts.map +0 -1
- package/dist/nlp/command-parser.js +0 -417
- package/dist/nlp/command-parser.js.map +0 -1
- package/dist/nlp/index.d.ts +0 -5
- package/dist/nlp/index.d.ts.map +0 -1
- package/dist/nlp/index.js +0 -8
- package/dist/nlp/index.js.map +0 -1
- package/dist/nlp/intent-classifier.d.ts +0 -59
- package/dist/nlp/intent-classifier.d.ts.map +0 -1
- package/dist/nlp/intent-classifier.js +0 -384
- package/dist/nlp/intent-classifier.js.map +0 -1
- package/dist/nlp/intent-parser.d.ts +0 -152
- package/dist/nlp/intent-parser.d.ts.map +0 -1
- package/dist/nlp/intent-parser.js +0 -744
- package/dist/nlp/intent-parser.js.map +0 -1
- package/dist/plugins/plugin-manager.d.ts +0 -120
- package/dist/plugins/plugin-manager.d.ts.map +0 -1
- package/dist/plugins/plugin-manager.js +0 -595
- package/dist/plugins/plugin-manager.js.map +0 -1
- package/dist/types/index.d.ts +0 -224
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
- package/dist/utils/backup-rollback-manager.d.ts +0 -72
- package/dist/utils/backup-rollback-manager.d.ts.map +0 -1
- package/dist/utils/backup-rollback-manager.js +0 -289
- package/dist/utils/backup-rollback-manager.js.map +0 -1
- package/dist/utils/claude-config-installer.d.ts +0 -98
- package/dist/utils/claude-config-installer.d.ts.map +0 -1
- package/dist/utils/claude-config-installer.js +0 -678
- package/dist/utils/claude-config-installer.js.map +0 -1
- package/dist/utils/config-manager.d.ts +0 -73
- package/dist/utils/config-manager.d.ts.map +0 -1
- package/dist/utils/config-manager.js +0 -339
- package/dist/utils/config-manager.js.map +0 -1
- package/dist/utils/error-handler.d.ts +0 -46
- package/dist/utils/error-handler.d.ts.map +0 -1
- package/dist/utils/error-handler.js +0 -169
- package/dist/utils/error-handler.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -25
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -105
- package/dist/utils/logger.js.map +0 -1
- 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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"}
|