@miller-tech/uap 1.163.13 → 1.165.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.
Files changed (142) hide show
  1. package/README.md +1 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/bin/cli.js +5 -4
  4. package/dist/bin/cli.js.map +1 -1
  5. package/dist/browser/web-browser.d.ts +7 -0
  6. package/dist/browser/web-browser.d.ts.map +1 -1
  7. package/dist/browser/web-browser.js +15 -0
  8. package/dist/browser/web-browser.js.map +1 -1
  9. package/dist/cli/deliver.d.ts +32 -3
  10. package/dist/cli/deliver.d.ts.map +1 -1
  11. package/dist/cli/deliver.js +198 -31
  12. package/dist/cli/deliver.js.map +1 -1
  13. package/dist/cli/guided-setup.d.ts.map +1 -1
  14. package/dist/cli/guided-setup.js +13 -1
  15. package/dist/cli/guided-setup.js.map +1 -1
  16. package/dist/cli/model.d.ts.map +1 -1
  17. package/dist/cli/model.js +9 -1
  18. package/dist/cli/model.js.map +1 -1
  19. package/dist/cli/proxy-lifecycle.d.ts +66 -13
  20. package/dist/cli/proxy-lifecycle.d.ts.map +1 -1
  21. package/dist/cli/proxy-lifecycle.js +116 -49
  22. package/dist/cli/proxy-lifecycle.js.map +1 -1
  23. package/dist/cli/proxy.d.ts +46 -0
  24. package/dist/cli/proxy.d.ts.map +1 -1
  25. package/dist/cli/proxy.js +353 -23
  26. package/dist/cli/proxy.js.map +1 -1
  27. package/dist/cli/verify.d.ts +6 -0
  28. package/dist/cli/verify.d.ts.map +1 -1
  29. package/dist/cli/verify.js +64 -0
  30. package/dist/cli/verify.js.map +1 -1
  31. package/dist/cli/wizard-config.d.ts +4 -0
  32. package/dist/cli/wizard-config.d.ts.map +1 -1
  33. package/dist/cli/wizard-config.js +14 -3
  34. package/dist/cli/wizard-config.js.map +1 -1
  35. package/dist/config/settings-registry.d.ts.map +1 -1
  36. package/dist/config/settings-registry.js +25 -0
  37. package/dist/config/settings-registry.js.map +1 -1
  38. package/dist/coordination/effort-profile.d.ts +39 -0
  39. package/dist/coordination/effort-profile.d.ts.map +1 -0
  40. package/dist/coordination/effort-profile.js +74 -0
  41. package/dist/coordination/effort-profile.js.map +1 -0
  42. package/dist/dashboard/server.d.ts.map +1 -1
  43. package/dist/dashboard/server.js +68 -10
  44. package/dist/dashboard/server.js.map +1 -1
  45. package/dist/delivery/agentic-executor.d.ts +15 -0
  46. package/dist/delivery/agentic-executor.d.ts.map +1 -1
  47. package/dist/delivery/agentic-executor.js +64 -3
  48. package/dist/delivery/agentic-executor.js.map +1 -1
  49. package/dist/delivery/convergence-loop.d.ts +76 -1
  50. package/dist/delivery/convergence-loop.d.ts.map +1 -1
  51. package/dist/delivery/convergence-loop.js +71 -6
  52. package/dist/delivery/convergence-loop.js.map +1 -1
  53. package/dist/delivery/critic.d.ts +7 -0
  54. package/dist/delivery/critic.d.ts.map +1 -1
  55. package/dist/delivery/critic.js.map +1 -1
  56. package/dist/delivery/decompose.d.ts +9 -0
  57. package/dist/delivery/decompose.d.ts.map +1 -1
  58. package/dist/delivery/decompose.js +11 -0
  59. package/dist/delivery/decompose.js.map +1 -1
  60. package/dist/delivery/execution-gate.d.ts +4 -0
  61. package/dist/delivery/execution-gate.d.ts.map +1 -1
  62. package/dist/delivery/execution-gate.js +194 -2
  63. package/dist/delivery/execution-gate.js.map +1 -1
  64. package/dist/delivery/graph-safety.d.ts +75 -0
  65. package/dist/delivery/graph-safety.d.ts.map +1 -0
  66. package/dist/delivery/graph-safety.js +98 -0
  67. package/dist/delivery/graph-safety.js.map +1 -0
  68. package/dist/delivery/mission-acceptance.d.ts.map +1 -1
  69. package/dist/delivery/mission-acceptance.js +69 -21
  70. package/dist/delivery/mission-acceptance.js.map +1 -1
  71. package/dist/delivery/per-phase-escalation-controller.d.ts +37 -0
  72. package/dist/delivery/per-phase-escalation-controller.d.ts.map +1 -0
  73. package/dist/delivery/per-phase-escalation-controller.js +68 -0
  74. package/dist/delivery/per-phase-escalation-controller.js.map +1 -0
  75. package/dist/delivery/per-phase-escalation.d.ts +53 -0
  76. package/dist/delivery/per-phase-escalation.d.ts.map +1 -0
  77. package/dist/delivery/per-phase-escalation.js +57 -0
  78. package/dist/delivery/per-phase-escalation.js.map +1 -0
  79. package/dist/delivery/reflect.d.ts +56 -0
  80. package/dist/delivery/reflect.d.ts.map +1 -0
  81. package/dist/delivery/reflect.js +79 -0
  82. package/dist/delivery/reflect.js.map +1 -0
  83. package/dist/delivery/user-paths.d.ts +42 -0
  84. package/dist/delivery/user-paths.d.ts.map +1 -1
  85. package/dist/delivery/user-paths.js +254 -6
  86. package/dist/delivery/user-paths.js.map +1 -1
  87. package/dist/delivery/user-validation.d.ts.map +1 -1
  88. package/dist/delivery/user-validation.js +21 -1
  89. package/dist/delivery/user-validation.js.map +1 -1
  90. package/dist/delivery/verification-provenance.d.ts +47 -0
  91. package/dist/delivery/verification-provenance.d.ts.map +1 -0
  92. package/dist/delivery/verification-provenance.js +48 -0
  93. package/dist/delivery/verification-provenance.js.map +1 -0
  94. package/dist/delivery/vision-judge.d.ts.map +1 -1
  95. package/dist/delivery/vision-judge.js +8 -1
  96. package/dist/delivery/vision-judge.js.map +1 -1
  97. package/dist/models/complexity.d.ts +36 -0
  98. package/dist/models/complexity.d.ts.map +1 -0
  99. package/dist/models/complexity.js +75 -0
  100. package/dist/models/complexity.js.map +1 -0
  101. package/dist/models/openai-compat-client.d.ts +26 -0
  102. package/dist/models/openai-compat-client.d.ts.map +1 -1
  103. package/dist/models/openai-compat-client.js +60 -8
  104. package/dist/models/openai-compat-client.js.map +1 -1
  105. package/dist/models/router.d.ts.map +1 -1
  106. package/dist/models/router.js +39 -10
  107. package/dist/models/router.js.map +1 -1
  108. package/dist/models/types.d.ts +60 -10
  109. package/dist/models/types.d.ts.map +1 -1
  110. package/dist/models/types.js +128 -11
  111. package/dist/models/types.js.map +1 -1
  112. package/dist/self-tuning/prompt-variants.d.ts +93 -0
  113. package/dist/self-tuning/prompt-variants.d.ts.map +1 -0
  114. package/dist/self-tuning/prompt-variants.js +143 -0
  115. package/dist/self-tuning/prompt-variants.js.map +1 -0
  116. package/dist/tasks/types.d.ts +2 -2
  117. package/dist/types/config.d.ts +8 -0
  118. package/dist/types/config.d.ts.map +1 -1
  119. package/docs/INDEX.md +1 -1
  120. package/docs/benchmarks/COMPREHENSIVE_BENCHMARKS.md +47 -53
  121. package/docs/benchmarks/VALIDATION_RESULTS.md +0 -2
  122. package/docs/guides/COORDINATION.md +1 -1
  123. package/docs/guides/DEPLOY_BATCHING.md +1 -1
  124. package/docs/guides/DROIDS_AND_SKILLS.md +3 -2
  125. package/docs/guides/LOCAL_MODELS.md +1 -1
  126. package/docs/guides/MCP_ROUTER.md +1 -1
  127. package/docs/guides/MEMORY.md +2 -2
  128. package/docs/guides/MULTI_MODEL.md +1 -1
  129. package/docs/guides/POLICIES.md +1 -1
  130. package/docs/guides/PROXY.md +47 -4
  131. package/docs/guides/SANDBOX.md +1 -1
  132. package/docs/guides/WORKTREE_WORKFLOW.md +1 -1
  133. package/docs/reference/CLI.md +16 -3
  134. package/docs/reference/CONFIGURATION.md +1 -1
  135. package/docs/reference/FEATURES.md +1 -1
  136. package/package.json +1 -1
  137. package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
  138. package/src/policies/enforcers/iac_plan_destruction_check.py +32 -4
  139. package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
  140. package/templates/hooks/session-end.sh +9 -0
  141. package/templates/hooks/session-start.sh +10 -0
  142. package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
