@telora/daemon 0.18.70 → 0.18.78
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/build-info.json +5 -3
- package/dist/completion/team-completion.d.ts.map +1 -1
- package/dist/completion/team-completion.js +6 -0
- package/dist/completion/team-completion.js.map +1 -1
- package/dist/directive/close-loop-stage.d.ts.map +1 -1
- package/dist/directive/close-loop-stage.js +4 -0
- package/dist/directive/close-loop-stage.js.map +1 -1
- package/dist/directive/directive-dispatch.d.ts +2 -2
- package/dist/directive/directive-dispatch.d.ts.map +1 -1
- package/dist/directive/directive-dispatch.js +7 -5
- package/dist/directive/directive-dispatch.js.map +1 -1
- package/dist/directive/directive-queue.d.ts +15 -0
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/directive-executor.d.ts.map +1 -1
- package/dist/directive-executor.js +6 -1
- package/dist/directive-executor.js.map +1 -1
- package/dist/focus-executor.d.ts +46 -8
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +149 -63
- package/dist/focus-executor.js.map +1 -1
- package/dist/host-control/capability.d.ts.map +1 -1
- package/dist/host-control/capability.js +24 -7
- package/dist/host-control/capability.js.map +1 -1
- package/dist/host-control/catalog.d.ts +27 -0
- package/dist/host-control/catalog.d.ts.map +1 -1
- package/dist/host-control/catalog.js +82 -8
- package/dist/host-control/catalog.js.map +1 -1
- package/dist/host-control/index.d.ts +2 -0
- package/dist/host-control/index.d.ts.map +1 -1
- package/dist/host-control/index.js +1 -0
- package/dist/host-control/index.js.map +1 -1
- package/dist/host-control/load.d.ts +66 -21
- package/dist/host-control/load.d.ts.map +1 -1
- package/dist/host-control/load.js +84 -23
- package/dist/host-control/load.js.map +1 -1
- package/dist/host-control/sizing.d.ts +12 -0
- package/dist/host-control/sizing.d.ts.map +1 -1
- package/dist/host-control/sizing.js +54 -5
- package/dist/host-control/sizing.js.map +1 -1
- package/dist/host-control/swap-manager.d.ts +94 -0
- package/dist/host-control/swap-manager.d.ts.map +1 -0
- package/dist/host-control/swap-manager.js +156 -0
- package/dist/host-control/swap-manager.js.map +1 -0
- package/dist/model-resolution.d.ts +31 -0
- package/dist/model-resolution.d.ts.map +1 -0
- package/dist/model-resolution.js +33 -0
- package/dist/model-resolution.js.map +1 -0
- package/dist/prompt-sections/persona-sections.d.ts +1 -1
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +22 -1
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/package.json +1 -1
|
@@ -27,6 +27,18 @@
|
|
|
27
27
|
*/
|
|
28
28
|
import { hostGet, hostRootFromBaseUrl } from './client.js';
|
|
29
29
|
import { DEFAULT_MAX_SEQ_LENGTH } from './load.js';
|
|
30
|
+
/**
|
|
31
|
+
* Timeout (ms) for the sizing reads (`/api/system/hardware`,
|
|
32
|
+
* `/api/models/kv-cache-estimate`). These inherited the generic 5s
|
|
33
|
+
* `HOST_CONTROL_FETCH_TIMEOUT_MS`, but a host that is BUSY cold-loading a model
|
|
34
|
+
* (exactly when a swap sizes the next load) can take longer than 5s to answer a
|
|
35
|
+
* hardware query -- so the read timed out and `resolveSafeLoadOptions` fell back
|
|
36
|
+
* to the fixed 16384 default, reporting sizing "unavailable" on a host that
|
|
37
|
+
* actually exposes it. A tolerant budget removes that false fallback. The read
|
|
38
|
+
* is still best-effort: a genuine miss (endpoint absent / unsupported) returns
|
|
39
|
+
* fast (4xx) and degrades safely to the fixed default.
|
|
40
|
+
*/
|
|
41
|
+
export const HOST_CONTROL_SIZING_TIMEOUT_MS = 15_000;
|
|
30
42
|
/**
|
|
31
43
|
* The control-surface path (under the host ROOT, not `/v1`) for GPU hardware
|
|
32
44
|
* info: GPU name + total/used VRAM. Reconcile field names per the runbook.
|
|
@@ -130,26 +142,48 @@ const HW_GPU_NAME_KEYS = ['gpu_name', 'gpuName', 'name', 'gpu', 'device_name', '
|
|
|
130
142
|
*/
|
|
131
143
|
const HW_VRAM_TOTAL_MB_KEYS = ['vram_total_mb', 'vramTotalMb', 'memory_total_mb', 'total_memory_mb'];
|
|
132
144
|
const HW_VRAM_TOTAL_BYTES_KEYS = ['vram_total_bytes', 'vram_total', 'memory_total', 'total_memory_bytes'];
|
|
145
|
+
/**
|
|
146
|
+
* Candidate keys for TOTAL VRAM reported in GB (the live Unsloth host shape:
|
|
147
|
+
* `{ gpu: { vram_total_gb: 11.99, vram_free_gb: 11.93 } }`). Converted GB -> MB
|
|
148
|
+
* in `vramMb`. Lowest precedence -- MB and bytes keys win when present.
|
|
149
|
+
*/
|
|
150
|
+
const HW_VRAM_TOTAL_GB_KEYS = ['vram_total_gb', 'vramTotalGb', 'memory_total_gb', 'total_memory_gb'];
|
|
133
151
|
/** Candidate keys for USED VRAM in MB / bytes (same MB-preferred convention). */
|
|
134
152
|
const HW_VRAM_USED_MB_KEYS = ['vram_used_mb', 'vramUsedMb', 'memory_used_mb', 'used_memory_mb'];
|
|
135
153
|
const HW_VRAM_USED_BYTES_KEYS = ['vram_used_bytes', 'vram_used', 'memory_used', 'used_memory_bytes'];
|
|
154
|
+
const HW_VRAM_USED_GB_KEYS = ['vram_used_gb', 'vramUsedGb', 'memory_used_gb', 'used_memory_gb'];
|
|
155
|
+
/**
|
|
156
|
+
* Candidate keys for FREE VRAM in GB / MB / bytes. Some hosts (the live Unsloth
|
|
157
|
+
* host) report `free` instead of `used`; `vramMb` derives used = total - free
|
|
158
|
+
* when only free is present. GB converted GB -> MB.
|
|
159
|
+
*/
|
|
160
|
+
const HW_VRAM_FREE_GB_KEYS = ['vram_free_gb', 'vramFreeGb', 'memory_free_gb', 'free_memory_gb'];
|
|
161
|
+
const HW_VRAM_FREE_MB_KEYS = ['vram_free_mb', 'vramFreeMb', 'memory_free_mb', 'free_memory_mb'];
|
|
162
|
+
const HW_VRAM_FREE_BYTES_KEYS = ['vram_free_bytes', 'vram_free', 'memory_free', 'free_memory_bytes'];
|
|
136
163
|
/** Bytes -> MB (binary MiB), rounded down so we never overstate available memory. */
|
|
137
164
|
function bytesToMb(bytes) {
|
|
138
165
|
return Math.floor(bytes / (1024 * 1024));
|
|
139
166
|
}
|
|
167
|
+
/** GB -> MB (binary; 1 GiB = 1024 MiB), rounded down to avoid overstating memory. */
|
|
168
|
+
function gbToMb(gb) {
|
|
169
|
+
return Math.floor(gb * 1024);
|
|
170
|
+
}
|
|
140
171
|
/**
|
|
141
172
|
* Resolve a VRAM quantity in MB from a payload, preferring an MB-named field and
|
|
142
173
|
* falling back to a bytes-named field (converted). Some hosts nest VRAM under a
|
|
143
174
|
* `gpu`/`gpus[0]`/`memory` sub-object; we also probe a single nested object.
|
|
144
175
|
* Returns null when nothing usable is present.
|
|
145
176
|
*/
|
|
146
|
-
function vramMb(obj, mbKeys, bytesKeys) {
|
|
177
|
+
function vramMb(obj, mbKeys, bytesKeys, gbKeys = []) {
|
|
147
178
|
const mb = firstNumberOrNull(obj, mbKeys);
|
|
148
179
|
if (mb !== null)
|
|
149
180
|
return Math.floor(mb);
|
|
150
181
|
const bytes = firstNumberOrNull(obj, bytesKeys);
|
|
151
182
|
if (bytes !== null)
|
|
152
183
|
return bytesToMb(bytes);
|
|
184
|
+
const gb = firstNumberOrNull(obj, gbKeys);
|
|
185
|
+
if (gb !== null)
|
|
186
|
+
return gbToMb(gb);
|
|
153
187
|
return null;
|
|
154
188
|
}
|
|
155
189
|
/**
|
|
@@ -187,10 +221,22 @@ export function normalizeHardware(payload) {
|
|
|
187
221
|
return { gpuName: null, vramTotalMb: null, vramUsedMb: null };
|
|
188
222
|
}
|
|
189
223
|
const obj = flattenHardwarePayload(payload);
|
|
224
|
+
const vramTotalMb = vramMb(obj, HW_VRAM_TOTAL_MB_KEYS, HW_VRAM_TOTAL_BYTES_KEYS, HW_VRAM_TOTAL_GB_KEYS);
|
|
225
|
+
let vramUsedMb = vramMb(obj, HW_VRAM_USED_MB_KEYS, HW_VRAM_USED_BYTES_KEYS, HW_VRAM_USED_GB_KEYS);
|
|
226
|
+
// Some hosts report FREE VRAM instead of USED (the live Unsloth host:
|
|
227
|
+
// `vram_total_gb` + `vram_free_gb`). Derive used = total - free when only free
|
|
228
|
+
// is present, so headroom sizing works instead of falling back to the fixed
|
|
229
|
+
// default. Clamp at >= 0 so a slightly-stale free reading can't go negative.
|
|
230
|
+
if (vramUsedMb === null && vramTotalMb !== null) {
|
|
231
|
+
const vramFreeMb = vramMb(obj, HW_VRAM_FREE_MB_KEYS, HW_VRAM_FREE_BYTES_KEYS, HW_VRAM_FREE_GB_KEYS);
|
|
232
|
+
if (vramFreeMb !== null) {
|
|
233
|
+
vramUsedMb = Math.max(0, vramTotalMb - vramFreeMb);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
190
236
|
return {
|
|
191
237
|
gpuName: firstStringOrNull(obj, HW_GPU_NAME_KEYS),
|
|
192
|
-
vramTotalMb
|
|
193
|
-
vramUsedMb
|
|
238
|
+
vramTotalMb,
|
|
239
|
+
vramUsedMb,
|
|
194
240
|
};
|
|
195
241
|
}
|
|
196
242
|
/** Candidate keys for the predicted KV-cache footprint (MB) on an estimate payload. */
|
|
@@ -237,7 +283,10 @@ export function normalizeKvCacheEstimate(payload) {
|
|
|
237
283
|
*/
|
|
238
284
|
export async function getHardware(baseUrl, apiKey) {
|
|
239
285
|
const root = hostRootFromBaseUrl(baseUrl);
|
|
240
|
-
const payload = await hostGet(`${root}${HOST_CONTROL_HARDWARE_PATH}`, {
|
|
286
|
+
const payload = await hostGet(`${root}${HOST_CONTROL_HARDWARE_PATH}`, {
|
|
287
|
+
apiKey,
|
|
288
|
+
timeoutMs: HOST_CONTROL_SIZING_TIMEOUT_MS,
|
|
289
|
+
});
|
|
241
290
|
return normalizeHardware(payload);
|
|
242
291
|
}
|
|
243
292
|
/**
|
|
@@ -261,7 +310,7 @@ export async function getKvCacheEstimate(baseUrl, params, apiKey) {
|
|
|
261
310
|
qs.set('model_path', params.modelPath);
|
|
262
311
|
if (params.cacheTypeKv)
|
|
263
312
|
qs.set('cache_type_kv', params.cacheTypeKv);
|
|
264
|
-
const payload = await hostGet(`${root}${HOST_CONTROL_KV_CACHE_PATH}?${qs.toString()}`, { apiKey });
|
|
313
|
+
const payload = await hostGet(`${root}${HOST_CONTROL_KV_CACHE_PATH}?${qs.toString()}`, { apiKey, timeoutMs: HOST_CONTROL_SIZING_TIMEOUT_MS });
|
|
265
314
|
return normalizeKvCacheEstimate(payload);
|
|
266
315
|
}
|
|
267
316
|
// ── The pure heart: computeSafeMaxSeqLength ──────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sizing.js","sourceRoot":"","sources":["../../src/host-control/sizing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sizing.js","sourceRoot":"","sources":["../../src/host-control/sizing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-host model-swap coordination (Local model host control, deliveries #3 + #4).
|
|
3
|
+
*
|
|
4
|
+
* Two problems, one per-host (keyed by host ROOT) registry:
|
|
5
|
+
*
|
|
6
|
+
* #3 OFF THE POLL-CRITICAL PATH: a cold load (POST /v1/load + the readiness
|
|
7
|
+
* poll) can take up to the 180s load budget. It used to be awaited INLINE in
|
|
8
|
+
* `spawnFocusTeam`, which is awaited serially in `processReadyFocuses` -- so
|
|
9
|
+
* one focus's cold load stalled the entire 30s poll tick for every other
|
|
10
|
+
* focus and product. Here the load runs in a DETACHED promise; the poll loop
|
|
11
|
+
* only OBSERVES its phase:
|
|
12
|
+
* - 'loading' -> defer THIS focus's spawn, retry next tick;
|
|
13
|
+
* - 'ready' -> the model is resident, spawn now;
|
|
14
|
+
* - 'failed' -> skip_load (the caller marks the session + re-attempts).
|
|
15
|
+
* The serial loop never awaits the load, so a slow load on focus A does not
|
|
16
|
+
* delay focus B's spawn decision.
|
|
17
|
+
*
|
|
18
|
+
* #4 RESIDENCY LOCK: the swap is single-GPU (a load evicts the prior resident).
|
|
19
|
+
* While focus A's pass owns a host, a second focus B targeting the SAME host
|
|
20
|
+
* must not start a swap that would evict A's still-running model. The owning
|
|
21
|
+
* focus is recorded per host; B is told 'busy_other' (defer) until A's pass
|
|
22
|
+
* tears down and `releaseHostByFocus` frees the host. A stale owner whose
|
|
23
|
+
* team is already gone (crash / missed release) is reclaimed automatically.
|
|
24
|
+
*
|
|
25
|
+
* In-memory + process-local by design: a swap is a property of THIS daemon's
|
|
26
|
+
* live spawn loop, and the registry is reconstructed naturally as focuses are
|
|
27
|
+
* re-observed after a restart.
|
|
28
|
+
*/
|
|
29
|
+
/** The phase of a detached load for a host's target model. */
|
|
30
|
+
export type HostSwapPhase = 'loading' | 'ready' | 'failed';
|
|
31
|
+
/** What `observeHostSwap` reports to the spawn path for the current tick. */
|
|
32
|
+
export type HostSwapObservation = {
|
|
33
|
+
status: 'ready';
|
|
34
|
+
} | {
|
|
35
|
+
status: 'loading';
|
|
36
|
+
} | {
|
|
37
|
+
status: 'busy_other';
|
|
38
|
+
ownerFocusId: string;
|
|
39
|
+
} | {
|
|
40
|
+
status: 'failed';
|
|
41
|
+
error: string;
|
|
42
|
+
};
|
|
43
|
+
/** Derive the registry key (host root) from a stored baseUrl. */
|
|
44
|
+
export declare function hostSwapKey(baseUrl: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Observe (and, when needed, START) the detached swap for `targetModel` on
|
|
47
|
+
* `root`, on behalf of `focusId`. NEVER blocks on the load:
|
|
48
|
+
*
|
|
49
|
+
* - a DIFFERENT, still-active focus owns the host -> 'busy_other' (defer; #4);
|
|
50
|
+
* - a stale owner (team gone) is reclaimed, then this focus starts fresh;
|
|
51
|
+
* - this focus's own load is in flight -> 'loading';
|
|
52
|
+
* - this focus's own load is ready for this target -> 'ready';
|
|
53
|
+
* - this focus's own load failed -> 'failed' (entry cleared);
|
|
54
|
+
* - no usable entry -> start the detached load,
|
|
55
|
+
* record ownership, return 'loading'.
|
|
56
|
+
*
|
|
57
|
+
* `runLoad` performs the actual sizing + `ensureLoaded`; it is invoked DETACHED
|
|
58
|
+
* (not awaited) and its settle transitions the entry to 'ready' / 'failed'.
|
|
59
|
+
* `isFocusActive` lets the manager reclaim a residency held by a focus whose
|
|
60
|
+
* team no longer exists. `extractError` maps a thrown value to an address-free
|
|
61
|
+
* message (defaults to `.dbMessage` then `.message`).
|
|
62
|
+
*/
|
|
63
|
+
export declare function observeHostSwap(args: {
|
|
64
|
+
root: string;
|
|
65
|
+
targetModel: string;
|
|
66
|
+
focusId: string;
|
|
67
|
+
runLoad: () => Promise<void>;
|
|
68
|
+
isFocusActive: (focusId: string) => boolean;
|
|
69
|
+
extractError?: (err: unknown) => string;
|
|
70
|
+
}): HostSwapObservation;
|
|
71
|
+
/**
|
|
72
|
+
* Claim residency of a host whose target model is ALREADY resident + ready
|
|
73
|
+
* (the fast path that skips the detached load). Without this, a focus that
|
|
74
|
+
* spawns against a pre-loaded model would hold NO residency lock, and a second
|
|
75
|
+
* focus could start a swap that evicts the model mid-run (#4). Returns
|
|
76
|
+
* 'busy_other' when a DIFFERENT, still-active focus already owns the host
|
|
77
|
+
* (the caller defers); otherwise records this focus as the owner with phase
|
|
78
|
+
* 'ready' and returns 'ready'. A stale owner (team gone) is reclaimed.
|
|
79
|
+
*/
|
|
80
|
+
export declare function claimResidentHost(args: {
|
|
81
|
+
root: string;
|
|
82
|
+
targetModel: string;
|
|
83
|
+
focusId: string;
|
|
84
|
+
isFocusActive: (focusId: string) => boolean;
|
|
85
|
+
}): HostSwapObservation;
|
|
86
|
+
/**
|
|
87
|
+
* Release the host owned by `focusId` (called on team teardown). Frees the
|
|
88
|
+
* residency lock so another focus targeting that host can swap. No-op when the
|
|
89
|
+
* focus owns no host.
|
|
90
|
+
*/
|
|
91
|
+
export declare function releaseHostByFocus(focusId: string): void;
|
|
92
|
+
/** Test-only: clear the per-host swap registry between cases. */
|
|
93
|
+
export declare function __resetHostSwapManager(): void;
|
|
94
|
+
//# sourceMappingURL=swap-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap-manager.d.ts","sourceRoot":"","sources":["../../src/host-control/swap-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,8DAA8D;AAC9D,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAY3D,6EAA6E;AAC7E,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAOxC,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAQD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;CACzC,GAAG,mBAAmB,CA8CtB;AAWD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7C,GAAG,mBAAmB,CAYtB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMxD;AAED,iEAAiE;AACjE,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-host model-swap coordination (Local model host control, deliveries #3 + #4).
|
|
3
|
+
*
|
|
4
|
+
* Two problems, one per-host (keyed by host ROOT) registry:
|
|
5
|
+
*
|
|
6
|
+
* #3 OFF THE POLL-CRITICAL PATH: a cold load (POST /v1/load + the readiness
|
|
7
|
+
* poll) can take up to the 180s load budget. It used to be awaited INLINE in
|
|
8
|
+
* `spawnFocusTeam`, which is awaited serially in `processReadyFocuses` -- so
|
|
9
|
+
* one focus's cold load stalled the entire 30s poll tick for every other
|
|
10
|
+
* focus and product. Here the load runs in a DETACHED promise; the poll loop
|
|
11
|
+
* only OBSERVES its phase:
|
|
12
|
+
* - 'loading' -> defer THIS focus's spawn, retry next tick;
|
|
13
|
+
* - 'ready' -> the model is resident, spawn now;
|
|
14
|
+
* - 'failed' -> skip_load (the caller marks the session + re-attempts).
|
|
15
|
+
* The serial loop never awaits the load, so a slow load on focus A does not
|
|
16
|
+
* delay focus B's spawn decision.
|
|
17
|
+
*
|
|
18
|
+
* #4 RESIDENCY LOCK: the swap is single-GPU (a load evicts the prior resident).
|
|
19
|
+
* While focus A's pass owns a host, a second focus B targeting the SAME host
|
|
20
|
+
* must not start a swap that would evict A's still-running model. The owning
|
|
21
|
+
* focus is recorded per host; B is told 'busy_other' (defer) until A's pass
|
|
22
|
+
* tears down and `releaseHostByFocus` frees the host. A stale owner whose
|
|
23
|
+
* team is already gone (crash / missed release) is reclaimed automatically.
|
|
24
|
+
*
|
|
25
|
+
* In-memory + process-local by design: a swap is a property of THIS daemon's
|
|
26
|
+
* live spawn loop, and the registry is reconstructed naturally as focuses are
|
|
27
|
+
* re-observed after a restart.
|
|
28
|
+
*/
|
|
29
|
+
import { hostRootFromBaseUrl } from './client.js';
|
|
30
|
+
/** root -> entry. The single source of truth for who owns each host + load phase. */
|
|
31
|
+
const byRoot = new Map();
|
|
32
|
+
/** focusId -> root, so a team teardown can release by focus without the baseUrl. */
|
|
33
|
+
const rootByFocus = new Map();
|
|
34
|
+
/** Derive the registry key (host root) from a stored baseUrl. */
|
|
35
|
+
export function hostSwapKey(baseUrl) {
|
|
36
|
+
return hostRootFromBaseUrl(baseUrl);
|
|
37
|
+
}
|
|
38
|
+
function clearEntry(root) {
|
|
39
|
+
const entry = byRoot.get(root);
|
|
40
|
+
if (entry)
|
|
41
|
+
rootByFocus.delete(entry.ownerFocusId);
|
|
42
|
+
byRoot.delete(root);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Observe (and, when needed, START) the detached swap for `targetModel` on
|
|
46
|
+
* `root`, on behalf of `focusId`. NEVER blocks on the load:
|
|
47
|
+
*
|
|
48
|
+
* - a DIFFERENT, still-active focus owns the host -> 'busy_other' (defer; #4);
|
|
49
|
+
* - a stale owner (team gone) is reclaimed, then this focus starts fresh;
|
|
50
|
+
* - this focus's own load is in flight -> 'loading';
|
|
51
|
+
* - this focus's own load is ready for this target -> 'ready';
|
|
52
|
+
* - this focus's own load failed -> 'failed' (entry cleared);
|
|
53
|
+
* - no usable entry -> start the detached load,
|
|
54
|
+
* record ownership, return 'loading'.
|
|
55
|
+
*
|
|
56
|
+
* `runLoad` performs the actual sizing + `ensureLoaded`; it is invoked DETACHED
|
|
57
|
+
* (not awaited) and its settle transitions the entry to 'ready' / 'failed'.
|
|
58
|
+
* `isFocusActive` lets the manager reclaim a residency held by a focus whose
|
|
59
|
+
* team no longer exists. `extractError` maps a thrown value to an address-free
|
|
60
|
+
* message (defaults to `.dbMessage` then `.message`).
|
|
61
|
+
*/
|
|
62
|
+
export function observeHostSwap(args) {
|
|
63
|
+
const { root, targetModel, focusId, runLoad, isFocusActive } = args;
|
|
64
|
+
const extractError = args.extractError ?? defaultExtractError;
|
|
65
|
+
const existing = byRoot.get(root);
|
|
66
|
+
if (existing) {
|
|
67
|
+
if (existing.ownerFocusId !== focusId) {
|
|
68
|
+
// Residency lock: another focus owns this host.
|
|
69
|
+
if (isFocusActive(existing.ownerFocusId)) {
|
|
70
|
+
return { status: 'busy_other', ownerFocusId: existing.ownerFocusId };
|
|
71
|
+
}
|
|
72
|
+
// Owner's team is gone (crash / missed release) -> reclaim and start fresh.
|
|
73
|
+
clearEntry(root);
|
|
74
|
+
}
|
|
75
|
+
else if (existing.targetModel === targetModel) {
|
|
76
|
+
// Same focus re-observing its own in-flight / settled swap.
|
|
77
|
+
if (existing.phase === 'failed') {
|
|
78
|
+
const error = existing.error ?? 'host swap failed';
|
|
79
|
+
clearEntry(root);
|
|
80
|
+
return { status: 'failed', error };
|
|
81
|
+
}
|
|
82
|
+
return { status: existing.phase === 'ready' ? 'ready' : 'loading' };
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Same focus but a DIFFERENT target than the in-flight one -> supersede.
|
|
86
|
+
clearEntry(root);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// No usable entry -> start a detached load and record ownership.
|
|
90
|
+
const entry = { targetModel, ownerFocusId: focusId, phase: 'loading' };
|
|
91
|
+
byRoot.set(root, entry);
|
|
92
|
+
rootByFocus.set(focusId, root);
|
|
93
|
+
void runLoad().then(() => {
|
|
94
|
+
const current = byRoot.get(root);
|
|
95
|
+
// Only transition if THIS load is still the live entry (not superseded).
|
|
96
|
+
if (current === entry)
|
|
97
|
+
current.phase = 'ready';
|
|
98
|
+
}, (err) => {
|
|
99
|
+
const current = byRoot.get(root);
|
|
100
|
+
if (current === entry) {
|
|
101
|
+
current.phase = 'failed';
|
|
102
|
+
current.error = extractError(err);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
return { status: 'loading' };
|
|
106
|
+
}
|
|
107
|
+
function defaultExtractError(err) {
|
|
108
|
+
if (err && typeof err === 'object') {
|
|
109
|
+
const e = err;
|
|
110
|
+
if (typeof e.dbMessage === 'string' && e.dbMessage)
|
|
111
|
+
return e.dbMessage;
|
|
112
|
+
if (typeof e.message === 'string' && e.message)
|
|
113
|
+
return e.message;
|
|
114
|
+
}
|
|
115
|
+
return 'host swap failed';
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Claim residency of a host whose target model is ALREADY resident + ready
|
|
119
|
+
* (the fast path that skips the detached load). Without this, a focus that
|
|
120
|
+
* spawns against a pre-loaded model would hold NO residency lock, and a second
|
|
121
|
+
* focus could start a swap that evicts the model mid-run (#4). Returns
|
|
122
|
+
* 'busy_other' when a DIFFERENT, still-active focus already owns the host
|
|
123
|
+
* (the caller defers); otherwise records this focus as the owner with phase
|
|
124
|
+
* 'ready' and returns 'ready'. A stale owner (team gone) is reclaimed.
|
|
125
|
+
*/
|
|
126
|
+
export function claimResidentHost(args) {
|
|
127
|
+
const { root, targetModel, focusId, isFocusActive } = args;
|
|
128
|
+
const existing = byRoot.get(root);
|
|
129
|
+
if (existing && existing.ownerFocusId !== focusId) {
|
|
130
|
+
if (isFocusActive(existing.ownerFocusId)) {
|
|
131
|
+
return { status: 'busy_other', ownerFocusId: existing.ownerFocusId };
|
|
132
|
+
}
|
|
133
|
+
clearEntry(root); // stale owner -> reclaim
|
|
134
|
+
}
|
|
135
|
+
byRoot.set(root, { targetModel, ownerFocusId: focusId, phase: 'ready' });
|
|
136
|
+
rootByFocus.set(focusId, root);
|
|
137
|
+
return { status: 'ready' };
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Release the host owned by `focusId` (called on team teardown). Frees the
|
|
141
|
+
* residency lock so another focus targeting that host can swap. No-op when the
|
|
142
|
+
* focus owns no host.
|
|
143
|
+
*/
|
|
144
|
+
export function releaseHostByFocus(focusId) {
|
|
145
|
+
const root = rootByFocus.get(focusId);
|
|
146
|
+
if (root !== undefined) {
|
|
147
|
+
byRoot.delete(root);
|
|
148
|
+
rootByFocus.delete(focusId);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/** Test-only: clear the per-host swap registry between cases. */
|
|
152
|
+
export function __resetHostSwapManager() {
|
|
153
|
+
byRoot.clear();
|
|
154
|
+
rootByFocus.clear();
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=swap-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap-manager.js","sourceRoot":"","sources":["../../src/host-control/swap-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified team-model precedence.
|
|
3
|
+
*
|
|
4
|
+
* ONE rule decides which model a focus team launches under, applied
|
|
5
|
+
* identically at initial spawn AND at stage respawn:
|
|
6
|
+
*
|
|
7
|
+
* focus override (pipeline_config.model, if set)
|
|
8
|
+
* -> stage directive model
|
|
9
|
+
* -> CLI default (null = let the backend pick)
|
|
10
|
+
*
|
|
11
|
+
* The workflow stage's directive model is the source of truth for "how this
|
|
12
|
+
* stage thinks"; the focus selector is an explicit opt-in OVERRIDE. A null
|
|
13
|
+
* focus override means "inherit the per-stage workflow model" -- the focus is
|
|
14
|
+
* NOT pinning anything, so the stage model wins. A null stage model in turn
|
|
15
|
+
* falls through to the CLI default.
|
|
16
|
+
*
|
|
17
|
+
* Engine-compat filtering (never pass a Claude id to a cloud Codex engine,
|
|
18
|
+
* route a local-Codex pass to its selected model) is applied by the callers
|
|
19
|
+
* BEFORE the two inputs reach this helper -- see focus-executor's
|
|
20
|
+
* selectPipelineModelForSpawn / selectDirectiveModelForSpawn, which null out
|
|
21
|
+
* an input the resolved backend cannot run. This helper is the single,
|
|
22
|
+
* pure precedence step they all funnel through, so spawn and respawn can
|
|
23
|
+
* never diverge on ordering.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Resolve the effective team model from the focus override and the stage
|
|
27
|
+
* directive model, both already filtered for backend compatibility by the
|
|
28
|
+
* caller. Pure -- the entire precedence contract lives in this one expression.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveTeamModel(focusOverrideModel: string | null | undefined, stageDirectiveModel: string | null | undefined): string | null;
|
|
31
|
+
//# sourceMappingURL=model-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-resolution.d.ts","sourceRoot":"","sources":["../src/model-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7C,mBAAmB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC7C,MAAM,GAAG,IAAI,CAEf"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified team-model precedence.
|
|
3
|
+
*
|
|
4
|
+
* ONE rule decides which model a focus team launches under, applied
|
|
5
|
+
* identically at initial spawn AND at stage respawn:
|
|
6
|
+
*
|
|
7
|
+
* focus override (pipeline_config.model, if set)
|
|
8
|
+
* -> stage directive model
|
|
9
|
+
* -> CLI default (null = let the backend pick)
|
|
10
|
+
*
|
|
11
|
+
* The workflow stage's directive model is the source of truth for "how this
|
|
12
|
+
* stage thinks"; the focus selector is an explicit opt-in OVERRIDE. A null
|
|
13
|
+
* focus override means "inherit the per-stage workflow model" -- the focus is
|
|
14
|
+
* NOT pinning anything, so the stage model wins. A null stage model in turn
|
|
15
|
+
* falls through to the CLI default.
|
|
16
|
+
*
|
|
17
|
+
* Engine-compat filtering (never pass a Claude id to a cloud Codex engine,
|
|
18
|
+
* route a local-Codex pass to its selected model) is applied by the callers
|
|
19
|
+
* BEFORE the two inputs reach this helper -- see focus-executor's
|
|
20
|
+
* selectPipelineModelForSpawn / selectDirectiveModelForSpawn, which null out
|
|
21
|
+
* an input the resolved backend cannot run. This helper is the single,
|
|
22
|
+
* pure precedence step they all funnel through, so spawn and respawn can
|
|
23
|
+
* never diverge on ordering.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Resolve the effective team model from the focus override and the stage
|
|
27
|
+
* directive model, both already filtered for backend compatibility by the
|
|
28
|
+
* caller. Pure -- the entire precedence contract lives in this one expression.
|
|
29
|
+
*/
|
|
30
|
+
export function resolveTeamModel(focusOverrideModel, stageDirectiveModel) {
|
|
31
|
+
return focusOverrideModel ?? stageDirectiveModel ?? null;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=model-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-resolution.js","sourceRoot":"","sources":["../src/model-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,kBAA6C,EAC7C,mBAA8C;IAE9C,OAAO,kBAAkB,IAAI,mBAAmB,IAAI,IAAI,CAAC;AAC3D,CAAC"}
|
|
@@ -35,7 +35,7 @@ export declare function buildRemediationDirectiveSection(reviewFiledOpenCount: n
|
|
|
35
35
|
* `summary`, `references`, `REQUIRED`, and `terminal` all appear verbatim so the
|
|
36
36
|
* obligation is grep-verifiable by the enforcement tests and reviewers.
|
|
37
37
|
*/
|
|
38
|
-
export declare function buildReviewOutcomeStampingSection(): string[];
|
|
38
|
+
export declare function buildReviewOutcomeStampingSection(agentSessionId?: string): string[];
|
|
39
39
|
/**
|
|
40
40
|
* The marker we look for in the assembled stage-directive context to know a
|
|
41
41
|
* review report is being rendered into the prompt. The focus.last_review_report
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persona-sections.d.ts","sourceRoot":"","sources":["../../src/prompt-sections/persona-sections.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,oBAAoB,EAAE,MAAM,GAC3B,MAAM,EAAE,CAqBV;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iCAAiC,
|
|
1
|
+
{"version":3,"file":"persona-sections.d.ts","sourceRoot":"","sources":["../../src/prompt-sections/persona-sections.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,oBAAoB,EAAE,MAAM,GAC3B,MAAM,EAAE,CAqBV;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iCAAiC,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAmDnF;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAQjF;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CA8BtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,CAuDxD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,EAAE,CAqCV;AAMD,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,EAAE,cAAc,EAAE,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAsDvE"}
|
|
@@ -56,8 +56,26 @@ export function buildRemediationDirectiveSection(reviewFiledOpenCount) {
|
|
|
56
56
|
* `summary`, `references`, `REQUIRED`, and `terminal` all appear verbatim so the
|
|
57
57
|
* obligation is grep-verifiable by the enforcement tests and reviewers.
|
|
58
58
|
*/
|
|
59
|
-
export function buildReviewOutcomeStampingSection() {
|
|
59
|
+
export function buildReviewOutcomeStampingSection(agentSessionId) {
|
|
60
|
+
// When the daemon hands us the freshly-minted review session id at spawn, emit
|
|
61
|
+
// it verbatim so the review agent stamps its outcome with the exact id
|
|
62
|
+
// product-api validates against -- no reverse-engineering it from the Claude
|
|
63
|
+
// --resume session id. Omitted (no line) when no id is supplied.
|
|
64
|
+
const sessionIdLines = agentSessionId
|
|
65
|
+
? [
|
|
66
|
+
'## YOUR Telora Review Session ID',
|
|
67
|
+
'',
|
|
68
|
+
`Your Telora \`agent_sessions.id\` for this review pass is: \`${agentSessionId}\``,
|
|
69
|
+
'',
|
|
70
|
+
'Pass this EXACT value as `agentSessionId` to `focus_review_complete`. It is',
|
|
71
|
+
'already the active review session for this focus -- do NOT look it up, derive',
|
|
72
|
+
'it from your Claude session id, or search for "the active review session".',
|
|
73
|
+
'Use the id above directly.',
|
|
74
|
+
'',
|
|
75
|
+
]
|
|
76
|
+
: [];
|
|
60
77
|
return [
|
|
78
|
+
...sessionIdLines,
|
|
61
79
|
'## REQUIRED: Stamp the Review Outcome Before You Exit',
|
|
62
80
|
'',
|
|
63
81
|
'Your review is NOT complete until you stamp an explicit, machine-readable',
|
|
@@ -67,6 +85,9 @@ export function buildReviewOutcomeStampingSection() {
|
|
|
67
85
|
'As the FINAL step of your review pass you MUST call `focus_review_complete`',
|
|
68
86
|
'(the `telora_product_focus` tool with `action: "review_complete"`) with:',
|
|
69
87
|
'',
|
|
88
|
+
...(agentSessionId
|
|
89
|
+
? [`- \`agentSessionId\`: \`${agentSessionId}\` (your Telora review session id, shown above).`]
|
|
90
|
+
: []),
|
|
70
91
|
'- `outcome`: exactly one of `approved` or `gaps_found`.',
|
|
71
92
|
' - `approved` -- the diff meets the acceptance criteria for every delivery.',
|
|
72
93
|
' A non-blocking, deferrable triage note (low priority, explicitly safe to',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persona-sections.js","sourceRoot":"","sources":["../../src/prompt-sections/persona-sections.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gCAAgC,CAC9C,oBAA4B;IAE5B,IAAI,oBAAoB,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO;QACL,+BAA+B;QAC/B,EAAE;QACF,4BAA4B,oBAAoB,6BAA6B;QAC7E,wEAAwE;QACxE,6CAA6C;QAC7C,EAAE;QACF,yEAAyE;QACzE,mBAAmB;QACnB,0EAA0E;QAC1E,8EAA8E;QAC9E,2DAA2D;QAC3D,wEAAwE;QACxE,+DAA+D;QAC/D,EAAE;QACF,uEAAuE;QACvE,qEAAqE;QACrE,EAAE;KACH,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iCAAiC;IAC/
|
|
1
|
+
{"version":3,"file":"persona-sections.js","sourceRoot":"","sources":["../../src/prompt-sections/persona-sections.ts"],"names":[],"mappings":"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"}
|