49a1a68a29
Add fail-open headroom provider routing for goosed sync, context-budget planning with shadow telemetry events, and fix portal-resume smoke to skip force_deep_reasoning by default so session round-trip checks stay fast. Co-authored-by: Cursor <cursoragent@cursor.com>
80 lines
2.7 KiB
JavaScript
80 lines
2.7 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
|
|
import {
|
|
buildHeadroomRunObservation,
|
|
isHeadroomEligibleForSkill,
|
|
resolveGoosedApiUrlWithHeadroom,
|
|
resolveHeadroomMode,
|
|
resolveHeadroomProxyBaseUrl,
|
|
} from './memind-headroom-policy.mjs';
|
|
|
|
test('resolveHeadroomMode defaults to off and rejects unknown values', () => {
|
|
assert.equal(resolveHeadroomMode({}), 'off');
|
|
assert.equal(resolveHeadroomMode({ MEMIND_HEADROOM_MODE: 'shadow' }), 'shadow');
|
|
assert.equal(resolveHeadroomMode({ MEMIND_HEADROOM_MODE: 'bogus' }), 'off');
|
|
});
|
|
|
|
test('resolveHeadroomProxyBaseUrl honors explicit override', () => {
|
|
assert.equal(
|
|
resolveHeadroomProxyBaseUrl({ MEMIND_HEADROOM_PROXY_BASE_URL: 'http://127.0.0.1:9999/v1' }),
|
|
'http://127.0.0.1:9999/v1',
|
|
);
|
|
});
|
|
|
|
test('isHeadroomEligibleForSkill excludes page and code skills by default', () => {
|
|
assert.equal(isHeadroomEligibleForSkill('web', { MEMIND_HEADROOM_MODE: 'shadow' }), true);
|
|
assert.equal(
|
|
isHeadroomEligibleForSkill('static-page-publish', { MEMIND_HEADROOM_MODE: 'shadow' }),
|
|
false,
|
|
);
|
|
assert.equal(
|
|
isHeadroomEligibleForSkill('page-data-collect', { MEMIND_HEADROOM_MODE: 'active' }),
|
|
false,
|
|
);
|
|
});
|
|
|
|
test('resolveGoosedApiUrlWithHeadroom is fail-open in active mode', () => {
|
|
const original = 'http://127.0.0.1:18036/v1';
|
|
const shadow = resolveGoosedApiUrlWithHeadroom({
|
|
apiUrl: original,
|
|
mode: 'shadow',
|
|
headroomReachable: false,
|
|
eligible: true,
|
|
env: { MEMIND_HEADROOM_PROXY_BASE_URL: 'http://127.0.0.1:8787/v1' },
|
|
});
|
|
assert.equal(shadow.apiUrl, original);
|
|
assert.equal(shadow.routed, false);
|
|
assert.equal(shadow.wouldRouteTo, 'http://127.0.0.1:8787/v1');
|
|
|
|
const activeFallback = resolveGoosedApiUrlWithHeadroom({
|
|
apiUrl: original,
|
|
mode: 'active',
|
|
headroomReachable: false,
|
|
eligible: true,
|
|
env: { MEMIND_HEADROOM_PROXY_BASE_URL: 'http://127.0.0.1:8787/v1' },
|
|
});
|
|
assert.equal(activeFallback.apiUrl, original);
|
|
assert.equal(activeFallback.fallback, 'headroom_unreachable');
|
|
|
|
const active = resolveGoosedApiUrlWithHeadroom({
|
|
apiUrl: original,
|
|
mode: 'active',
|
|
headroomReachable: true,
|
|
eligible: true,
|
|
env: { MEMIND_HEADROOM_PROXY_BASE_URL: 'http://127.0.0.1:8787/v1' },
|
|
});
|
|
assert.equal(active.apiUrl, 'http://127.0.0.1:8787/v1');
|
|
assert.equal(active.routed, true);
|
|
});
|
|
|
|
test('buildHeadroomRunObservation reports skill eligibility', () => {
|
|
const observation = buildHeadroomRunObservation({
|
|
skillId: 'static-page-publish',
|
|
env: { MEMIND_HEADROOM_MODE: 'shadow' },
|
|
});
|
|
assert.equal(observation.mode, 'shadow');
|
|
assert.equal(observation.eligible, false);
|
|
assert.equal(observation.proxyBaseUrl, 'http://127.0.0.1:8787/v1');
|
|
});
|