@miller-tech/uap 1.11.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli/hooks.js +151 -45
- package/dist/cli/hooks.js.map +1 -1
- package/dist/coordination/service.d.ts +11 -0
- package/dist/coordination/service.d.ts.map +1 -1
- package/dist/coordination/service.js +34 -3
- package/dist/coordination/service.js.map +1 -1
- package/dist/dashboard/data-seeder.d.ts +33 -0
- package/dist/dashboard/data-seeder.d.ts.map +1 -0
- package/dist/dashboard/data-seeder.js +247 -0
- package/dist/dashboard/data-seeder.js.map +1 -0
- package/dist/dashboard/data-service.d.ts +99 -0
- package/dist/dashboard/data-service.d.ts.map +1 -1
- package/dist/dashboard/data-service.js +549 -31
- package/dist/dashboard/data-service.js.map +1 -1
- package/dist/dashboard/index.d.ts +4 -2
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +2 -1
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +17 -0
- package/dist/dashboard/server.js.map +1 -1
- package/package.json +1 -1
- package/templates/hooks/forgecode.plugin.sh +348 -47
- package/templates/hooks/post-compact.sh +111 -0
- package/templates/hooks/post-tool-use-edit-write.sh +38 -0
- package/templates/hooks/pre-compact.sh +14 -0
- package/templates/hooks/pre-tool-use-bash.sh +79 -0
- package/templates/hooks/pre-tool-use-edit-write.sh +44 -0
- package/templates/hooks/session-end.sh +25 -40
- package/templates/hooks/stop.sh +142 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard Data Seeder
|
|
3
|
+
*
|
|
4
|
+
* Seeds dashboard databases with real data from worktrees, git history,
|
|
5
|
+
* and active policies. Registers the dashboard server as an active agent
|
|
6
|
+
* with heartbeat for coordination visibility.
|
|
7
|
+
*/
|
|
8
|
+
export interface SeederState {
|
|
9
|
+
agentId: string;
|
|
10
|
+
heartbeatInterval: ReturnType<typeof setInterval> | null;
|
|
11
|
+
seededAt: string;
|
|
12
|
+
tasksCreated: number;
|
|
13
|
+
deploysQueued: number;
|
|
14
|
+
batchesCreated: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Seed dashboard data from real project state.
|
|
18
|
+
*
|
|
19
|
+
* - Registers dashboard server as active agent
|
|
20
|
+
* - Creates tasks from active worktrees and git commits
|
|
21
|
+
* - Generates deploy queue entries from git tags/commits
|
|
22
|
+
* - Creates batch records
|
|
23
|
+
*/
|
|
24
|
+
export declare function seedDashboardData(cwd: string): SeederState;
|
|
25
|
+
/**
|
|
26
|
+
* Cleanup seeder: clear heartbeat, mark agent as completed.
|
|
27
|
+
*/
|
|
28
|
+
export declare function cleanupSeeder(cwd: string): void;
|
|
29
|
+
/**
|
|
30
|
+
* Get the current seeder state, or null if not running.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getSeederState(): SeederState | null;
|
|
33
|
+
//# sourceMappingURL=data-seeder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-seeder.d.ts","sourceRoot":"","sources":["../../src/dashboard/data-seeder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAC;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAgO1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CA6B/C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard Data Seeder
|
|
3
|
+
*
|
|
4
|
+
* Seeds dashboard databases with real data from worktrees, git history,
|
|
5
|
+
* and active policies. Registers the dashboard server as an active agent
|
|
6
|
+
* with heartbeat for coordination visibility.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { execSync } from 'child_process';
|
|
11
|
+
import Database from 'better-sqlite3';
|
|
12
|
+
let seederState = null;
|
|
13
|
+
/**
|
|
14
|
+
* Seed dashboard data from real project state.
|
|
15
|
+
*
|
|
16
|
+
* - Registers dashboard server as active agent
|
|
17
|
+
* - Creates tasks from active worktrees and git commits
|
|
18
|
+
* - Generates deploy queue entries from git tags/commits
|
|
19
|
+
* - Creates batch records
|
|
20
|
+
*/
|
|
21
|
+
export function seedDashboardData(cwd) {
|
|
22
|
+
const agentId = `dashboard-server-${Date.now()}`;
|
|
23
|
+
const now = new Date().toISOString();
|
|
24
|
+
let tasksCreated = 0;
|
|
25
|
+
let deploysQueued = 0;
|
|
26
|
+
let batchesCreated = 0;
|
|
27
|
+
// 1. Register dashboard server as active agent
|
|
28
|
+
const coordDbPath = join(cwd, 'agents', 'data', 'coordination', 'coordination.db');
|
|
29
|
+
let coordDb = null;
|
|
30
|
+
if (existsSync(coordDbPath)) {
|
|
31
|
+
try {
|
|
32
|
+
coordDb = new Database(coordDbPath);
|
|
33
|
+
const hasAgents = coordDb
|
|
34
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agent_registry'")
|
|
35
|
+
.all();
|
|
36
|
+
if (hasAgents.length > 0) {
|
|
37
|
+
coordDb
|
|
38
|
+
.prepare(`INSERT OR REPLACE INTO agent_registry (id, name, session_id, status, current_task, started_at, last_heartbeat)
|
|
39
|
+
VALUES (?, ?, ?, 'active', 'dashboard-server', ?, ?)`)
|
|
40
|
+
.run(agentId, 'Dashboard Server', `session-${Date.now()}`, now, now);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
/* ignore - coordination DB may not exist yet */
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// 2. Create tasks from active worktrees
|
|
48
|
+
try {
|
|
49
|
+
const wtDbPath = join(cwd, '.uap', 'worktree_registry.db');
|
|
50
|
+
if (existsSync(wtDbPath)) {
|
|
51
|
+
const wtDb = new Database(wtDbPath, { readonly: true });
|
|
52
|
+
const hasTable = wtDb
|
|
53
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='worktrees'")
|
|
54
|
+
.all();
|
|
55
|
+
if (hasTable.length > 0) {
|
|
56
|
+
const worktrees = wtDb
|
|
57
|
+
.prepare("SELECT id, slug, branch, status FROM worktrees WHERE status='active'")
|
|
58
|
+
.all();
|
|
59
|
+
const taskDbPath = join(cwd, '.uap', 'tasks', 'tasks.db');
|
|
60
|
+
if (existsSync(taskDbPath)) {
|
|
61
|
+
const taskDb = new Database(taskDbPath);
|
|
62
|
+
// Check existing count to avoid duplicates
|
|
63
|
+
const existingCount = taskDb.prepare('SELECT COUNT(*) as c FROM tasks').get().c;
|
|
64
|
+
if (existingCount === 0 && worktrees.length > 0) {
|
|
65
|
+
const insert = taskDb.prepare(`INSERT OR IGNORE INTO tasks (id, title, type, status, priority, created_at, updated_at)
|
|
66
|
+
VALUES (?, ?, 'task', 'open', 2, ?, ?)`);
|
|
67
|
+
for (const wt of worktrees) {
|
|
68
|
+
const taskId = `wt-${wt.id}`;
|
|
69
|
+
insert.run(taskId, `Worktree: ${wt.slug} (${wt.branch})`, now, now);
|
|
70
|
+
tasksCreated++;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
taskDb.close();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
wtDb.close();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
/* ignore */
|
|
81
|
+
}
|
|
82
|
+
// 3. Create tasks from recent git commits
|
|
83
|
+
try {
|
|
84
|
+
const taskDbPath = join(cwd, '.uap', 'tasks', 'tasks.db');
|
|
85
|
+
if (existsSync(taskDbPath)) {
|
|
86
|
+
const gitLog = execSync('git log --oneline -10 --format="%H|%s" 2>/dev/null || true', {
|
|
87
|
+
encoding: 'utf-8',
|
|
88
|
+
cwd,
|
|
89
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
90
|
+
}).trim();
|
|
91
|
+
if (gitLog) {
|
|
92
|
+
const taskDb = new Database(taskDbPath);
|
|
93
|
+
const insert = taskDb.prepare(`INSERT OR IGNORE INTO tasks (id, title, type, status, priority, created_at, updated_at)
|
|
94
|
+
VALUES (?, ?, ?, 'done', 3, ?, ?)`);
|
|
95
|
+
for (const line of gitLog.split('\n').filter(Boolean)) {
|
|
96
|
+
const [hash, ...msgParts] = line.split('|');
|
|
97
|
+
const msg = msgParts.join('|');
|
|
98
|
+
if (!hash || !msg)
|
|
99
|
+
continue;
|
|
100
|
+
const taskId = `git-${hash.slice(0, 8)}`;
|
|
101
|
+
const type = msg.startsWith('fix') ? 'bug' : msg.startsWith('feat') ? 'feature' : 'task';
|
|
102
|
+
insert.run(taskId, msg, type, now, now);
|
|
103
|
+
tasksCreated++;
|
|
104
|
+
}
|
|
105
|
+
taskDb.close();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
/* ignore */
|
|
111
|
+
}
|
|
112
|
+
// 4. Queue deploy actions from git tags and commits
|
|
113
|
+
if (coordDb) {
|
|
114
|
+
try {
|
|
115
|
+
const hasDQ = coordDb
|
|
116
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='deploy_queue'")
|
|
117
|
+
.all();
|
|
118
|
+
if (hasDQ.length > 0) {
|
|
119
|
+
// Deploy actions from git tags
|
|
120
|
+
try {
|
|
121
|
+
const tags = execSync('git tag --sort=-creatordate 2>/dev/null | head -5 || true', {
|
|
122
|
+
encoding: 'utf-8',
|
|
123
|
+
cwd,
|
|
124
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
125
|
+
}).trim();
|
|
126
|
+
if (tags) {
|
|
127
|
+
const insertDeploy = coordDb.prepare(`INSERT OR IGNORE INTO deploy_queue (agent_id, action_type, target, payload, status, queued_at, priority)
|
|
128
|
+
VALUES (?, 'deploy', ?, ?, 'completed', ?, 5)`);
|
|
129
|
+
for (const tag of tags.split('\n').filter(Boolean)) {
|
|
130
|
+
insertDeploy.run(agentId, tag, JSON.stringify({ tag }), now);
|
|
131
|
+
deploysQueued++;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
/* ignore */
|
|
137
|
+
}
|
|
138
|
+
// Deploy actions from recent commits
|
|
139
|
+
try {
|
|
140
|
+
const commits = execSync('git log --oneline -5 --format="%H" 2>/dev/null || true', {
|
|
141
|
+
encoding: 'utf-8',
|
|
142
|
+
cwd,
|
|
143
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
144
|
+
}).trim();
|
|
145
|
+
if (commits) {
|
|
146
|
+
const insertDeploy = coordDb.prepare(`INSERT OR IGNORE INTO deploy_queue (agent_id, action_type, target, payload, status, queued_at, priority)
|
|
147
|
+
VALUES (?, 'commit', 'main', ?, 'completed', ?, 5)`);
|
|
148
|
+
for (const hash of commits.split('\n').filter(Boolean)) {
|
|
149
|
+
insertDeploy.run(agentId, JSON.stringify({ commit: hash.slice(0, 8) }), now);
|
|
150
|
+
deploysQueued++;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
/* ignore */
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// 5. Create batch records
|
|
159
|
+
const hasDB = coordDb
|
|
160
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='deploy_batches'")
|
|
161
|
+
.all();
|
|
162
|
+
if (hasDB.length > 0 && deploysQueued > 0) {
|
|
163
|
+
const batchId = `batch-seed-${Date.now()}`;
|
|
164
|
+
coordDb
|
|
165
|
+
.prepare(`INSERT OR IGNORE INTO deploy_batches (id, created_at, executed_at, status, result)
|
|
166
|
+
VALUES (?, ?, ?, 'completed', 'seeded from git history')`)
|
|
167
|
+
.run(batchId, now, now);
|
|
168
|
+
batchesCreated++;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
/* ignore */
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Set up heartbeat interval (30s)
|
|
176
|
+
const heartbeatInterval = setInterval(() => {
|
|
177
|
+
if (!existsSync(coordDbPath))
|
|
178
|
+
return;
|
|
179
|
+
try {
|
|
180
|
+
const db = new Database(coordDbPath);
|
|
181
|
+
const hasAgents = db
|
|
182
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agent_registry'")
|
|
183
|
+
.all();
|
|
184
|
+
if (hasAgents.length > 0) {
|
|
185
|
+
db.prepare(`UPDATE agent_registry SET last_heartbeat = ? WHERE id = ?`).run(new Date().toISOString(), agentId);
|
|
186
|
+
}
|
|
187
|
+
db.close();
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
/* ignore */
|
|
191
|
+
}
|
|
192
|
+
}, 30_000);
|
|
193
|
+
if (coordDb) {
|
|
194
|
+
try {
|
|
195
|
+
coordDb.close();
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
/* ignore */
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
seederState = {
|
|
202
|
+
agentId,
|
|
203
|
+
heartbeatInterval,
|
|
204
|
+
seededAt: now,
|
|
205
|
+
tasksCreated,
|
|
206
|
+
deploysQueued,
|
|
207
|
+
batchesCreated,
|
|
208
|
+
};
|
|
209
|
+
return seederState;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Cleanup seeder: clear heartbeat, mark agent as completed.
|
|
213
|
+
*/
|
|
214
|
+
export function cleanupSeeder(cwd) {
|
|
215
|
+
if (!seederState)
|
|
216
|
+
return;
|
|
217
|
+
// Clear heartbeat
|
|
218
|
+
if (seederState.heartbeatInterval) {
|
|
219
|
+
clearInterval(seederState.heartbeatInterval);
|
|
220
|
+
seederState.heartbeatInterval = null;
|
|
221
|
+
}
|
|
222
|
+
// Mark agent as completed
|
|
223
|
+
const coordDbPath = join(cwd, 'agents', 'data', 'coordination', 'coordination.db');
|
|
224
|
+
if (existsSync(coordDbPath)) {
|
|
225
|
+
try {
|
|
226
|
+
const db = new Database(coordDbPath);
|
|
227
|
+
const hasAgents = db
|
|
228
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agent_registry'")
|
|
229
|
+
.all();
|
|
230
|
+
if (hasAgents.length > 0) {
|
|
231
|
+
db.prepare(`UPDATE agent_registry SET status = 'completed' WHERE id = ?`).run(seederState.agentId);
|
|
232
|
+
}
|
|
233
|
+
db.close();
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
/* ignore */
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
seederState = null;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get the current seeder state, or null if not running.
|
|
243
|
+
*/
|
|
244
|
+
export function getSeederState() {
|
|
245
|
+
return seederState;
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=data-seeder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-seeder.js","sourceRoot":"","sources":["../../src/dashboard/data-seeder.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,38 @@
|
|
|
5
5
|
* by both the CLI dashboard and the web overlay.
|
|
6
6
|
*/
|
|
7
7
|
import { type PerformanceMetrics } from '../utils/performance-monitor.js';
|
|
8
|
+
export interface TimeSeriesPoint {
|
|
9
|
+
timestamp: string;
|
|
10
|
+
tasks: {
|
|
11
|
+
total: number;
|
|
12
|
+
done: number;
|
|
13
|
+
inProgress: number;
|
|
14
|
+
blocked: number;
|
|
15
|
+
open: number;
|
|
16
|
+
};
|
|
17
|
+
coordination: {
|
|
18
|
+
activeAgents: number;
|
|
19
|
+
totalAgents: number;
|
|
20
|
+
completedAgents: number;
|
|
21
|
+
patternHits: number;
|
|
22
|
+
activeWorktrees: number;
|
|
23
|
+
};
|
|
24
|
+
deployBuckets: DeployBucketData;
|
|
25
|
+
compression: {
|
|
26
|
+
rawBytes: number;
|
|
27
|
+
contextBytes: number;
|
|
28
|
+
savingsPercent: string;
|
|
29
|
+
totalCalls: number;
|
|
30
|
+
};
|
|
31
|
+
memoryHitsMisses: MemoryHitMissData;
|
|
32
|
+
compliance: {
|
|
33
|
+
totalChecks: number;
|
|
34
|
+
totalBlocks: number;
|
|
35
|
+
blockRate: string;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export declare function getTimeSeriesHistory(cwd: string): TimeSeriesPoint[];
|
|
39
|
+
export declare function pushTimeSeriesPoint(cwd: string, point: TimeSeriesPoint): void;
|
|
8
40
|
export interface PolicyData {
|
|
9
41
|
id: string;
|
|
10
42
|
name: string;
|
|
@@ -15,6 +47,35 @@ export interface PolicyData {
|
|
|
15
47
|
tags: string[];
|
|
16
48
|
priority: number;
|
|
17
49
|
}
|
|
50
|
+
export interface PolicyFileData {
|
|
51
|
+
filename: string;
|
|
52
|
+
name: string;
|
|
53
|
+
category: string;
|
|
54
|
+
path: string;
|
|
55
|
+
}
|
|
56
|
+
export interface ComplianceData {
|
|
57
|
+
totalChecks: number;
|
|
58
|
+
totalBlocks: number;
|
|
59
|
+
blockRate: string;
|
|
60
|
+
recentFailures: Array<{
|
|
61
|
+
policyId: string;
|
|
62
|
+
policyName: string;
|
|
63
|
+
operation: string;
|
|
64
|
+
reason: string;
|
|
65
|
+
executedAt: string;
|
|
66
|
+
defeatedMechanism: string;
|
|
67
|
+
}>;
|
|
68
|
+
failuresByMechanism: Record<string, number>;
|
|
69
|
+
}
|
|
70
|
+
export interface DeployBucketData {
|
|
71
|
+
queued: number;
|
|
72
|
+
batched: number;
|
|
73
|
+
executing: number;
|
|
74
|
+
done: number;
|
|
75
|
+
failed: number;
|
|
76
|
+
batchCount: number;
|
|
77
|
+
savedOps: number;
|
|
78
|
+
}
|
|
18
79
|
export interface AuditEntry {
|
|
19
80
|
policyId: string;
|
|
20
81
|
operation: string;
|
|
@@ -23,6 +84,11 @@ export interface AuditEntry {
|
|
|
23
84
|
executedAt: string;
|
|
24
85
|
taskId?: string;
|
|
25
86
|
}
|
|
87
|
+
export interface MemoryHitMissData {
|
|
88
|
+
hits: number;
|
|
89
|
+
misses: number;
|
|
90
|
+
hitRate: string;
|
|
91
|
+
}
|
|
26
92
|
export interface MemoryData {
|
|
27
93
|
l1: {
|
|
28
94
|
entries: number;
|
|
@@ -45,6 +111,12 @@ export interface MemoryData {
|
|
|
45
111
|
savingsPercent: string;
|
|
46
112
|
totalCalls: number;
|
|
47
113
|
};
|
|
114
|
+
hitsMisses: MemoryHitMissData;
|
|
115
|
+
recentQueries: Array<{
|
|
116
|
+
query: string;
|
|
117
|
+
type: string;
|
|
118
|
+
timestamp: string;
|
|
119
|
+
}>;
|
|
48
120
|
}
|
|
49
121
|
export interface ModelData {
|
|
50
122
|
roles: {
|
|
@@ -85,6 +157,23 @@ export interface CoordData {
|
|
|
85
157
|
activeAgents: number;
|
|
86
158
|
activeClaims: number;
|
|
87
159
|
pendingDeploys: number;
|
|
160
|
+
totalAgents: number;
|
|
161
|
+
completedAgents: number;
|
|
162
|
+
patternHits: number;
|
|
163
|
+
patternSuccesses: number;
|
|
164
|
+
activeWorktrees: number;
|
|
165
|
+
agents: Array<{
|
|
166
|
+
id: string;
|
|
167
|
+
name: string;
|
|
168
|
+
status: string;
|
|
169
|
+
startedAt: string;
|
|
170
|
+
}>;
|
|
171
|
+
skillsPerAgent: Record<string, string[]>;
|
|
172
|
+
patternsPerAgent: Record<string, Array<{
|
|
173
|
+
id: string;
|
|
174
|
+
category: string;
|
|
175
|
+
uses: number;
|
|
176
|
+
}>>;
|
|
88
177
|
}
|
|
89
178
|
export interface SystemData {
|
|
90
179
|
version: string;
|
|
@@ -168,6 +257,7 @@ export interface DashboardData {
|
|
|
168
257
|
timestamp: string;
|
|
169
258
|
system: SystemData;
|
|
170
259
|
policies: PolicyData[];
|
|
260
|
+
policyFiles: PolicyFileData[];
|
|
171
261
|
auditTrail: AuditEntry[];
|
|
172
262
|
memory: MemoryData;
|
|
173
263
|
models: ModelData;
|
|
@@ -175,6 +265,15 @@ export interface DashboardData {
|
|
|
175
265
|
coordination: CoordData;
|
|
176
266
|
performance: PerformanceData;
|
|
177
267
|
session?: SessionTelemetryData;
|
|
268
|
+
timeSeries: TimeSeriesPoint[];
|
|
269
|
+
compliance: ComplianceData;
|
|
270
|
+
deployBuckets: DeployBucketData | DeployBatchSummary;
|
|
178
271
|
}
|
|
179
272
|
export declare function getDashboardData(): Promise<DashboardData>;
|
|
273
|
+
/**
|
|
274
|
+
* Read policy .md files from the policies/ directory.
|
|
275
|
+
* Returns metadata about each file (excluding README.md).
|
|
276
|
+
*/
|
|
277
|
+
export declare function getPolicyFiles(cwd: string): PolicyFileData[];
|
|
278
|
+
export declare function getDeployBucketData(cwd: string): DeployBatchSummary;
|
|
180
279
|
//# sourceMappingURL=data-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-service.d.ts","sourceRoot":"","sources":["../../src/dashboard/data-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"data-service.d.ts","sourceRoot":"","sources":["../../src/dashboard/data-service.ts"],"names":[],"mappings":"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"}
|