@codemieai/code 0.15.2 → 0.15.4
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/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +9 -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 +34 -9
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/plugins/claude/claude.models.d.ts +58 -0
- package/dist/agents/plugins/claude/claude.models.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.models.js +196 -10
- package/dist/agents/plugins/claude/claude.models.js.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +149 -47
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/claude.session.d.ts +17 -1
- package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.session.js +4 -0
- package/dist/agents/plugins/claude/claude.session.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/statusline.bundle.mjs +729 -0
- package/dist/agents/plugins/claude/statusline-installer.d.ts +1 -1
- package/dist/agents/plugins/claude/statusline-installer.d.ts.map +1 -1
- package/dist/agents/plugins/claude/statusline-installer.js +41 -3
- package/dist/agents/plugins/claude/statusline-installer.js.map +1 -1
- package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex-models.js +109 -8
- package/dist/agents/plugins/codex/codex-models.js.map +1 -1
- package/dist/agents/plugins/codex/codex.correlation.d.ts +39 -0
- package/dist/agents/plugins/codex/codex.correlation.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex.correlation.js +150 -0
- package/dist/agents/plugins/codex/codex.correlation.js.map +1 -0
- package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex.plugin.js +8 -40
- package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
- package/dist/agents/plugins/kimi/kimi.env-model.d.ts +27 -0
- package/dist/agents/plugins/kimi/kimi.env-model.d.ts.map +1 -0
- package/dist/agents/plugins/kimi/kimi.env-model.js +52 -0
- package/dist/agents/plugins/kimi/kimi.env-model.js.map +1 -0
- package/dist/agents/plugins/kimi/kimi.session.d.ts +6 -0
- package/dist/agents/plugins/kimi/kimi.session.d.ts.map +1 -1
- package/dist/agents/plugins/kimi/kimi.session.js +24 -2
- package/dist/agents/plugins/kimi/kimi.session.js.map +1 -1
- package/dist/agents/plugins/opencode/opencode-dynamic-models.d.ts.map +1 -1
- package/dist/agents/plugins/opencode/opencode-dynamic-models.js +4 -5
- package/dist/agents/plugins/opencode/opencode-dynamic-models.js.map +1 -1
- package/dist/agents/plugins/pi/pi.models.d.ts.map +1 -1
- package/dist/agents/plugins/pi/pi.models.js +3 -3
- package/dist/agents/plugins/pi/pi.models.js.map +1 -1
- package/dist/bin/proxy-daemon.js +8 -1
- package/dist/bin/proxy-daemon.js.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.d.ts +19 -2
- package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.js +171 -14
- package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
- package/dist/cli/commands/analytics/cost/local-models.d.ts +15 -0
- package/dist/cli/commands/analytics/cost/local-models.d.ts.map +1 -0
- package/dist/cli/commands/analytics/cost/local-models.js +21 -0
- package/dist/cli/commands/analytics/cost/local-models.js.map +1 -0
- package/dist/cli/commands/analytics/cost/types.d.ts +60 -0
- package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/types.js.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts +25 -2
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.js +61 -3
- package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
- package/dist/cli/commands/analytics/formatter.d.ts +11 -0
- package/dist/cli/commands/analytics/formatter.d.ts.map +1 -1
- package/dist/cli/commands/analytics/formatter.js +28 -0
- package/dist/cli/commands/analytics/formatter.js.map +1 -1
- package/dist/cli/commands/analytics/index.d.ts.map +1 -1
- package/dist/cli/commands/analytics/index.js +70 -73
- package/dist/cli/commands/analytics/index.js.map +1 -1
- package/dist/cli/commands/analytics/otel-loader.d.ts.map +1 -1
- package/dist/cli/commands/analytics/otel-loader.js +60 -14
- package/dist/cli/commands/analytics/otel-loader.js.map +1 -1
- package/dist/cli/commands/analytics/otel-pricing.d.ts +38 -0
- package/dist/cli/commands/analytics/otel-pricing.d.ts.map +1 -0
- package/dist/cli/commands/analytics/otel-pricing.js +33 -0
- package/dist/cli/commands/analytics/otel-pricing.js.map +1 -0
- package/dist/cli/commands/analytics/report/client/app.js +279 -18
- package/dist/cli/commands/analytics/report/output-target.d.ts +22 -0
- package/dist/cli/commands/analytics/report/output-target.d.ts.map +1 -0
- package/dist/cli/commands/analytics/report/output-target.js +56 -0
- package/dist/cli/commands/analytics/report/output-target.js.map +1 -0
- 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/report-generator.d.ts +1 -1
- package/dist/cli/commands/analytics/report/report-generator.js +1 -1
- package/dist/cli/commands/analytics/report/session-report.d.ts +1 -3
- package/dist/cli/commands/analytics/report/session-report.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/session-report.js +1 -3
- package/dist/cli/commands/analytics/report/session-report.js.map +1 -1
- package/dist/cli/commands/analytics/report/template.html +6 -6
- package/dist/cli/commands/analytics/report/types.d.ts +17 -1
- package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/sources/sessions-source.d.ts.map +1 -1
- package/dist/cli/commands/analytics/sources/sessions-source.js +9 -11
- package/dist/cli/commands/analytics/sources/sessions-source.js.map +1 -1
- package/dist/cli/commands/analytics/sources/types.d.ts +0 -2
- package/dist/cli/commands/analytics/sources/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/types.d.ts +8 -8
- package/dist/cli/commands/analytics/types.d.ts.map +1 -1
- package/dist/cli/commands/assistants/constants.d.ts +4 -0
- package/dist/cli/commands/assistants/constants.d.ts.map +1 -1
- package/dist/cli/commands/assistants/constants.js +4 -0
- package/dist/cli/commands/assistants/constants.js.map +1 -1
- package/dist/cli/commands/assistants/setup/data.d.ts +1 -0
- package/dist/cli/commands/assistants/setup/data.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/data.js +55 -10
- package/dist/cli/commands/assistants/setup/data.js.map +1 -1
- package/dist/cli/commands/assistants/setup/helpers.d.ts +1 -1
- package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/helpers.js +2 -5
- package/dist/cli/commands/assistants/setup/helpers.js.map +1 -1
- package/dist/cli/commands/assistants/setup/index.d.ts +12 -0
- package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/index.js +148 -20
- package/dist/cli/commands/assistants/setup/index.js.map +1 -1
- package/dist/cli/commands/models.d.ts.map +1 -1
- package/dist/cli/commands/models.js +16 -3
- package/dist/cli/commands/models.js.map +1 -1
- package/dist/cli/commands/profile/display.d.ts +5 -1
- package/dist/cli/commands/profile/display.d.ts.map +1 -1
- package/dist/cli/commands/profile/display.js +5 -1
- 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 +7 -4
- package/dist/cli/commands/profile/index.js.map +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.js +3 -4
- package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.d.ts +2 -3
- package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.js +9 -25
- package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/model-name-resolver.d.ts +19 -0
- package/dist/cli/commands/proxy/connectors/model-name-resolver.d.ts.map +1 -0
- package/dist/cli/commands/proxy/connectors/model-name-resolver.js +126 -0
- package/dist/cli/commands/proxy/connectors/model-name-resolver.js.map +1 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts +23 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts.map +1 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.js +136 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.js.map +1 -0
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.js +49 -19
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-models.d.ts +21 -3
- package/dist/cli/commands/proxy/connectors/vscode-models.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-models.js +86 -28
- package/dist/cli/commands/proxy/connectors/vscode-models.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode.d.ts +3 -2
- package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode.js +67 -39
- package/dist/cli/commands/proxy/connectors/vscode.js.map +1 -1
- package/dist/cli/commands/shared/headless.d.ts +69 -0
- package/dist/cli/commands/shared/headless.d.ts.map +1 -0
- package/dist/cli/commands/shared/headless.js +83 -0
- package/dist/cli/commands/shared/headless.js.map +1 -0
- package/dist/cli/commands/shared/helpers.d.ts +21 -0
- package/dist/cli/commands/shared/helpers.d.ts.map +1 -1
- package/dist/cli/commands/shared/helpers.js +73 -1
- package/dist/cli/commands/shared/helpers.js.map +1 -1
- package/dist/cli/commands/shared/identifier-resolution.d.ts +23 -0
- package/dist/cli/commands/shared/identifier-resolution.d.ts.map +1 -0
- package/dist/cli/commands/shared/identifier-resolution.js +55 -0
- package/dist/cli/commands/shared/identifier-resolution.js.map +1 -0
- package/dist/cli/commands/skills/setup/data.d.ts +3 -2
- package/dist/cli/commands/skills/setup/data.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/data.js +75 -13
- package/dist/cli/commands/skills/setup/data.js.map +1 -1
- package/dist/cli/commands/skills/setup/helpers.d.ts +1 -1
- package/dist/cli/commands/skills/setup/helpers.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/helpers.js +2 -5
- package/dist/cli/commands/skills/setup/helpers.js.map +1 -1
- package/dist/cli/commands/skills/setup/index.d.ts +17 -1
- package/dist/cli/commands/skills/setup/index.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/index.js +190 -19
- package/dist/cli/commands/skills/setup/index.js.map +1 -1
- package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -1
- package/dist/providers/core/codemie-auth-helpers.js +6 -1
- 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 +9 -0
- package/dist/providers/core/default-agent-hooks.js.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.template.js +5 -31
- package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts +44 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js +106 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.d.ts +41 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.js +115 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.js.map +1 -0
- 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 +101 -7
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts +4 -0
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +28 -3
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts +67 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js +203 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +5 -0
- package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.js +1 -0
- package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js +11 -2
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +2 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.d.ts +95 -0
- package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.js +79 -0
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
- package/dist/providers/plugins/sso/sso.models.d.ts +7 -0
- package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.models.js +22 -14
- package/dist/providers/plugins/sso/sso.models.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts +1 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +30 -6
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js +33 -3
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js.map +1 -1
- package/dist/telemetry/runtime/DesktopRepositoryResolver.d.ts +58 -0
- package/dist/telemetry/runtime/DesktopRepositoryResolver.d.ts.map +1 -0
- package/dist/telemetry/runtime/DesktopRepositoryResolver.js +370 -0
- package/dist/telemetry/runtime/DesktopRepositoryResolver.js.map +1 -0
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts +1 -0
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -1
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +89 -6
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -1
- package/dist/telemetry/runtime/types.d.ts +2 -0
- package/dist/telemetry/runtime/types.d.ts.map +1 -1
- package/dist/utils/auth.d.ts +13 -2
- package/dist/utils/auth.d.ts.map +1 -1
- package/dist/utils/auth.js +7 -3
- package/dist/utils/auth.js.map +1 -1
- package/dist/utils/bedrock-pricing.mjs +111 -0
- package/dist/utils/cli-updater.d.ts.map +1 -1
- package/dist/utils/cli-updater.js +32 -7
- package/dist/utils/cli-updater.js.map +1 -1
- package/dist/utils/config.d.ts +21 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +69 -7
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/credential-crypto.d.ts +51 -0
- package/dist/utils/credential-crypto.d.ts.map +1 -0
- package/dist/utils/credential-crypto.js +96 -0
- package/dist/utils/credential-crypto.js.map +1 -0
- package/dist/utils/errors.d.ts +14 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +25 -0
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/model-normalizer.d.ts +6 -0
- package/dist/utils/model-normalizer.d.ts.map +1 -1
- package/dist/utils/model-normalizer.js +37 -19
- package/dist/utils/model-normalizer.js.map +1 -1
- package/dist/utils/paths.d.ts +2 -2
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +11 -9
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/price-resolution.d.ts +42 -0
- package/dist/utils/price-resolution.d.ts.map +1 -0
- package/dist/utils/price-resolution.js +112 -0
- package/dist/utils/price-resolution.js.map +1 -0
- package/dist/utils/pricing.d.ts +65 -6
- package/dist/utils/pricing.d.ts.map +1 -1
- package/dist/utils/pricing.js +91 -117
- package/dist/utils/pricing.js.map +1 -1
- package/dist/utils/pricing.json +201 -20
- package/dist/utils/processes.d.ts +12 -0
- package/dist/utils/processes.d.ts.map +1 -1
- package/dist/utils/processes.js +15 -0
- package/dist/utils/processes.js.map +1 -1
- package/dist/utils/routing-headers.mjs +104 -0
- package/dist/utils/security.d.ts +0 -32
- package/dist/utils/security.d.ts.map +1 -1
- package/dist/utils/security.js +20 -102
- package/dist/utils/security.js.map +1 -1
- package/package.json +5 -2
- package/scripts/bundle-statusline.mjs +37 -0
- package/scripts/copy-plugins.js +19 -2
- package/src/utils/tips.json +9 -9
- package/dist/agents/plugins/claude/plugin/__tests__/statusline.test.ts +0 -323
- package/dist/agents/plugins/claude/plugin/statusline.mjs +0 -282
- package/dist/cli/commands/analytics/exporter.d.ts +0 -20
- package/dist/cli/commands/analytics/exporter.d.ts.map +0 -1
- package/dist/cli/commands/analytics/exporter.js +0 -91
- package/dist/cli/commands/analytics/exporter.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bedrock.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/bedrock/bedrock.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"bedrock.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/bedrock/bedrock.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,eAAe,kBA6K1B,CAAC"}
|
|
@@ -95,37 +95,11 @@ export const BedrockTemplate = registerProvider({
|
|
|
95
95
|
if (env.CODEMIE_MODEL) {
|
|
96
96
|
env.ANTHROPIC_MODEL = env.CODEMIE_MODEL;
|
|
97
97
|
}
|
|
98
|
-
// Model tier configuration
|
|
99
|
-
//
|
|
100
|
-
//
|
|
101
|
-
//
|
|
102
|
-
|
|
103
|
-
delete env.ANTHROPIC_DEFAULT_SONNET_MODEL;
|
|
104
|
-
delete env.ANTHROPIC_DEFAULT_OPUS_MODEL;
|
|
105
|
-
delete env.CLAUDE_CODE_SUBAGENT_MODEL;
|
|
106
|
-
if (env.CODEMIE_HAIKU_MODEL) {
|
|
107
|
-
env.ANTHROPIC_DEFAULT_HAIKU_MODEL = env.CODEMIE_HAIKU_MODEL;
|
|
108
|
-
}
|
|
109
|
-
if (env.CODEMIE_SONNET_MODEL && env.CODEMIE_SONNET_MODEL !== env.CODEMIE_HAIKU_MODEL) {
|
|
110
|
-
env.ANTHROPIC_DEFAULT_SONNET_MODEL = env.CODEMIE_SONNET_MODEL;
|
|
111
|
-
env.CLAUDE_CODE_SUBAGENT_MODEL = env.CODEMIE_SONNET_MODEL;
|
|
112
|
-
}
|
|
113
|
-
else if (env.CODEMIE_OPUS_MODEL) {
|
|
114
|
-
// Opus-only tenant: route subagent to opus; ANTHROPIC_DEFAULT_SONNET_MODEL is
|
|
115
|
-
// intentionally left unset to prevent duplicate-ID display (EPMCDME-12779 FR-002).
|
|
116
|
-
env.CLAUDE_CODE_SUBAGENT_MODEL = env.CODEMIE_OPUS_MODEL;
|
|
117
|
-
}
|
|
118
|
-
else if (env.CODEMIE_HAIKU_MODEL) {
|
|
119
|
-
// Haiku-only tenant: set CLAUDE_CODE_SUBAGENT_MODEL so background tasks use the
|
|
120
|
-
// provisioned model. ANTHROPIC_DEFAULT_SONNET_MODEL is intentionally left unset.
|
|
121
|
-
// Routing haiku through the sonnet slot caused a duplicate because Claude Code
|
|
122
|
-
// shows its built-in haiku default even when ANTHROPIC_DEFAULT_HAIKU_MODEL is not
|
|
123
|
-
// set (EPMCDME-12779).
|
|
124
|
-
env.CLAUDE_CODE_SUBAGENT_MODEL = env.CODEMIE_HAIKU_MODEL;
|
|
125
|
-
}
|
|
126
|
-
if (env.CODEMIE_OPUS_MODEL) {
|
|
127
|
-
env.ANTHROPIC_DEFAULT_OPUS_MODEL = env.CODEMIE_OPUS_MODEL;
|
|
128
|
-
}
|
|
98
|
+
// Model tier configuration (haiku/sonnet/opus mapping, stale-value clearing, and the
|
|
99
|
+
// subagent-default pin) is handled generically by BaseAgentAdapter.transformEnvVars,
|
|
100
|
+
// which runs automatically before this hook and reads claude.plugin.ts's own
|
|
101
|
+
// `envMapping` (haikuModel/sonnetModel/opusModel/subagentDefaultModel) — the same
|
|
102
|
+
// tricky conditional this provider hook used to re-implement by hand (EPMCDME-14355).
|
|
129
103
|
// Token settings for Bedrock burndown throttling
|
|
130
104
|
// https://code.claude.com/docs/en/amazon-bedrock#output-token-configuration
|
|
131
105
|
// Use user-configured values if available, otherwise use recommended defaults
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bedrock.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/bedrock/bedrock.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAmB;IAChE,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,+DAA+D;IAC5E,cAAc,EAAE,iDAAiD;IACjE,YAAY,EAAE,IAAI;IAClB,QAAQ,EAAE,SAAS,EAAE,kDAAkD;IACvE,QAAQ,EAAE,EAAE;IACZ,kBAAkB,EAAE,SAAS;IAC7B,iBAAiB,EAAE;QACjB,mBAAmB,EAAO,2BAA2B;KACtD;IAED,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAC;IAClE,yBAAyB,EAAE,KAAK;IAChC,iBAAiB,EAAE,IAAI;IAEvB,8BAA8B;IAC9B,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;QACxB,MAAM,GAAG,GAA2B,EAAE,CAAC;QAEvC,6CAA6C;QAC7C,IAAI,MAAM,CAAC,UAAU;YAAE,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC;QACnE,IAAI,MAAM,CAAC,SAAS;YAAE,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC,SAAS,CAAC;QAChE,IAAI,MAAM,CAAC,kBAAkB;YAAE,GAAG,CAAC,6BAA6B,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAE7F,qDAAqD;QACrD,IAAI,MAAM,CAAC,eAAe;YAAE,GAAG,CAAC,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC3F,IAAI,MAAM,CAAC,iBAAiB;YAAE,GAAG,CAAC,2BAA2B,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEjG,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gCAAgC;IAChC,UAAU,EAAE;QACV,0DAA0D;QAC1D,GAAG,EAAE;YACH,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;gBAChC,uEAAuE;gBACvE,2EAA2E;gBAE3E,iEAAiE;gBACjE,MAAM,eAAe,GAAG,GAAG,CAAC,mBAAmB;oBACxB,GAAG,CAAC,eAAe,KAAK,aAAa,CAAC;gBAE7D,IAAI,eAAe,EAAE,CAAC;oBACpB,+BAA+B;oBAC/B,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,mBAAmB,CAAC;oBAE1C,qEAAqE;oBACrE,4EAA4E;oBAC5E,OAAO,GAAG,CAAC,iBAAiB,CAAC;oBAC7B,OAAO,GAAG,CAAC,qBAAqB,CAAC;oBACjC,OAAO,GAAG,CAAC,iBAAiB,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,+CAA+C;oBAC/C,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,KAAK,aAAa,EAAE,CAAC;wBACjE,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,eAAe,CAAC;oBAC9C,CAAC;oBACD,IAAI,GAAG,CAAC,6BAA6B,EAAE,CAAC;wBACtC,GAAG,CAAC,qBAAqB,GAAG,GAAG,CAAC,6BAA6B,CAAC;oBAChE,CAAC;oBACD,mCAAmC;oBACnC,OAAO,GAAG,CAAC,WAAW,CAAC;gBACzB,CAAC;gBAED,mEAAmE;gBACnE,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;oBAC3B,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,kBAAkB,CAAC;oBACxC,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;gBAClD,CAAC;gBAED,OAAO,GAAG,CAAC;YACb,CAAC;SACF;QACD,wCAAwC;QACxC,iDAAiD;QACjD,QAAQ,EAAE;YACR,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;gBAChC,kFAAkF;gBAElF,gDAAgD;gBAChD,GAAG,CAAC,uBAAuB,GAAG,GAAG,CAAC;gBAElC,2DAA2D;gBAC3D,mEAAmE;gBACnE,wEAAwE;gBACxE,sCAAsC;gBACtC,OAAO,GAAG,CAAC,oBAAoB,CAAC;gBAEhC,8DAA8D;gBAC9D,OAAO,GAAG,CAAC,kBAAkB,CAAC;gBAE9B,8DAA8D;gBAC9D,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;oBACtB,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,aAAa,CAAC;gBAC1C,CAAC;gBAED,
|
|
1
|
+
{"version":3,"file":"bedrock.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/bedrock/bedrock.template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background Request Normalizer Plugin
|
|
3
|
+
* Priority: 14 (alongside the other request normalizers, before RequestSanitizer at 15)
|
|
4
|
+
*
|
|
5
|
+
* Claude Code makes its own background/utility API calls — auto-title generation is the
|
|
6
|
+
* first one we've caught (system prompt: "Generate a concise, sentence-case title...").
|
|
7
|
+
* These always request the same model alias as the surrounding conversation
|
|
8
|
+
* (`claude-sonnet-5-switchyard-claude-4-5-haiku-signal` — confirmed via a captured real
|
|
9
|
+
* request body, EPMCDME-14083), which only *signals* a haiku preference to the upstream
|
|
10
|
+
* Switchyard tier classifier rather than forcing it — the classifier still sometimes routes
|
|
11
|
+
* these tiny calls to the expensive `capable`/sonnet tier. Measured impact: one real session
|
|
12
|
+
* had a single title-gen call billed at $0.237 by LiteLLM, on par with that session's most
|
|
13
|
+
* expensive genuine turn.
|
|
14
|
+
*
|
|
15
|
+
* We can't fix Switchyard's classifier (external service, not in this repo). What we can do
|
|
16
|
+
* is stop deferring to it at all for requests we can positively identify as this kind of
|
|
17
|
+
* cheap background work: rewrite `model` to a concrete haiku deployment before the request
|
|
18
|
+
* ever reaches the classifier.
|
|
19
|
+
*
|
|
20
|
+
* BACKGROUND_REQUEST_RULES is deliberately a list, not a single check: title-gen is the only
|
|
21
|
+
* one caught so far, but Claude Code has other small fire-and-forget calls (branch-name
|
|
22
|
+
* generation shares the same underlying prompt in some CC versions, commit-message
|
|
23
|
+
* suggestions, etc.) that will very likely turn out to have the same misrouting problem.
|
|
24
|
+
* Adding a new one is just another entry — same `matches`/`resolveForcedModel` shape, no new
|
|
25
|
+
* plumbing.
|
|
26
|
+
*
|
|
27
|
+
* The forced model is deliberately NOT a hardcoded literal: `claude.plugin.ts`'s beforeRun
|
|
28
|
+
* hook already resolves each tier against the live CodeMie catalog for the active profile —
|
|
29
|
+
* the same resolution a `/model` switch relies on — and merges it into `process.env` via
|
|
30
|
+
* `Object.assign(process.env, env)` (BaseAgentAdapter.ts) before the `claude` child process
|
|
31
|
+
* (and therefore any request through this proxy) ever starts. Reading `CODEMIE_HAIKU_MODEL`
|
|
32
|
+
* lazily inside `onRequest`, rather than caching it at plugin construction, means it's always
|
|
33
|
+
* read after that merge has happened, whatever the relative startup ordering of the proxy vs.
|
|
34
|
+
* the beforeRun hook turns out to be.
|
|
35
|
+
*/
|
|
36
|
+
import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
|
|
37
|
+
export declare class BackgroundRequestNormalizerPlugin implements ProxyPlugin {
|
|
38
|
+
id: string;
|
|
39
|
+
name: string;
|
|
40
|
+
version: string;
|
|
41
|
+
priority: number;
|
|
42
|
+
createInterceptor(context: PluginContext): Promise<ProxyInterceptor>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=background-request-normalizer.plugin.d.ts.map
|
package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-request-normalizer.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkD1E,qBAAa,iCAAkC,YAAW,WAAW;IACnE,EAAE,SAAkD;IACpD,IAAI,SAAmC;IACvC,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAO3E"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background Request Normalizer Plugin
|
|
3
|
+
* Priority: 14 (alongside the other request normalizers, before RequestSanitizer at 15)
|
|
4
|
+
*
|
|
5
|
+
* Claude Code makes its own background/utility API calls — auto-title generation is the
|
|
6
|
+
* first one we've caught (system prompt: "Generate a concise, sentence-case title...").
|
|
7
|
+
* These always request the same model alias as the surrounding conversation
|
|
8
|
+
* (`claude-sonnet-5-switchyard-claude-4-5-haiku-signal` — confirmed via a captured real
|
|
9
|
+
* request body, EPMCDME-14083), which only *signals* a haiku preference to the upstream
|
|
10
|
+
* Switchyard tier classifier rather than forcing it — the classifier still sometimes routes
|
|
11
|
+
* these tiny calls to the expensive `capable`/sonnet tier. Measured impact: one real session
|
|
12
|
+
* had a single title-gen call billed at $0.237 by LiteLLM, on par with that session's most
|
|
13
|
+
* expensive genuine turn.
|
|
14
|
+
*
|
|
15
|
+
* We can't fix Switchyard's classifier (external service, not in this repo). What we can do
|
|
16
|
+
* is stop deferring to it at all for requests we can positively identify as this kind of
|
|
17
|
+
* cheap background work: rewrite `model` to a concrete haiku deployment before the request
|
|
18
|
+
* ever reaches the classifier.
|
|
19
|
+
*
|
|
20
|
+
* BACKGROUND_REQUEST_RULES is deliberately a list, not a single check: title-gen is the only
|
|
21
|
+
* one caught so far, but Claude Code has other small fire-and-forget calls (branch-name
|
|
22
|
+
* generation shares the same underlying prompt in some CC versions, commit-message
|
|
23
|
+
* suggestions, etc.) that will very likely turn out to have the same misrouting problem.
|
|
24
|
+
* Adding a new one is just another entry — same `matches`/`resolveForcedModel` shape, no new
|
|
25
|
+
* plumbing.
|
|
26
|
+
*
|
|
27
|
+
* The forced model is deliberately NOT a hardcoded literal: `claude.plugin.ts`'s beforeRun
|
|
28
|
+
* hook already resolves each tier against the live CodeMie catalog for the active profile —
|
|
29
|
+
* the same resolution a `/model` switch relies on — and merges it into `process.env` via
|
|
30
|
+
* `Object.assign(process.env, env)` (BaseAgentAdapter.ts) before the `claude` child process
|
|
31
|
+
* (and therefore any request through this proxy) ever starts. Reading `CODEMIE_HAIKU_MODEL`
|
|
32
|
+
* lazily inside `onRequest`, rather than caching it at plugin construction, means it's always
|
|
33
|
+
* read after that merge has happened, whatever the relative startup ordering of the proxy vs.
|
|
34
|
+
* the beforeRun hook turns out to be.
|
|
35
|
+
*/
|
|
36
|
+
import { logger } from '../../../../../utils/logger.js';
|
|
37
|
+
/** Same fallback order claude.plugin.ts itself populates: generic CodeMie var, then the native Anthropic one. */
|
|
38
|
+
function resolveHaikuModel() {
|
|
39
|
+
return process.env.CODEMIE_HAIKU_MODEL || process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL || undefined;
|
|
40
|
+
}
|
|
41
|
+
/** `body.system` is either a plain string or an array of `{type: 'text', text: string}` blocks. */
|
|
42
|
+
function systemPromptText(body) {
|
|
43
|
+
const system = body.system;
|
|
44
|
+
if (typeof system === 'string')
|
|
45
|
+
return system;
|
|
46
|
+
if (Array.isArray(system)) {
|
|
47
|
+
return system
|
|
48
|
+
.map((block) => (block && typeof block === 'object' && 'text' in block ? String(block.text) : ''))
|
|
49
|
+
.join('\n');
|
|
50
|
+
}
|
|
51
|
+
return '';
|
|
52
|
+
}
|
|
53
|
+
// Add new background-request rules here as they're identified — each is independent, so one
|
|
54
|
+
// rule matching never affects whether another does.
|
|
55
|
+
const BACKGROUND_REQUEST_RULES = [
|
|
56
|
+
{
|
|
57
|
+
name: 'claude-code-title-gen',
|
|
58
|
+
matches: (body) => systemPromptText(body).includes('sentence-case title'),
|
|
59
|
+
resolveForcedModel: resolveHaikuModel,
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
// Same agent scope as claude-request-normalizer.plugin.ts: this system-prompt-based detection
|
|
63
|
+
// only ever matches traffic from Claude Code itself.
|
|
64
|
+
const ALLOWED_AGENTS = ['codemie-claude', 'codemie-copilot', 'claude-desktop'];
|
|
65
|
+
export class BackgroundRequestNormalizerPlugin {
|
|
66
|
+
id = '@codemie/proxy-background-request-normalizer';
|
|
67
|
+
name = 'Background Request Normalizer';
|
|
68
|
+
version = '1.0.0';
|
|
69
|
+
priority = 14; // Alongside the other request normalizers, before RequestSanitizer (15)
|
|
70
|
+
async createInterceptor(context) {
|
|
71
|
+
const clientType = context.config.clientType;
|
|
72
|
+
if (!clientType || !ALLOWED_AGENTS.includes(clientType)) {
|
|
73
|
+
throw new Error(`Plugin disabled for agent: ${clientType}`);
|
|
74
|
+
}
|
|
75
|
+
return new BackgroundRequestNormalizerInterceptor();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
class BackgroundRequestNormalizerInterceptor {
|
|
79
|
+
name = 'background-request-normalizer';
|
|
80
|
+
async onRequest(context) {
|
|
81
|
+
if (!context.requestBody || !context.headers['content-type']?.includes('application/json')) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
let body;
|
|
85
|
+
try {
|
|
86
|
+
body = JSON.parse(context.requestBody.toString('utf-8'));
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return; // Not JSON, or a torn body — nothing this plugin can do.
|
|
90
|
+
}
|
|
91
|
+
const rule = BACKGROUND_REQUEST_RULES.find((r) => r.matches(body));
|
|
92
|
+
if (!rule)
|
|
93
|
+
return;
|
|
94
|
+
const forcedModel = rule.resolveForcedModel();
|
|
95
|
+
if (!forcedModel) {
|
|
96
|
+
logger.debug(`[${this.name}] Matched rule "${rule.name}" but no target model is provisioned — leaving request untouched`);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const originalModel = body.model;
|
|
100
|
+
body.model = forcedModel;
|
|
101
|
+
context.requestBody = Buffer.from(JSON.stringify(body), 'utf-8');
|
|
102
|
+
context.headers['content-length'] = String(context.requestBody.length);
|
|
103
|
+
logger.debug(`[${this.name}] Forced model for background request: ${rule.name} (${String(originalModel)} -> ${forcedModel})`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=background-request-normalizer.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-request-normalizer.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deployment-name resolution for Claude clients (Claude Desktop app, VS Code
|
|
3
|
+
* Claude Code extension).
|
|
4
|
+
*
|
|
5
|
+
* Both clients pick a model from their own bundled catalog and send its
|
|
6
|
+
* canonical, family-first name (`claude-opus-5`, `claude-sonnet-4-5`) with
|
|
7
|
+
* every request. A tenant whose CodeMie deployments use a different token
|
|
8
|
+
* order (e.g. version-first: `claude-5-opus`) rejects that name outright —
|
|
9
|
+
* the gateway has no entry called `claude-opus-5`. This module maps the
|
|
10
|
+
* requested name onto a deployment the gateway actually has, the same way
|
|
11
|
+
* `codex-model-resolver.ts` does for Codex's undated/dated mismatch.
|
|
12
|
+
*
|
|
13
|
+
* Self-contained on purpose: the proxy must not depend on the CLI's
|
|
14
|
+
* connector-side resolver (`src/cli/commands/proxy/connectors/model-name-
|
|
15
|
+
* resolver.ts`), which is a config-write-time concern in a different layer
|
|
16
|
+
* (`CLI → Registry → Plugin`, never reversed). The identity-parsing and
|
|
17
|
+
* recency-ranking shape below is intentionally identical to that module's
|
|
18
|
+
* Claude branch — proven logic, just re-homed for the request-time path.
|
|
19
|
+
*/
|
|
20
|
+
export type ClaudeResolutionKind = 'exact' | 'resolved' | 'unresolved';
|
|
21
|
+
export interface ClaudeModelResolution {
|
|
22
|
+
model: string;
|
|
23
|
+
kind: ClaudeResolutionKind;
|
|
24
|
+
}
|
|
25
|
+
/** True when a deployment name can serve a Claude Messages API request. */
|
|
26
|
+
export declare function isClaudeServableDeployment(name: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Rank same-identity candidates: canonical (non-vertex) ids before `-vertex`
|
|
29
|
+
* ones, then the parsed release date (newest first, undated sorts last),
|
|
30
|
+
* then id text as a final deterministic tiebreak.
|
|
31
|
+
*/
|
|
32
|
+
export declare function rankDeploymentsByRecency(ids: string[]): string[];
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the Claude model a client asked for to a deployment the gateway
|
|
35
|
+
* has. Never substitutes a different capability tier (Opus for Sonnet, etc.)
|
|
36
|
+
* — an unresolved request passes through unchanged so the gateway's own
|
|
37
|
+
* error reaches the client, the same contract `resolveTenantModelId` uses
|
|
38
|
+
* client-side.
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveClaudeDeployment(requested: string, available: string[]): ClaudeModelResolution;
|
|
41
|
+
//# sourceMappingURL=claude-model-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-model-resolver.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAsBH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvE,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAsCD,2EAA2E;AAC3E,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAkBD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAWhE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,qBAAqB,CAcrG"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deployment-name resolution for Claude clients (Claude Desktop app, VS Code
|
|
3
|
+
* Claude Code extension).
|
|
4
|
+
*
|
|
5
|
+
* Both clients pick a model from their own bundled catalog and send its
|
|
6
|
+
* canonical, family-first name (`claude-opus-5`, `claude-sonnet-4-5`) with
|
|
7
|
+
* every request. A tenant whose CodeMie deployments use a different token
|
|
8
|
+
* order (e.g. version-first: `claude-5-opus`) rejects that name outright —
|
|
9
|
+
* the gateway has no entry called `claude-opus-5`. This module maps the
|
|
10
|
+
* requested name onto a deployment the gateway actually has, the same way
|
|
11
|
+
* `codex-model-resolver.ts` does for Codex's undated/dated mismatch.
|
|
12
|
+
*
|
|
13
|
+
* Self-contained on purpose: the proxy must not depend on the CLI's
|
|
14
|
+
* connector-side resolver (`src/cli/commands/proxy/connectors/model-name-
|
|
15
|
+
* resolver.ts`), which is a config-write-time concern in a different layer
|
|
16
|
+
* (`CLI → Registry → Plugin`, never reversed). The identity-parsing and
|
|
17
|
+
* recency-ranking shape below is intentionally identical to that module's
|
|
18
|
+
* Claude branch — proven logic, just re-homed for the request-time path.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Release date embedded in a deployment id, matched in either of the two
|
|
22
|
+
* shapes real CodeMie deployments use: separator-delimited (`-2026-07-09`) or
|
|
23
|
+
* concatenated (`-20260709`, e.g. `claude-opus-4-5-20251101`). Not anchored to
|
|
24
|
+
* end-of-string: a deployment may carry a suffix after the date. The
|
|
25
|
+
* `(?!\d)` guard stops the concatenated alternative from matching only part
|
|
26
|
+
* of a longer digit run.
|
|
27
|
+
*/
|
|
28
|
+
const RELEASE_DATE_PATTERN = /[-._](?:(?:20\d{2})[-._](?:\d{2})[-._](?:\d{2})|(?:20\d{2})(?:\d{2})(?:\d{2}))(?!\d)/;
|
|
29
|
+
const CLAUDE_SEGMENT_PATTERN = /opus|sonnet|haiku/i;
|
|
30
|
+
const VERTEX_SUFFIX_PATTERN = /-vertex$/i;
|
|
31
|
+
function stripReleaseDate(name) {
|
|
32
|
+
const match = name.match(RELEASE_DATE_PATTERN);
|
|
33
|
+
return match ? name.slice(0, match.index) : name;
|
|
34
|
+
}
|
|
35
|
+
/** Numeric [year, month, day] embedded in `id`, or `null` when it carries no release date. */
|
|
36
|
+
function extractReleaseDate(id) {
|
|
37
|
+
const match = id.match(RELEASE_DATE_PATTERN);
|
|
38
|
+
if (!match)
|
|
39
|
+
return null;
|
|
40
|
+
const digits = match[0].match(/\d+/g) ?? [];
|
|
41
|
+
const joined = digits.join('');
|
|
42
|
+
if (joined.length < 8)
|
|
43
|
+
return null;
|
|
44
|
+
return [Number(joined.slice(0, 4)), Number(joined.slice(4, 6)), Number(joined.slice(6, 8))];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Parse a Claude model name into its identity, regardless of whether the
|
|
48
|
+
* family or the version token comes first (`claude-opus-5` vs. `claude-5-
|
|
49
|
+
* opus`) and regardless of a trailing `-vertex` or release date.
|
|
50
|
+
*/
|
|
51
|
+
function parseIdentity(rawName) {
|
|
52
|
+
const name = stripReleaseDate(rawName.toLowerCase()).replace(VERTEX_SUFFIX_PATTERN, '');
|
|
53
|
+
if (!name.startsWith('claude-'))
|
|
54
|
+
return null;
|
|
55
|
+
const tokens = name.slice('claude-'.length).split('-').filter(Boolean);
|
|
56
|
+
const segmentToken = tokens.find((token) => CLAUDE_SEGMENT_PATTERN.test(token));
|
|
57
|
+
if (!segmentToken)
|
|
58
|
+
return null;
|
|
59
|
+
const numbers = tokens.filter((token) => /^\d+$/.test(token)).map(Number);
|
|
60
|
+
return { segment: segmentToken, major: numbers[0] ?? 0, minor: numbers[1] ?? 0 };
|
|
61
|
+
}
|
|
62
|
+
function sameIdentity(a, b) {
|
|
63
|
+
return a !== null && a.segment === b.segment && a.major === b.major && a.minor === b.minor;
|
|
64
|
+
}
|
|
65
|
+
/** True when a deployment name can serve a Claude Messages API request. */
|
|
66
|
+
export function isClaudeServableDeployment(name) {
|
|
67
|
+
return /^claude-/i.test(name);
|
|
68
|
+
}
|
|
69
|
+
function scoreForRecency(id) {
|
|
70
|
+
return {
|
|
71
|
+
id,
|
|
72
|
+
nonVertexRank: VERTEX_SUFFIX_PATTERN.test(id) ? 0 : 1,
|
|
73
|
+
date: extractReleaseDate(id) ?? [0, 0, 0],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Rank same-identity candidates: canonical (non-vertex) ids before `-vertex`
|
|
78
|
+
* ones, then the parsed release date (newest first, undated sorts last),
|
|
79
|
+
* then id text as a final deterministic tiebreak.
|
|
80
|
+
*/
|
|
81
|
+
export function rankDeploymentsByRecency(ids) {
|
|
82
|
+
return ids
|
|
83
|
+
.map(scoreForRecency)
|
|
84
|
+
.sort((a, b) => {
|
|
85
|
+
if (a.nonVertexRank !== b.nonVertexRank)
|
|
86
|
+
return b.nonVertexRank - a.nonVertexRank;
|
|
87
|
+
for (let i = 0; i < a.date.length; i++) {
|
|
88
|
+
if (a.date[i] !== b.date[i])
|
|
89
|
+
return b.date[i] - a.date[i];
|
|
90
|
+
}
|
|
91
|
+
return b.id.localeCompare(a.id);
|
|
92
|
+
})
|
|
93
|
+
.map((entry) => entry.id);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Resolve the Claude model a client asked for to a deployment the gateway
|
|
97
|
+
* has. Never substitutes a different capability tier (Opus for Sonnet, etc.)
|
|
98
|
+
* — an unresolved request passes through unchanged so the gateway's own
|
|
99
|
+
* error reaches the client, the same contract `resolveTenantModelId` uses
|
|
100
|
+
* client-side.
|
|
101
|
+
*/
|
|
102
|
+
export function resolveClaudeDeployment(requested, available) {
|
|
103
|
+
if (available.includes(requested)) {
|
|
104
|
+
return { model: requested, kind: 'exact' };
|
|
105
|
+
}
|
|
106
|
+
const wanted = parseIdentity(requested);
|
|
107
|
+
if (wanted) {
|
|
108
|
+
const matches = available.filter((candidate) => sameIdentity(parseIdentity(candidate), wanted));
|
|
109
|
+
if (matches.length > 0) {
|
|
110
|
+
return { model: rankDeploymentsByRecency(matches)[0], kind: 'resolved' };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return { model: requested, kind: 'unresolved' };
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=claude-model-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-model-resolver.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-model-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
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;AAgK1E,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;CAO3E"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* (before RequestSanitizer at 15). See EPMCDME-14035.
|
|
5
5
|
*/
|
|
6
6
|
import { logger } from '../../../../../utils/logger.js';
|
|
7
|
+
import { fetchCodeMieLlmModels } from '../../sso.http-client.js';
|
|
8
|
+
import { isClaudeServableDeployment, resolveClaudeDeployment } from './claude-model-resolver.js';
|
|
7
9
|
// Applied when no MODEL_CAPABILITY_TABLE row matches.
|
|
8
10
|
const DEFAULT_CAPABILITIES = {
|
|
9
11
|
thinking: 'standard',
|
|
@@ -133,15 +135,27 @@ export class ClaudeRequestNormalizerPlugin {
|
|
|
133
135
|
if (!clientType || !ALLOWED_AGENTS.includes(clientType)) {
|
|
134
136
|
throw new Error(`Plugin disabled for agent: ${clientType}`);
|
|
135
137
|
}
|
|
136
|
-
|
|
137
|
-
return new ClaudeRequestNormalizerInterceptor(configModel);
|
|
138
|
+
return new ClaudeRequestNormalizerInterceptor(context);
|
|
138
139
|
}
|
|
139
140
|
}
|
|
141
|
+
/** Re-list deployments occasionally so a long-lived daemon picks up new models. */
|
|
142
|
+
const MODEL_CACHE_TTL_MS = 10 * 60 * 1000;
|
|
143
|
+
/** How long to wait before retrying after a failed or empty listing. */
|
|
144
|
+
const MODEL_RETRY_BACKOFF_MS = 60 * 1000;
|
|
140
145
|
class ClaudeRequestNormalizerInterceptor {
|
|
141
|
-
|
|
146
|
+
context;
|
|
142
147
|
name = 'claude-request-normalizer';
|
|
143
|
-
|
|
144
|
-
|
|
148
|
+
availableModels = [];
|
|
149
|
+
loadedAt = 0;
|
|
150
|
+
lastAttemptAt = 0;
|
|
151
|
+
inFlight = null;
|
|
152
|
+
constructor(context) {
|
|
153
|
+
this.context = context;
|
|
154
|
+
}
|
|
155
|
+
/** Test seam — lets the suite supply a deployment list without a network call. */
|
|
156
|
+
setAvailableModelsForTest(models) {
|
|
157
|
+
this.availableModels = models;
|
|
158
|
+
this.loadedAt = Date.now();
|
|
145
159
|
}
|
|
146
160
|
async onRequest(context) {
|
|
147
161
|
if (!context.requestBody || !context.headers['content-type']?.includes('application/json')) {
|
|
@@ -150,7 +164,8 @@ class ClaudeRequestNormalizerInterceptor {
|
|
|
150
164
|
try {
|
|
151
165
|
const bodyStr = context.requestBody.toString('utf-8');
|
|
152
166
|
const body = JSON.parse(bodyStr);
|
|
153
|
-
const
|
|
167
|
+
const requestedModel = typeof body.model === 'string' ? body.model : '';
|
|
168
|
+
const model = requestedModel || this.context.config.model || '';
|
|
154
169
|
if (!model) {
|
|
155
170
|
return;
|
|
156
171
|
}
|
|
@@ -162,7 +177,18 @@ class ClaudeRequestNormalizerInterceptor {
|
|
|
162
177
|
if (body.thinking) {
|
|
163
178
|
modifiedByThinking = handleThinkingField(body, caps, model);
|
|
164
179
|
}
|
|
165
|
-
|
|
180
|
+
// Capabilities above are read from the client's requested (canonical) name
|
|
181
|
+
// on purpose — MODEL_CAPABILITY_TABLE's patterns assume family-first order,
|
|
182
|
+
// so this must run before any tenant-id rewrite below.
|
|
183
|
+
let modifiedByModel = false;
|
|
184
|
+
if (requestedModel) {
|
|
185
|
+
const resolved = await this.resolveModel(requestedModel);
|
|
186
|
+
if (resolved && resolved !== requestedModel) {
|
|
187
|
+
body.model = resolved;
|
|
188
|
+
modifiedByModel = true;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (modifiedBySampling || modifiedByEffort || modifiedByThinking || modifiedByModel) {
|
|
166
192
|
const newBodyStr = JSON.stringify(body);
|
|
167
193
|
context.requestBody = Buffer.from(newBodyStr, 'utf-8');
|
|
168
194
|
context.headers['content-length'] = String(context.requestBody.length);
|
|
@@ -172,5 +198,73 @@ class ClaudeRequestNormalizerInterceptor {
|
|
|
172
198
|
// Not valid JSON or unexpected structure — pass through unchanged
|
|
173
199
|
}
|
|
174
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Resolve the client's requested model name to a deployment the tenant's
|
|
203
|
+
* gateway actually has. Returns `undefined` (pass through unchanged) when
|
|
204
|
+
* the catalog is unavailable or nothing matches — never substitutes a
|
|
205
|
+
* different capability tier.
|
|
206
|
+
*/
|
|
207
|
+
async resolveModel(requestedModel) {
|
|
208
|
+
await this.ensureModelsLoaded();
|
|
209
|
+
if (this.availableModels.length === 0) {
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
const resolution = resolveClaudeDeployment(requestedModel, this.availableModels);
|
|
213
|
+
if (resolution.kind === 'unresolved') {
|
|
214
|
+
return undefined;
|
|
215
|
+
}
|
|
216
|
+
if (resolution.kind === 'resolved') {
|
|
217
|
+
logger.debug(`[${this.name}] Resolved "${requestedModel}" to deployment "${resolution.model}"`);
|
|
218
|
+
}
|
|
219
|
+
return resolution.model;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Load the deployment list once, then refresh it on a TTL. Concurrent requests
|
|
223
|
+
* share a single in-flight fetch so a burst of turns does not fan out into a
|
|
224
|
+
* burst of list calls.
|
|
225
|
+
*/
|
|
226
|
+
async ensureModelsLoaded() {
|
|
227
|
+
const now = Date.now();
|
|
228
|
+
const fresh = this.availableModels.length > 0 && now - this.loadedAt < MODEL_CACHE_TTL_MS;
|
|
229
|
+
if (fresh)
|
|
230
|
+
return;
|
|
231
|
+
// Negative cache: without this, expired credentials or a 5xx gateway turn
|
|
232
|
+
// every single request into a fresh listing call, because a failed load
|
|
233
|
+
// leaves availableModels empty and so never looks "fresh".
|
|
234
|
+
const backingOff = this.lastAttemptAt !== 0
|
|
235
|
+
&& now - this.lastAttemptAt < MODEL_RETRY_BACKOFF_MS;
|
|
236
|
+
if (backingOff)
|
|
237
|
+
return;
|
|
238
|
+
if (this.inFlight)
|
|
239
|
+
return this.inFlight;
|
|
240
|
+
this.inFlight = this.loadModels().finally(() => { this.inFlight = null; });
|
|
241
|
+
return this.inFlight;
|
|
242
|
+
}
|
|
243
|
+
async loadModels() {
|
|
244
|
+
this.lastAttemptAt = Date.now();
|
|
245
|
+
const credentials = this.context.credentials;
|
|
246
|
+
if (!credentials) {
|
|
247
|
+
logger.debug(`[${this.name}] No credentials available; model names pass through unchanged`);
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const apiUrl = credentials.apiUrl || this.context.config.targetApiUrl;
|
|
252
|
+
const models = 'cookies' in credentials
|
|
253
|
+
? await fetchCodeMieLlmModels(apiUrl, credentials.cookies)
|
|
254
|
+
: await fetchCodeMieLlmModels(apiUrl, credentials.token);
|
|
255
|
+
this.availableModels = models
|
|
256
|
+
.filter((model) => model.enabled !== false)
|
|
257
|
+
.map((model) => model.deployment_name || model.base_name)
|
|
258
|
+
.filter((name) => Boolean(name))
|
|
259
|
+
.filter(isClaudeServableDeployment);
|
|
260
|
+
this.loadedAt = Date.now();
|
|
261
|
+
logger.debug(`[${this.name}] Loaded ${this.availableModels.length} Claude deployments for model resolution`);
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
// A failed list must not fail the request.
|
|
265
|
+
logger.debug(`[${this.name}] Could not list deployments; passing model names through: ` +
|
|
266
|
+
`${error instanceof Error ? error.message : String(error)}`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
175
269
|
}
|
|
176
270
|
//# sourceMappingURL=claude-request-normalizer.plugin.js.map
|
|
@@ -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;;;;GAIG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;
|
|
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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"}
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
*
|
|
5
5
|
* SOLID: Single responsibility = inject CodeMie headers
|
|
6
6
|
* KISS: Straightforward header injection
|
|
7
|
+
*
|
|
8
|
+
* Repository and branch attribution for Claude Desktop is derived by
|
|
9
|
+
* DesktopRepositoryResolver in the telemetry layer. This interceptor only writes the
|
|
10
|
+
* resolved values into headers — it performs no discovery of its own.
|
|
7
11
|
*/
|
|
8
12
|
import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
|
|
9
13
|
export declare class HeaderInjectionPlugin implements ProxyPlugin {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-injection.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/header-injection.plugin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"header-injection.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/header-injection.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK1E,qBAAa,qBAAsB,YAAW,WAAW;IACvD,EAAE,SAA4B;IAC9B,IAAI,SAAsB;IAC1B,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG3E"}
|