@codemieai/code 0.0.54 → 0.0.56

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.
Files changed (149) hide show
  1. package/README.md +34 -0
  2. package/bin/codemie-mcp-proxy.js +91 -0
  3. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  4. package/dist/agents/core/AgentCLI.js +10 -2
  5. package/dist/agents/core/AgentCLI.js.map +1 -1
  6. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  7. package/dist/agents/core/BaseAgentAdapter.js +23 -6
  8. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  9. package/dist/agents/core/session/ensure-session.d.ts.map +1 -1
  10. package/dist/agents/core/session/ensure-session.js +7 -2
  11. package/dist/agents/core/session/ensure-session.js.map +1 -1
  12. package/dist/agents/core/session/types.d.ts +1 -0
  13. package/dist/agents/core/session/types.d.ts.map +1 -1
  14. package/dist/agents/plugins/claude/claude.plugin.js +4 -4
  15. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  16. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  17. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/SKILL.md +273 -0
  18. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/style-guide/css/base.css +166 -0
  19. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/style-guide/css/buttons.css +253 -0
  20. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/style-guide/css/components.css +605 -0
  21. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/style-guide/css/forms.css +550 -0
  22. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/style-guide/css/layout.css +410 -0
  23. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/style-guide/css/tokens.css +323 -0
  24. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/style-guide/css/typography.css +155 -0
  25. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/style-guide/css/utilities.css +238 -0
  26. package/dist/agents/plugins/claude/plugin/skills/msgraph/scripts/msgraph.js +1 -0
  27. package/dist/cli/commands/hook.d.ts +2 -0
  28. package/dist/cli/commands/hook.d.ts.map +1 -1
  29. package/dist/cli/commands/hook.js +36 -31
  30. package/dist/cli/commands/hook.js.map +1 -1
  31. package/dist/cli/commands/mcp/index.d.ts +3 -0
  32. package/dist/cli/commands/mcp/index.d.ts.map +1 -0
  33. package/dist/cli/commands/mcp/index.js +103 -0
  34. package/dist/cli/commands/mcp/index.js.map +1 -0
  35. package/dist/cli/commands/mcp-proxy.d.ts +13 -0
  36. package/dist/cli/commands/mcp-proxy.d.ts.map +1 -0
  37. package/dist/cli/commands/mcp-proxy.js +53 -0
  38. package/dist/cli/commands/mcp-proxy.js.map +1 -0
  39. package/dist/cli/commands/setup.js +11 -1
  40. package/dist/cli/commands/setup.js.map +1 -1
  41. package/dist/cli/index.js +4 -0
  42. package/dist/cli/index.js.map +1 -1
  43. package/dist/mcp/auth/callback-server.d.ts +22 -0
  44. package/dist/mcp/auth/callback-server.d.ts.map +1 -0
  45. package/dist/mcp/auth/callback-server.js +87 -0
  46. package/dist/mcp/auth/callback-server.js.map +1 -0
  47. package/dist/mcp/auth/mcp-oauth-provider.d.ts +49 -0
  48. package/dist/mcp/auth/mcp-oauth-provider.d.ts.map +1 -0
  49. package/dist/mcp/auth/mcp-oauth-provider.js +156 -0
  50. package/dist/mcp/auth/mcp-oauth-provider.js.map +1 -0
  51. package/dist/mcp/constants.d.ts +5 -0
  52. package/dist/mcp/constants.d.ts.map +1 -0
  53. package/dist/mcp/constants.js +7 -0
  54. package/dist/mcp/constants.js.map +1 -0
  55. package/dist/mcp/proxy-logger.d.ts +7 -0
  56. package/dist/mcp/proxy-logger.d.ts.map +1 -0
  57. package/dist/mcp/proxy-logger.js +32 -0
  58. package/dist/mcp/proxy-logger.js.map +1 -0
  59. package/dist/mcp/stdio-http-bridge.d.ts +63 -0
  60. package/dist/mcp/stdio-http-bridge.d.ts.map +1 -0
  61. package/dist/mcp/stdio-http-bridge.js +307 -0
  62. package/dist/mcp/stdio-http-bridge.js.map +1 -0
  63. package/dist/providers/core/codemie-auth-helpers.d.ts +22 -0
  64. package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -0
  65. package/dist/providers/core/codemie-auth-helpers.js +118 -0
  66. package/dist/providers/core/codemie-auth-helpers.js.map +1 -0
  67. package/dist/providers/core/index.d.ts +1 -0
  68. package/dist/providers/core/index.d.ts.map +1 -1
  69. package/dist/providers/core/index.js +1 -0
  70. package/dist/providers/core/index.js.map +1 -1
  71. package/dist/providers/core/types.d.ts +4 -0
  72. package/dist/providers/core/types.d.ts.map +1 -1
  73. package/dist/providers/core/types.js.map +1 -1
  74. package/dist/providers/index.d.ts +2 -0
  75. package/dist/providers/index.d.ts.map +1 -1
  76. package/dist/providers/index.js +2 -0
  77. package/dist/providers/index.js.map +1 -1
  78. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.auth.d.ts +11 -0
  79. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.auth.d.ts.map +1 -0
  80. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.auth.js +30 -0
  81. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.auth.js.map +1 -0
  82. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.setup-steps.d.ts +8 -0
  83. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.setup-steps.d.ts.map +1 -0
  84. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.setup-steps.js +88 -0
  85. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.setup-steps.js.map +1 -0
  86. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.d.ts +11 -0
  87. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.d.ts.map +1 -0
  88. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.js +119 -0
  89. package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.js.map +1 -0
  90. package/dist/providers/plugins/anthropic-subscription/index.d.ts +9 -0
  91. package/dist/providers/plugins/anthropic-subscription/index.d.ts.map +1 -0
  92. package/dist/providers/plugins/anthropic-subscription/index.js +9 -0
  93. package/dist/providers/plugins/anthropic-subscription/index.js.map +1 -0
  94. package/dist/providers/plugins/jwt/jwt.setup-steps.js +1 -1
  95. package/dist/providers/plugins/jwt/jwt.setup-steps.js.map +1 -1
  96. package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.d.ts +30 -0
  97. package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.d.ts.map +1 -0
  98. package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.js +111 -0
  99. package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.js.map +1 -0
  100. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
  101. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  102. package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
  103. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  104. package/dist/providers/plugins/sso/proxy/plugins/mcp-auth.plugin.d.ts +34 -0
  105. package/dist/providers/plugins/sso/proxy/plugins/mcp-auth.plugin.d.ts.map +1 -0
  106. package/dist/providers/plugins/sso/proxy/plugins/mcp-auth.plugin.js +1200 -0
  107. package/dist/providers/plugins/sso/proxy/plugins/mcp-auth.plugin.js.map +1 -0
  108. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.d.ts.map +1 -1
  109. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js +9 -7
  110. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js.map +1 -1
  111. package/dist/providers/plugins/sso/proxy/plugins/types.d.ts +19 -1
  112. package/dist/providers/plugins/sso/proxy/plugins/types.d.ts.map +1 -1
  113. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +2 -0
  114. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
  115. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
  116. package/dist/providers/plugins/sso/proxy/sso.proxy.js +42 -2
  117. package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
  118. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js +1 -1
  119. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -1
  120. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts +2 -2
  121. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts.map +1 -1
  122. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js +4 -4
  123. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js.map +1 -1
  124. package/dist/providers/plugins/sso/sso.auth.d.ts +0 -4
  125. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
  126. package/dist/providers/plugins/sso/sso.auth.js +3 -13
  127. package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
  128. package/dist/providers/plugins/sso/sso.http-client.d.ts +3 -42
  129. package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
  130. package/dist/providers/plugins/sso/sso.http-client.js +4 -75
  131. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  132. package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
  133. package/dist/providers/plugins/sso/sso.setup-steps.js +15 -66
  134. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
  135. package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -1
  136. package/dist/providers/plugins/sso/sso.template.js +2 -1
  137. package/dist/providers/plugins/sso/sso.template.js.map +1 -1
  138. package/dist/utils/config.d.ts.map +1 -1
  139. package/dist/utils/config.js +17 -0
  140. package/dist/utils/config.js.map +1 -1
  141. package/dist/utils/exec.d.ts +1 -0
  142. package/dist/utils/exec.d.ts.map +1 -1
  143. package/dist/utils/exec.js +13 -5
  144. package/dist/utils/exec.js.map +1 -1
  145. package/dist/utils/processes.d.ts +9 -0
  146. package/dist/utils/processes.d.ts.map +1 -1
  147. package/dist/utils/processes.js +21 -0
  148. package/dist/utils/processes.js.map +1 -1
  149. package/package.json +7 -4
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Claude Thinking Transformer Plugin
3
+ * Priority: 16 (runs after Request Sanitizer at 15, before header injection at 20)
4
+ *
5
+ * Transforms thinking parameters for Claude models that require the new adaptive
6
+ * thinking API (e.g. claude-opus-4-7).
7
+ *
8
+ * Problem: Claude Code sends `thinking: { type: "enabled", budget_tokens: N }`
9
+ * for Opus models. claude-opus-4-7 rejects this with HTTP 400:
10
+ * "thinking.type.enabled" is not supported for this model. Use
11
+ * "thinking.type.adaptive" and "output_config.effort" instead.
12
+ *
13
+ * Fix: When the request model matches a Claude 4.7+ pattern:
14
+ * - "enabled" → thinking: { type: "adaptive" } + output_config.effort (derived
15
+ * from budget_tokens; only written if not already present)
16
+ * - "disabled" → delete the thinking field entirely (model does not accept this value)
17
+ *
18
+ * Scope: Only enabled for codemie-claude agent (Claude Code via SSO proxy).
19
+ *
20
+ * To add support for a new model: append a pattern to ADAPTIVE_THINKING_MODEL_PATTERNS.
21
+ */
22
+ import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
23
+ export declare class ClaudeThinkingTransformerPlugin implements ProxyPlugin {
24
+ id: string;
25
+ name: string;
26
+ version: string;
27
+ priority: number;
28
+ createInterceptor(context: PluginContext): Promise<ProxyInterceptor>;
29
+ }
30
+ //# sourceMappingURL=claude-thinking-transformer.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-thinking-transformer.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAiC1E,qBAAa,+BAAgC,YAAW,WAAW;IACjE,EAAE,SAAgD;IAClD,IAAI,SAAiC;IACrC,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAS3E"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Claude Thinking Transformer Plugin
3
+ * Priority: 16 (runs after Request Sanitizer at 15, before header injection at 20)
4
+ *
5
+ * Transforms thinking parameters for Claude models that require the new adaptive
6
+ * thinking API (e.g. claude-opus-4-7).
7
+ *
8
+ * Problem: Claude Code sends `thinking: { type: "enabled", budget_tokens: N }`
9
+ * for Opus models. claude-opus-4-7 rejects this with HTTP 400:
10
+ * "thinking.type.enabled" is not supported for this model. Use
11
+ * "thinking.type.adaptive" and "output_config.effort" instead.
12
+ *
13
+ * Fix: When the request model matches a Claude 4.7+ pattern:
14
+ * - "enabled" → thinking: { type: "adaptive" } + output_config.effort (derived
15
+ * from budget_tokens; only written if not already present)
16
+ * - "disabled" → delete the thinking field entirely (model does not accept this value)
17
+ *
18
+ * Scope: Only enabled for codemie-claude agent (Claude Code via SSO proxy).
19
+ *
20
+ * To add support for a new model: append a pattern to ADAPTIVE_THINKING_MODEL_PATTERNS.
21
+ */
22
+ import { logger } from '../../../../../utils/logger.js';
23
+ /**
24
+ * Model name patterns that require the adaptive thinking API.
25
+ * Matches claude-opus-4-7, claude-opus-4-7-20250514, and future date-tagged variants.
26
+ * Extend this list as Anthropic migrates additional models — see EPMCDME-11821.
27
+ */
28
+ const ADAPTIVE_THINKING_MODEL_PATTERNS = [
29
+ /claude-opus-4-[7-9](?:[^0-9]|$)/i, // claude-opus-4-7/8/9 and date-tagged variants (e.g. claude-opus-4-7-20250514); excludes claude-opus-4-70+
30
+ ];
31
+ function modelRequiresAdaptiveThinking(modelName) {
32
+ return ADAPTIVE_THINKING_MODEL_PATTERNS.some(p => p.test(modelName));
33
+ }
34
+ /**
35
+ * Map legacy budget_tokens to the closest output_config.effort level.
36
+ *
37
+ * budget_tokens was the maximum token budget for thinking in the old API.
38
+ * effort is a coarser control in the new API: low / medium / high.
39
+ */
40
+ function budgetTokensToEffort(budgetTokens) {
41
+ const tokens = typeof budgetTokens === 'number' ? budgetTokens : 0;
42
+ if (tokens <= 2048)
43
+ return 'low';
44
+ if (tokens <= 8192)
45
+ return 'medium';
46
+ return 'high';
47
+ }
48
+ /** Agent that sends Claude API requests through the codemie proxy */
49
+ const ALLOWED_AGENT = 'codemie-claude';
50
+ export class ClaudeThinkingTransformerPlugin {
51
+ id = '@codemie/proxy-claude-thinking-transformer';
52
+ name = 'Claude Thinking Transformer';
53
+ version = '1.0.0';
54
+ priority = 16; // After RequestSanitizer (15), before HeaderInjection (20)
55
+ async createInterceptor(context) {
56
+ const clientType = context.config.clientType;
57
+ if (!clientType || clientType !== ALLOWED_AGENT) {
58
+ throw new Error(`Plugin disabled for agent: ${clientType}`);
59
+ }
60
+ // Pass the configured model as a fallback for requests that omit body.model
61
+ const configModel = context.config.model;
62
+ return new ClaudeThinkingTransformerInterceptor(configModel);
63
+ }
64
+ }
65
+ class ClaudeThinkingTransformerInterceptor {
66
+ configModel;
67
+ name = 'claude-thinking-transformer';
68
+ constructor(configModel) {
69
+ this.configModel = configModel;
70
+ }
71
+ async onRequest(context) {
72
+ if (!context.requestBody || !context.headers['content-type']?.includes('application/json')) {
73
+ return;
74
+ }
75
+ try {
76
+ const bodyStr = context.requestBody.toString('utf-8');
77
+ const body = JSON.parse(bodyStr);
78
+ const thinkingType = body.thinking?.type;
79
+ if (thinkingType !== 'enabled' && thinkingType !== 'disabled') {
80
+ return;
81
+ }
82
+ // Resolve model: prefer request body, fall back to proxy config
83
+ const model = (typeof body.model === 'string' && body.model) || this.configModel || '';
84
+ if (!model || !modelRequiresAdaptiveThinking(model)) {
85
+ return;
86
+ }
87
+ if (thinkingType === 'enabled') {
88
+ const effort = budgetTokensToEffort(body.thinking.budget_tokens);
89
+ // Replace old thinking object with new adaptive format
90
+ body.thinking = { type: 'adaptive' };
91
+ // Set output_config.effort only if the caller hasn't already specified it
92
+ if (!body.output_config?.effort) {
93
+ body.output_config = { ...(body.output_config ?? {}), effort };
94
+ }
95
+ logger.debug(`[${this.name}] Transformed thinking: "enabled" → "adaptive", effort="${effort}" for model: ${model}`);
96
+ }
97
+ else {
98
+ // thinking.type === 'disabled': model does not accept this value — remove the field
99
+ delete body.thinking;
100
+ logger.debug(`[${this.name}] Removed unsupported thinking.type="disabled" for model: ${model}`);
101
+ }
102
+ const newBodyStr = JSON.stringify(body);
103
+ context.requestBody = Buffer.from(newBodyStr, 'utf-8');
104
+ context.headers['content-length'] = String(context.requestBody.length);
105
+ }
106
+ catch {
107
+ // Not valid JSON or unexpected structure — pass through unchanged
108
+ }
109
+ }
110
+ }
111
+ //# sourceMappingURL=claude-thinking-transformer.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-thinking-transformer.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.ts"],"names":[],"mappings":"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"}
@@ -4,18 +4,20 @@
4
4
  * KISS: Single file to register all core plugins