package/dist/cli/proxy.js CHANGED
@@ -12,6 +12,12 @@
12
12
  * uap proxy status [--port <n>] [--json]
13
13
  * uap proxy start | stop | restart manual controls
14
14
  * uap proxy enable | disable toggle .uap.json proxy.autostart
15
+ * uap proxy dashboard [on|off] toggle/inspect the ride-along dashboard
16
+ *
17
+ * The operational dashboard rides along with the proxy: `ensure`/`start` also
18
+ * start-or-adopt `uap dashboard serve`, and `release`/`stop` tear it down under
19
+ * the same ownership + refcount rules. Operators get monitoring without running
20
+ * a second command. Opt out per project with `uap proxy dashboard off`.
15
21
  *
16
22
  * Everything is fail-open: hook-driven calls never throw and never block the
17
23
  * session — a proxy that won't start just means the agent runs without it.
@@ -22,17 +28,24 @@
22
28
  * UAP_PROXY_RUN_SCRIPT proxy launch script (default: bundled continuity script)
23
29
  * UAP_PROXY_NO_SYSTEMD=1 force the detached-process path (skip systemd)
24
30
  * UAP_PROXY_HEALTH_WAIT_MS how long to wait for /health after launch (15000)
31
+ * UAP_PROXY_DASHBOARD=0|1 force the ride-along dashboard off/on (wins over config)
32
+ * UAP_DASH_PORT dashboard port (3847)
33
+ * UAP_DASH_HOST dashboard bind host (localhost)
34
+ * UAP_DASH_HEALTH_WAIT_MS how long to wait for the dashboard to serve (10000)
25
35
  */
