feat(FN-3313): add plugin slot registry, planning mode rewind, and docker n

This merge lands five features spanning the Fusion stack: research settings key renaming (FN-3313, Steps 2–7) across types, defaults, CLI, and engine packages; static plugin slot-host rendering contract documentation (FN-3260); Docker node provisioning routes with a planning modal (FN-3116); plannin

Fusion-Task-Id: FN-3313
This commit is contained in:
Fusion
2026-05-04 20:14:46 -07:00
committed by gsxdsm
parent fccec582f4
commit d790854e24
16 changed files with 118 additions and 90 deletions

View File

@@ -96,7 +96,7 @@ describe("resolveResearchSettings", () => {
it("falls back through legacy and hardcoded limit chains", () => {
const fromLegacyProjectTimeout = resolveResearchSettings({
researchDefaultTimeout: 111_000,
researchFetchTimeoutMs: 8_000,
researchGlobalFetchTimeoutMs: 8_000,
});
expect(fromLegacyProjectTimeout.limits.maxDurationMs).toBe(111_000);
expect(fromLegacyProjectTimeout.limits.requestTimeoutMs).toBe(8_000);

View File

@@ -98,6 +98,29 @@ describe("settings key parity", () => {
// ── Model Lane Key Parity Regression Tests (FN-1729) ────────────────────────
describe("research global key parity regression (FN-3313)", () => {
const globalResearchFlatKeys = [
"researchGlobalWebSearchProvider",
"researchGlobalSearxngUrl",
"researchGlobalBraveApiKey",
"researchGlobalGoogleSearchApiKey",
"researchGlobalGoogleSearchCx",
"researchGlobalTavilyApiKey",
"researchGlobalGitHubEnabled",
"researchGlobalLocalDocsEnabled",
"researchGlobalMaxSearchResults",
"researchGlobalFetchTimeoutMs",
"researchGlobalUserAgent",
] as const;
it.each(globalResearchFlatKeys)("%s is global-scoped only", (key) => {
expect(isGlobalSettingsKey(key)).toBe(true);
expect(isProjectSettingsKey(key)).toBe(false);
});
});
// ── Model Lane Key Parity Regression Tests (FN-1729) ────────────────────────
describe("model lane key parity regression (FN-1729)", () => {
// All model lane provider/modelId pairs that should exist
const allModelLanePairs = [