@miller-tech/uap 1.210.2 → 1.210.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"systemd-services.d.ts","sourceRoot":"","sources":["../../src/cli/systemd-services.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkBD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,0BAA+B,GACvC,yBAAyB,CAkO3B;AAGD,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAqB,GAAG,MAAM,GAAG,IAAI,CAQ1F;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,GAAE,MAAqB,GAC7B,MAAM,CAwBR"}
1
+ {"version":3,"file":"systemd-services.d.ts","sourceRoot":"","sources":["../../src/cli/systemd-services.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkBD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,0BAA+B,GACvC,yBAAyB,CAmQ3B;AAGD,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAqB,GAAG,MAAM,GAAG,IAAI,CAQ1F;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,GAAE,MAAqB,GAC7B,MAAM,CAwBR"}
@@ -1,6 +1,30 @@
1
1
  import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
2
2
  import os from 'os';
3
- import { join } from 'path';
3
+ import { dirname, join } from 'path';
4
+ import { fileURLToPath } from 'url';
5
+ /**
6
+ * Read a file shipped with the UAP package (or, when running from a checkout,
7
+ * from the repo root). Returns null when it is not present — callers degrade
8
+ * rather than fail, since `package.json` "files" decides what actually ships.
9
+ */
10
+ function readPackagedFile(relPath) {
11
+ const here = dirname(fileURLToPath(import.meta.url));
12
+ const candidates = [
13
+ join(here, '..', '..', relPath),
14
+ join(here, '..', '..', '..', relPath),
15
+ join(process.cwd(), relPath),
16
+ ];
17
+ for (const c of candidates) {
18
+ try {
19
+ if (existsSync(c))
20
+ return readFileSync(c, 'utf-8');
21
+ }
22
+ catch {
23
+ /* unreadable — try the next */
24
+ }
25
+ }
26
+ return null;
27
+ }
4
28
  function writeIfMissing(filePath, content, installed, skipped, force = false) {
5
29
  if (existsSync(filePath) && !force) {
6
30
  skipped.push(filePath);
@@ -17,6 +41,16 @@ export function installSystemdUserServices(projectDir, options = {}) {
17
41
  mkdirSync(scriptsDir, { recursive: true });
18
42
  const proxyScriptPath = join(scriptsDir, 'run-anthropic-proxy-continuity.sh');
19
43
  const llamaScriptPath = join(scriptsDir, 'run-llama-server-continuity.sh');
44
+ // The upstream resolver is copied from the package rather than re-inlined
45
+ // here. This template and the repo's own launcher have to agree, and a second
46
+ // hand-maintained copy of the resolver is exactly how the .claude/hooks vs
47
+ // templates/hooks drift happened.
48
+ const libDir = join(scriptsDir, 'lib');
49
+ const upstreamLib = readPackagedFile(join('scripts', 'lib', 'llama-upstream.sh'));
50
+ if (upstreamLib) {
51
+ mkdirSync(libDir, { recursive: true });
52
+ writeIfMissing(join(libDir, 'llama-upstream.sh'), upstreamLib, installed, skipped, force);
53
+ }
20
54
  writeIfMissing(proxyScriptPath, [
21
55
  '#!/usr/bin/env bash',
22
56
  'set -euo pipefail',
@@ -27,6 +61,28 @@ export function installSystemdUserServices(projectDir, options = {}) {
27
61
  'export LLAMA_CPP_BASE="${LLAMA_CPP_BASE:-http://127.0.0.1:8080/v1}"',
28
62
  'export PROXY_LOG_LEVEL="${PROXY_LOG_LEVEL:-INFO}"',
29
63
  '',
64
+ '# The pin above goes stale whenever llama moves (Unsloth Studio picks a new',
65
+ '# random port every launch), after which every request 529s. Keep the pin',
66
+ '# while it answers; otherwise discover the live server. Sourced defensively:',
67
+ '# aborting here would crash-loop the unit with no proxy at all.',
68
+ '_upstream_lib="${ROOT_DIR}/scripts/lib/llama-upstream.sh"',
69
+ 'if [ -r "$_upstream_lib" ]; then',
70
+ ' . "$_upstream_lib"',
71
+ ' _resolved_base="$(llama_upstream_resolve "$LLAMA_CPP_BASE")"',
72
+ ' [ -n "$_resolved_base" ] || _resolved_base="$LLAMA_CPP_BASE"',
73
+ ' if [ "$_resolved_base" != "$LLAMA_CPP_BASE" ]; then',
74
+ ' echo "[proxy-startup] pinned upstream ${LLAMA_CPP_BASE} is unreachable;' +
75
+ ' using discovered ${_resolved_base}"',
76
+ ' export LLAMA_CPP_BASE="$_resolved_base"',
77
+ ' fi',
78
+ ' # Watcher only under a supervisor that will restart us (systemd sets',
79
+ ' # INVOCATION_ID). Unsupervised, stopping the proxy is the end of it.',
80
+ ' _watch="${UAP_LLAMA_UPSTREAM_WATCH:-auto}"',
81
+ ' if [ "$_watch" = "on" ] || { [ "$_watch" = "auto" ] && [ -n "${INVOCATION_ID:-}" ]; }; then',
82
+ ' llama_upstream_watch "$LLAMA_CPP_BASE" "$$" &',
83
+ ' fi',
84
+ 'fi',
85
+ '',
30
86
  'export PROXY_LOOP_BREAKER="${PROXY_LOOP_BREAKER:-on}"',
31
87
  'export PROXY_LOOP_WINDOW="${PROXY_LOOP_WINDOW:-6}"',
32
88
  'export PROXY_LOOP_REPEAT_THRESHOLD="${PROXY_LOOP_REPEAT_THRESHOLD:-8}"',
@@ -1 +1 @@
1
- {"version":3,"file":"systemd-services.js","sourceRoot":"","sources":["../../src/cli/systemd-services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnF,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAc5B,SAAS,cAAc,CACrB,QAAgB,EAChB,OAAe,EACf,SAAmB,EACnB,OAAiB,EACjB,KAAK,GAAG,KAAK;IAEb,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IAED,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,UAAkB,EAClB,UAAsC,EAAE;IAExC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;IAErC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC/C,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,mCAAmC,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,gCAAgC,CAAC,CAAC;IAE3E,cAAc,CACZ,eAAe,EACf;QACE,qBAAqB;QACrB,mBAAmB;QACnB,EAAE;QACF,6DAA6D;QAC7D,EAAE;QACF,yCAAyC;QACzC,qEAAqE;QACrE,mDAAmD;QACnD,EAAE;QACF,uDAAuD;QACvD,oDAAoD;QACpD,wEAAwE;QACxE,+DAA+D;QAC/D,wEAAwE;QACxE,mFAAmF;QACnF,6DAA6D;QAC7D,iEAAiE;QACjE,EAAE;QACF,gBAAgB;QAChB,sDAAsD;QACtD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,SAAS,EACT,OAAO,EACP,KAAK,CACN,CAAC;IAEF,cAAc,CACZ,eAAe,EACf;QACE,qBAAqB;QACrB,mBAAmB;QACnB,EAAE;QACF,8EAA8E;QAC9E,qFAAqF;QACrF,EAAE;QACF,kCAAkC;QAClC,6DAA6D;QAC7D,UAAU;QACV,IAAI;QACJ,EAAE;QACF,oCAAoC;QACpC,yDAAyD;QACzD,UAAU;QACV,IAAI;QACJ,EAAE;QACF,4CAA4C;QAC5C,yCAAyC;QACzC,mDAAmD;QACnD,6CAA6C;QAC7C,mDAAmD;QACnD,oDAAoD;QACpD,sDAAsD;QACtD,0DAA0D;QAC1D,2EAA2E;QAC3E,6DAA6D;QAC7D,EAAE;QACF,sBAAsB;QACtB,6BAA6B;QAC7B,2BAA2B;QAC3B,2BAA2B;QAC3B,iCAAiC;QACjC,mCAAmC;QACnC,0BAA0B;QAC1B,0BAA0B;QAC1B,uCAAuC;QACvC,sBAAsB;QACtB,uCAAuC;QACvC,yCAAyC;QACzC,mBAAmB;QACnB,yBAAyB;QACzB,wBAAwB;QACxB,2BAA2B;QAC3B,yBAAyB;QACzB,qCAAqC;QACrC,gCAAgC;QAChC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,SAAS,EACT,OAAO,EACP,KAAK,CACN,CAAC;IAEF,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAClC,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/C,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,CAAC;IAC7E,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAEtD,cAAc,CACZ,gBAAgB,EAChB;QACE,QAAQ;QACR,mDAAmD;QACnD,sDAAsD;QACtD,6BAA6B;QAC7B,EAAE;QACF,WAAW;QACX,aAAa;QACb,oBAAoB,UAAU,EAAE;QAChC,mBAAmB,YAAY,EAAE;QACjC,aAAa,eAAe,EAAE;QAC9B,gBAAgB;QAChB,cAAc;QACd,mBAAmB;QACnB,EAAE;QACF,WAAW;QACX,yBAAyB;QACzB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,SAAS,EACT,OAAO,EACP,KAAK,CACN,CAAC;IAEF,cAAc,CACZ,gBAAgB,EAChB;QACE,QAAQ;QACR,mDAAmD;QACnD,6BAA6B;QAC7B,6BAA6B;QAC7B,EAAE;QACF,WAAW;QACX,aAAa;QACb,oBAAoB,UAAU,EAAE;QAChC,mBAAmB,YAAY,EAAE;QACjC,aAAa,eAAe,EAAE;QAC9B,gBAAgB;QAChB,cAAc;QACd,mBAAmB;QACnB,EAAE;QACF,WAAW;QACX,yBAAyB;QACzB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,SAAS,EACT,OAAO,EACP,KAAK,CACN,CAAC;IAEF,cAAc,CACZ,YAAY,EACZ;QACE,iBAAiB;QACjB,yCAAyC;QACzC,sBAAsB;QACtB,EAAE;QACF,uBAAuB;QACvB,qBAAqB;QACrB,+BAA+B;QAC/B,2BAA2B;QAC3B,+BAA+B;QAC/B,sCAAsC;QACtC,0BAA0B;QAC1B,6BAA6B;QAC7B,EAAE;QACF,yEAAyE;QACzE,yEAAyE;QACzE,8DAA8D;QAC9D,2EAA2E;QAC3E,oEAAoE;QACpE,+DAA+D;QAC/D,mEAAmE;QACnE,qEAAqE;QACrE,gCACE,eAAe,CAAC,8BAA8B,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAC5F,EAAE;QACF,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,SAAS,EACT,OAAO,EACP,KAAK,CACN,CAAC;IAEF,cAAc,CACZ,YAAY,EACZ;QACE,8DAA8D;QAC9D,mEAAmE;QACnE,EAAE;QACF,oBAAoB;QACpB,iBAAiB;QACjB,uBAAuB;QACvB,kBAAkB;QAClB,qBAAqB;QACrB,sBAAsB;QACtB,uBAAuB;QACvB,6BAA6B;QAC7B,mCAAmC;QACnC,iCAAiC;QACjC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,SAAS,EACT,OAAO,EACP,KAAK,CACN,CAAC;IAEF,OAAO;QACL,SAAS;QACT,OAAO;QACP,cAAc;QACd,MAAM;KACP,CAAC;AACJ,CAAC;AAGD,4DAA4D;AAC5D,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,CAAC,OAAO,EAAE;IACzD,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,UAAkB,EAAE,CAAC,OAAO,EAAE;IACzE,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAA4B,EAC5B,UAAkB,EAAE,CAAC,OAAO,EAAE;IAE9B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;gBACnC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;gBACtB,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;gBAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,GAAG,IAAI,IAAI,CAAC;IACrC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"systemd-services.js","sourceRoot":"","sources":["../../src/cli/systemd-services.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vision-judge.d.ts","sourceRoot":"","sources":["../../src/delivery/vision-judge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAKD,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAiC9D;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAcrE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgC7D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,QAGlC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EAAE,EACzB,IAAI,EAAE,MAAM,EACZ,aAAa,SAAK,EAClB,SAAS,CAAC,EAAE,OAAO,mBAAmB,GACrC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA8F/B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAAE,EAClB,eAAe,EAAE,MAAM,EAAE,EACzB,SAAS,CAAC,EAAE,OAAO,mBAAmB,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA8EhD;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAI1E"}
1
+ {"version":3,"file":"vision-judge.d.ts","sourceRoot":"","sources":["../../src/delivery/vision-judge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAKD,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAsD9D;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAcrE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgC7D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,QAGlC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EAAE,EACzB,IAAI,EAAE,MAAM,EACZ,aAAa,SAAK,EAClB,SAAS,CAAC,EAAE,OAAO,mBAAmB,GACrC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA8F/B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAAE,EAClB,eAAe,EAAE,MAAM,EAAE,EACzB,SAAS,CAAC,EAAE,OAAO,mBAAmB,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA8EhD;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAI1E"}
@@ -12,6 +12,7 @@
12
12
  import { existsSync, readFileSync } from 'fs';
13
13
  import { join } from 'path';
14
14
  import { fetchModelWithRetry } from '../models/long-fetch.js';
15
+ import { discoverLocalLlamaBases } from '../utils/llama-discovery.js';
15
16
  const MAX_IMAGES = 4;
16
17
  const MAX_FINDINGS = 8;
17
18
  export function visionJudgeConfigured() {
@@ -28,13 +29,35 @@ export function visionJudgeConfigured() {
28
29
  * (the caller then reports "not configured" exactly as before). Idempotent.
29
30
  */
30
31
  export async function autodetectLocalVision() {
31
- if (visionJudgeConfigured())
32
- return true;
32
+ if (visionJudgeConfigured()) {
33
+ // A pin is authoritative only while it answers. `uap setup` writes a
34
+ // conventional 127.0.0.1:8080 endpoint, which is wrong the moment llama
35
+ // runs on an ephemeral port — and because this early return preceded the
36
+ // probing below, a dead pin permanently defeated discovery and the judge
37
+ // failed later with a connection error instead of finding the live server.
38
+ const pinned = (process.env.UAP_VISION_ENDPOINT ?? '').replace(/\/v1\/?$/, '').replace(/\/$/, '');
39
+ try {
40
+ const res = await fetch(`${pinned}/props`, { signal: AbortSignal.timeout(2000) });
41
+ if (res.ok)
42
+ return true;
43
+ }
44
+ catch {
45
+ /* unreachable — fall through to discovery */
46
+ }
47
+ delete process.env.UAP_VISION_ENDPOINT;
48
+ delete process.env.UAP_VISION_MODEL;
49
+ }
33
50
  // Candidate OpenAI-compat bases, most-specific first. LLAMA_CPP_BASE is what
34
51
  // the proxy talks to; the rest are conventional local llama-server ports.
52
+ // Explicit config first, then the servers actually listening, then the
53
+ // conventional port. Without the discovery step this list is env vars that are
54
+ // usually unset plus :8080 — which is empty whenever llama runs on an
55
+ // ephemeral port (Unsloth Studio picks a new one every launch), so a
56
+ // vision-capable server sitting right there reports "not configured".
35
57
  const bases = [
36
58
  process.env.UAP_INFERENCE_ENDPOINT,
37
59
  process.env.LLAMA_CPP_BASE,
60
+ ...discoverLocalLlamaBases(),
38
61
  'http://127.0.0.1:8080/v1',
39
62
  ].filter((b) => Boolean(b));
40
63
  for (const base of bases) {
@@ -1 +1 @@
1
- {"version":3,"file":"vision-judge.js","sourceRoot":"","sources":["../../src/delivery/vision-judge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vision-judge.js","sourceRoot":"","sources":["../../src/delivery/vision-judge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAQtE,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,qBAAqB,EAAE,EAAE,CAAC;QAC5B,qEAAqE;QACrE,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,2EAA2E;QAC3E,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,QAAQ,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClF,IAAI,GAAG,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;QAC/C,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACvC,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACtC,CAAC;IACD,6EAA6E;IAC7E,0EAA0E;IAC1E,uEAAuE;IACvE,+EAA+E;IAC/E,sEAAsE;IACtE,qEAAqE;IACrE,sEAAsE;IACtE,MAAM,KAAK,GAAG;QACZ,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAClC,OAAO,CAAC,GAAG,CAAC,cAAc;QAC1B,GAAG,uBAAuB,EAAE;QAC5B,0BAA0B;KAC3B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,QAAQ,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,SAAS;YAC3B,MAAM,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA+D,CAAC;YACpG,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM;gBAAE,SAAS;YACzC,4EAA4E;YAC5E,IAAI,KAAK,GAAG,OAAO,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,YAAY,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1F,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAA4E,CAAC;oBAC9G,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC;gBAC/E,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,GAAG,IAAI,KAAK,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAA4C,CAAC;QAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC7C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;YAC1F,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAKpD,CAAC;YACF,IAAI,CAAC,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChI,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1F,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IACD,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAClC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7E,IAAI,EAAE;oBAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1E,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAC5C,KAAK,EACL,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,OAAO,CACrD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,eAAyB,EACzB,IAAY,EACZ,aAAa,GAAG,EAAE,EAClB,SAAsC;IAEtC,IAAI,CAAC,qBAAqB,EAAE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1E,MAAM,QAAQ,GAAI,OAAO,CAAC,GAAG,CAAC,mBAA8B,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gBAA0B,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,EAAE,GAAG,EAAE,yBAAyB,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE;SAClF,CAAC,CAAC,CAAC;QACJ,yEAAyE;QACzE,4EAA4E;QAC5E,+EAA+E;QAC/E,2EAA2E;QAC3E,4EAA4E;QAC5E,uDAAuD;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG;YACX,KAAK;YACL,UAAU,EAAE,GAAG;YACf,WAAW;YACX,wEAAwE;YACxE,2EAA2E;YAC3E,2EAA2E;YAC3E,6EAA6E;YAC7E,wEAAwE;YACxE,oBAAoB,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;YAChD,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EACF,gFAAgF;gCAChF,gFAAgF;gCAChF,+DAA+D;gCAC/D,CAAC,aAAa;oCACZ,CAAC,CAAC,gKAAgK;oCAClK,CAAC,CAAC,EAAE,CAAC;gCACP,uFAAuF;gCACvF,0FAA0F;gCAC1F,2FAA2F;gCAC3F,+FAA+F;gCAC/F,+FAA+F;gCAC/F,6FAA6F;gCAC7F,wDAAwD;gCACxD,0BAA0B;gCAC1B,+EAA+E;gCAC/E,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;gCACnB,CAAC,aAAa,CAAC,CAAC,CAAC,iDAAiD,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACzG;wBACD,GAAG,MAAM;qBACV;iBACF;aACF;SACF,CAAC;QACF,MAAM,OAAO,GAAG,SAAS,IAAI,mBAAmB,CAAC;QACjD,MAAM,SAAS,GAAG,KAAK,IAAmC,EAAE;YAC1D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,QAAQ,mBAAmB,EAAE;gBACxD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzG;gBACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,sBAAsB,CAAC;gBACnD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;YACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAE7B,CAAC;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;YACvC,0EAA0E;YAC1E,4EAA4E;YAC5E,uDAAuD;YACvD,OAAO,kBAAkB,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,IAAI,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;QACpG,CAAC,CAAC;QAEF,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,MAAM,SAAS,EAAE,CAAC;QAE5C,8EAA8E;QAC9E,yDAAyD;QACzD,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,MAAM,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAkB,EAClB,eAAyB,EACzB,SAAsC;IAEtC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,qBAAqB,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC;IACD,MAAM,QAAQ,GAAI,OAAO,CAAC,GAAG,CAAC,mBAA8B,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gBAA0B,CAAC;IACrD,MAAM,OAAO,GAAG,SAAS,IAAI,mBAAmB,CAAC;IACjD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,EAAE,GAAG,EAAE,yBAAyB,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE;KAClF,CAAC,CAAC,CAAC;IACJ,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,QAAQ,mBAAmB,EAAE;gBACxD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzG;gBACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,sBAAsB,CAAC;gBACnD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK;oBACL,UAAU,EAAE,GAAG;oBACf,WAAW,EAAE,CAAC;oBACd,oBAAoB,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;oBAChD,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,MAAM;oCACZ,IAAI,EACF,gDAAgD;wCAChD,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;wCACrB,wEAAwE;wCACxE,uFAAuF;wCACvF,gFAAgF;wCAChF,+DAA+D;wCAC/D,yEAAyE;wCACzE,8BAA8B;iCACjC;gCACD,GAAG,MAAM;6BACV;yBACF;qBACF;iBACF,CAAC;aACH,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,mEAAmE;gBACnE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAE7B,CAAC;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,IAAI,EAAE,CAAC;YACvG,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAA2C,CAAC;oBAC1F,OAAO,GAAG,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC;oBAC7B,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,WAAW,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;;gBACrF,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,OAAO,kBAAkB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC;AACpE,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Ports of locally listening llama-server processes, as OpenAI-compatible
3
+ * bases (`http://127.0.0.1:<port>/v1`). Empty when none is running, `ss` is
4
+ * unavailable, or the platform is not Linux — never throws.
5
+ *
6
+ * `ss -ltnp` only attributes a process to sockets the caller owns, which is
7
+ * exactly the case here (the server runs as the same user).
8
+ */
9
+ export declare function discoverLocalLlamaBases(): string[];
10
+ //# sourceMappingURL=llama-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llama-discovery.d.ts","sourceRoot":"","sources":["../../src/utils/llama-discovery.ts"],"names":[],"mappings":"AAwBA;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAoClD"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Discovery of locally running llama.cpp servers.
3
+ *
4
+ * The upstream is not a fixed port. Unsloth Studio restarts its bundled
5
+ * llama-server on a NEW random port every launch (:50047 -> :34407 -> :59879
6
+ * observed), so every hardcoded `127.0.0.1:8080` fallback in the codebase is a
7
+ * guess that is wrong most of the time — silently, because the callers all
8
+ * fail soft ("vision not configured", "endpoint unreachable").
9
+ *
10
+ * This asks the OS which ports a llama-server is actually listening on, so the
11
+ * fallback is a fact rather than a convention.
12
+ *
13
+ * Loopback and wildcard binds only. A llama-server bound to a specific
14
+ * non-loopback address is REJECTED rather than assumed to also be on
15
+ * 127.0.0.1: that assumption would hand the endpoint to whichever local user
16
+ * happened to bind loopback on the same port.
17
+ *
18
+ * The shell counterpart used by the proxy launcher is
19
+ * `scripts/lib/llama-upstream.sh`. The two MUST agree — the same `ss` parse,
20
+ * the same address rule, the same numeric ordering. test/llama-upstream-parity
21
+ * runs both over one fixture and asserts they match.
22
+ */
23
+ import { execFileSync } from 'child_process';
24
+ /**
25
+ * Ports of locally listening llama-server processes, as OpenAI-compatible
26
+ * bases (`http://127.0.0.1:<port>/v1`). Empty when none is running, `ss` is
27
+ * unavailable, or the platform is not Linux — never throws.
28
+ *
29
+ * `ss -ltnp` only attributes a process to sockets the caller owns, which is
30
+ * exactly the case here (the server runs as the same user).
31
+ */
32
+ export function discoverLocalLlamaBases() {
33
+ let out;
34
+ try {
35
+ out = execFileSync('ss', ['-ltnp'], {
36
+ encoding: 'utf-8',
37
+ timeout: 2000,
38
+ stdio: ['ignore', 'pipe', 'ignore'],
39
+ });
40
+ }
41
+ catch {
42
+ return [];
43
+ }
44
+ const found = new Map();
45
+ for (const line of out.split('\n')) {
46
+ // Anchored to the process field: an unanchored /llama-server/ also matches
47
+ // a path or a shim named "my-llama-server-x" appearing anywhere on the line.
48
+ if (!/users:\(\("llama-server"/i.test(line))
49
+ continue;
50
+ // Column 4 is Local Address:Port. Take the segment after the LAST colon so
51
+ // IPv6 listeners ([::1]:59879) are parsed correctly.
52
+ const local = line.trim().split(/\s+/)[3] ?? '';
53
+ const cut = local.lastIndexOf(':');
54
+ if (cut < 0)
55
+ continue;
56
+ const port = Number(local.slice(cut + 1));
57
+ if (!Number.isInteger(port) || port <= 0 || port >= 65536)
58
+ continue;
59
+ const addr = local.slice(0, cut);
60
+ // A wildcard bind covers loopback, so 127.0.0.1 reaches the same socket.
61
+ // A specific non-loopback address does not imply loopback at all.
62
+ if (addr === '0.0.0.0' || addr === '*' || addr === '127.0.0.1') {
63
+ found.set(port, `http://127.0.0.1:${port}/v1`);
64
+ }
65
+ else if (addr === '[::]' || addr === '[::1]') {
66
+ if (!found.has(port))
67
+ found.set(port, `http://[::1]:${port}/v1`);
68
+ }
69
+ }
70
+ return [...found.entries()].sort((a, b) => a[0] - b[0]).map(([, base]) => base);
71
+ }
72
+ //# sourceMappingURL=llama-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llama-discovery.js","sourceRoot":"","sources":["../../src/utils/llama-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB;IACrC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;YAClC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,2EAA2E;QAC3E,6EAA6E;QAC7E,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACtD,2EAA2E;QAC3E,qDAAqD;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,GAAG,GAAG,CAAC;YAAE,SAAS;QACtB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK;YAAE,SAAS;QAEpE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjC,yEAAyE;QACzE,kEAAkE;QAClE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/D,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,oBAAoB,IAAI,KAAK,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,IAAI,KAAK,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAClF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-slots.d.ts","sourceRoot":"","sources":["../../src/utils/model-slots.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,aAAa,IAAI,CAAC;AAY/B,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAoBlE,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAOlD;AAED,wBAAgB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED,2EAA2E;AAC3E,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBvF;AAMD;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,CAAC,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9C,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC,CA6BlE;AAED,gEAAgE;AAChE,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
1
+ {"version":3,"file":"model-slots.d.ts","sourceRoot":"","sources":["../../src/utils/model-slots.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,aAAa,IAAI,CAAC;AAY/B,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAoBlE,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAclD;AAED,wBAAgB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED,2EAA2E;AAC3E,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBvF;AAMD;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,CAAC,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9C,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC,CA6BlE;AAED,gEAAgE;AAChE,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -12,6 +12,7 @@
12
12
  * minus `headroom`, floored at 1. Cached briefly so hot paths stay cheap.
13
13
  */
14
14
  import { loadUapConfigRaw } from './config-loader.js';
15
+ import { discoverLocalLlamaBases } from './llama-discovery.js';
15
16
  export const DEFAULT_SLOTS = 2; // matches llama-server-optimize's `--parallel 2`
16
17
  const CACHE_TTL_MS = 30_000;
17
18
  let _cache = null;
@@ -33,9 +34,16 @@ function intEnv(name) {
33
34
  }
34
35
  /** The inference base URL (without a trailing /v1) for probing `/slots`. */
35
36
  export function inferenceBase(cwd) {
37
+ // The literal below is a convention, and llama does not always honour it:
38
+ // Unsloth Studio picks a new random port every launch. When nothing is
39
+ // configured, ask the OS which llama-server is actually listening — otherwise
40
+ // probeSlots() fails and the slot budget silently falls back to DEFAULT_SLOTS,
41
+ // sizing the cross-process lease against a fiction.
36
42
  const raw = process.env.UAP_MODEL_ENDPOINT ||
37
43
  process.env.UAP_INFERENCE_ENDPOINT ||
38
44
  cfg(cwd).endpoint ||
45
+ process.env.LLAMA_CPP_BASE ||
46
+ discoverLocalLlamaBases()[0] ||
39
47
  'http://localhost:8080';
40
48
  return raw.replace(/\/v1\/?$/, '').replace(/\/+$/, '');
41
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"model-slots.js","sourceRoot":"","sources":["../../src/utils/model-slots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-slots.js","sourceRoot":"","sources":["../../src/utils/model-slots.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miller-tech/uap",
3
- "version": "1.210.2",
3
+ "version": "1.210.3",
4
4
  "description": "Autonomous AI agent memory system with CLAUDE.md protocol enforcement",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -119,6 +119,8 @@
119
119
  "src/policies/schemas/policies",
120
120
  "src/policies/enforcers",
121
121
  "tools/agents",
122
+ "scripts/lib",
123
+ "scripts/run-anthropic-proxy-continuity.sh",
122
124
  "scripts/setup",
123
125
  "scripts/version-bump.sh",
124
126
  "scripts/validate-build.sh",
@@ -0,0 +1,226 @@
1
+ #!/usr/bin/env bash
2
+ # Resolve the live llama.cpp upstream for the Anthropic proxy.
3
+ #
4
+ # WHY: the upstream is not always a fixed port. Unsloth Studio restarts its
5
+ # bundled llama-server on a NEW random port every launch (observed :50047 ->
6
+ # :34407 -> :59879), while LLAMA_CPP_BASE is pinned in the proxy env file. The
7
+ # moment Studio restarts, every local request fails with
8
+ # "Upstream connect failed after 3 attempts: ConnectError" -> HTTP 529
9
+ # and stays broken until someone hand-edits the env file. That env file is also
10
+ # self-protect'd, so the agent cannot repair it — the stack sits dead.
11
+ #
12
+ # TRUST MODEL. A discovered endpoint receives every prompt and its replies drive
13
+ # tool execution, so discovery is deliberately narrow:
14
+ # - The pin wins whenever it answers. A deliberate operator pin (remote host,
15
+ # second server) is never silently overridden by a local process.
16
+ # - Only loopback and wildcard binds are accepted. A llama-server bound to a
17
+ # specific non-loopback address is REJECTED rather than assumed to also be
18
+ # on 127.0.0.1 — that address may belong to a different user's socket.
19
+ # - A candidate must prove it is a chat-capable llama-server (/props shape +
20
+ # completion capability), not merely something returning 200. That rejects
21
+ # a decoy and, just as importantly, the embedding llama-server that also
22
+ # runs on this host.
23
+ # Residual risk, accepted: a process running as THIS user can still name itself
24
+ # llama-server and pass the shape checks. Such a process can already read the
25
+ # source tree and the agent's files.
26
+ #
27
+ # Sourced by scripts/run-anthropic-proxy-continuity.sh. Also runnable directly:
28
+ # scripts/lib/llama-upstream.sh resolve http://127.0.0.1:8080/v1
29
+ #
30
+ # `curl` and `ss` are invoked by bare name (never absolute) so tests can stub
31
+ # them on PATH and exercise the real code path. The TS counterpart is
32
+ # src/utils/llama-discovery.ts — the two MUST agree; test/llama-upstream-parity
33
+ # asserts it.
34
+
35
+ # Strip the trailing /v1 (and any trailing slash) off an OpenAI-compatible base.
36
+ llama_upstream_root() {
37
+ local base="${1:-}"
38
+ base="${base%/}"
39
+ base="${base%/v1}"
40
+ printf '%s' "$base"
41
+ }
42
+
43
+ # 0 if the base answers llama-server's /health with 200. Liveness only.
44
+ # `--` terminates curl's options: a base beginning with `-` would otherwise be
45
+ # read as a flag (e.g. -K reads an attacker-named config file).
46
+ llama_upstream_alive() {
47
+ local base="${1:-}"
48
+ [ -n "$base" ] || return 1
49
+ local code
50
+ code="$(curl -s -o /dev/null -w '%{http_code}' --max-time "${UAP_LLAMA_PROBE_TIMEOUT:-2}" \
51
+ -- "$(llama_upstream_root "$base")/health" 2>/dev/null || true)"
52
+ [ "$code" = "200" ]
53
+ }
54
+
55
+ # 0 if the base looks like a chat-capable llama.cpp server. Applied to
56
+ # DISCOVERED candidates only — an operator pin is taken at its word.
57
+ llama_upstream_is_chat_server() {
58
+ local base="${1:-}" root props models
59
+ root="$(llama_upstream_root "$base")"
60
+
61
+ # /props carries llama-server's generation settings. A bare HTTP server, an
62
+ # error page, or a still-loading server does not.
63
+ props="$(curl -s --max-time "${UAP_LLAMA_PROBE_TIMEOUT:-2}" -- "${root}/props" 2>/dev/null || true)"
64
+ case "$props" in
65
+ *'"default_generation_settings"'*) ;;
66
+ *) return 1 ;;
67
+ esac
68
+
69
+ # Reject an embedding-only server (this host runs one). When the build does
70
+ # not report capabilities at all, accept — older llama.cpp omits the field.
71
+ models="$(curl -s --max-time "${UAP_LLAMA_PROBE_TIMEOUT:-2}" -- "${root}/v1/models" 2>/dev/null || true)"
72
+ case "$models" in
73
+ *'"capabilities"'*)
74
+ case "$models" in
75
+ *'"completion"'*) ;;
76
+ *) return 1 ;;
77
+ esac
78
+ ;;
79
+ esac
80
+ return 0
81
+ }
82
+
83
+ # Print the host:port of every locally listening llama-server, one per line,
84
+ # already normalised to a loopback authority. Non-loopback binds are dropped.
85
+ #
86
+ # `ss -ltnp` attributes a process only to sockets the caller owns, which is the
87
+ # case here (the server runs as the same user). Column 4 is Local Address:Port;
88
+ # the port is the segment after the LAST colon so IPv6 forms survive.
89
+ llama_upstream_candidate_authorities() {
90
+ ss -ltnp 2>/dev/null \
91
+ | grep -i 'users:(("llama-server"' \
92
+ | awk '{
93
+ n = split($4, a, ":");
94
+ port = a[n];
95
+ if (port !~ /^[0-9]+$/ || port+0 <= 0 || port+0 >= 65536) next;
96
+ addr = substr($4, 1, length($4) - length(port) - 1);
97
+ # Wildcard binds cover loopback, so 127.0.0.1 reaches the same
98
+ # socket. A specific non-loopback address does NOT imply loopback.
99
+ # Emit "port <tab> family-rank <tab> authority" so ordering is
100
+ # numeric by port and deterministic (IPv4 wins a tie) — matching
101
+ # src/utils/llama-discovery.ts exactly. Sorting the authority
102
+ # strings instead would order 10001 before 8080 and mangle [::1].
103
+ if (addr == "0.0.0.0" || addr == "*" || addr == "127.0.0.1") print port "\t0\t127.0.0.1:" port;
104
+ else if (addr == "[::]" || addr == "[::1]") print port "\t1\t[::1]:" port;
105
+ }' \
106
+ | sort -n -k1,1 -k2,2 \
107
+ | awk '!seen[$1]++ { print $3 }'
108
+ }
109
+
110
+ # Resolve the base to use. Echoes the preferred base untouched when it is
111
+ # healthy, or when nothing better can be proven — never worse than the pin.
112
+ llama_upstream_resolve() {
113
+ local preferred="${1:-}"
114
+
115
+ if llama_upstream_alive "$preferred"; then
116
+ printf '%s' "$preferred"
117
+ return 0
118
+ fi
119
+
120
+ if [ "${UAP_LLAMA_UPSTREAM_AUTODISCOVER:-on}" != "on" ]; then
121
+ printf '%s' "$preferred"
122
+ return 0
123
+ fi
124
+
125
+ local authority candidate
126
+ for authority in $(llama_upstream_candidate_authorities); do
127
+ candidate="http://${authority}/v1"
128
+ [ "$candidate" = "$preferred" ] && continue
129
+ if llama_upstream_alive "$candidate" && llama_upstream_is_chat_server "$candidate"; then
130
+ printf '%s' "$candidate"
131
+ return 0
132
+ fi
133
+ done
134
+
135
+ printf '%s' "$preferred"
136
+ }
137
+
138
+ # Port of a base URL ("http://192.168.1.165:8080/v1" -> "8080"). Empty when the
139
+ # base carries no explicit port.
140
+ llama_upstream_port() {
141
+ local authority="${1:-}"
142
+ authority="${authority#*://}"
143
+ authority="${authority%%/*}"
144
+ case "$authority" in
145
+ \[*\]:*) printf '%s' "${authority##*]:}" ;; # [::1]:8080
146
+ \[*\]) : ;; # [::1], no port
147
+ *:*) printf '%s' "${authority##*:}" ;;
148
+ esac
149
+ }
150
+
151
+ # Field 22 of /proc/<pid>/stat is the process start time. PID + starttime is an
152
+ # identity; PID alone is not, and this repo has already been bitten by PID reuse
153
+ # (see the deliver lock). Empty when the pid is gone.
154
+ llama_upstream_pid_token() {
155
+ local pid="${1:-}"
156
+ [ -n "$pid" ] || return 0
157
+ awk '{ print $22 }' "/proc/${pid}/stat" 2>/dev/null || true
158
+ }
159
+
160
+ # Background guard: startup resolution alone still strands a LONG-LIVED proxy,
161
+ # because llama can move ports hours after the proxy came up. Watch the upstream
162
+ # and, once it is dead AND a DIFFERENT live server exists, stop the proxy so its
163
+ # supervisor restarts it through resolve.
164
+ #
165
+ # ONLY safe under a supervisor — the caller gates on that. Two consecutive
166
+ # failures are required before acting: a llama restart briefly shows no listener
167
+ # at all, and reacting to that gap would bounce the proxy for nothing. Never
168
+ # acts on a dead upstream alone, only on a proven live alternative, so an
169
+ # intentionally stopped server does not cause a restart loop.
170
+ llama_upstream_watch() {
171
+ local base="${1:-}" target_pid="${2:-}"
172
+ local interval="${UAP_LLAMA_UPSTREAM_WATCH_SECS:-20}"
173
+ local misses=0 found token now_token
174
+
175
+ case "$target_pid" in
176
+ ''|*[!0-9]*) return 0 ;; # never signal a non-PID (kill -TERM -1 sprays)
177
+ esac
178
+ # A non-numeric interval makes `sleep` fail, which would end the loop and
179
+ # silently disable the guard. Fall back rather than vanish.
180
+ case "$interval" in
181
+ ''|*[!0-9.]*) interval=20 ;;
182
+ esac
183
+ token="$(llama_upstream_pid_token "$target_pid")"
184
+
185
+ while sleep "$interval"; do
186
+ now_token="$(llama_upstream_pid_token "$target_pid")"
187
+ # Gone, or the PID was recycled into someone else's process.
188
+ [ -n "$now_token" ] || return 0
189
+ [ "$now_token" = "$token" ] || return 0
190
+
191
+ if llama_upstream_alive "$base"; then
192
+ misses=0
193
+ continue
194
+ fi
195
+
196
+ misses=$((misses + 1))
197
+ [ "$misses" -ge 2 ] || continue
198
+
199
+ found="$(llama_upstream_resolve "$base")"
200
+ # "Moved" means a DIFFERENT PORT, not a different URL string. The
201
+ # documented pin is a LAN or localhost form (http://192.168.1.165:8080/v1,
202
+ # http://localhost:8080/v1) while a discovered candidate is always
203
+ # 127.0.0.1 — so comparing URLs calls the SAME server "moved" and bounces
204
+ # a healthy proxy every time the pin's address blips. A port change is
205
+ # the actual failure mode this watches for.
206
+ if [ -n "$found" ] && [ "$(llama_upstream_port "$found")" != "$(llama_upstream_port "$base")" ]; then
207
+ # Re-verify identity: resolve() above can take seconds.
208
+ now_token="$(llama_upstream_pid_token "$target_pid")"
209
+ [ "$now_token" = "$token" ] || return 0
210
+ echo "[proxy-upstream] upstream moved ${base} -> ${found}; restarting proxy to re-resolve" >&2
211
+ kill -TERM "$target_pid" 2>/dev/null || true
212
+ return 0
213
+ fi
214
+ misses=1
215
+ done
216
+ }
217
+
218
+ # Direct invocation: `llama-upstream.sh resolve <base>` / `alive <base>`.
219
+ if [ "${BASH_SOURCE[0]}" = "${0}" ]; then
220
+ case "${1:-}" in
221
+ resolve) llama_upstream_resolve "${2:-}"; echo ;;
222
+ alive) llama_upstream_alive "${2:-}" ;;
223
+ authorities) llama_upstream_candidate_authorities ;;
224
+ *) echo "usage: ${0##*/} {resolve|alive|authorities} [base]" >&2; exit 2 ;;
225
+ esac
226
+ fi