@miller-tech/uap 2.21.2 → 2.36.1
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/README.md +22 -10
- package/config/model-profiles/qwen38-coder390.json +46 -0
- package/config/model-profiles/qwen38.json +3 -2
- package/config/model-registry.json +110 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/benchmarks/paired/types.d.ts +2 -2
- package/dist/bin/cli.js +315 -20
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/attention.d.ts +6 -0
- package/dist/cli/attention.d.ts.map +1 -0
- package/dist/cli/attention.js +115 -0
- package/dist/cli/attention.js.map +1 -0
- package/dist/cli/bench-report.d.ts +82 -0
- package/dist/cli/bench-report.d.ts.map +1 -0
- package/dist/cli/bench-report.js +237 -0
- package/dist/cli/bench-report.js.map +1 -0
- package/dist/cli/clients.d.ts +6 -0
- package/dist/cli/clients.d.ts.map +1 -0
- package/dist/cli/clients.js +142 -0
- package/dist/cli/clients.js.map +1 -0
- package/dist/cli/dashboard-grants.d.ts +26 -0
- package/dist/cli/dashboard-grants.d.ts.map +1 -0
- package/dist/cli/dashboard-grants.js +69 -0
- package/dist/cli/dashboard-grants.js.map +1 -0
- package/dist/cli/dashboard-pace.d.ts +31 -0
- package/dist/cli/dashboard-pace.d.ts.map +1 -0
- package/dist/cli/dashboard-pace.js +42 -0
- package/dist/cli/dashboard-pace.js.map +1 -0
- package/dist/cli/dashboard-session.d.ts +25 -0
- package/dist/cli/dashboard-session.d.ts.map +1 -0
- package/dist/cli/dashboard-session.js +814 -0
- package/dist/cli/dashboard-session.js.map +1 -0
- package/dist/cli/dashboard-types.d.ts +18 -0
- package/dist/cli/dashboard-types.d.ts.map +1 -0
- package/dist/cli/dashboard-types.js +9 -0
- package/dist/cli/dashboard-types.js.map +1 -0
- package/dist/cli/dashboard.d.ts +2 -18
- package/dist/cli/dashboard.d.ts.map +1 -1
- package/dist/cli/dashboard.js +43 -793
- package/dist/cli/dashboard.js.map +1 -1
- package/dist/cli/deliver.d.ts +35 -0
- package/dist/cli/deliver.d.ts.map +1 -1
- package/dist/cli/deliver.js +93 -9
- package/dist/cli/deliver.js.map +1 -1
- package/dist/cli/diff.d.ts +85 -0
- package/dist/cli/diff.d.ts.map +1 -0
- package/dist/cli/diff.js +293 -0
- package/dist/cli/diff.js.map +1 -0
- package/dist/cli/eta.d.ts +35 -0
- package/dist/cli/eta.d.ts.map +1 -0
- package/dist/cli/eta.js +101 -0
- package/dist/cli/eta.js.map +1 -0
- package/dist/cli/handsfree.d.ts +7 -0
- package/dist/cli/handsfree.d.ts.map +1 -1
- package/dist/cli/handsfree.js +27 -0
- package/dist/cli/handsfree.js.map +1 -1
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +126 -5
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/loops.d.ts +24 -5
- package/dist/cli/loops.d.ts.map +1 -1
- package/dist/cli/loops.js +92 -12
- package/dist/cli/loops.js.map +1 -1
- package/dist/cli/models.d.ts +62 -0
- package/dist/cli/models.d.ts.map +1 -0
- package/dist/cli/models.js +567 -0
- package/dist/cli/models.js.map +1 -0
- package/dist/cli/plan.d.ts +9 -0
- package/dist/cli/plan.d.ts.map +1 -1
- package/dist/cli/plan.js +57 -4
- package/dist/cli/plan.js.map +1 -1
- package/dist/cli/proxy-relay.d.ts +55 -0
- package/dist/cli/proxy-relay.d.ts.map +1 -0
- package/dist/cli/proxy-relay.js +116 -0
- package/dist/cli/proxy-relay.js.map +1 -0
- package/dist/cli/proxy.d.ts +4 -0
- package/dist/cli/proxy.d.ts.map +1 -1
- package/dist/cli/proxy.js +26 -1
- package/dist/cli/proxy.js.map +1 -1
- package/dist/cli/sandbox.d.ts +101 -4
- package/dist/cli/sandbox.d.ts.map +1 -1
- package/dist/cli/sandbox.js +393 -44
- package/dist/cli/sandbox.js.map +1 -1
- package/dist/cli/self.d.ts +13 -0
- package/dist/cli/self.d.ts.map +1 -0
- package/dist/cli/self.js +94 -0
- package/dist/cli/self.js.map +1 -0
- package/dist/cli/systemd-services.d.ts +2 -8
- package/dist/cli/systemd-services.d.ts.map +1 -1
- package/dist/cli/systemd-services.js +5 -20
- package/dist/cli/systemd-services.js.map +1 -1
- package/dist/cli/task.js +1 -1
- package/dist/cli/task.js.map +1 -1
- package/dist/cli/wizard-config.d.ts.map +1 -1
- package/dist/cli/wizard-config.js +31 -2
- package/dist/cli/wizard-config.js.map +1 -1
- package/dist/config/settings-registry.d.ts +1 -1
- package/dist/config/settings-registry.d.ts.map +1 -1
- package/dist/config/settings-registry.js +108 -0
- package/dist/config/settings-registry.js.map +1 -1
- package/dist/coordination/capability-router.js +2 -2
- package/dist/coordination/capability-router.js.map +1 -1
- package/dist/coordination/database.d.ts +13 -0
- package/dist/coordination/database.d.ts.map +1 -1
- package/dist/coordination/database.js +63 -7
- package/dist/coordination/database.js.map +1 -1
- package/dist/coordination/eta-inject.d.ts +32 -0
- package/dist/coordination/eta-inject.d.ts.map +1 -0
- package/dist/coordination/eta-inject.js +64 -0
- package/dist/coordination/eta-inject.js.map +1 -0
- package/dist/coordination/reactor.d.ts.map +1 -1
- package/dist/coordination/reactor.js +14 -0
- package/dist/coordination/reactor.js.map +1 -1
- package/dist/coordination/service.d.ts +18 -8
- package/dist/coordination/service.d.ts.map +1 -1
- package/dist/coordination/service.js +38 -28
- package/dist/coordination/service.js.map +1 -1
- package/dist/dashboard/client-registry.d.ts +163 -0
- package/dist/dashboard/client-registry.d.ts.map +1 -0
- package/dist/dashboard/client-registry.js +549 -0
- package/dist/dashboard/client-registry.js.map +1 -0
- package/dist/dashboard/controls.d.ts.map +1 -1
- package/dist/dashboard/controls.js +33 -4
- package/dist/dashboard/controls.js.map +1 -1
- package/dist/dashboard/data-seeder.d.ts +10 -7
- package/dist/dashboard/data-seeder.d.ts.map +1 -1
- package/dist/dashboard/data-seeder.js +31 -75
- package/dist/dashboard/data-seeder.js.map +1 -1
- package/dist/dashboard/data-service.d.ts +9 -0
- package/dist/dashboard/data-service.d.ts.map +1 -1
- package/dist/dashboard/data-service.js +32 -3
- package/dist/dashboard/data-service.js.map +1 -1
- package/dist/dashboard/placement-routes.d.ts +119 -0
- package/dist/dashboard/placement-routes.d.ts.map +1 -0
- package/dist/dashboard/placement-routes.js +331 -0
- package/dist/dashboard/placement-routes.js.map +1 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +408 -2
- package/dist/dashboard/server.js.map +1 -1
- package/dist/delivery/attention.d.ts +130 -0
- package/dist/delivery/attention.d.ts.map +1 -0
- package/dist/delivery/attention.js +341 -0
- package/dist/delivery/attention.js.map +1 -0
- package/dist/delivery/decompose.d.ts +18 -0
- package/dist/delivery/decompose.d.ts.map +1 -1
- package/dist/delivery/decompose.js +22 -1
- package/dist/delivery/decompose.js.map +1 -1
- package/dist/delivery/eta-estimate.d.ts +111 -0
- package/dist/delivery/eta-estimate.d.ts.map +1 -0
- package/dist/delivery/eta-estimate.js +171 -0
- package/dist/delivery/eta-estimate.js.map +1 -0
- package/dist/delivery/eta.d.ts +23 -0
- package/dist/delivery/eta.d.ts.map +1 -0
- package/dist/delivery/eta.js +59 -0
- package/dist/delivery/eta.js.map +1 -0
- package/dist/delivery/orchestrated-mission.d.ts +10 -0
- package/dist/delivery/orchestrated-mission.d.ts.map +1 -1
- package/dist/delivery/orchestrated-mission.js +15 -1
- package/dist/delivery/orchestrated-mission.js.map +1 -1
- package/dist/delivery/plan-check.d.ts +7 -1
- package/dist/delivery/plan-check.d.ts.map +1 -1
- package/dist/delivery/plan-check.js +23 -2
- package/dist/delivery/plan-check.js.map +1 -1
- package/dist/delivery/run-state.d.ts +1 -1
- package/dist/delivery/run-state.d.ts.map +1 -1
- package/dist/delivery/run-state.js +8 -1
- package/dist/delivery/run-state.js.map +1 -1
- package/dist/delivery/task-orchestrator.d.ts +8 -3
- package/dist/delivery/task-orchestrator.d.ts.map +1 -1
- package/dist/delivery/task-orchestrator.js +75 -43
- package/dist/delivery/task-orchestrator.js.map +1 -1
- package/dist/delivery/task-sync.d.ts +21 -0
- package/dist/delivery/task-sync.d.ts.map +1 -1
- package/dist/delivery/task-sync.js +44 -8
- package/dist/delivery/task-sync.js.map +1 -1
- package/dist/delivery/task-workspace.d.ts +3 -3
- package/dist/delivery/task-workspace.js +3 -3
- package/dist/generators/self-card.d.ts +65 -0
- package/dist/generators/self-card.d.ts.map +1 -0
- package/dist/generators/self-card.js +256 -0
- package/dist/generators/self-card.js.map +1 -0
- package/dist/inference/probe.js +1 -1
- package/dist/inference/probe.js.map +1 -1
- package/dist/memory/prepopulate.d.ts.map +1 -1
- package/dist/memory/prepopulate.js +2 -0
- package/dist/memory/prepopulate.js.map +1 -1
- package/dist/models/analytics.d.ts +32 -0
- package/dist/models/analytics.d.ts.map +1 -1
- package/dist/models/analytics.js +68 -5
- package/dist/models/analytics.js.map +1 -1
- package/dist/models/plan-readability.d.ts +55 -0
- package/dist/models/plan-readability.d.ts.map +1 -0
- package/dist/models/plan-readability.js +339 -0
- package/dist/models/plan-readability.js.map +1 -0
- package/dist/placement/admission.d.ts +59 -0
- package/dist/placement/admission.d.ts.map +1 -0
- package/dist/placement/admission.js +197 -0
- package/dist/placement/admission.js.map +1 -0
- package/dist/placement/auto.d.ts +44 -0
- package/dist/placement/auto.d.ts.map +1 -0
- package/dist/placement/auto.js +212 -0
- package/dist/placement/auto.js.map +1 -0
- package/dist/placement/enforce.d.ts +128 -0
- package/dist/placement/enforce.d.ts.map +1 -0
- package/dist/placement/enforce.js +655 -0
- package/dist/placement/enforce.js.map +1 -0
- package/dist/placement/idle.d.ts +50 -0
- package/dist/placement/idle.d.ts.map +1 -0
- package/dist/placement/idle.js +213 -0
- package/dist/placement/idle.js.map +1 -0
- package/dist/placement/ledger.d.ts +323 -0
- package/dist/placement/ledger.d.ts.map +1 -0
- package/dist/placement/ledger.js +263 -0
- package/dist/placement/ledger.js.map +1 -0
- package/dist/placement/preview.d.ts +51 -0
- package/dist/placement/preview.d.ts.map +1 -0
- package/dist/placement/preview.js +61 -0
- package/dist/placement/preview.js.map +1 -0
- package/dist/placement/probes.d.ts +47 -0
- package/dist/placement/probes.d.ts.map +1 -0
- package/dist/placement/probes.js +207 -0
- package/dist/placement/probes.js.map +1 -0
- package/dist/placement/proxy-env.d.ts +21 -0
- package/dist/placement/proxy-env.d.ts.map +1 -0
- package/dist/placement/proxy-env.js +42 -0
- package/dist/placement/proxy-env.js.map +1 -0
- package/dist/placement/registry.d.ts +1038 -0
- package/dist/placement/registry.d.ts.map +1 -0
- package/dist/placement/registry.js +274 -0
- package/dist/placement/registry.js.map +1 -0
- package/dist/policies/liveness.d.ts +6 -8
- package/dist/policies/liveness.d.ts.map +1 -1
- package/dist/policies/liveness.js +6 -25
- package/dist/policies/liveness.js.map +1 -1
- package/dist/policies/sandbox-anchor.d.ts +91 -0
- package/dist/policies/sandbox-anchor.d.ts.map +1 -0
- package/dist/policies/sandbox-anchor.js +187 -0
- package/dist/policies/sandbox-anchor.js.map +1 -0
- package/dist/policies/sandbox-grants.d.ts +131 -0
- package/dist/policies/sandbox-grants.d.ts.map +1 -0
- package/dist/policies/sandbox-grants.js +562 -0
- package/dist/policies/sandbox-grants.js.map +1 -0
- package/dist/state/manifest.d.ts +4 -2
- package/dist/state/manifest.d.ts.map +1 -1
- package/dist/state/manifest.js +32 -16
- package/dist/state/manifest.js.map +1 -1
- package/dist/utils/checkout-root.d.ts +2 -0
- package/dist/utils/checkout-root.d.ts.map +1 -0
- package/dist/utils/checkout-root.js +43 -0
- package/dist/utils/checkout-root.js.map +1 -0
- package/dist/utils/resolve-uap-bin.d.ts +5 -0
- package/dist/utils/resolve-uap-bin.d.ts.map +1 -0
- package/dist/utils/resolve-uap-bin.js +33 -0
- package/dist/utils/resolve-uap-bin.js.map +1 -0
- package/dist/utils/terminal-safe.d.ts +12 -0
- package/dist/utils/terminal-safe.d.ts.map +1 -0
- package/dist/utils/terminal-safe.js +53 -0
- package/dist/utils/terminal-safe.js.map +1 -0
- package/docs/ATTRIBUTION.md +1 -0
- package/docs/DASHBOARD_UPLIFT_SPEC.md +8 -8
- package/docs/INDEX.md +6 -5
- package/docs/architecture/OVERVIEW.md +15 -3
- package/docs/architecture/PROTOCOL.md +7 -1
- package/docs/architecture/adr/0006-operator-directed-model-placement.md +86 -0
- package/docs/architecture/adr/0007-auto-displacement-allowlist-as-standing-consent.md +79 -0
- package/docs/architecture/adr/0008-fleet-clients-link-out.md +92 -0
- package/docs/architecture/adr/0009-completion-triggered-dispatch-and-per-leaf-model-dials.md +71 -0
- package/docs/architecture/adr/0010-attention-queue-and-afk-auto-decider.md +159 -0
- package/docs/architecture/adr/0011-sandbox-grants-and-network-egress-boundary.md +219 -0
- package/docs/architecture/adr/0012-operator-legibility-surfaces.md +175 -0
- package/docs/getting-started/INSTALLATION.md +1 -1
- package/docs/guides/AUTOMATIC_FEATURES.md +8 -0
- package/docs/guides/LOCAL_MODELS.md +1 -1
- package/docs/guides/PROXY.md +2 -1
- package/docs/guides/SANDBOX.md +91 -4
- package/docs/integrations/MCP_ROUTER.md +1 -1
- package/docs/plans/model-performance-proof-options.md +176 -0
- package/docs/reference/API.md +1 -1
- package/docs/reference/CLI.md +169 -4
- package/docs/reference/COMPARISON.md +1 -1
- package/docs/reference/CONFIGURATION.md +12 -3
- package/docs/reference/CONFIGURATION_REFERENCE.md +269 -14
- package/docs/reference/DATABASE_SCHEMA.md +1 -1
- package/docs/reference/FEATURES.md +15 -3
- package/docs/reference/PATTERNS.md +1 -1
- package/docs/reference/PLATFORMS.md +14 -1
- package/docs/specs/operator-model-placement.md +1314 -0
- package/docs/specs/operator-model-placement.review.md +339 -0
- package/package.json +2 -2
- package/scripts/maintenance/publish-npm.sh +23 -11
- package/scripts/version-bump.sh +6 -51
- package/src/policies/enforcers/__pycache__/_common.cpython-311.pyc +0 -0
- package/src/policies/enforcers/__pycache__/expert_review_required.cpython-311.pyc +0 -0
- package/src/policies/enforcers/__pycache__/quality_metrics_gate.cpython-311.pyc +0 -0
- package/src/policies/schemas/policies/mandatory-testing-deployment.md +2 -5
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-311.pyc +0 -0
- package/templates/hooks/session-start.sh +44 -0
- package/tools/agents/UAP/cli.py +14 -3
- package/tools/agents/UAP/paths.py +50 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-311.pyc +0 -0
- package/tools/agents/scripts/anthropic_proxy.py +1386 -99
- package/tools/agents/scripts/toolcall_path_normalizer.py +46 -1
- package/tools/agents/tests/test_anthropic_proxy_streaming.py +29 -6
- package/tools/agents/tests/test_doubling_break.py +64 -5
- package/tools/agents/tests/test_error_loop_break.py +10 -4
- package/tools/agents/tests/test_error_loop_ignores_correctives.py +13 -2
- package/tools/agents/tests/test_lockstep_escalation.py +280 -9
- package/tools/agents/tests/test_path_containment.py +94 -0
- package/tools/agents/tests/test_proxy_unix_socket.py +162 -0
- package/tools/agents/tests/test_signature_quality.py +349 -0
- package/tools/agents/tests/test_uap_compliance.py +11 -1
- package/web/dash/core.js +1 -0
- package/web/dash/tab-clients.js +196 -0
- package/web/dash/tab-models.js +387 -8
- package/web/dash/tab-policies.js +87 -4
- package/web/dash/tabs.js +77 -73
- package/web/dashboard.html +6 -0
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/src/policies/enforcers/__pycache__/expert_review_required.cpython-312.pyc +0 -0
- package/src/policies/enforcers/__pycache__/quality_metrics_gate.cpython-312.pyc +0 -0
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
- package/web/dash/tab-agents.js +0 -21
- package/web/dash/tab-deliver.js +0 -12
- package/web/dash/tab-memory.js +0 -12
- package/web/dash/tab-orchestration.js +0 -21
- package/web/dash/tab-overview.js +0 -21
- package/web/dash/tab-tasks.js +0 -21
|
@@ -10,8 +10,10 @@ import { spawn } from 'child_process';
|
|
|
10
10
|
import { TaskService } from '../tasks/service.js';
|
|
11
11
|
import { initLedger, markItem, clearLedger } from '../delivery/completion-ledger.js';
|
|
12
12
|
import { modifyUapConfig } from '../utils/config-loader.js';
|
|
13
|
+
import { resolveUapBin } from '../utils/resolve-uap-bin.js';
|
|
13
14
|
import { CoordinationService } from '../coordination/service.js';
|
|
14
15
|
import { listRuns, loadRunState, requestStop, saveRunState, isValidRunId } from '../delivery/run-state.js';
|
|
16
|
+
import { emitTaskEvent, emitAgentEvent, emitDeployEvent, emitSystemEvent } from './event-stream.js';
|
|
15
17
|
// ── Tasks ──
|
|
16
18
|
function taskSvc() {
|
|
17
19
|
return new TaskService();
|
|
@@ -30,6 +32,7 @@ export function handleTaskCreate(body) {
|
|
|
30
32
|
if (body.parentId)
|
|
31
33
|
input.parentId = String(body.parentId);
|
|
32
34
|
const task = taskSvc().create(input);
|
|
35
|
+
emitTaskEvent('task_created', `Task created: ${title}`, 'info', task.id);
|
|
33
36
|
return { id: task.id };
|
|
34
37
|
}
|
|
35
38
|
export function handleTaskUpdate(id, body) {
|
|
@@ -45,24 +48,29 @@ export function handleTaskUpdate(id, body) {
|
|
|
45
48
|
const task = taskSvc().update(id, input);
|
|
46
49
|
if (!task)
|
|
47
50
|
throw new Error('task not found');
|
|
51
|
+
emitTaskEvent('task_updated', `Task updated: ${id}`, 'info', id);
|
|
48
52
|
return { id };
|
|
49
53
|
}
|
|
50
54
|
export function handleTaskClose(id, body) {
|
|
51
55
|
const task = taskSvc().close(id, body.reason ? String(body.reason) : undefined);
|
|
52
56
|
if (!task)
|
|
53
57
|
throw new Error('task not found');
|
|
58
|
+
emitTaskEvent('task_closed', `Task closed: ${task.title}`, 'success', id);
|
|
54
59
|
return { id, status: 'done' };
|
|
55
60
|
}
|
|
56
61
|
export function handleTaskDelete(id) {
|
|
57
62
|
const ok = taskSvc().delete(id);
|
|
58
63
|
if (!ok)
|
|
59
64
|
throw new Error('task not found');
|
|
65
|
+
emitTaskEvent('task_deleted', `Task deleted: ${id}`, 'warn', id);
|
|
60
66
|
return { id, deleted: true };
|
|
61
67
|
}
|
|
62
68
|
export function handleTaskClaim(id, body) {
|
|
63
69
|
const agentId = String(body.agentId ?? 'dashboard');
|
|
64
70
|
const branch = String(body.worktreeBranch ?? '');
|
|
65
71
|
const claimed = taskSvc().tryClaim(id, agentId, branch);
|
|
72
|
+
if (claimed)
|
|
73
|
+
emitTaskEvent('task_claimed', `Task ${id} claimed by ${agentId}`, 'info', id);
|
|
66
74
|
return { id, claimed };
|
|
67
75
|
}
|
|
68
76
|
function clampPriority(v) {
|
|
@@ -78,10 +86,12 @@ export function handleLedgerItem(cwd, id, body) {
|
|
|
78
86
|
const ok = markItem(cwd, id, status);
|
|
79
87
|
if (!ok)
|
|
80
88
|
throw new Error('ledger item not found');
|
|
89
|
+
emitTaskEvent('ledger_item_status', `Ledger item ${id} → ${status}`, status === 'failed' ? 'warn' : 'info', id);
|
|
81
90
|
return { id, status };
|
|
82
91
|
}
|
|
83
92
|
export function handleLedgerReset(cwd) {
|
|
84
93
|
clearLedger(cwd);
|
|
94
|
+
emitTaskEvent('ledger_reset', 'Completion ledger cleared', 'warn');
|
|
85
95
|
return { reset: true };
|
|
86
96
|
}
|
|
87
97
|
export function handleLedgerInit(cwd, body) {
|
|
@@ -93,6 +103,7 @@ export function handleLedgerInit(cwd, body) {
|
|
|
93
103
|
.filter((it) => !!it && typeof it === 'object')
|
|
94
104
|
.map((it) => ({ id: String(it.id), title: String(it.title ?? it.id) }));
|
|
95
105
|
const led = initLedger(cwd, mission, items);
|
|
106
|
+
emitTaskEvent('ledger_init', `Ledger initialized: ${mission} (${led.items.length} items)`, 'success', led.mission);
|
|
96
107
|
return { mission: led.mission, items: led.items.length };
|
|
97
108
|
}
|
|
98
109
|
// ── Orchestrator toggle ──
|
|
@@ -108,19 +119,26 @@ export function handleOrchestratorToggle(cwd, body) {
|
|
|
108
119
|
deliver.orchestrate = state;
|
|
109
120
|
return { ...cfg, deliver };
|
|
110
121
|
});
|
|
122
|
+
emitSystemEvent('orchestrator_toggle', `Orchestrator set to ${state}`, 'info', state);
|
|
111
123
|
return { state };
|
|
112
124
|
}
|
|
113
125
|
// ── Agents ──
|
|
114
126
|
export function handleAgentDeregister(id) {
|
|
115
127
|
const svc = new CoordinationService();
|
|
116
128
|
svc.deregister(id);
|
|
129
|
+
emitAgentEvent('agent_deregistered', `Agent deregistered: ${id}`, 'warn', id);
|
|
117
130
|
return { id, deregistered: true };
|
|
118
131
|
}
|
|
119
132
|
export function handleAgentCleanStale() {
|
|
120
133
|
const svc = new CoordinationService();
|
|
121
|
-
|
|
134
|
+
const cleaned = svc.cleanupStaleAgents();
|
|
135
|
+
if (cleaned > 0)
|
|
136
|
+
emitAgentEvent('agents_cleaned', `${cleaned} stale agent(s) cleaned`, 'info');
|
|
137
|
+
return { cleaned };
|
|
122
138
|
}
|
|
123
139
|
// ── Deliver runs ──
|
|
140
|
+
// resolveUapBin lives in src/utils/resolve-uap-bin.ts — shared with the fleet
|
|
141
|
+
// registry's spawn-on-demand (extracted when it gained a second consumer; ADR-0008).
|
|
124
142
|
export function listDeliverRuns(cwd) {
|
|
125
143
|
try {
|
|
126
144
|
return listRuns(cwd);
|
|
@@ -133,13 +151,20 @@ export function handleDeliverLaunch(cwd, body) {
|
|
|
133
151
|
const instruction = String(body.instruction ?? '').trim();
|
|
134
152
|
if (!instruction)
|
|
135
153
|
throw new Error('instruction is required');
|
|
136
|
-
const
|
|
154
|
+
const { cmd, preArgs } = resolveUapBin();
|
|
155
|
+
const args = [...preArgs, 'deliver', instruction, '--json'];
|
|
137
156
|
if (body.model)
|
|
138
157
|
args.push('--model', String(body.model));
|
|
139
158
|
if (body.maxTurns)
|
|
140
159
|
args.push('--max-turns', String(Math.max(1, Math.round(Number(body.maxTurns)) || 5)));
|
|
141
|
-
const child = spawn(
|
|
160
|
+
const child = spawn(cmd, args, { cwd, detached: true, stdio: 'ignore' });
|
|
161
|
+
// resolveUapBin may fall through to bare 'uap' (PATH) — if that binary is
|
|
162
|
+
// missing, spawn emits an async 'error' that would crash the dashboard
|
|
163
|
+
// process. Swallow it; the launch already reported its pid optimistically
|
|
164
|
+
// and the run registry tells the truth a moment later.
|
|
165
|
+
child.once('error', () => { });
|
|
142
166
|
child.unref();
|
|
167
|
+
emitDeployEvent('deliver_launch', `Deliver run launched (pid ${child.pid ?? '?'}): ${instruction.slice(0, 80)}`, 'info', String(child.pid ?? ''));
|
|
143
168
|
return { launched: true, pid: child.pid };
|
|
144
169
|
}
|
|
145
170
|
export function handleDeliverCancel(cwd, runId) {
|
|
@@ -176,13 +201,17 @@ export function handleDeliverCancel(cwd, runId) {
|
|
|
176
201
|
saveRunState({ ...st, status: 'interrupted' });
|
|
177
202
|
interrupted = true;
|
|
178
203
|
}
|
|
204
|
+
emitDeployEvent('deliver_cancel', `Deliver run ${runId} cancel requested${interrupted ? ' (orphaned → interrupted)' : ''}`, 'warn', runId);
|
|
179
205
|
return { runId, cancelRequested: true, interrupted };
|
|
180
206
|
}
|
|
181
207
|
export function handleDeliverResume(cwd, runId) {
|
|
182
208
|
if (!isValidRunId(runId))
|
|
183
209
|
throw new Error('invalid runId');
|
|
184
|
-
const
|
|
210
|
+
const { cmd, preArgs } = resolveUapBin();
|
|
211
|
+
const child = spawn(cmd, [...preArgs, 'deliver', '--resume', runId, '--json'], { cwd, detached: true, stdio: 'ignore' });
|
|
212
|
+
child.once('error', () => { }); // same missing-bin hazard as handleDeliverLaunch
|
|
185
213
|
child.unref();
|
|
214
|
+
emitDeployEvent('deliver_resume', `Deliver run ${runId} resumed (pid ${child.pid ?? '?'})`, 'info', runId);
|
|
186
215
|
return { runId, resumed: true, pid: child.pid };
|
|
187
216
|
}
|
|
188
217
|
//# sourceMappingURL=controls.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/dashboard/controls.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/dashboard/controls.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Dashboard Data Seeder
|
|
3
3
|
*
|
|
4
|
-
* Registers the dashboard server as an
|
|
5
|
-
*
|
|
4
|
+
* Registers the dashboard server as an agent (status 'idle' — it is not doing
|
|
5
|
+
* agent WORK, so it must not inflate the "Active Agents" counts) and seeds
|
|
6
|
+
* policy files into an empty policies DB. Nothing else.
|
|
6
7
|
*
|
|
7
|
-
* IMPORTANT: This module NEVER generates synthetic/fake data.
|
|
8
|
-
*
|
|
9
|
-
* and
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* IMPORTANT: This module NEVER generates synthetic/fake data. A git commit is
|
|
9
|
+
* not a task and a worktree is not a task — earlier versions fabricated
|
|
10
|
+
* `git-*` and `wt-*` task rows from them, which polluted task counts and the
|
|
11
|
+
* kanban with entities no one created or manages (dash audit). Those paths
|
|
12
|
+
* are gone. The periodic refresh only updates the agent heartbeat — it does
|
|
13
|
+
* not inject tasks, memories, policy executions, routing decisions, or
|
|
14
|
+
* analytics.
|
|
12
15
|
*/
|
|
13
16
|
export interface SeederState {
|
|
14
17
|
agentId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-seeder.d.ts","sourceRoot":"","sources":["../../src/dashboard/data-seeder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"data-seeder.d.ts","sourceRoot":"","sources":["../../src/dashboard/data-seeder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAC;IACzD,eAAe,EAAE,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAsK1D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAmB/C;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD"}
|
|
@@ -1,27 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Dashboard Data Seeder
|
|
3
3
|
*
|
|
4
|
-
* Registers the dashboard server as an
|
|
5
|
-
*
|
|
4
|
+
* Registers the dashboard server as an agent (status 'idle' — it is not doing
|
|
5
|
+
* agent WORK, so it must not inflate the "Active Agents" counts) and seeds
|
|
6
|
+
* policy files into an empty policies DB. Nothing else.
|
|
6
7
|
*
|
|
7
|
-
* IMPORTANT: This module NEVER generates synthetic/fake data.
|
|
8
|
-
*
|
|
9
|
-
* and
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* IMPORTANT: This module NEVER generates synthetic/fake data. A git commit is
|
|
9
|
+
* not a task and a worktree is not a task — earlier versions fabricated
|
|
10
|
+
* `git-*` and `wt-*` task rows from them, which polluted task counts and the
|
|
11
|
+
* kanban with entities no one created or manages (dash audit). Those paths
|
|
12
|
+
* are gone. The periodic refresh only updates the agent heartbeat — it does
|
|
13
|
+
* not inject tasks, memories, policy executions, routing decisions, or
|
|
14
|
+
* analytics.
|
|
12
15
|
*/
|
|
13
16
|
import { existsSync, readdirSync, readFileSync } from 'fs';
|
|
14
17
|
import { join } from 'path';
|
|
15
|
-
import { execSync } from 'child_process';
|
|
16
18
|
import Database from 'better-sqlite3';
|
|
17
19
|
let seederState = null;
|
|
18
20
|
export function seedDashboardData(cwd) {
|
|
19
|
-
const agentId = `dashboard-server-${
|
|
21
|
+
const agentId = `dashboard-server-${process.pid}`;
|
|
20
22
|
const now = new Date().toISOString();
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// 1. Register dashboard server as
|
|
23
|
+
const tasksCreated = 0;
|
|
24
|
+
const deploysQueued = 0;
|
|
25
|
+
const batchesCreated = 0;
|
|
26
|
+
// 1. Register dashboard server as an agent — status 'idle'. It is a real
|
|
27
|
+
// coordination participant (it mutates tasks/policies via its routes), but
|
|
28
|
+
// it is not doing agent WORK, so 'active' would inflate the "Active Agents"
|
|
29
|
+
// tile and the agents panel.
|
|
25
30
|
const coordDbPath = join(cwd, 'agents', 'data', 'coordination', 'coordination.db');
|
|
26
31
|
let coordDb = null;
|
|
27
32
|
if (existsSync(coordDbPath)) {
|
|
@@ -31,76 +36,27 @@ export function seedDashboardData(cwd) {
|
|
|
31
36
|
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agent_registry'")
|
|
32
37
|
.all();
|
|
33
38
|
if (hasAgents.length > 0) {
|
|
39
|
+
// Retire rows from previous dash processes (they are dead and their
|
|
40
|
+
// heartbeats are frozen — leaving them 'idle' would pile up forever).
|
|
41
|
+
coordDb
|
|
42
|
+
.prepare(`UPDATE agent_registry SET status = 'completed' WHERE id LIKE 'dashboard-server-%' AND id != ?`)
|
|
43
|
+
.run(agentId);
|
|
34
44
|
coordDb
|
|
35
45
|
.prepare(`INSERT OR REPLACE INTO agent_registry (id, name, session_id, status, current_task, started_at, last_heartbeat)
|
|
36
|
-
VALUES (?, ?, ?, '
|
|
37
|
-
.run(agentId, 'Dashboard Server', `session-${
|
|
46
|
+
VALUES (?, ?, ?, 'idle', 'dashboard-server', ?, ?)`)
|
|
47
|
+
.run(agentId, 'Dashboard Server', `session-dash-${process.pid}`, now, now);
|
|
38
48
|
}
|
|
39
49
|
}
|
|
40
50
|
catch {
|
|
41
51
|
/* ignore */
|
|
42
52
|
}
|
|
43
53
|
}
|
|
44
|
-
//
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='worktrees'")
|
|
51
|
-
.all();
|
|
52
|
-
if (hasTable.length > 0) {
|
|
53
|
-
const worktrees = wtDb
|
|
54
|
-
.prepare("SELECT id, slug, branch_name, status FROM worktrees WHERE status='active'")
|
|
55
|
-
.all();
|
|
56
|
-
const taskDbPath = join(cwd, '.uap', 'tasks', 'tasks.db');
|
|
57
|
-
if (existsSync(taskDbPath)) {
|
|
58
|
-
const taskDb = new Database(taskDbPath);
|
|
59
|
-
const existingCount = taskDb.prepare('SELECT COUNT(*) as c FROM tasks').get().c;
|
|
60
|
-
if (existingCount === 0 && worktrees.length > 0) {
|
|
61
|
-
const insert = taskDb.prepare(`INSERT OR IGNORE INTO tasks (id, title, type, status, priority, created_at, updated_at) VALUES (?, ?, 'task', 'in_progress', 2, ?, ?)`);
|
|
62
|
-
for (const wt of worktrees) {
|
|
63
|
-
insert.run(`wt-${wt.id}`, `Worktree: ${wt.slug} (${wt.branch_name})`, now, now);
|
|
64
|
-
tasksCreated++;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
taskDb.close();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
wtDb.close();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
/* ignore */
|
|
75
|
-
}
|
|
76
|
-
// 3. Create tasks from recent git commits (only real commits, INSERT OR IGNORE)
|
|
77
|
-
try {
|
|
78
|
-
const taskDbPath = join(cwd, '.uap', 'tasks', 'tasks.db');
|
|
79
|
-
if (existsSync(taskDbPath)) {
|
|
80
|
-
const gitLog = execSync('git log --oneline -10 --format="%H|%s"', {
|
|
81
|
-
encoding: 'utf-8',
|
|
82
|
-
cwd,
|
|
83
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
84
|
-
}).trim();
|
|
85
|
-
if (gitLog) {
|
|
86
|
-
const taskDb = new Database(taskDbPath);
|
|
87
|
-
const insert = taskDb.prepare(`INSERT OR IGNORE INTO tasks (id, title, type, status, priority, created_at, updated_at) VALUES (?, ?, ?, 'done', 3, ?, ?)`);
|
|
88
|
-
for (const line of gitLog.split('\n').filter(Boolean)) {
|
|
89
|
-
const [hash, ...msgParts] = line.split('|');
|
|
90
|
-
const msg = msgParts.join('|');
|
|
91
|
-
if (!hash || !msg)
|
|
92
|
-
continue;
|
|
93
|
-
const type = msg.startsWith('fix') ? 'bug' : msg.startsWith('feat') ? 'feature' : 'task';
|
|
94
|
-
insert.run(`git-${hash.slice(0, 8)}`, msg, type, now, now);
|
|
95
|
-
tasksCreated++;
|
|
96
|
-
}
|
|
97
|
-
taskDb.close();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
catch {
|
|
102
|
-
/* ignore */
|
|
103
|
-
}
|
|
54
|
+
// NOTE: tasks.db is intentionally NOT seeded — not from worktrees (a
|
|
55
|
+
// worktree is not a task) and not from git log (a commit is not a task).
|
|
56
|
+
// Fabricated `wt-*`/`git-*` rows polluted the task counts and the kanban
|
|
57
|
+
// with entities no one created or manages. The Tasks tab is honestly
|
|
58
|
+
// empty until real tasks are created (via `uap task create` or the UI).
|
|
59
|
+
//
|
|
104
60
|
// NOTE: deploy_queue / deploy_batches are intentionally NOT seeded from git.
|
|
105
61
|
// A git tag or commit is not a deploy event; inserting them as status='completed'
|
|
106
62
|
// deploys (timestamped at seed time) would be synthetic data — which this module
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-seeder.js","sourceRoot":"","sources":["../../src/dashboard/data-seeder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"data-seeder.js","sourceRoot":"","sources":["../../src/dashboard/data-seeder.ts"],"names":[],"mappings":"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"}
|
|
@@ -193,6 +193,14 @@ export interface TaskData {
|
|
|
193
193
|
blocked: number;
|
|
194
194
|
open: number;
|
|
195
195
|
items: TaskItem[];
|
|
196
|
+
/** How many not-done rows the 50-item board window actually shows vs. how
|
|
197
|
+
* many exist — the board header must say "showing X of Y", not claim DB
|
|
198
|
+
* totals over a truncated window (dash audit). */
|
|
199
|
+
boardShown: number;
|
|
200
|
+
boardTotal: number;
|
|
201
|
+
/** How many done rows the 10-item "recently done" strip shows vs. total. */
|
|
202
|
+
doneShown: number;
|
|
203
|
+
doneTotal: number;
|
|
196
204
|
}
|
|
197
205
|
export interface CoordData {
|
|
198
206
|
activeAgents: number;
|
|
@@ -210,6 +218,7 @@ export interface CoordData {
|
|
|
210
218
|
startedAt: string;
|
|
211
219
|
type?: string;
|
|
212
220
|
task?: string;
|
|
221
|
+
lastHeartbeat?: string | null;
|
|
213
222
|
}>;
|
|
214
223
|
skillsPerAgent: Record<string, string[]>;
|
|
215
224
|
patternsPerAgent: Record<string, Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-service.d.ts","sourceRoot":"","sources":["../../src/dashboard/data-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAuC,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAMvF,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGjG,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAkB1E,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1F,YAAY,EAAE;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,aAAa,EAAE,gBAAgB,CAAC;IAChC,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,UAAU,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E;AA6ED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAEnE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAE7E;AA6ND,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,KAAK,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;IACH,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,UAAU,EAAE,iBAAiB,CAAC;IAC9B,aAAa,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAG1B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9E,YAAY,EAAE,KAAK,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,gBAAgB,EAAE;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,yBAAyB,EAAE,MAAM,CAAC;QAClC,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,YAAY,EAAE,KAAK,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,sBAAsB,EAAE,KAAK,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,uEAAuE;IACvE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"data-service.d.ts","sourceRoot":"","sources":["../../src/dashboard/data-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -465,9 +465,13 @@ function buildSessionTelemetry(cwd, coordination, deployBuckets, compliance) {
|
|
|
465
465
|
// Read the latest REAL session. This is a read path — never fabricate one.
|
|
466
466
|
// If none exists, synthesize an in-memory row with an honest (current) start
|
|
467
467
|
// so uptime reflects reality instead of a seeded "-2h", and nothing is written.
|
|
468
|
+
// The synthetic id is STABLE per dash process (pid): persistSessionSnapshot
|
|
469
|
+
// runs INSERT OR REPLACE on every refresh tick, and a `session-${Date.now()}`
|
|
470
|
+
// id minted a FRESH row per 2s tick — ~43k rows/day of self-written
|
|
471
|
+
// "history" (found in the dash audit). A stable id replaces one row.
|
|
468
472
|
const sessionRowRaw = db.prepare('SELECT * FROM sessions ORDER BY created_at DESC LIMIT 1').get();
|
|
469
473
|
const sessionRow = sessionRowRaw ?? {
|
|
470
|
-
id: `session-${
|
|
474
|
+
id: `session-dash-${process.pid}`,
|
|
471
475
|
created_at: new Date().toISOString(),
|
|
472
476
|
status: 'active',
|
|
473
477
|
};
|
|
@@ -1224,7 +1228,18 @@ export function getModelData(cwd) {
|
|
|
1224
1228
|
}
|
|
1225
1229
|
export function getTaskData(cwd) {
|
|
1226
1230
|
const taskDbPath = join(cwd, '.uap/tasks/tasks.db');
|
|
1227
|
-
const result = {
|
|
1231
|
+
const result = {
|
|
1232
|
+
total: 0,
|
|
1233
|
+
done: 0,
|
|
1234
|
+
inProgress: 0,
|
|
1235
|
+
blocked: 0,
|
|
1236
|
+
open: 0,
|
|
1237
|
+
items: [],
|
|
1238
|
+
boardShown: 0,
|
|
1239
|
+
boardTotal: 0,
|
|
1240
|
+
doneShown: 0,
|
|
1241
|
+
doneTotal: 0,
|
|
1242
|
+
};
|
|
1228
1243
|
if (existsSync(taskDbPath)) {
|
|
1229
1244
|
try {
|
|
1230
1245
|
const db = new Database(taskDbPath, { readonly: true });
|
|
@@ -1235,6 +1250,11 @@ export function getTaskData(cwd) {
|
|
|
1235
1250
|
result.inProgress = db.prepare("SELECT COUNT(*) as c FROM tasks WHERE status='in_progress'").get().c;
|
|
1236
1251
|
result.blocked = db.prepare("SELECT COUNT(*) as c FROM tasks WHERE status='blocked'").get().c;
|
|
1237
1252
|
result.open = db.prepare("SELECT COUNT(*) as c FROM tasks WHERE status='open'").get().c;
|
|
1253
|
+
// Exact not-done population for the board window (NOT total−done: a
|
|
1254
|
+
// status outside the done/wont_do set would make the subtraction lie).
|
|
1255
|
+
result.boardTotal = db
|
|
1256
|
+
.prepare("SELECT COUNT(*) as c FROM tasks WHERE status NOT IN ('done', 'wont_do')")
|
|
1257
|
+
.get().c;
|
|
1238
1258
|
// Fetch individual task items for kanban board (most recent 50)
|
|
1239
1259
|
const rows = db
|
|
1240
1260
|
.prepare(`SELECT id, title, type, status, priority, assignee, updated_at, parent_id
|
|
@@ -1295,6 +1315,12 @@ export function getTaskData(cwd) {
|
|
|
1295
1315
|
parentId: r.parent_id,
|
|
1296
1316
|
...resolveGroup(r.id),
|
|
1297
1317
|
}));
|
|
1318
|
+
// Window honesty: the board shows the newest 50 not-done rows and the
|
|
1319
|
+
// strip the newest 10 done rows. Report both window sizes against their
|
|
1320
|
+
// true populations so the UI can say "showing X of Y".
|
|
1321
|
+
result.boardShown = rows.length;
|
|
1322
|
+
result.doneShown = doneRows.length;
|
|
1323
|
+
result.doneTotal = result.done;
|
|
1298
1324
|
db.close();
|
|
1299
1325
|
}
|
|
1300
1326
|
catch {
|
|
@@ -1335,7 +1361,7 @@ function getCoordData(cwd) {
|
|
|
1335
1361
|
// Agent list
|
|
1336
1362
|
try {
|
|
1337
1363
|
const agentRows = db
|
|
1338
|
-
.prepare('SELECT id, name, status, started_at, current_task FROM agent_registry ORDER BY started_at DESC LIMIT 20')
|
|
1364
|
+
.prepare('SELECT id, name, status, started_at, current_task, last_heartbeat FROM agent_registry ORDER BY started_at DESC LIMIT 20')
|
|
1339
1365
|
.all();
|
|
1340
1366
|
result.agents = agentRows.map((a) => ({
|
|
1341
1367
|
id: a.id,
|
|
@@ -1343,6 +1369,9 @@ function getCoordData(cwd) {
|
|
|
1343
1369
|
status: a.status,
|
|
1344
1370
|
startedAt: a.started_at,
|
|
1345
1371
|
task: a.current_task || '',
|
|
1372
|
+
// Heartbeat age drives the agents-panel stale indicator; agents
|
|
1373
|
+
// typically re-beat every 30s, so >5m means stale/absent.
|
|
1374
|
+
lastHeartbeat: a.last_heartbeat || a.started_at || null,
|
|
1346
1375
|
}));
|
|
1347
1376
|
}
|
|
1348
1377
|
catch {
|