5
5
  * Extensibility: Easy to add new plugins
6
6
  */
7
+ import { MCPAuthPlugin } from './mcp-auth.plugin.js';
7
8
  import { EndpointBlockerPlugin } from './endpoint-blocker.plugin.js';
8
9
  import { SSOAuthPlugin } from './sso-auth.plugin.js';
9
10
  import { JWTAuthPlugin } from './jwt-auth.plugin.js';
10
11
  import { HeaderInjectionPlugin } from './header-injection.plugin.js';
11
12
  import { RequestSanitizerPlugin } from './request-sanitizer.plugin.js';
13
+ import { ClaudeThinkingTransformerPlugin } from './claude-thinking-transformer.plugin.js';
12
14
  import { LoggingPlugin } from './logging.plugin.js';
13
15
  /**
14
16
  * Register core plugins
15
17
  * Called at app startup
16
18
  */
17
19
  export declare function registerCorePlugins(): void;
18
- export { EndpointBlockerPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, LoggingPlugin };
20
+ export { MCPAuthPlugin, EndpointBlockerPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, ClaudeThinkingTransformerPlugin, LoggingPlugin, };
19
21
  export { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
20
22
  export { getPluginRegistry, resetPluginRegistry } from './registry.js';
21
23
  export * from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAW1C;AAMD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,aAAa,EAAE,CAAC;AAC7H,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAa1C;AAMD,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,aAAa,GACd,CAAC;AACF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
@@ -5,11 +5,13 @@
5
5
  * Extensibility: Easy to add new plugins
6
6
  */
7
7
  import { getPluginRegistry } from './registry.js';
8
+ import { MCPAuthPlugin } from './mcp-auth.plugin.js';
8
9
  import { EndpointBlockerPlugin } from './endpoint-blocker.plugin.js';
9
10
  import { SSOAuthPlugin } from './sso-auth.plugin.js';
10
11
  import { JWTAuthPlugin } from './jwt-auth.plugin.js';
11
12
  import { HeaderInjectionPlugin } from './header-injection.plugin.js';
12
13
  import { RequestSanitizerPlugin } from './request-sanitizer.plugin.js';
14
+ import { ClaudeThinkingTransformerPlugin } from './claude-thinking-transformer.plugin.js';
13
15
  import { LoggingPlugin } from './logging.plugin.js';
14
16
  import { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
15
17
  /**
@@ -19,10 +21,12 @@ import { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
19
21
  export function registerCorePlugins() {
20
22
  const registry = getPluginRegistry();
21
23
  // Register in any order (priority determines execution order)
24
+ registry.register(new MCPAuthPlugin()); // Priority 3 - MCP auth relay routing
22
25
  registry.register(new EndpointBlockerPlugin()); // Priority 5 - blocks unwanted endpoints early
23
26
  registry.register(new SSOAuthPlugin());
24
27
  registry.register(new JWTAuthPlugin());
25
28
  registry.register(new RequestSanitizerPlugin()); // Priority 15 - strips unsupported reasoning params
29
+ registry.register(new ClaudeThinkingTransformerPlugin()); // Priority 16 - transforms thinking params for Claude 4.7+ models
26
30
  registry.register(new HeaderInjectionPlugin());
27
31
  registry.register(new LoggingPlugin()); // Always enabled - logs to log files at INFO level
28
32
  registry.register(new SSOSessionSyncPlugin()); // Priority 100 - syncs sessions via multiple processors
@@ -30,7 +34,7 @@ export function registerCorePlugins() {
30
34
  // Auto-register on import
31
35
  registerCorePlugins();
32
36
  // Re-export for convenience
33
- export { EndpointBlockerPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, LoggingPlugin };
37
+ export { MCPAuthPlugin, EndpointBlockerPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, ClaudeThinkingTransformerPlugin, LoggingPlugin, };
34
38
  export { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
35
39
  export { getPluginRegistry, resetPluginRegistry } from './registry.js';
36
40
  export * from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IAErC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,+CAA+C;IAC/F,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC,oDAAoD;IACrG,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,mDAAmD;IAC3F,QAAQ,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,wDAAwD;AACzG,CAAC;AAED,0BAA0B;AAC1B,mBAAmB,EAAE,CAAC;AAEtB,4BAA4B;AAC5B,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,aAAa,EAAE,CAAC;AAC7H,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IAErC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAU,sCAAsC;IACvF,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,+CAA+C;IAC/F,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC,oDAAoD;IACrG,QAAQ,CAAC,QAAQ,CAAC,IAAI,+BAA+B,EAAE,CAAC,CAAC,CAAC,kEAAkE;IAC5H,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,mDAAmD;IAC3F,QAAQ,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,wDAAwD;AACzG,CAAC;AAED,0BAA0B;AAC1B,mBAAmB,EAAE,CAAC;AAEtB,4BAA4B;AAC5B,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,aAAa,GACd,CAAC;AACF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * MCP Authorization Proxy Plugin
3
+ * Priority: 3 (runs before endpoint blocker, auth, and all other plugins)
4
+ *
5
+ * Proxies the MCP OAuth authorization flow so that:
6
+ * 1. All auth traffic is routed through the CodeMie proxy
7
+ * 2. `client_name` is replaced with MCP_CLIENT_NAME env var (default "CodeMie CLI") in dynamic client registration
8
+ *
9
+ * URL scheme:
10
+ * - /mcp_auth?original=<url> → Initial MCP connection
11
+ * - /mcp_relay/<root_b64>/<relay_b64>/<path> → Relayed requests (per-flow scoped)
12
+ *
13
+ * The root_b64 segment carries the root MCP server origin for per-flow isolation.
14
+ * The relay_b64 segment identifies the actual target origin (may differ from root
15
+ * when the auth server is on a separate host).
16
+ *
17
+ * Response URL rewriting replaces external URLs with proxy relay URLs so that
18
+ * the MCP client (Claude Code CLI) routes all subsequent requests through the proxy.
19
+ *
20
+ * Security:
21
+ * - SSRF protection: private/loopback origins are rejected (hostname + DNS resolution)
22
+ * - Per-flow origin scoping: discovered origins are tagged with their root MCP server
23
+ * origin and relay requests validate the root-relay association
24
+ * - Buffering is restricted to auth metadata responses; post-auth MCP traffic streams through
25
+ */
26
+ import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
27
+ export declare class MCPAuthPlugin implements ProxyPlugin {
28
+ id: string;
29
+ name: string;
30
+ version: string;
31
+ priority: number;
32
+ createInterceptor(context: PluginContext): Promise<ProxyInterceptor>;
33
+ }
34
+ //# sourceMappingURL=mcp-auth.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-auth.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/mcp-auth.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAOH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA0O1E,qBAAa,aAAc,YAAW,WAAW;IAC/C,EAAE,SAA6B;IAC/B,IAAI,SAAoB;IACxB,OAAO,SAAW;IAClB,QAAQ,SAAK;IAEP,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG3E"}