@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.
@@ -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":"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"}
1
+ {"version":3,"file":"data-service.d.ts","sourceRoot":"","sources":["../../src/dashboard/data-service.ts"],"names":[],"mappings":"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"}