fix: exactOptionalPropertyTypes and ResponsePaginator type errors
Some checks are pending
CI / lint (push) Waiting to run
CI / typecheck (push) Waiting to run
CI / test (push) Waiting to run
CI / build (push) Blocked by required conditions
CI / package (push) Blocked by required conditions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Michal
2026-02-24 23:15:15 +00:00
parent 04d115933b
commit 869217a07a
2 changed files with 29 additions and 25 deletions

View File

@@ -47,7 +47,7 @@ export function registerProjectMcpEndpoint(app: FastifyInstance, mcpdClient: Mcp
await refreshProjectUpstreams(router, mcpdClient, projectName, authToken); await refreshProjectUpstreams(router, mcpdClient, projectName, authToken);
// Wire pagination support with LLM provider if configured // Wire pagination support with LLM provider if configured
router.setPaginator(new ResponsePaginator(providerRegistry?.getActive() ?? null)); router.setPaginator(new ResponsePaginator(providerRegistry ?? null));
// Configure prompt resources with SA-scoped client for RBAC // Configure prompt resources with SA-scoped client for RBAC
const saClient = mcpdClient.withHeaders({ 'X-Service-Account': `project:${projectName}` }); const saClient = mcpdClient.withHeaders({ 'X-Service-Account': `project:${projectName}` });

View File

@@ -6,6 +6,11 @@ import { OllamaProvider } from './providers/ollama.js';
import { AnthropicProvider } from './providers/anthropic.js'; import { AnthropicProvider } from './providers/anthropic.js';
import { OpenAiProvider } from './providers/openai.js'; import { OpenAiProvider } from './providers/openai.js';
import { DeepSeekProvider } from './providers/deepseek.js'; import { DeepSeekProvider } from './providers/deepseek.js';
import type { GeminiCliConfig } from './providers/gemini-cli.js';
import type { OllamaConfig } from './providers/ollama.js';
import type { AnthropicConfig } from './providers/anthropic.js';
import type { OpenAiConfig } from './providers/openai.js';
import type { DeepSeekConfig } from './providers/deepseek.js';
/** /**
* Create a ProviderRegistry from user config + secret store. * Create a ProviderRegistry from user config + secret store.
@@ -19,19 +24,21 @@ export async function createProviderFromConfig(
if (!config?.provider || config.provider === 'none') return registry; if (!config?.provider || config.provider === 'none') return registry;
switch (config.provider) { switch (config.provider) {
case 'gemini-cli': case 'gemini-cli': {
registry.register(new GeminiCliProvider({ const cfg: GeminiCliConfig = {};
binaryPath: config.binaryPath, if (config.binaryPath) cfg.binaryPath = config.binaryPath;
defaultModel: config.model, if (config.model) cfg.defaultModel = config.model;
})); registry.register(new GeminiCliProvider(cfg));
break; break;
}
case 'ollama': case 'ollama': {
registry.register(new OllamaProvider({ const cfg: OllamaConfig = {};
baseUrl: config.url, if (config.url) cfg.baseUrl = config.url;
defaultModel: config.model, if (config.model) cfg.defaultModel = config.model;
})); registry.register(new OllamaProvider(cfg));
break; break;
}
case 'anthropic': { case 'anthropic': {
const apiKey = await secretStore.get('anthropic-api-key'); const apiKey = await secretStore.get('anthropic-api-key');
@@ -39,10 +46,9 @@ export async function createProviderFromConfig(
process.stderr.write('Warning: Anthropic API key not found in secret store. Run "mcpctl config setup" to configure.\n'); process.stderr.write('Warning: Anthropic API key not found in secret store. Run "mcpctl config setup" to configure.\n');
return registry; return registry;
} }
registry.register(new AnthropicProvider({ const cfg: AnthropicConfig = { apiKey };
apiKey, if (config.model) cfg.defaultModel = config.model;
defaultModel: config.model, registry.register(new AnthropicProvider(cfg));
}));
break; break;
} }
@@ -52,11 +58,10 @@ export async function createProviderFromConfig(
process.stderr.write('Warning: OpenAI API key not found in secret store. Run "mcpctl config setup" to configure.\n'); process.stderr.write('Warning: OpenAI API key not found in secret store. Run "mcpctl config setup" to configure.\n');
return registry; return registry;
} }
registry.register(new OpenAiProvider({ const cfg: OpenAiConfig = { apiKey };
apiKey, if (config.url) cfg.baseUrl = config.url;
baseUrl: config.url, if (config.model) cfg.defaultModel = config.model;
defaultModel: config.model, registry.register(new OpenAiProvider(cfg));
}));
break; break;
} }
@@ -66,11 +71,10 @@ export async function createProviderFromConfig(
process.stderr.write('Warning: DeepSeek API key not found in secret store. Run "mcpctl config setup" to configure.\n'); process.stderr.write('Warning: DeepSeek API key not found in secret store. Run "mcpctl config setup" to configure.\n');
return registry; return registry;
} }
registry.register(new DeepSeekProvider({ const cfg: DeepSeekConfig = { apiKey };
apiKey, if (config.url) cfg.baseUrl = config.url;
baseUrl: config.url, if (config.model) cfg.defaultModel = config.model;
defaultModel: config.model, registry.register(new DeepSeekProvider(cfg));
}));
break; break;
} }