26
36
  import chalk from 'chalk';
27
37
  import { spawn, spawnSync } from 'child_process';
28
- import { existsSync, mkdirSync, openSync, readFileSync } from 'fs';
38
+ import { closeSync, existsSync, mkdirSync, openSync, readFileSync } from 'fs';
29
39
  import { join, dirname } from 'path';
30
40
  import { fileURLToPath } from 'url';
41
+ import net from 'net';
31
42
  import os from 'os';
32
43
  import { loadUapConfigRaw, modifyUapConfig } from '../utils/config-loader.js';
33
44
  import { proxyEnvPath } from './systemd-services.js';
34
45
  import { DEFAULT_PROXY_PORT, runtimeDir, ensureProxy, releaseProxy, readOwner, clearOwner, listClients, resolveClientId, pidFromClientId, isPidAlive, } from './proxy-lifecycle.js';
35
46
  const PROXY_UNIT = 'uap-anthropic-proxy.service';
47
+ /** Matches `uap dashboard serve`'s default port. */
48
+ const DEFAULT_DASH_PORT = 3847;
36
49
  /** Detect the harness driving this session, for diagnostics only. */
37
50
  function detectHarness() {
38
51
  if (process.env.CLAUDE_PROJECT_DIR || process.env.CLAUDE_SESSION_ID)
@@ -58,11 +71,85 @@ async function probeHealth(port, timeoutMs = 1500) {
58
71
  clearTimeout(t);
59
72
  }
60
73
  }
