@codemieai/code 0.14.1 → 0.15.0
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/README.md +23 -0
- package/bin/codemie-openwiki.js +18 -0
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +2 -0
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +25 -11
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts +1 -0
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.js +20 -0
- package/dist/agents/core/extension/BaseExtensionInstaller.js.map +1 -1
- package/dist/agents/core/types.d.ts +8 -0
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude-message-types.d.ts +1 -0
- package/dist/agents/plugins/claude/claude-message-types.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +48 -6
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/__tests__/statusline.test.ts +26 -4
- package/dist/agents/plugins/claude/plugin/statusline.mjs +5 -1
- package/dist/agents/plugins/codemie-code.plugin.d.ts +1 -0
- package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js +12 -5
- package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
- package/dist/agents/plugins/codex/codex-message-types.d.ts +28 -0
- package/dist/agents/plugins/codex/codex-message-types.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex-message-types.js.map +1 -1
- package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex.plugin.js +30 -2
- package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
- package/dist/agents/plugins/codex/index.d.ts +4 -2
- package/dist/agents/plugins/codex/index.d.ts.map +1 -1
- package/dist/agents/plugins/codex/index.js +3 -1
- package/dist/agents/plugins/codex/index.js.map +1 -1
- package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.js +3 -1
- package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.js.map +1 -1
- package/dist/agents/plugins/gemini/gemini.models.d.ts +33 -0
- package/dist/agents/plugins/gemini/gemini.models.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/gemini.models.js +122 -0
- package/dist/agents/plugins/gemini/gemini.models.js.map +1 -0
- package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/gemini/gemini.plugin.js +6 -0
- package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
- package/dist/agents/plugins/openwiki/openwiki.plugin.d.ts +30 -0
- package/dist/agents/plugins/openwiki/openwiki.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/openwiki/openwiki.plugin.js +73 -0
- package/dist/agents/plugins/openwiki/openwiki.plugin.js.map +1 -0
- package/dist/agents/plugins/pi/pi.models.d.ts.map +1 -1
- package/dist/agents/plugins/pi/pi.models.js +62 -0
- package/dist/agents/plugins/pi/pi.models.js.map +1 -1
- package/dist/agents/plugins/pi/pi.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/pi/pi.plugin.js +7 -3
- package/dist/agents/plugins/pi/pi.plugin.js.map +1 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +2 -0
- package/dist/agents/registry.js.map +1 -1
- package/dist/bin/proxy-daemon.js +3 -0
- package/dist/bin/proxy-daemon.js.map +1 -1
- package/dist/cli/commands/analytics/aggregator.d.ts.map +1 -1
- package/dist/cli/commands/analytics/aggregator.js +1 -0
- package/dist/cli/commands/analytics/aggregator.js.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.js +6 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
- package/dist/cli/commands/analytics/cost/types.d.ts +8 -0
- package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/client/app.js +111 -1
- package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/payload-builder.js +6 -0
- package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
- package/dist/cli/commands/analytics/report/template.html +9 -0
- package/dist/cli/commands/analytics/report/types.d.ts +1 -0
- package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/types.d.ts +1 -0
- package/dist/cli/commands/analytics/types.d.ts.map +1 -1
- package/dist/cli/commands/assistants/chat/claudeUploadsDetector.d.ts.map +1 -1
- package/dist/cli/commands/assistants/chat/claudeUploadsDetector.js +43 -67
- package/dist/cli/commands/assistants/chat/claudeUploadsDetector.js.map +1 -1
- package/dist/cli/commands/assistants/chat/codexUploadsDetector.d.ts +26 -0
- package/dist/cli/commands/assistants/chat/codexUploadsDetector.d.ts.map +1 -0
- package/dist/cli/commands/assistants/chat/codexUploadsDetector.js +240 -0
- package/dist/cli/commands/assistants/chat/codexUploadsDetector.js.map +1 -0
- package/dist/cli/commands/assistants/chat/historyLoader.d.ts +2 -2
- package/dist/cli/commands/assistants/chat/historyLoader.d.ts.map +1 -1
- package/dist/cli/commands/assistants/chat/historyLoader.js.map +1 -1
- package/dist/cli/commands/assistants/chat/index.d.ts.map +1 -1
- package/dist/cli/commands/assistants/chat/index.js +14 -3
- package/dist/cli/commands/assistants/chat/index.js.map +1 -1
- package/dist/cli/commands/assistants/setup/data.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/data.js +7 -0
- package/dist/cli/commands/assistants/setup/data.js.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/utils.d.ts +3 -3
- package/dist/cli/commands/assistants/setup/selection/utils.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/utils.js.map +1 -1
- package/dist/cli/commands/docs.d.ts +12 -0
- package/dist/cli/commands/docs.d.ts.map +1 -0
- package/dist/cli/commands/docs.js +141 -0
- package/dist/cli/commands/docs.js.map +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +30 -18
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/log/filter.js +1 -1
- package/dist/cli/commands/log/filter.js.map +1 -1
- package/dist/cli/commands/log/formatter.d.ts.map +1 -1
- package/dist/cli/commands/log/formatter.js +1 -0
- package/dist/cli/commands/log/formatter.js.map +1 -1
- package/dist/cli/commands/log/parser.d.ts.map +1 -1
- package/dist/cli/commands/log/parser.js +2 -0
- package/dist/cli/commands/log/parser.js.map +1 -1
- package/dist/cli/commands/log/types.d.ts +1 -1
- package/dist/cli/commands/log/types.d.ts.map +1 -1
- package/dist/cli/commands/models.d.ts.map +1 -1
- package/dist/cli/commands/models.js +12 -2
- package/dist/cli/commands/models.js.map +1 -1
- package/dist/cli/commands/profile/display.d.ts +3 -3
- package/dist/cli/commands/profile/display.d.ts.map +1 -1
- package/dist/cli/commands/profile/display.js +6 -6
- package/dist/cli/commands/profile/display.js.map +1 -1
- package/dist/cli/commands/profile/index.d.ts.map +1 -1
- package/dist/cli/commands/profile/index.js +4 -2
- package/dist/cli/commands/profile/index.js.map +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.d.ts +9 -0
- package/dist/cli/commands/proxy/connect-orchestrator.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.js +15 -1
- package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/codex-desktop.d.ts +1 -1
- package/dist/cli/commands/proxy/connectors/codex-desktop.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/codex-desktop.js +19 -9
- package/dist/cli/commands/proxy/connectors/codex-desktop.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.js +9 -0
- package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
- package/dist/cli/commands/proxy/daemon-manager.d.ts +2 -0
- package/dist/cli/commands/proxy/daemon-manager.d.ts.map +1 -1
- package/dist/cli/commands/proxy/daemon-manager.js +2 -0
- package/dist/cli/commands/proxy/daemon-manager.js.map +1 -1
- package/dist/cli/commands/proxy/index.d.ts.map +1 -1
- package/dist/cli/commands/proxy/index.js +44 -2
- package/dist/cli/commands/proxy/index.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +6 -6
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/shared/api-response-guard.d.ts +20 -0
- package/dist/cli/commands/shared/api-response-guard.d.ts.map +1 -0
- package/dist/cli/commands/shared/api-response-guard.js +31 -0
- package/dist/cli/commands/shared/api-response-guard.js.map +1 -0
- package/dist/cli/commands/skills/setup/data.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/data.js +8 -0
- package/dist/cli/commands/skills/setup/data.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts +22 -15
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js.map +1 -1
- package/dist/frameworks/core/registry.d.ts +6 -0
- package/dist/frameworks/core/registry.d.ts.map +1 -1
- package/dist/frameworks/core/registry.js +8 -0
- package/dist/frameworks/core/registry.js.map +1 -1
- package/dist/frameworks/core/types.d.ts +7 -0
- package/dist/frameworks/core/types.d.ts.map +1 -1
- package/dist/frameworks/plugins/codebase-memory.plugin.d.ts.map +1 -1
- package/dist/frameworks/plugins/codebase-memory.plugin.js +1 -0
- package/dist/frameworks/plugins/codebase-memory.plugin.js.map +1 -1
- package/dist/frameworks/plugins/codegraph.plugin.d.ts +17 -0
- package/dist/frameworks/plugins/codegraph.plugin.d.ts.map +1 -0
- package/dist/frameworks/plugins/codegraph.plugin.js +74 -0
- package/dist/frameworks/plugins/codegraph.plugin.js.map +1 -0
- package/dist/frameworks/plugins/graphify.plugin.d.ts +20 -0
- package/dist/frameworks/plugins/graphify.plugin.d.ts.map +1 -0
- package/dist/frameworks/plugins/graphify.plugin.js +92 -0
- package/dist/frameworks/plugins/graphify.plugin.js.map +1 -0
- package/dist/frameworks/plugins/index.d.ts +2 -0
- package/dist/frameworks/plugins/index.d.ts.map +1 -1
- package/dist/frameworks/plugins/index.js +6 -0
- package/dist/frameworks/plugins/index.js.map +1 -1
- package/dist/hooks/executor.d.ts +2 -0
- package/dist/hooks/executor.d.ts.map +1 -1
- package/dist/hooks/executor.js +14 -1
- package/dist/hooks/executor.js.map +1 -1
- package/dist/migrations/001-config-rename.migration.d.ts +0 -1
- package/dist/migrations/001-config-rename.migration.d.ts.map +1 -1
- package/dist/migrations/001-config-rename.migration.js +0 -1
- package/dist/migrations/001-config-rename.migration.js.map +1 -1
- package/dist/migrations/002-consolidate-sessions.migration.d.ts +0 -1
- package/dist/migrations/002-consolidate-sessions.migration.d.ts.map +1 -1
- package/dist/migrations/002-consolidate-sessions.migration.js +0 -1
- package/dist/migrations/002-consolidate-sessions.migration.js.map +1 -1
- package/dist/migrations/003-remove-hooks-node.migration.d.ts +0 -1
- package/dist/migrations/003-remove-hooks-node.migration.d.ts.map +1 -1
- package/dist/migrations/003-remove-hooks-node.migration.js +0 -1
- package/dist/migrations/003-remove-hooks-node.migration.js.map +1 -1
- package/dist/migrations/006-resolve-hook-command-paths.migration.d.ts +9 -0
- package/dist/migrations/006-resolve-hook-command-paths.migration.d.ts.map +1 -0
- package/dist/migrations/006-resolve-hook-command-paths.migration.js +59 -0
- package/dist/migrations/006-resolve-hook-command-paths.migration.js.map +1 -0
- package/dist/migrations/007-decouple-provider-workspace-config.migration.d.ts +10 -0
- package/dist/migrations/007-decouple-provider-workspace-config.migration.d.ts.map +1 -0
- package/dist/migrations/007-decouple-provider-workspace-config.migration.js +118 -0
- package/dist/migrations/007-decouple-provider-workspace-config.migration.js.map +1 -0
- package/dist/migrations/index.d.ts +2 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +2 -0
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/types.d.ts +1 -3
- package/dist/migrations/types.d.ts.map +1 -1
- package/dist/plugins/loaders/hooks-loader.js +1 -1
- package/dist/plugins/loaders/hooks-loader.js.map +1 -1
- package/dist/providers/core/codemie-auth-helpers.d.ts +1 -1
- package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -1
- package/dist/providers/core/codemie-auth-helpers.js +3 -3
- package/dist/providers/core/codemie-auth-helpers.js.map +1 -1
- package/dist/providers/core/default-agent-hooks.d.ts.map +1 -1
- package/dist/providers/core/default-agent-hooks.js +21 -5
- package/dist/providers/core/default-agent-hooks.js.map +1 -1
- package/dist/providers/core/types.d.ts +1 -0
- package/dist/providers/core/types.d.ts.map +1 -1
- package/dist/providers/core/types.js.map +1 -1
- package/dist/providers/integration/setup-ui.d.ts +5 -0
- package/dist/providers/integration/setup-ui.d.ts.map +1 -1
- package/dist/providers/integration/setup-ui.js +17 -2
- package/dist/providers/integration/setup-ui.js.map +1 -1
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.d.ts.map +1 -1
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.js +12 -0
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.js.map +1 -1
- package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/litellm/litellm.setup-steps.js +6 -4
- package/dist/providers/plugins/litellm/litellm.setup-steps.js.map +1 -1
- package/dist/providers/plugins/ollama/ollama.health.js +1 -1
- package/dist/providers/plugins/ollama/ollama.health.js.map +1 -1
- package/dist/providers/plugins/ollama/ollama.models.d.ts +29 -2
- package/dist/providers/plugins/ollama/ollama.models.d.ts.map +1 -1
- package/dist/providers/plugins/ollama/ollama.models.js +103 -22
- package/dist/providers/plugins/ollama/ollama.models.js.map +1 -1
- package/dist/providers/plugins/ollama/ollama.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/ollama/ollama.setup-steps.js +71 -8
- package/dist/providers/plugins/ollama/ollama.setup-steps.js.map +1 -1
- package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -1
- package/dist/providers/plugins/ollama/ollama.template.js +66 -6
- package/dist/providers/plugins/ollama/ollama.template.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts +3 -25
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js +93 -100
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/codex-request-normalizer.plugin.js +7 -2
- package/dist/providers/plugins/sso/proxy/plugins/codex-request-normalizer.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +5 -1
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/sso-auth.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/sso-auth.plugin.js +32 -3
- package/dist/providers/plugins/sso/proxy/plugins/sso-auth.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-errors.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-errors.js +27 -1
- package/dist/providers/plugins/sso/proxy/proxy-errors.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts +7 -2
- package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-http-client.js +191 -15
- package/dist/providers/plugins/sso/proxy/proxy-http-client.js.map +1 -1
- package/dist/utils/config.d.ts +20 -27
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +90 -84
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/hardware.d.ts +36 -0
- package/dist/utils/hardware.d.ts.map +1 -0
- package/dist/utils/hardware.js +86 -0
- package/dist/utils/hardware.js.map +1 -0
- package/dist/utils/hook-command.d.ts +4 -0
- package/dist/utils/hook-command.d.ts.map +1 -0
- package/dist/utils/hook-command.js +75 -0
- package/dist/utils/hook-command.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +21 -0
- package/dist/utils/logger.js.map +1 -1
- package/package.json +2 -1
|
@@ -17,15 +17,66 @@ export const OllamaTemplate = registerProvider({
|
|
|
17
17
|
authType: 'none',
|
|
18
18
|
recommendedModels: [
|
|
19
19
|
'qwen2.5-coder',
|
|
20
|
-
'
|
|
21
|
-
'deepseek-coder-v2'
|
|
22
|
-
'deepseek-v3.1:671b-cloud'
|
|
20
|
+
'gpt-oss:120b-cloud',
|
|
21
|
+
'deepseek-coder-v2'
|
|
23
22
|
],
|
|
23
|
+
modelMetadata: {
|
|
24
|
+
'qwen2.5-coder': {
|
|
25
|
+
name: 'Qwen 2.5 Coder',
|
|
26
|
+
description: 'Excellent coding model with tool support (7B, ~5GB download)',
|
|
27
|
+
popular: true,
|
|
28
|
+
minMemoryGb: 8
|
|
29
|
+
},
|
|
30
|
+
'gpt-oss:120b-cloud': {
|
|
31
|
+
name: 'GPT-OSS 120B (cloud)',
|
|
32
|
+
description: 'OpenAI open-weight model on Ollama cloud - no local memory required',
|
|
33
|
+
popular: true
|
|
34
|
+
// No minMemoryGb: runs on ollama.com, not on the local machine
|
|
35
|
+
},
|
|
36
|
+
'deepseek-coder-v2': {
|
|
37
|
+
name: 'DeepSeek Coder V2',
|
|
38
|
+
description: 'Advanced coding model with tool support (16B, ~9GB download)',
|
|
39
|
+
popular: true,
|
|
40
|
+
minMemoryGb: 12
|
|
41
|
+
}
|
|
42
|
+
},
|
|
24
43
|
capabilities: ['streaming', 'tools', 'embeddings', 'model-management'],
|
|
25
44
|
supportsModelInstallation: true,
|
|
26
45
|
healthCheckEndpoint: '/api/version',
|
|
27
46
|
// Agent lifecycle hooks
|
|
28
|
-
agentHooks: {
|
|
47
|
+
agentHooks: {
|
|
48
|
+
// Wildcard hook: adjust env for ALL agents when running against Ollama.
|
|
49
|
+
// Chained before each agent's own default hooks (see resolveHook).
|
|
50
|
+
'*': {
|
|
51
|
+
beforeRun: async (env, config) => {
|
|
52
|
+
// Claude Code speaks the Anthropic Messages API, which Ollama serves
|
|
53
|
+
// at the host root (https://docs.ollama.com/api/anthropic-compatibility),
|
|
54
|
+
// while the profile baseUrl carries the OpenAI-compatible /v1 suffix.
|
|
55
|
+
if (env.ANTHROPIC_BASE_URL) {
|
|
56
|
+
env.ANTHROPIC_BASE_URL = env.ANTHROPIC_BASE_URL.replace(/\/v1\/?$/, '');
|
|
57
|
+
// Ollama ignores the token but Claude Code requires it to be set.
|
|
58
|
+
// A real ollama.com API key is used when configured (cloud access).
|
|
59
|
+
env.ANTHROPIC_AUTH_TOKEN =
|
|
60
|
+
config.apiKey && config.apiKey !== 'not-required' ? config.apiKey : 'ollama';
|
|
61
|
+
// Model tiers: ollama model names never match the haiku/sonnet/opus
|
|
62
|
+
// auto-selection, so route every tier to the selected model instead
|
|
63
|
+
// of letting Claude Code fall back to its built-in claude-* defaults.
|
|
64
|
+
if (env.CODEMIE_MODEL) {
|
|
65
|
+
if (!env.ANTHROPIC_DEFAULT_HAIKU_MODEL) {
|
|
66
|
+
env.ANTHROPIC_DEFAULT_HAIKU_MODEL = env.CODEMIE_MODEL;
|
|
67
|
+
}
|
|
68
|
+
if (!env.ANTHROPIC_DEFAULT_SONNET_MODEL) {
|
|
69
|
+
env.ANTHROPIC_DEFAULT_SONNET_MODEL = env.CODEMIE_MODEL;
|
|
70
|
+
}
|
|
71
|
+
if (!env.ANTHROPIC_DEFAULT_OPUS_MODEL) {
|
|
72
|
+
env.ANTHROPIC_DEFAULT_OPUS_MODEL = env.CODEMIE_MODEL;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return env;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
},
|
|
29
80
|
setupInstructions: `
|
|
30
81
|
# Ollama Setup Instructions
|
|
31
82
|
|
|
@@ -47,12 +98,21 @@ Download from: https://ollama.com/download
|
|
|
47
98
|
**Important**: Some agents require models with function calling/tool support.
|
|
48
99
|
|
|
49
100
|
- **qwen2.5-coder**: Excellent for coding tasks with tool support (7B, ~5GB)
|
|
50
|
-
- **
|
|
101
|
+
- **gpt-oss:120b-cloud**: OpenAI's open-weight model via Ollama cloud (120B, no download)
|
|
51
102
|
- **deepseek-coder-v2**: Advanced coding model with tool support (16B, ~9GB)
|
|
52
|
-
- **deepseek-v3.1:671b-cloud**: Latest DeepSeek with advanced reasoning (671B)
|
|
53
103
|
|
|
54
104
|
**Note**: Models without tool support (like codellama) will fail with agents that require function calling.
|
|
55
105
|
|
|
106
|
+
## Ollama Cloud (ollama.com)
|
|
107
|
+
|
|
108
|
+
Signed in locally via \`ollama signin\`? The local daemon authenticates cloud
|
|
109
|
+
models automatically - no extra configuration needed to *run* \`-cloud\` models.
|
|
110
|
+
The cloud model catalog is listed automatically during setup (public endpoint).
|
|
111
|
+
|
|
112
|
+
An optional API key from https://ollama.com/settings/keys additionally enables:
|
|
113
|
+
- Running cloud models directly on ollama.com (no local daemon required)
|
|
114
|
+
- Ollama's web search / web fetch API
|
|
115
|
+
|
|
56
116
|
## Documentation
|
|
57
117
|
|
|
58
118
|
- Official website: https://ollama.com
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAmB;IAC/D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,2EAA2E;IACxF,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,wBAAwB;IACxC,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE;QACjB,eAAe;QACf,
|
|
1
|
+
{"version":3,"file":"ollama.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAmB;IAC/D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,2EAA2E;IACxF,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,wBAAwB;IACxC,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE;QACjB,eAAe;QACf,oBAAoB;QACpB,mBAAmB;KACpB;IACD,aAAa,EAAE;QACb,eAAe,EAAE;YACf,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,8DAA8D;YAC3E,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,CAAC;SACf;QACD,oBAAoB,EAAE;YACpB,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,qEAAqE;YAClF,OAAO,EAAE,IAAI;YACb,+DAA+D;SAChE;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,8DAA8D;YAC3E,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,EAAE;SAChB;KACF;IACD,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC;IACtE,yBAAyB,EAAE,IAAI;IAC/B,mBAAmB,EAAE,cAAc;IAEnC,wBAAwB;IACxB,UAAU,EAAE;QACV,wEAAwE;QACxE,mEAAmE;QACnE,GAAG,EAAE;YACH,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;gBAC/B,qEAAqE;gBACrE,0EAA0E;gBAC1E,sEAAsE;gBACtE,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;oBAC3B,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAExE,kEAAkE;oBAClE,oEAAoE;oBACpE,GAAG,CAAC,oBAAoB;wBACtB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAE/E,oEAAoE;oBACpE,oEAAoE;oBACpE,sEAAsE;oBACtE,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;wBACtB,IAAI,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC;4BACvC,GAAG,CAAC,6BAA6B,GAAG,GAAG,CAAC,aAAa,CAAC;wBACxD,CAAC;wBACD,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC;4BACxC,GAAG,CAAC,8BAA8B,GAAG,GAAG,CAAC,aAAa,CAAC;wBACzD,CAAC;wBACD,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;4BACtC,GAAG,CAAC,4BAA4B,GAAG,GAAG,CAAC,aAAa,CAAC;wBACvD,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,OAAO,GAAG,CAAC;YACb,CAAC;SACF;KACF;IAED,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCpB;CACA,CAAC,CAAC"}
|
|
@@ -1,29 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Claude
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Normalizes Claude API requests to match model-specific requirements.
|
|
6
|
-
* Handles thinking parameter variations across Claude model versions:
|
|
7
|
-
*
|
|
8
|
-
* 1. Models that DO NOT support thinking (e.g. claude-haiku-4-5, 4-6):
|
|
9
|
-
* → strips the thinking field entirely to prevent API errors
|
|
10
|
-
*
|
|
11
|
-
* 2. Models that require adaptive thinking API (e.g. claude-opus-4-7+, claude-sonnet-5):
|
|
12
|
-
* → "enabled" → thinking: { type: "adaptive" } + output_config.effort
|
|
13
|
-
* → "disabled" → either preserve or delete the field depending on model support
|
|
14
|
-
*
|
|
15
|
-
* 3. Models that deprecate sampling parameters (e.g. claude-sonnet-5):
|
|
16
|
-
* → strips temperature / top_p / top_k entirely to prevent API errors
|
|
17
|
-
*
|
|
18
|
-
* Problem: Claude Code sends `thinking: { type: "enabled", budget_tokens: N }`.
|
|
19
|
-
* - Haiku models reject thinking field with HTTP 400
|
|
20
|
-
* - Opus 4-7+ requires adaptive thinking format with output_config.effort
|
|
21
|
-
* - Sonnet 5 rejects manual extended thinking and sampling parameters
|
|
22
|
-
*
|
|
23
|
-
* Scope: Enabled for codemie-claude (Claude Code via SSO proxy), codemie-copilot
|
|
24
|
-
* (GitHub Copilot CLI via BYOK Anthropic shape), and claude-desktop (Desktop 3P mode).
|
|
25
|
-
*
|
|
26
|
-
* To add model support: update NO_THINKING_MODEL_PATTERNS or ADAPTIVE_THINKING_MODEL_PATTERNS.
|
|
2
|
+
* Normalizes Claude API requests per model. Every model-specific decision reads
|
|
3
|
+
* from MODEL_CAPABILITY_TABLE; add/edit a row to change support. Priority 14
|
|
4
|
+
* (before RequestSanitizer at 15). See EPMCDME-14035.
|
|
27
5
|
*/
|
|
28
6
|
import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
|
|
29
7
|
export declare class ClaudeRequestNormalizerPlugin implements ProxyPlugin {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-request-normalizer.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claude-request-normalizer.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA8J1E,qBAAa,6BAA8B,YAAW,WAAW;IAC/D,EAAE,SAA8C;IAChD,IAAI,SAA+B;IACnC,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAQ3E"}
|
|
@@ -1,65 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Claude
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Normalizes Claude API requests to match model-specific requirements.
|
|
6
|
-
* Handles thinking parameter variations across Claude model versions:
|
|
7
|
-
*
|
|
8
|
-
* 1. Models that DO NOT support thinking (e.g. claude-haiku-4-5, 4-6):
|
|
9
|
-
* → strips the thinking field entirely to prevent API errors
|
|
10
|
-
*
|
|
11
|
-
* 2. Models that require adaptive thinking API (e.g. claude-opus-4-7+, claude-sonnet-5):
|
|
12
|
-
* → "enabled" → thinking: { type: "adaptive" } + output_config.effort
|
|
13
|
-
* → "disabled" → either preserve or delete the field depending on model support
|
|
14
|
-
*
|
|
15
|
-
* 3. Models that deprecate sampling parameters (e.g. claude-sonnet-5):
|
|
16
|
-
* → strips temperature / top_p / top_k entirely to prevent API errors
|
|
17
|
-
*
|
|
18
|
-
* Problem: Claude Code sends `thinking: { type: "enabled", budget_tokens: N }`.
|
|
19
|
-
* - Haiku models reject thinking field with HTTP 400
|
|
20
|
-
* - Opus 4-7+ requires adaptive thinking format with output_config.effort
|
|
21
|
-
* - Sonnet 5 rejects manual extended thinking and sampling parameters
|
|
22
|
-
*
|
|
23
|
-
* Scope: Enabled for codemie-claude (Claude Code via SSO proxy), codemie-copilot
|
|
24
|
-
* (GitHub Copilot CLI via BYOK Anthropic shape), and claude-desktop (Desktop 3P mode).
|
|
25
|
-
*
|
|
26
|
-
* To add model support: update NO_THINKING_MODEL_PATTERNS or ADAPTIVE_THINKING_MODEL_PATTERNS.
|
|
2
|
+
* Normalizes Claude API requests per model. Every model-specific decision reads
|
|
3
|
+
* from MODEL_CAPABILITY_TABLE; add/edit a row to change support. Priority 14
|
|
4
|
+
* (before RequestSanitizer at 15). See EPMCDME-14035.
|
|
27
5
|
*/
|
|
28
6
|
import { logger } from '../../../../../utils/logger.js';
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
7
|
+
// Applied when no MODEL_CAPABILITY_TABLE row matches.
|
|
8
|
+
const DEFAULT_CAPABILITIES = {
|
|
9
|
+
thinking: 'standard',
|
|
10
|
+
effort: false,
|
|
11
|
+
sampling: true,
|
|
12
|
+
preserveDisabledThinking: false,
|
|
13
|
+
};
|
|
14
|
+
// Pattern → capabilities, first match wins. The `(?:[^0-9]|$)` after each version
|
|
15
|
+
// stops `4-7` from matching `4-70`. See EPMCDME-11821 / EPMCDME-14035.
|
|
16
|
+
const MODEL_CAPABILITY_TABLE = [
|
|
17
|
+
{
|
|
18
|
+
// claude-haiku-3-5 / 4-5 (+ date-tagged): no extended thinking at all.
|
|
19
|
+
pattern: /claude-haiku-(3-5|4-5)(?:[^0-9]|$)/i,
|
|
20
|
+
capabilities: { thinking: 'none', effort: false, sampling: true, preserveDisabledThinking: false },
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
// claude-opus-4-7/8/9 (+ date-tagged; excludes 4-70+): adaptive thinking + effort.
|
|
24
|
+
pattern: /claude-opus-4-[7-9](?:[^0-9]|$)/i,
|
|
25
|
+
capabilities: { thinking: 'adaptive', effort: true, sampling: true, preserveDisabledThinking: false },
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
// claude-sonnet-5 (+ date-tagged): adaptive thinking + effort; rejects manual
|
|
29
|
+
// sampling params; keeps thinking.type="disabled".
|
|
30
|
+
pattern: /claude-sonnet-5(?:[^0-9]|$)/i,
|
|
31
|
+
capabilities: { thinking: 'adaptive', effort: true, sampling: false, preserveDisabledThinking: true },
|
|
32
|
+
},
|
|
44
33
|
];
|
|
45
|
-
function
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
function modelPreservesDisabledThinking(modelName) {
|
|
52
|
-
return /claude-sonnet-5(?:[^0-9]|$)/i.test(modelName);
|
|
53
|
-
}
|
|
54
|
-
function modelDisablesSamplingParameters(modelName) {
|
|
55
|
-
return /claude-sonnet-5(?:[^0-9]|$)/i.test(modelName);
|
|
34
|
+
function capabilitiesFor(model) {
|
|
35
|
+
for (const entry of MODEL_CAPABILITY_TABLE) {
|
|
36
|
+
if (entry.pattern.test(model))
|
|
37
|
+
return entry.capabilities;
|
|
38
|
+
}
|
|
39
|
+
return DEFAULT_CAPABILITIES;
|
|
56
40
|
}
|
|
57
|
-
|
|
58
|
-
* Map legacy budget_tokens to the closest output_config.effort level.
|
|
59
|
-
*
|
|
60
|
-
* budget_tokens was the maximum token budget for thinking in the old API.
|
|
61
|
-
* effort is a coarser control in the new API: low / medium / high.
|
|
62
|
-
*/
|
|
41
|
+
// Map legacy budget_tokens to the coarser new-API effort level.
|
|
63
42
|
function budgetTokensToEffort(budgetTokens) {
|
|
64
43
|
const tokens = typeof budgetTokens === 'number' ? budgetTokens : 0;
|
|
65
44
|
if (tokens <= 2048)
|
|
@@ -68,50 +47,66 @@ function budgetTokensToEffort(budgetTokens) {
|
|
|
68
47
|
return 'medium';
|
|
69
48
|
return 'high';
|
|
70
49
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
delete body.thinking;
|
|
80
|
-
logger.debug(`[claude-request-normalizer] Stripped thinking field for unsupported model: ${model}`);
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Handler: transforms thinking.type "enabled"/"disabled" to adaptive API format.
|
|
85
|
-
* Returns true if transformation applied, false if nothing changed.
|
|
86
|
-
*/
|
|
87
|
-
function handleAdaptiveThinkingTransform(body, model) {
|
|
88
|
-
const thinkingType = body.thinking?.type;
|
|
89
|
-
if (thinkingType !== 'enabled' && thinkingType !== 'disabled') {
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
if (!modelRequiresAdaptiveThinking(model)) {
|
|
93
|
-
return false;
|
|
50
|
+
// Normalize the thinking field per caps.thinking. Called only when body.thinking is set.
|
|
51
|
+
function handleThinkingField(body, caps, model) {
|
|
52
|
+
if (caps.thinking === 'none') {
|
|
53
|
+
delete body.thinking;
|
|
54
|
+
logger.debug(`[claude-request-normalizer] Stripped thinking field for unsupported model: ${model}`);
|
|
55
|
+
return true;
|
|
94
56
|
}
|
|
95
|
-
if (
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
body.output_config = { ...(body.output_config ?? {}), effort };
|
|
57
|
+
if (caps.thinking === 'adaptive') {
|
|
58
|
+
const thinkingType = body.thinking?.type;
|
|
59
|
+
if (thinkingType !== 'enabled' && thinkingType !== 'disabled') {
|
|
60
|
+
return false;
|
|
100
61
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
62
|
+
if (thinkingType === 'enabled') {
|
|
63
|
+
const effort = budgetTokensToEffort(body.thinking.budget_tokens);
|
|
64
|
+
body.thinking = { type: 'adaptive' };
|
|
65
|
+
if (!body.output_config?.effort) {
|
|
66
|
+
body.output_config = { ...(body.output_config ?? {}), effort };
|
|
67
|
+
}
|
|
68
|
+
logger.debug(`[claude-request-normalizer] Transformed thinking: "enabled" → "adaptive", effort="${effort}" for model: ${model}`);
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
// thinkingType === 'disabled'
|
|
72
|
+
if (caps.preserveDisabledThinking) {
|
|
105
73
|
logger.debug(`[claude-request-normalizer] Preserved thinking.type="disabled" for model: ${model}`);
|
|
106
74
|
return false;
|
|
107
75
|
}
|
|
108
76
|
delete body.thinking;
|
|
109
77
|
logger.debug(`[claude-request-normalizer] Removed unsupported thinking.type="disabled" for model: ${model}`);
|
|
78
|
+
return true;
|
|
110
79
|
}
|
|
111
|
-
|
|
80
|
+
// 'standard' — leave the thinking field untouched.
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
// Strip effort for models that reject it: Claude Code's --effort flag becomes
|
|
84
|
+
// output_config.effort (or top-level effort) and 400s on e.g. claude-4-5-sonnet.
|
|
85
|
+
function handleUnsupportedEffort(body, caps, model) {
|
|
86
|
+
if (caps.effort) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
let stripped = false;
|
|
90
|
+
const outputConfig = body.output_config;
|
|
91
|
+
if (outputConfig && typeof outputConfig === 'object' && 'effort' in outputConfig) {
|
|
92
|
+
delete outputConfig.effort;
|
|
93
|
+
stripped = true;
|
|
94
|
+
if (Object.keys(outputConfig).length === 0) {
|
|
95
|
+
delete body.output_config;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if ('effort' in body) {
|
|
99
|
+
delete body.effort;
|
|
100
|
+
stripped = true;
|
|
101
|
+
}
|
|
102
|
+
if (stripped) {
|
|
103
|
+
logger.debug(`[claude-request-normalizer] Stripped unsupported effort parameter for model: ${model}`);
|
|
104
|
+
}
|
|
105
|
+
return stripped;
|
|
112
106
|
}
|
|
113
|
-
|
|
114
|
-
|
|
107
|
+
// Strip sampling params (temperature/top_p/top_k) for models that reject them.
|
|
108
|
+
function handleDeprecatedSamplingParams(body, caps, model) {
|
|
109
|
+
if (caps.sampling) {
|
|
115
110
|
return false;
|
|
116
111
|
}
|
|
117
112
|
const stripped = [];
|
|
@@ -127,7 +122,6 @@ function handleDeprecatedSamplingParams(body, model) {
|
|
|
127
122
|
logger.debug(`[claude-request-normalizer] Stripped deprecated sampling params for model ${model}: ${stripped.join(', ')}`);
|
|
128
123
|
return true;
|
|
129
124
|
}
|
|
130
|
-
/** Agents whose Claude API requests need thinking normalization */
|
|
131
125
|
const ALLOWED_AGENTS = ['codemie-claude', 'codemie-copilot', 'claude-desktop'];
|
|
132
126
|
export class ClaudeRequestNormalizerPlugin {
|
|
133
127
|
id = '@codemie/proxy-claude-request-normalizer';
|
|
@@ -139,7 +133,6 @@ export class ClaudeRequestNormalizerPlugin {
|
|
|
139
133
|
if (!clientType || !ALLOWED_AGENTS.includes(clientType)) {
|
|
140
134
|
throw new Error(`Plugin disabled for agent: ${clientType}`);
|
|
141
135
|
}
|
|
142
|
-
// Pass the configured model as a fallback for requests that omit body.model
|
|
143
136
|
const configModel = context.config.model;
|
|
144
137
|
return new ClaudeRequestNormalizerInterceptor(configModel);
|
|
145
138
|
}
|
|
@@ -161,15 +154,15 @@ class ClaudeRequestNormalizerInterceptor {
|
|
|
161
154
|
if (!model) {
|
|
162
155
|
return;
|
|
163
156
|
}
|
|
164
|
-
const
|
|
157
|
+
const caps = capabilitiesFor(model);
|
|
158
|
+
const modifiedBySampling = handleDeprecatedSamplingParams(body, caps, model);
|
|
159
|
+
// Not behind the thinking guard: Claude Code can send effort without thinking.
|
|
160
|
+
const modifiedByEffort = handleUnsupportedEffort(body, caps, model);
|
|
165
161
|
let modifiedByThinking = false;
|
|
166
162
|
if (body.thinking) {
|
|
167
|
-
|
|
168
|
-
modifiedByThinking =
|
|
169
|
-
handleNoThinkingModels(body, model) ||
|
|
170
|
-
handleAdaptiveThinkingTransform(body, model);
|
|
163
|
+
modifiedByThinking = handleThinkingField(body, caps, model);
|
|
171
164
|
}
|
|
172
|
-
if (modifiedBySampling || modifiedByThinking) {
|
|
165
|
+
if (modifiedBySampling || modifiedByEffort || modifiedByThinking) {
|
|
173
166
|
const newBodyStr = JSON.stringify(body);
|
|
174
167
|
context.requestBody = Buffer.from(newBodyStr, 'utf-8');
|
|
175
168
|
context.headers['content-length'] = String(context.requestBody.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-request-normalizer.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claude-request-normalizer.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -185,8 +185,13 @@ class CodexRequestNormalizerInterceptor {
|
|
|
185
185
|
*/
|
|
186
186
|
resolveFallbackModel() {
|
|
187
187
|
const pinned = this.context.config.model;
|
|
188
|
-
if (pinned
|
|
189
|
-
|
|
188
|
+
if (pinned) {
|
|
189
|
+
// The pinned value may be the profile's undated picker name; resolve it to
|
|
190
|
+
// its dated deployment the same way an in-flight request is resolved.
|
|
191
|
+
const resolution = resolveCodexDeployment(pinned, this.availableModels, undefined);
|
|
192
|
+
if (resolution.kind === 'exact' || resolution.kind === 'resolved')
|
|
193
|
+
return resolution.model;
|
|
194
|
+
}
|
|
190
195
|
return rankDeploymentsByRecency(this.availableModels)[0];
|
|
191
196
|
}
|
|
192
197
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-request-normalizer.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/codex-request-normalizer.plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codex-request-normalizer.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/codex-request-normalizer.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,11 @@ class HeaderInjectionInterceptor {
|
|
|
25
25
|
async onRequest(context) {
|
|
26
26
|
// Request and session ID headers
|
|
27
27
|
context.headers['X-CodeMie-Request-ID'] = context.requestId;
|
|
28
|
-
|
|
28
|
+
// Omit the session header entirely when there is no real session id, rather
|
|
29
|
+
// than forwarding the 'unknown' sentinel that context.sessionId defaults to.
|
|
30
|
+
if (context.sessionId && context.sessionId !== 'unknown') {
|
|
31
|
+
context.headers['X-CodeMie-Session-ID'] = context.sessionId;
|
|
32
|
+
}
|
|
29
33
|
// LiteLLM can use these headers for Responses API session affinity when
|
|
30
34
|
// its router is configured with session-aware pre-call checks.
|
|
31
35
|
if (this.context.config.clientType === 'codemie-codex' || this.context.config.clientType === 'codemie-copilot') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-injection.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/header-injection.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,MAAM,OAAO,qBAAqB;IAChC,EAAE,GAAG,wBAAwB,CAAC;IAC9B,IAAI,GAAG,kBAAkB,CAAC;IAC1B,OAAO,GAAG,OAAO,CAAC;IAClB,QAAQ,GAAG,EAAE,CAAC;IAEd,KAAK,CAAC,iBAAiB,CAAC,OAAsB;QAC5C,OAAO,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;CACF;AAED,MAAM,0BAA0B;IAGV;IAFpB,IAAI,GAAG,kBAAkB,CAAC;IAE1B,YAAoB,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAE9C,KAAK,CAAC,SAAS,CAAC,OAAqB;QACnC,iCAAiC;QACjC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAC5D,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"header-injection.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/header-injection.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso-auth.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/sso-auth.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"sso-auth.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/sso-auth.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAM1E,qBAAa,aAAc,YAAW,WAAW;IAC/C,EAAE,SAA6B;IAC/B,IAAI,SAAwB;IAC5B,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAQ3E"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* KISS: Simple interceptor, one clear purpose
|
|
7
7
|
*/
|
|
8
8
|
import { logger } from '../../../../../utils/logger.js';
|
|
9
|
+
import { AuthenticationError } from '../proxy-errors.js';
|
|
9
10
|
export class SSOAuthPlugin {
|
|
10
11
|
id = '@codemie/proxy-sso-auth';
|
|
11
12
|
name = 'SSO Authentication';
|
|
@@ -35,10 +36,38 @@ class SSOAuthInterceptor {
|
|
|
35
36
|
constructor(credentials) {
|
|
36
37
|
this.credentials = credentials;
|
|
37
38
|
}
|
|
39
|
+
hasInvalidHeaderChars(value) {
|
|
40
|
+
// RFC 7230 field-vchar / obs-text; disallow control chars except HTAB.
|
|
41
|
+
for (let i = 0; i < value.length; i++) {
|
|
42
|
+
const code = value.charCodeAt(i);
|
|
43
|
+
if ((code <= 0x1f && code !== 0x09) || code === 0x7f) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
38
49
|
async onRequest(context) {
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
50
|
+
const invalidCookieKeys = [];
|
|
51
|
+
const cookiePairs = [];
|
|
52
|
+
for (const [key, value] of Object.entries(this.credentials.cookies)) {
|
|
53
|
+
const safeKey = String(key).trim();
|
|
54
|
+
const safeValue = String(value);
|
|
55
|
+
if (!safeKey || this.hasInvalidHeaderChars(safeKey) || this.hasInvalidHeaderChars(safeValue)) {
|
|
56
|
+
invalidCookieKeys.push(safeKey || '<empty>');
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
cookiePairs.push(`${safeKey}=${safeValue}`);
|
|
60
|
+
}
|
|
61
|
+
if (invalidCookieKeys.length > 0) {
|
|
62
|
+
logger.warn(`[${this.name}] Ignoring invalid cookie entries`, {
|
|
63
|
+
invalidCookieCount: invalidCookieKeys.length,
|
|
64
|
+
invalidCookieNames: invalidCookieKeys,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
if (cookiePairs.length === 0) {
|
|
68
|
+
throw new AuthenticationError('Stored SSO session cookies are invalid. Run `codemie profile login` and reconnect the proxy.');
|
|
69
|
+
}
|
|
70
|
+
const cookieHeader = cookiePairs.join('; ');
|
|
42
71
|
// Use lowercase 'cookie' to match Node.js HTTP header conventions
|
|
43
72
|
context.headers['cookie'] = cookieHeader;
|
|
44
73
|
logger.debug(`[${this.name}] Injected SSO cookies:`, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso-auth.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/sso-auth.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"sso-auth.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/sso-auth.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-errors.d.ts","sourceRoot":"","sources":["../../../../../src/providers/plugins/sso/proxy/proxy-errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;aAGjB,UAAU,EAAE,MAAM;aAClB,IAAI,EAAE,MAAM;aACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAHjD,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;IAOnD,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQlC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;gBAC/B,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAInF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"proxy-errors.d.ts","sourceRoot":"","sources":["../../../../../src/providers/plugins/sso/proxy/proxy-errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;aAGjB,UAAU,EAAE,MAAM;aAClB,IAAI,EAAE,MAAM;aACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAHjD,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;IAOnD,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQlC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;gBAC/B,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAInF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAsF5F"}
|
|
@@ -72,9 +72,35 @@ export function normalizeError(error, context) {
|
|
|
72
72
|
return error;
|
|
73
73
|
}
|
|
74
74
|
if (error instanceof Error) {
|
|
75
|
+
const errorCode = error.code;
|
|
76
|
+
const message = error.message || '';
|
|
77
|
+
// Node may throw synchronously for malformed header values (for example,
|
|
78
|
+
// corrupted/invalid cookie bytes). Treat this as an auth/session issue so
|
|
79
|
+
// users get a recovery action instead of a generic 500.
|
|
80
|
+
if (errorCode === 'ERR_INVALID_CHAR' ||
|
|
81
|
+
errorCode === 'ERR_HTTP_INVALID_HEADER_VALUE' ||
|
|
82
|
+
/header content|header value|cookie/i.test(message)) {
|
|
83
|
+
return new AuthenticationError('Invalid authentication session data. Run `codemie profile login` and restart the proxy.', {
|
|
84
|
+
originalError: message,
|
|
85
|
+
errorCode,
|
|
86
|
+
...context,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
75
89
|
// Network errors
|
|
76
90
|
if ('code' in error) {
|
|
77
|
-
const code =
|
|
91
|
+
const code = errorCode;
|
|
92
|
+
if (message.includes('self-signed certificate in certificate chain') ||
|
|
93
|
+
message.includes('unable to verify the first certificate') ||
|
|
94
|
+
message.includes('certificate has expired') ||
|
|
95
|
+
code === 'SELF_SIGNED_CERT_IN_CHAIN' ||
|
|
96
|
+
code === 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' ||
|
|
97
|
+
code === 'CERT_HAS_EXPIRED') {
|
|
98
|
+
return new UpstreamError(502, 'TLS validation failed when connecting to upstream. Check corporate proxy certificate chain or trust settings.', {
|
|
99
|
+
originalError: message,
|
|
100
|
+
errorCode: code,
|
|
101
|
+
...context,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
78
104
|
if (code === 'ECONNREFUSED' || code === 'ENOTFOUND' || code === 'ECONNRESET') {
|
|
79
105
|
return new NetworkError(`Cannot connect to upstream server: ${error.message}`, {
|
|
80
106
|
originalError: error.message,
|