61
- /** Poll health until up or timeout used after launching the proxy. */
62
- async function waitHealthy(port, timeoutMs) {
74
+ /** The address to TALK to a service bound on `host` (0.0.0.0 isn't dialable). */
75
+ function dialHost(host) {
76
+ return host === '0.0.0.0' || host === '::' ? '127.0.0.1' : host;
77
+ }
78
+ /**
79
+ * Dashboard liveness probe. Demands positive identification, not merely a live
80
+ * socket: adopting whatever happens to hold :3847 would hand the operator a URL
81
+ * to someone else's server.
82
+ *
83
+ * Accepted signals, cheapest first:
84
+ * 1. `/health` returning our service marker AND serving THIS project. The
85
+ * dashboard reads every panel from its own cwd, so another project's
86
+ * dashboard is not ours to adopt or to advertise — the client registry is
87
+ * per-user, but a dashboard is per-project.
88
+ * 2. the served page titled "UAP Dashboard" — a dashboard started by an OLDER
89
+ * uap has no `/health`, and misreporting a dashboard the operator is
90
+ * staring at as "down" is worse than one extra request on the miss path.
91
+ * Such a dashboard cannot state its project, so it is adopted as-is.
92
+ */
93
+ export async function probeDashHealth(port, timeoutMs = 1500, opts = {}) {
94
+ const target = dialHost(opts.host ?? 'localhost');
95
+ const fetchText = async (path) => {
96
+ const controller = new AbortController();
97
+ const t = setTimeout(() => controller.abort(), timeoutMs);
98
+ try {
99
+ const res = await fetch(`http://${target}:${port}${path}`, { signal: controller.signal });
100
+ return res.ok ? await res.text() : null;
101
+ }
102
+ catch {
103
+ return null;
104
+ }
105
+ finally {
106
+ clearTimeout(t);
107
+ }
108
+ };
109
+ const health = await fetchText('/health');
110
+ if (health) {
111
+ try {
112
+ const body = JSON.parse(health);
113
+ if (body?.service === 'uap-dashboard') {
114
+ // A dashboard that reports a DIFFERENT project root is somebody else's.
115
+ if (opts.root && body.root && body.root !== opts.root)
116
+ return false;
117
+ return true;
118
+ }
119
+ }
120
+ catch {
121
+ /* not our JSON — fall through to the legacy check */
122
+ }
123
+ }
124
+ const rootPage = await fetchText('/');
125
+ return rootPage !== null && /<title>\s*UAP Dashboard\s*<\/title>/i.test(rootPage);
126
+ }
127
+ /** Is anything listening on `port`? Used to avoid a doomed spawn (and the
128
+ * health-wait stall that follows it) when a foreign process holds the port. */
129
+ function portOccupied(port, host = 'localhost', timeoutMs = 400) {
130
+ return new Promise((resolve) => {
131
+ let sock;
132
+ try {
133
+ sock = net.connect({ host: dialHost(host), port });
134
+ }
135
+ catch {
136
+ return resolve(false); // e.g. ERR_SOCKET_BAD_PORT — throws synchronously
137
+ }
138
+ const done = (occupied) => {
139
+ sock.destroy();
140
+ resolve(occupied);
141
+ };
142
+ sock.setTimeout(timeoutMs);
143
+ sock.once('connect', () => done(true));
144
+ sock.once('timeout', () => done(false));
145
+ sock.once('error', () => done(false));
146
+ });
147
+ }
148
+ /** Poll a health probe until up or timeout — used after launching a service. */
149
+ async function waitHealthy(port, timeoutMs, probe = probeHealth) {
63
150
  const deadline = Date.now() + timeoutMs;
64
151
  while (Date.now() < deadline) {
65
- if (await probeHealth(port, 1200))
152
+ if (await probe(port, 1200))
66
153
  return true;
67
154
  await new Promise((r) => setTimeout(r, 600));
68
155
  }
@@ -192,28 +279,24 @@ async function startProxy(port) {
192
279
  }
193
280
  return { healthy: true, owner: { kind: 'process', pid, startToken, port, startedAt: now } };
194
281
  }
195
- /** Is the owner pid still OUR proxy (defends against PID reuse before we kill)? */
196
- async function pidIsOurProxy(owner) {
282
+ /** Is the owner pid still the process WE launched (defends against PID reuse
283
+ * before we kill)? Falls back to "is it still serving" when no token exists. */
284
+ async function pidIsOurs(owner, probe) {
197
285
  const pid = owner.pid;
198
286
  if (!pid || !isPidAlive(pid))
199
287
  return false;
200
288
  const current = readStartToken(pid);
201
289
  if (owner.startToken && current)
202
290
  return current === owner.startToken; // definitive
203
- // No reliable identity token — only signal if the proxy is still serving.
204
- return probeHealth(owner.port);
291
+ // No reliable identity token — only signal if the service is still serving.
292
+ return probe(owner.port);
205
293
  }
206
- /** Stop adapter: systemctl stop, or identity-checked SIGTERM->SIGKILL. */
207
- async function stopProxy(owner) {
208
- if (owner.kind === 'systemd') {
209
- // Pin the unit name — never let a tampered record stop an arbitrary unit.
210
- spawnSync('systemctl', ['--user', 'stop', PROXY_UNIT], { timeout: 8000 });
211
- return;
212
- }
294
+ /** Identity-checked SIGTERM -> SIGKILL of a process we own. */
295
+ async function terminateOwned(owner, probe) {
213
296
  const pid = owner.pid;
214
297
  if (!pid || pid <= 0)
215
298
  return;
216
- if (!(await pidIsOurProxy(owner)))
299
+ if (!(await pidIsOurs(owner, probe)))
217
300
  return; // PID reuse / already gone — do nothing
218
301
  try {
219
302
  process.kill(pid, 'SIGTERM');
@@ -238,8 +321,154 @@ async function stopProxy(owner) {
238
321
  /* gone */
239
322
  }
240
323
  }
241
- function deps() {
242
- return { probeHealth: (p) => probeHealth(p), startProxy, stopProxy, now: () => new Date().toISOString() };
324
+ /** Stop adapter: systemctl stop, or identity-checked SIGTERM->SIGKILL. */
325
+ async function stopProxy(owner) {
326
+ if (owner.kind === 'systemd') {
327
+ // Pin the unit name — never let a tampered record stop an arbitrary unit.
328
+ spawnSync('systemctl', ['--user', 'stop', PROXY_UNIT], { timeout: 8000 });
329
+ return;
330
+ }
331
+ await terminateOwned(owner, (p) => probeHealth(p));
332
+ }
333
+ /** Stop adapter for the ride-along dashboard (always a plain process we spawned). */
334
+ async function stopDashboard(owner, host = 'localhost') {
335
+ await terminateOwned(owner, (p) => probeDashHealth(p, 1500, { host }));
336
+ }
337
+ /** Ports must be dialable: `net.connect` THROWS synchronously outside 1..65535,
338
+ * which would escape `uap proxy start` as an unhandled rejection. */
339
+ function validPort(n) {
340
+ const p = Number(n);
341
+ return Number.isInteger(p) && p > 0 && p <= 65535 ? p : null;
342
+ }
343
+ /**
344
+ * Resolve the ride-along dashboard settings.
345
+ * Precedence: env > `.uap.json` proxy.dashboard > defaults (ON, :3847, localhost).
346
+ * `proxy.dashboard` accepts a bare boolean or `{enabled, port, host}`.
347
+ * Default-ON is the point of the feature: monitoring should not require the
348
+ * operator to know a second command exists.
349
+ */
350
+ export function resolveDashboardSettings(cwd = process.cwd()) {
351
+ let enabled = true;
352
+ let port = DEFAULT_DASH_PORT;
353
+ let host = 'localhost';
354
+ try {
355
+ const cfg = loadUapConfigRaw(cwd) ?? {};
356
+ const proxy = cfg.proxy;
357
+ const d = proxy?.dashboard;
358
+ if (typeof d === 'boolean') {
359
+ enabled = d;
360
+ }
361
+ else if (d && typeof d === 'object') {
362
+ if (typeof d.enabled === 'boolean')
363
+ enabled = d.enabled;
364
+ port = validPort(d.port) ?? port;
365
+ if (typeof d.host === 'string' && d.host.trim())
366
+ host = d.host.trim();
367
+ }
368
+ }
369
+ catch {
370
+ /* defaults */
371
+ }
372
+ const toggle = process.env.UAP_PROXY_DASHBOARD?.trim();
373
+ if (toggle)
374
+ enabled = !/^(0|off|false|no)$/i.test(toggle);
375
+ port = validPort(process.env.UAP_DASH_PORT) ?? port;
376
+ const envHost = process.env.UAP_DASH_HOST?.trim();
377
+ if (envHost)
378
+ host = envHost;
379
+ return { enabled, port, host };
380
+ }
381
+ /** Locate the installed CLI entrypoint so we can re-invoke `dashboard serve`. */
382
+ function resolveCliEntry() {
383
+ const here = dirname(fileURLToPath(import.meta.url)); // dist/cli
384
+ const candidates = [
385
+ join(here, '..', 'bin', 'cli.js'),
386
+ join(here, '..', '..', 'dist', 'bin', 'cli.js'),
387
+ ];
388
+ const found = candidates.find((c) => existsSync(c));
389
+ if (found)
390
+ return found;
391
+ const argv1 = process.argv[1];
392
+ return argv1 && existsSync(argv1) ? argv1 : null;
393
+ }
394
+ const DASH_HEALTH_WAIT_MS = Number(process.env.UAP_DASH_HEALTH_WAIT_MS ?? 10000);
395
+ /**
396
+ * Launch adapter for the dashboard: a detached `uap dashboard serve` we own and
397
+ * therefore may stop. Declines to spawn when a FOREIGN process holds the port —
398
+ * `ensureService` has already established that our own dashboard isn't there, so
399
+ * an occupied port means a doomed bind, and spawning anyway would stall the
400
+ * SessionStart hook for the whole health-wait before failing.
401
+ */
402
+ async function startDashboard(port, host, root) {
403
+ const now = new Date().toISOString();
404
+ const entry = resolveCliEntry();
405
+ if (!entry)
406
+ return { healthy: false, owner: null };
407
+ if (await portOccupied(port, host))
408
+ return { healthy: false, owner: null };
409
+ const logDir = join(runtimeDir(), 'logs');
410
+ mkdirSync(logDir, { recursive: true, mode: 0o700 });
411
+ // 0o600: the dashboard's stdout can carry operational detail, and the parent
412
+ // dir's 0700 is not re-applied by mkdirSync when it already exists.
413
+ const out = openSync(join(logDir, 'dashboard.log'), 'a', 0o600);
414
+ let child;
415
+ try {
416
+ child = spawn(process.execPath, [entry, 'dashboard', 'serve', '--port', String(port), '--host', host], {
417
+ detached: true,
418
+ stdio: ['ignore', out, out],
419
+ // Pin the project explicitly: the dashboard reads every panel from its
420
+ // cwd, and inheriting an ambient one silently serves the wrong project.
421
+ cwd: root,
422
+ // Tells the server not to echo the mutation token into this log file.
423
+ env: { ...process.env, UAP_DASH_RIDE_ALONG: '1' },
424
+ });
425
+ }
426
+ finally {
427
+ closeSync(out); // the child holds its own dup — don't leak an fd per call
428
+ }
429
+ child.unref();
430
+ const pid = child.pid;
431
+ const startToken = pid ? readStartToken(pid) : undefined;
432
+ const healthy = await waitHealthy(port, DASH_HEALTH_WAIT_MS, (p, t) => probeDashHealth(p, t, { host, root }));
433
+ if (!healthy) {
434
+ if (pid) {
435
+ try {
436
+ process.kill(pid, 'SIGTERM');
437
+ }
438
+ catch {
439
+ /* already gone */
440
+ }
441
+ }
442
+ return { healthy: false, owner: null };
443
+ }
444
+ return { healthy: true, owner: { kind: 'process', pid, startToken, port, startedAt: now } };
445
+ }
446
+ /** Human-facing dashboard URL (0.0.0.0 is not something you can click). */
447
+ function dashUrl(host, port) {
448
+ return `http://${dialHost(host)}:${port}`;
449
+ }
450
+ /** Non-loopback binds are reachable off-box — never report that as "localhost"
451
+ * without saying so (the server's own warning goes to the ride-along log). */
452
+ function lanWarning(host) {
453
+ const loopback = host === 'localhost' || host === '127.0.0.1' || host === '::1';
454
+ return loopback ? null : `bound to ${host} — reachable beyond this machine`;
455
+ }
456
+ /**
457
+ * Side-effect adapters. The dashboard ones are bound to ONE resolved settings
458
+ * snapshot + project root so the probe, the spawn and the teardown can never
459
+ * disagree about which host/port/project they mean.
460
+ */
461
+ function deps(dash, root = process.cwd()) {
462
+ const d = dash ?? resolveDashboardSettings(root);
463
+ return {
464
+ probeHealth: (p) => probeHealth(p),
465
+ startProxy,
466
+ stopProxy,
467
+ now: () => new Date().toISOString(),
468
+ probeDashHealth: (p) => probeDashHealth(p, 1500, { host: d.host, root }),
469
+ startDashboard: (p) => startDashboard(p, d.host, root),
470
+ stopDashboard: (owner) => stopDashboard(owner, d.host),
471
+ };
243
472
  }
244
473
  /** Client record for THIS session. Liveness pid = the long-lived AGENT process
245
474
  * (passed via --client-pid by the hook), NOT the ephemeral CLI/hook process. */
@@ -278,17 +507,42 @@ export async function proxyCommand(sub, options = {}) {
278
507
  }
279
508
  }
280
509
  const clientPid = options.clientPid !== undefined ? Number(options.clientPid) : undefined;
510
+ // The ride-along dashboard. `--no-dashboard` suppresses STARTING it for this
511
+ // call (commander sets `dashboard:false`); config/env decide otherwise. It
512
+ // never suppresses teardown — we always reap a dashboard we own.
513
+ const root = process.cwd();
514
+ const dash = resolveDashboardSettings(root);
515
+ const wantDashboard = options.dashboard === false ? false : dash.enabled;
516
+ const ensureOpts = { dashboard: { enabled: wantDashboard, port: dash.port } };
517
+ const lifecycle = deps(dash, root);
518
+ /** Report what happened to the ride-along dashboard on ensure/start. */
519
+ const sayDashboard = (r) => {
520
+ if (!r)
521
+ return;
522
+ const url = dashUrl(dash.host, r.port);
523
+ const lan = lanWarning(dash.host);
524
+ if (r.action === 'reused')
525
+ say(chalk.dim(`✓ dashboard already running — ${url}`));
526
+ else if (r.action === 'started') {
527
+ say(chalk.green(`✓ dashboard started — ${url}`));
528
+ if (lan)
529
+ say(chalk.yellow(` ⚠ ${lan}`));
530
+ }
531
+ else
532
+ say(chalk.yellow(`⚠ dashboard could not be started on :${r.port} (port busy, or held by another project's dashboard); run \`uap dash serve\` manually`));
533
+ };
281
534
  switch (norm) {
282
535
  case 'ensure': {
283
536
  const clientId = resolveClientId(options.client);
284
537
  try {
285
- const r = await ensureProxy(rt, thisClient(clientId, clientPid), port, deps());
538
+ const r = await ensureProxy(rt, thisClient(clientId, clientPid), port, lifecycle, ensureOpts);
286
539
  if (r.action === 'reused')
287
540
  say(chalk.dim(`✓ proxy already running on :${port} (reused, ${r.clients} client${r.clients === 1 ? '' : 's'})`));
288
541
  else if (r.action === 'started')
289
542
  say(chalk.green(`✓ proxy started on :${port}${r.owner ? ` (${r.owner.kind})` : ' (systemd)'}`));
290
543
  else
291
544
  say(chalk.yellow(`⚠ proxy could not be started on :${port}; continuing without it`));
545
+ sayDashboard(r.dashboard);
292
546
  }
293
547
  catch (e) {
294
548
  say(chalk.yellow(`⚠ proxy ensure skipped: ${e.message}`));
@@ -299,13 +553,15 @@ export async function proxyCommand(sub, options = {}) {
299
553
  case 'release': {
300
554
  const clientId = resolveClientId(options.client);
301
555
  try {
302
- const r = await releaseProxy(rt, clientId, deps());
556
+ const r = await releaseProxy(rt, clientId, lifecycle);
303
557
  if (r.action === 'stopped')
304
558
  say(chalk.dim('✓ proxy stopped (last client left)'));
305
559
  else if (r.action === 'left-other-clients')
306
560
  say(chalk.dim(`✓ proxy left running (${r.remainingClients} other client${r.remainingClients === 1 ? '' : 's'} active)`));
307
561
  else if (r.action === 'left-adopted')
308
562
  say(chalk.dim('✓ proxy left running (not started by uap / systemd-managed)'));
563
+ if (r.dashboard?.action === 'stopped')
564
+ say(chalk.dim('✓ dashboard stopped (last client left)'));
309
565
  }
310
566
  catch (e) {
311
567
  say(chalk.yellow(`⚠ proxy release skipped: ${e.message}`));
@@ -314,8 +570,14 @@ export async function proxyCommand(sub, options = {}) {
314
570
  return;
315
571
  }
316
572
  case 'status': {
317
- const healthy = await probeHealth(port);
573
+ // Project-scoped: a dashboard serving a DIFFERENT root is not this
574
+ // project's, so it is reported as down rather than advertised as yours.
575
+ const [healthy, dashHealthy] = await Promise.all([
576
+ probeHealth(port),
577
+ probeDashHealth(dash.port, 1500, { host: dash.host, root }),
578
+ ]);
318
579
  const owner = readOwner(rt);
580
+ const dashOwner = readOwner(rt, 'dash');
319
581
  const clients = listClients(rt);
320
582
  if (options.json) {
321
583
  console.log(JSON.stringify({
@@ -326,6 +588,15 @@ export async function proxyCommand(sub, options = {}) {
326
588
  adopted: healthy && !owner,
327
589
  clients: clients.length,
328
590
  clientIds: clients.map((c) => c.clientId),
591
+ dashboard: {
592
+ enabled: dash.enabled,
593
+ port: dash.port,
594
+ host: dash.host,
595
+ url: dashUrl(dash.host, dash.port),
596
+ healthy: dashHealthy,
597
+ owner: dashOwner,
598
+ adopted: dashHealthy && !dashOwner,
599
+ },
329
600
  }, null, 2));
330
601
  return;
331
602
  }
@@ -339,20 +610,54 @@ export async function proxyCommand(sub, options = {}) {
339
610
  console.log(` clients: ${chalk.bold(String(clients.length))}${clients.length ? ` (${clients.map((c) => c.clientId).join(', ')})` : ''}`);
340
611
  if (unitInstalled())
341
612
  console.log(chalk.dim(` systemd unit: ${PROXY_UNIT} ${unitActive() ? 'active' : 'inactive'}`));
613
+ const dashState = dashHealthy
614
+ ? chalk.green('running')
615
+ : dash.enabled
616
+ ? chalk.red('down')
617
+ : chalk.dim('disabled');
618
+ console.log(`Dashboard (:${dash.port}): ${dashState}`);
619
+ if (dashHealthy) {
620
+ console.log(` ${chalk.cyan(dashUrl(dash.host, dash.port))}`);
621
+ const lan = lanWarning(dash.host);
622
+ if (lan)
623
+ console.log(chalk.yellow(` ⚠ ${lan}`));
624
+ }
625
+ if (dashOwner) {
626
+ console.log(dashHealthy
627
+ ? ` owned by uap${dashOwner.pid ? ` (pid ${dashOwner.pid})` : ''} — will stop when the last client leaves`
628
+ : // The owner marker is per-user but a dashboard serves one project:
629
+ // this one is alive for somebody else, or gone.
630
+ chalk.dim(` a uap-owned dashboard${dashOwner.pid ? ` (pid ${dashOwner.pid})` : ''} holds :${dash.port} for another project (or has exited)`));
631
+ }
632
+ else if (dashHealthy) {
633
+ console.log(chalk.dim(' adopted (not started by uap) — never auto-stopped'));
634
+ }
635
+ else if (!dash.enabled) {
636
+ console.log(chalk.dim(' ride-along disabled — enable with `uap proxy dashboard on`'));
637
+ }
342
638
  return;
343
639
  }
344
640
  case 'start': {
345
641
  const clientId = resolveClientId(options.client);
346
- const r = await ensureProxy(rt, thisClient(clientId, clientPid), port, deps());
642
+ const r = await ensureProxy(rt, thisClient(clientId, clientPid), port, lifecycle, ensureOpts);
347
643
  say(r.action === 'reused'
348
644
  ? chalk.dim(`proxy already running on :${port}`)
349
645
  : r.action === 'started'
350
646
  ? chalk.green(`proxy started on :${port}`)
351
647
  : chalk.yellow(`proxy failed to start on :${port}`));
648
+ sayDashboard(r.dashboard);
352
649
  process.exitCode = r.action === 'start-failed' ? 1 : 0;
353
650
  return;
354
651
  }
355
652
  case 'stop': {
653
+ // Tear the dashboard down with the proxy — a manual `stop` is an explicit
654
+ // "shut it all down", so ownership (not the client refcount) is the rule.
655
+ const dashOwner = readOwner(rt, 'dash');
656
+ if (dashOwner) {
657
+ await stopDashboard(dashOwner, dash.host);
658
+ clearOwner(rt, 'dash');
659
+ say(chalk.dim('dashboard stopped'));
660
+ }
356
661
  const owner = readOwner(rt);
357
662
  if (owner) {
358
663
  await stopProxy(owner);
@@ -387,8 +692,33 @@ export async function proxyCommand(sub, options = {}) {
387
692
  : chalk.yellow('✓ proxy autostart DISABLED — hooks will no longer start/stop the proxy.'));
388
693
  return;
389
694
  }
695
+ case 'dashboard':
696
+ case 'dash': {
697
+ const val = (options.value ?? '').trim().toLowerCase();
698
+ if (!val) {
699
+ const healthy = await probeDashHealth(dash.port, 1500, { host: dash.host, root });
700
+ say(`Ride-along dashboard: ${dash.enabled ? chalk.green('enabled') : chalk.yellow('disabled')} — ${healthy ? chalk.green('running') : chalk.dim('not running')} at ${dashUrl(dash.host, dash.port)}`);
701
+ say(chalk.dim(' toggle with: uap proxy dashboard on | off'));
702
+ return;
703
+ }
704
+ if (val !== 'on' && val !== 'off') {
705
+ console.error(chalk.red(`Unknown value '${val}'. Use: uap proxy dashboard [on|off]`));
706
+ process.exitCode = 1;
707
+ return;
708
+ }
709
+ const on = val === 'on';
710
+ modifyUapConfig(process.cwd(), (c) => {
711
+ const proxy = { ...c.proxy };
712
+ proxy.dashboard = on;
713
+ return { ...c, proxy };
714
+ });
715
+ say(on
716
+ ? chalk.green(`✓ ride-along dashboard ENABLED — it will start with the proxy at ${dashUrl(dash.host, dash.port)} and stop when the last client leaves.`)
717
+ : chalk.yellow('✓ ride-along dashboard DISABLED — start it manually with `uap dash serve`.'));
718
+ return;
719
+ }
390
720
  default:
391
- console.error(chalk.red(`Unknown proxy subcommand '${sub}'. Use: ensure | release | status | start | stop | restart | enable | disable`));
721
+ console.error(chalk.red(`Unknown proxy subcommand '${sub}'. Use: ensure | release | status | start | stop | restart | enable | disable | dashboard`));
392
722
  process.exitCode = 1;
393
723
  }
394
724
  }
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/cli/proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/cli/proxy.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,12 @@ import { type AcceptanceResult } from '../delivery/acceptance-judge.js';
13
13
  import { type VisualVerdict } from '../delivery/visual-gate.js';
14
14
  import { type ResolvedFidelity } from '../delivery/fidelity.js';
15
15
  import type { LoopExecutor } from '../delivery/convergence-loop.js';
16
+ /**
17
+ * Does the project render via <canvas>? Used to append canvas-specific aesthetic
18
+ * guidance when the vision gate fails. Bounded shallow scan of .html/.js source
19
+ * for `<canvas` or a 2D/WebGL context grab. Fail-soft: any error → false.
20
+ */
21
+ export declare function projectUsesCanvas(dir: string): boolean;
16
22
  export interface VerifyOptions {
17
23
  /** Project directory to verify (default: cwd). */
18
24
  dir?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAwC,KAAK,QAAQ,EAAiB,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACvI,OAAO,EAA6C,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AASjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAClC;;6BAEyB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,oFAAoF;IACpF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;mFAC+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;6EAGyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,8EAA8E;AAC9E,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAgP/E;AAmDD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkCpE;AAED,uEAAuE;AACvE,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChH,OAAO,CAAC,IAAI,CAAC,CAmDf"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAwC,KAAK,QAAQ,EAAiB,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACvI,OAAO,EAA6C,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AASjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAIpE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAmCtD;AAED,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAClC;;6BAEyB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,oFAAoF;IACpF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;mFAC+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;6EAGyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,8EAA8E;AAC9E,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6P/E;AAmDD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkCpE;AAED,uEAAuE;AACvE,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChH,OAAO,CAAC,IAAI,CAAC,CAmDf"}