@caeliq/llms 1.0.55 → 1.0.57

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 (128) hide show
  1. package/README.md +102 -12
  2. package/dist/api/middleware.d.ts +9 -0
  3. package/dist/api/routes.d.ts +15 -0
  4. package/dist/cjs/server.cjs +238 -230
  5. package/dist/cjs/server.cjs.map +4 -4
  6. package/dist/cursor-sdk/events-to-sse.d.ts +113 -0
  7. package/dist/cursor-sdk/hooks-template.d.ts +1 -0
  8. package/dist/cursor-sdk/prompt.d.ts +29 -0
  9. package/dist/cursor-sdk/runner.d.ts +11 -0
  10. package/dist/cursor-sdk/send.d.ts +9 -0
  11. package/dist/cursor-sdk/session.d.ts +146 -0
  12. package/dist/cursor-sdk/shared.d.ts +14 -0
  13. package/dist/cursor-sdk/tools.d.ts +4 -0
  14. package/dist/cursor-sdk/usage.d.ts +28 -0
  15. package/dist/esm/server.mjs +233 -225
  16. package/dist/esm/server.mjs.map +4 -4
  17. package/dist/index.d.ts +2 -0
  18. package/dist/plugins/index.d.ts +4 -0
  19. package/dist/plugins/output/console-handler.d.ts +23 -0
  20. package/dist/plugins/output/index.d.ts +29 -0
  21. package/dist/plugins/output/output-manager.d.ts +110 -0
  22. package/dist/plugins/output/temp-file-handler.d.ts +53 -0
  23. package/dist/plugins/output/types.d.ts +157 -0
  24. package/dist/plugins/output/webhook-handler.d.ts +37 -0
  25. package/dist/plugins/plugin-manager.d.ts +62 -0
  26. package/dist/plugins/token-speed.d.ts +22 -0
  27. package/dist/plugins/types.d.ts +25 -0
  28. package/dist/server.d.ts +60 -0
  29. package/dist/services/config.d.ts +32 -0
  30. package/dist/services/provider.d.ts +34 -0
  31. package/dist/services/tokenizer.d.ts +44 -0
  32. package/dist/services/transformer.d.ts +28 -0
  33. package/dist/tests/anthropic.stream-boundaries.d.ts +1 -0
  34. package/dist/tests/anthropic.stream-cancel.d.ts +1 -0
  35. package/dist/tests/antigravity.claude-tool-schema.d.ts +1 -0
  36. package/dist/tests/antigravity.endpoint-fallback.d.ts +1 -0
  37. package/dist/tests/cache-control.strip.d.ts +1 -0
  38. package/dist/tests/cache-paths.integration.d.ts +1 -0
  39. package/dist/tests/claude-auth.beta-headers.d.ts +1 -0
  40. package/dist/tests/codex-auth.reliability.d.ts +1 -0
  41. package/dist/tests/cursor-sdk.cancel.d.ts +1 -0
  42. package/dist/tests/cursor-sdk.on-delta-thinking.d.ts +1 -0
  43. package/dist/tests/cursor-sdk.progress-only.d.ts +1 -0
  44. package/dist/tests/cursor-sdk.runner-recovery.d.ts +1 -0
  45. package/dist/tests/cursor-sdk.send.d.ts +1 -0
  46. package/dist/tests/cursor-sdk.stream-error.d.ts +1 -0
  47. package/dist/tests/cursor-sdk.thinking-signature.d.ts +1 -0
  48. package/dist/tests/cursor-sdk.usage.d.ts +1 -0
  49. package/dist/tests/deepseek.reasoning.d.ts +1 -0
  50. package/dist/tests/gemini.abnormal-finish.d.ts +1 -0
  51. package/dist/tests/gemini.dual-dialect-request.d.ts +1 -0
  52. package/dist/tests/gemini.function-call-signatures.d.ts +1 -0
  53. package/dist/tests/gemini.parity.d.ts +1 -0
  54. package/dist/tests/gemini.thinking-effort.d.ts +1 -0
  55. package/dist/tests/gemini.thought-signature-roundtrip.d.ts +1 -0
  56. package/dist/tests/opencode-headers.no-provider-retry.d.ts +1 -0
  57. package/dist/tests/thinking-sequencer.dual-dialect.d.ts +1 -0
  58. package/dist/tests/transformer-service.endpoints.d.ts +1 -0
  59. package/dist/tests/upstream-ports.smoke.d.ts +1 -0
  60. package/dist/tokenizer/api-tokenizer.d.ts +45 -0
  61. package/dist/tokenizer/huggingface-tokenizer.d.ts +52 -0
  62. package/dist/tokenizer/tiktoken-tokenizer.d.ts +20 -0
  63. package/dist/transformer/anthropic.transformer.d.ts +22 -0
  64. package/dist/transformer/antigravity-auth.transformer.d.ts +15 -0
  65. package/dist/transformer/cerebras.transformer.d.ts +16 -0
  66. package/dist/transformer/chrome-on-device.transformer.d.ts +7 -0
  67. package/dist/transformer/claude-auth.transformer.d.ts +25 -0
  68. package/dist/transformer/cleancache.transformer.d.ts +6 -0
  69. package/dist/transformer/codex.transformer.d.ts +61 -0
  70. package/dist/transformer/cursor-sdk.transformer.d.ts +23 -0
  71. package/dist/transformer/customparams.transformer.d.ts +30 -0
  72. package/dist/transformer/deepseek.transformer.d.ts +7 -0
  73. package/dist/transformer/enhancetool.transformer.d.ts +6 -0
  74. package/dist/transformer/extrathinktag.transformer.d.ts +10 -0
  75. package/dist/transformer/forcereasoning.transformer.d.ts +8 -0
  76. package/dist/transformer/gemini.transformer.d.ts +15 -0
  77. package/dist/transformer/groq.transformer.d.ts +7 -0
  78. package/dist/transformer/index.d.ts +65 -0
  79. package/dist/transformer/maxcompletiontokens.transformer.d.ts +6 -0
  80. package/dist/transformer/maxtoken.transformer.d.ts +9 -0
  81. package/dist/transformer/mistral.transformer.d.ts +25 -0
  82. package/dist/transformer/openai.responses.transformer.d.ts +13 -0
  83. package/dist/transformer/openai.transformer.d.ts +52 -0
  84. package/dist/transformer/opencode-headers.transformer.d.ts +30 -0
  85. package/dist/transformer/openrouter.transformer.d.ts +10 -0
  86. package/dist/transformer/qwen-auth.transformer.d.ts +9 -0
  87. package/dist/transformer/reasoning.transformer.d.ts +10 -0
  88. package/dist/transformer/sampling.transformer.d.ts +13 -0
  89. package/dist/transformer/streamoptions.transformer.d.ts +6 -0
  90. package/dist/transformer/tooluse.transformer.d.ts +7 -0
  91. package/dist/transformer/vercel.transformer.d.ts +11 -0
  92. package/dist/transformer/vertex-claude.transformer.d.ts +9 -0
  93. package/dist/transformer/vertex-gemini.transformer.d.ts +12 -0
  94. package/dist/transformer/vertex-openai.transformer.d.ts +19 -0
  95. package/dist/types/llm.d.ts +255 -0
  96. package/dist/types/transformer.d.ts +23 -0
  97. package/dist/utils/antigravity-auth.d.ts +75 -0
  98. package/dist/utils/auth-recovery.d.ts +2 -0
  99. package/dist/utils/cache.d.ts +14 -0
  100. package/dist/utils/cacheControl.d.ts +44 -0
  101. package/dist/utils/claude-auth.d.ts +22 -0
  102. package/dist/utils/codex-auth.d.ts +33 -0
  103. package/dist/utils/converter.d.ts +11 -0
  104. package/dist/utils/cursor-auth.d.ts +3 -0
  105. package/dist/utils/deepseek.util.d.ts +28 -0
  106. package/dist/utils/gemini-cache.d.ts +8 -0
  107. package/dist/utils/gemini-thinking.d.ts +66 -0
  108. package/dist/utils/gemini.util.d.ts +43 -0
  109. package/dist/utils/google.util.d.ts +160 -0
  110. package/dist/utils/image.d.ts +1 -0
  111. package/dist/utils/mistral.util.d.ts +14 -0
  112. package/dist/utils/openai.util.d.ts +17 -0
  113. package/dist/utils/qwen-auth.d.ts +13 -0
  114. package/dist/utils/redact.d.ts +30 -0
  115. package/dist/utils/request.d.ts +4 -0
  116. package/dist/utils/retry.d.ts +27 -0
  117. package/dist/utils/router.d.ts +42 -0
  118. package/dist/utils/schema.d.ts +46 -0
  119. package/dist/utils/sse/SSEParser.transform.d.ts +6 -0
  120. package/dist/utils/sse/SSESerializer.transform.d.ts +3 -0
  121. package/dist/utils/sse/index.d.ts +3 -0
  122. package/dist/utils/sse/rewriteStream.d.ts +9 -0
  123. package/dist/utils/stream.d.ts +11 -0
  124. package/dist/utils/thinking.d.ts +33 -0
  125. package/dist/utils/thought-signature-cache.d.ts +34 -0
  126. package/dist/utils/toolArgumentsParser.d.ts +8 -0
  127. package/dist/utils/vertex-claude.util.d.ts +47 -0
  128. package/package.json +3 -3
@@ -0,0 +1,2 @@
1
+ export * from "./server";
2
+ export { default } from "./server";
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export { pluginManager } from './plugin-manager';
3
+ export { tokenSpeedPlugin, getTokenSpeedStats, getGlobalTokenSpeedStats } from './token-speed';
4
+ export * from './output';
@@ -0,0 +1,23 @@
1
+ import { OutputHandler, OutputOptions, ConsoleOutputConfig } from './types';
2
+ /**
3
+ * Console output handler
4
+ * Supports colored output and multiple log levels
5
+ */
6
+ export declare class ConsoleOutputHandler implements OutputHandler {
7
+ type: "console";
8
+ private config;
9
+ private colors;
10
+ constructor(config?: ConsoleOutputConfig);
11
+ /**
12
+ * Format output data
13
+ */
14
+ private formatData;
15
+ /**
16
+ * Convert object to Markdown format
17
+ */
18
+ private toMarkdown;
19
+ /**
20
+ * Output data
21
+ */
22
+ output(data: any, options?: OutputOptions): Promise<boolean>;
23
+ }
@@ -0,0 +1,29 @@
1
+ export * from './types';
2
+ export { ConsoleOutputHandler } from './console-handler';
3
+ export { WebhookOutputHandler } from './webhook-handler';
4
+ export { TempFileOutputHandler } from './temp-file-handler';
5
+ export { outputManager, output, outputTo } from './output-manager';
6
+ /**
7
+ * Convenience function: Create and register a Console output handler
8
+ * @param config Console output handler configuration
9
+ * @returns Output manager instance
10
+ */
11
+ export declare function registerConsoleOutput(config?: import('./types').ConsoleOutputConfig): any;
12
+ /**
13
+ * Convenience function: Create and register a Webhook output handler
14
+ * @param config Webhook output handler configuration
15
+ * @returns Output manager instance
16
+ */
17
+ export declare function registerWebhookOutput(config: import('./types').WebhookOutputConfig): any;
18
+ /**
19
+ * Convenience function: Create and register a Temp File output handler
20
+ * @param config Temp file output handler configuration
21
+ * @returns Output manager instance
22
+ */
23
+ export declare function registerTempFileOutput(config?: import('./types').TempFileOutputConfig): any;
24
+ /**
25
+ * Convenience function: Register output handlers in batch
26
+ * @param configs Output handler configuration array
27
+ * @returns Output manager instance
28
+ */
29
+ export declare function registerOutputHandlers(configs: import('./types').OutputHandlerConfig[]): any;
@@ -0,0 +1,110 @@
1
+ import { OutputHandler, OutputOptions, OutputHandlerConfig } from './types';
2
+ /**
3
+ * Output manager
4
+ * Manages multiple output handlers and provides unified output interface
5
+ */
6
+ declare class OutputManager {
7
+ private handlers;
8
+ private defaultOptions;
9
+ private logger;
10
+ setLogger(logger: any): void;
11
+ /**
12
+ * Register output handler
13
+ * @param name Output handler name
14
+ * @param handler Output handler instance
15
+ */
16
+ registerHandler(name: string, handler: OutputHandler): void;
17
+ /**
18
+ * Register output handlers in batch
19
+ * @param configs Output handler configuration array
20
+ */
21
+ registerHandlers(configs: OutputHandlerConfig[]): void;
22
+ /**
23
+ * Create output handler instance
24
+ * @param config Output handler configuration
25
+ */
26
+ private createHandler;
27
+ /**
28
+ * Remove output handler
29
+ * @param name Output handler name
30
+ */
31
+ unregisterHandler(name: string): boolean;
32
+ /**
33
+ * Get output handler
34
+ * @param name Output handler name
35
+ */
36
+ getHandler(name: string): OutputHandler | undefined;
37
+ /**
38
+ * Get all output handlers
39
+ */
40
+ getAllHandlers(): Map<string, OutputHandler>;
41
+ /**
42
+ * Clear all output handlers
43
+ */
44
+ clearHandlers(): void;
45
+ /**
46
+ * Set default output options
47
+ * @param options Output options
48
+ */
49
+ setDefaultOptions(options: OutputOptions): void;
50
+ /**
51
+ * Get default output options
52
+ */
53
+ getDefaultOptions(): OutputOptions;
54
+ /**
55
+ * Output data to all registered output handlers
56
+ * @param data Data to output
57
+ * @param options Output options
58
+ * @returns Promise<{success: string[], failed: string[]}> Names of successful and failed handlers
59
+ */
60
+ output(data: any, options?: OutputOptions): Promise<{
61
+ success: string[];
62
+ failed: string[];
63
+ }>;
64
+ /**
65
+ * Output data to specified output handlers
66
+ * @param handlerNames Array of output handler names
67
+ * @param data Data to output
68
+ * @param options Output options
69
+ * @returns Promise<{success: string[], failed: string[]}> Names of successful and failed handlers
70
+ */
71
+ outputTo(handlerNames: string[], data: any, options?: OutputOptions): Promise<{
72
+ success: string[];
73
+ failed: string[];
74
+ }>;
75
+ /**
76
+ * Output data to specified type of output handlers
77
+ * @param type Output handler type
78
+ * @param data Data to output
79
+ * @param options Output options
80
+ * @returns Promise<{success: string[], failed: string[]}> Names of successful and failed handlers
81
+ */
82
+ outputToType(type: string, data: any, options?: OutputOptions): Promise<{
83
+ success: string[];
84
+ failed: string[];
85
+ }>;
86
+ }
87
+ /**
88
+ * Global output manager instance
89
+ */
90
+ export declare const outputManager: OutputManager;
91
+ /**
92
+ * Convenience method: Quickly output data to all registered handlers
93
+ * @param data Data to output
94
+ * @param options Output options
95
+ */
96
+ export declare function output(data: any, options?: OutputOptions): Promise<{
97
+ success: string[];
98
+ failed: string[];
99
+ }>;
100
+ /**
101
+ * Convenience method: Quickly output data to specified type of handlers
102
+ * @param type Output handler type ('console' | 'webhook' | 'websocket')
103
+ * @param data Data to output
104
+ * @param options Output options
105
+ */
106
+ export declare function outputTo(type: string, data: any, options?: OutputOptions): Promise<{
107
+ success: string[];
108
+ failed: string[];
109
+ }>;
110
+ export {};
@@ -0,0 +1,53 @@
1
+ import { OutputHandler, OutputOptions } from './types';
2
+ /**
3
+ * Temp file output handler configuration
4
+ */
5
+ export interface TempFileOutputConfig {
6
+ /**
7
+ * Subdirectory under system temp directory (default: 'claude-code-router')
8
+ */
9
+ subdirectory?: string;
10
+ /**
11
+ * File extension (default: 'json')
12
+ */
13
+ extension?: string;
14
+ /**
15
+ * Whether to include timestamp in filename (default: true)
16
+ */
17
+ includeTimestamp?: boolean;
18
+ /**
19
+ * Custom prefix for temp files (default: 'session')
20
+ */
21
+ prefix?: string;
22
+ }
23
+ /**
24
+ * Temp file output handler
25
+ * Writes data to temporary files in system temp directory
26
+ */
27
+ export declare class TempFileOutputHandler implements OutputHandler {
28
+ type: "temp-file";
29
+ private config;
30
+ private baseDir;
31
+ constructor(config?: TempFileOutputConfig);
32
+ /**
33
+ * Ensure directory exists
34
+ */
35
+ private ensureDir;
36
+ /**
37
+ * Extract session ID from user_id string
38
+ * Format: "user_..._session_<uuid>"
39
+ */
40
+ private extractSessionId;
41
+ /**
42
+ * Get file path for temp file
43
+ */
44
+ private getFilePath;
45
+ /**
46
+ * Output data to temp file
47
+ */
48
+ output(data: any, options?: OutputOptions): Promise<boolean>;
49
+ /**
50
+ * Get the base directory where temp files are stored
51
+ */
52
+ getBaseDir(): string;
53
+ }
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Output handler interface
3
+ * All output handlers must implement this interface
4
+ */
5
+ export interface OutputHandler {
6
+ /**
7
+ * Output handler type name
8
+ */
9
+ type: string;
10
+ /**
11
+ * Output data
12
+ * @param data Data to output
13
+ * @param options Output options
14
+ * @returns Promise<boolean> Whether output was successful
15
+ */
16
+ output(data: any, options?: OutputOptions): Promise<boolean>;
17
+ }
18
+ /**
19
+ * Output options
20
+ */
21
+ export interface OutputOptions {
22
+ /**
23
+ * Output format
24
+ */
25
+ format?: 'json' | 'text' | 'markdown';
26
+ /**
27
+ * Whether to include timestamp
28
+ */
29
+ timestamp?: boolean;
30
+ /**
31
+ * Custom prefix
32
+ */
33
+ prefix?: string;
34
+ /**
35
+ * Additional metadata
36
+ */
37
+ metadata?: Record<string, any>;
38
+ /**
39
+ * Timeout (milliseconds)
40
+ */
41
+ timeout?: number;
42
+ }
43
+ /**
44
+ * Console output handler configuration
45
+ */
46
+ export interface ConsoleOutputConfig {
47
+ /**
48
+ * Whether to use colored output
49
+ */
50
+ colors?: boolean;
51
+ /**
52
+ * Log level
53
+ */
54
+ level?: 'log' | 'info' | 'warn' | 'error' | 'debug';
55
+ }
56
+ /**
57
+ * Webhook output handler configuration
58
+ */
59
+ export interface WebhookOutputConfig {
60
+ /**
61
+ * Webhook URL
62
+ */
63
+ url: string;
64
+ /**
65
+ * HTTP request method
66
+ */
67
+ method?: 'POST' | 'PUT' | 'PATCH';
68
+ /**
69
+ * Request headers
70
+ */
71
+ headers?: Record<string, string>;
72
+ /**
73
+ * Authentication information
74
+ */
75
+ auth?: {
76
+ type: 'bearer' | 'basic' | 'custom';
77
+ token?: string;
78
+ username?: string;
79
+ password?: string;
80
+ custom?: {
81
+ header: string;
82
+ value: string;
83
+ };
84
+ };
85
+ /**
86
+ * Retry configuration
87
+ */
88
+ retry?: {
89
+ maxAttempts: number;
90
+ backoffMs: number;
91
+ };
92
+ /**
93
+ * Whether to handle failures silently (only log, don't throw)
94
+ */
95
+ silent?: boolean;
96
+ }
97
+ /**
98
+ * WebSocket output handler configuration (reserved for future use)
99
+ */
100
+ export interface WebSocketOutputConfig {
101
+ /**
102
+ * WebSocket URL
103
+ */
104
+ url: string;
105
+ /**
106
+ * Reconnection configuration
107
+ */
108
+ reconnect?: {
109
+ maxAttempts: number;
110
+ intervalMs: number;
111
+ };
112
+ /**
113
+ * Heartbeat configuration
114
+ */
115
+ heartbeat?: {
116
+ intervalMs: number;
117
+ message?: string;
118
+ };
119
+ }
120
+ /**
121
+ * Temp file output handler configuration
122
+ */
123
+ export interface TempFileOutputConfig {
124
+ /**
125
+ * Subdirectory under system temp directory (default: 'claude-code-router')
126
+ */
127
+ subdirectory?: string;
128
+ /**
129
+ * File extension (default: 'json')
130
+ */
131
+ extension?: string;
132
+ /**
133
+ * Whether to include timestamp in filename (default: true)
134
+ */
135
+ includeTimestamp?: boolean;
136
+ /**
137
+ * Custom prefix for temp files (default: 'session')
138
+ */
139
+ prefix?: string;
140
+ }
141
+ /**
142
+ * Output handler registration configuration
143
+ */
144
+ export interface OutputHandlerConfig {
145
+ /**
146
+ * Output handler type
147
+ */
148
+ type: 'console' | 'webhook' | 'websocket' | 'temp-file';
149
+ /**
150
+ * Whether enabled
151
+ */
152
+ enabled?: boolean;
153
+ /**
154
+ * Configuration options
155
+ */
156
+ config?: ConsoleOutputConfig | WebhookOutputConfig | WebSocketOutputConfig | TempFileOutputConfig;
157
+ }
@@ -0,0 +1,37 @@
1
+ import { OutputHandler, OutputOptions, WebhookOutputConfig } from './types';
2
+ /**
3
+ * Webhook output handler
4
+ * Supports sending data to HTTP endpoints with retry and authentication
5
+ */
6
+ export declare class WebhookOutputHandler implements OutputHandler {
7
+ type: "webhook";
8
+ private config;
9
+ private defaultTimeout;
10
+ private logger;
11
+ setLogger(logger: any): void;
12
+ constructor(config: WebhookOutputConfig);
13
+ /**
14
+ * Build request headers
15
+ */
16
+ private buildHeaders;
17
+ /**
18
+ * Build request body
19
+ */
20
+ private buildBody;
21
+ /**
22
+ * Send HTTP request
23
+ */
24
+ private sendRequest;
25
+ /**
26
+ * Delay function (for retry backoff)
27
+ */
28
+ private delay;
29
+ /**
30
+ * Send request with retry
31
+ */
32
+ private sendWithRetry;
33
+ /**
34
+ * Output data to Webhook
35
+ */
36
+ output(data: any, options?: OutputOptions): Promise<boolean>;
37
+ }
@@ -0,0 +1,62 @@
1
+ import { FastifyInstance } from 'fastify';
2
+ import { CCRPlugin, PluginMetadata } from './types';
3
+ /**
4
+ * Plugin manager
5
+ */
6
+ declare class PluginManager {
7
+ private plugins;
8
+ private pluginInstances;
9
+ /**
10
+ * Register a plugin
11
+ * @param plugin Plugin instance
12
+ * @param options Plugin configuration options
13
+ */
14
+ registerPlugin(plugin: CCRPlugin, options?: any): void;
15
+ /**
16
+ * Enable a single plugin
17
+ * @param name Plugin name
18
+ * @param fastify Fastify instance
19
+ */
20
+ enablePlugin(name: string, fastify: FastifyInstance): Promise<void>;
21
+ /**
22
+ * Enable all registered plugins in batch
23
+ * @param fastify Fastify instance
24
+ */
25
+ enablePlugins(fastify: FastifyInstance): Promise<void>;
26
+ /**
27
+ * Get list of registered plugins
28
+ */
29
+ getPlugins(): PluginMetadata[];
30
+ /**
31
+ * Get plugin instance
32
+ * @param name Plugin name
33
+ */
34
+ getPlugin(name: string): CCRPlugin | undefined;
35
+ /**
36
+ * Check if plugin is registered
37
+ * @param name Plugin name
38
+ */
39
+ hasPlugin(name: string): boolean;
40
+ /**
41
+ * Check if plugin is enabled
42
+ * @param name Plugin name
43
+ */
44
+ isPluginEnabled(name: string): boolean;
45
+ /**
46
+ * Dynamically enable/disable plugin
47
+ * @param name Plugin name
48
+ * @param enabled Whether to enable
49
+ */
50
+ setPluginEnabled(name: string, enabled: boolean): void;
51
+ /**
52
+ * Remove plugin
53
+ * @param name Plugin name
54
+ */
55
+ removePlugin(name: string): void;
56
+ /**
57
+ * Clear all plugins
58
+ */
59
+ clear(): void;
60
+ }
61
+ export declare const pluginManager: PluginManager;
62
+ export {};
@@ -0,0 +1,22 @@
1
+ import { CCRPlugin } from './types';
2
+ /**
3
+ * Token statistics interface
4
+ */
5
+ export interface TokenStats {
6
+ requestId: string;
7
+ sessionId?: string;
8
+ startTime: number;
9
+ firstTokenTime?: number;
10
+ lastTokenTime: number;
11
+ tokenCount: number;
12
+ tokensPerSecond: number;
13
+ timeToFirstToken?: number;
14
+ stream: boolean;
15
+ tokenTimestamps: number[];
16
+ }
17
+ export declare function getTokenSpeedStats(requestId: string): TokenStats | undefined;
18
+ export declare function getGlobalTokenSpeedStats(): TokenStats[];
19
+ /**
20
+ * Token speed measurement plugin
21
+ */
22
+ export declare const tokenSpeedPlugin: CCRPlugin;
@@ -0,0 +1,25 @@
1
+ import { FastifyPluginAsync } from 'fastify';
2
+ /**
3
+ * Plugin configuration interface
4
+ */
5
+ export interface CCRPluginOptions {
6
+ enabled?: boolean;
7
+ [key: string]: any;
8
+ }
9
+ /**
10
+ * Plugin interface
11
+ */
12
+ export interface CCRPlugin {
13
+ name: string;
14
+ version?: string;
15
+ description?: string;
16
+ register: FastifyPluginAsync<CCRPluginOptions>;
17
+ }
18
+ /**
19
+ * Plugin metadata
20
+ */
21
+ export interface PluginMetadata {
22
+ name: string;
23
+ enabled: boolean;
24
+ options?: any;
25
+ }
@@ -0,0 +1,60 @@
1
+ import { FastifyInstance, FastifyPluginAsync, FastifyPluginCallback, FastifyPluginOptions, FastifyRegisterOptions, preHandlerHookHandler, onRequestHookHandler, preParsingHookHandler, preValidationHookHandler, preSerializationHookHandler, onSendHookHandler, onResponseHookHandler, onTimeoutHookHandler, onErrorHookHandler, onRouteHookHandler, onRegisterHookHandler, onReadyHookHandler, onListenHookHandler, onCloseHookHandler, FastifyServerOptions } from "fastify";
2
+ import { ConfigService, AppConfig } from "./services/config";
3
+ import { ProviderService } from "./services/provider";
4
+ import { TransformerService } from "./services/transformer";
5
+ import { TokenizerService } from "./services/tokenizer";
6
+ import { router, calculateTokenCount, searchProjectBySession } from "./utils/router";
7
+ import { sessionUsageCache } from "./utils/cache";
8
+ declare module "fastify" {
9
+ interface FastifyRequest {
10
+ provider?: string;
11
+ model?: string;
12
+ scenarioType?: string;
13
+ }
14
+ interface FastifyInstance {
15
+ _server?: Server;
16
+ }
17
+ }
18
+ interface ServerOptions extends FastifyServerOptions {
19
+ initialConfig?: AppConfig;
20
+ }
21
+ declare class Server {
22
+ app: FastifyInstance;
23
+ configService: ConfigService;
24
+ providerService: ProviderService;
25
+ transformerService: TransformerService;
26
+ tokenizerService: TokenizerService;
27
+ constructor(options?: ServerOptions);
28
+ register<Options extends FastifyPluginOptions = FastifyPluginOptions>(plugin: FastifyPluginAsync<Options> | FastifyPluginCallback<Options>, options?: FastifyRegisterOptions<Options>): Promise<void>;
29
+ addHook(hookName: "onRequest", hookFunction: onRequestHookHandler): void;
30
+ addHook(hookName: "preParsing", hookFunction: preParsingHookHandler): void;
31
+ addHook(hookName: "preValidation", hookFunction: preValidationHookHandler): void;
32
+ addHook(hookName: "preHandler", hookFunction: preHandlerHookHandler): void;
33
+ addHook(hookName: "preSerialization", hookFunction: preSerializationHookHandler): void;
34
+ addHook(hookName: "onSend", hookFunction: onSendHookHandler): void;
35
+ addHook(hookName: "onResponse", hookFunction: onResponseHookHandler): void;
36
+ addHook(hookName: "onTimeout", hookFunction: onTimeoutHookHandler): void;
37
+ addHook(hookName: "onError", hookFunction: onErrorHookHandler): void;
38
+ addHook(hookName: "onRoute", hookFunction: onRouteHookHandler): void;
39
+ addHook(hookName: "onRegister", hookFunction: onRegisterHookHandler): void;
40
+ addHook(hookName: "onReady", hookFunction: onReadyHookHandler): void;
41
+ addHook(hookName: "onListen", hookFunction: onListenHookHandler): void;
42
+ addHook(hookName: "onClose", hookFunction: onCloseHookHandler): void;
43
+ registerNamespace(name: string, options?: any): Promise<void>;
44
+ start(): Promise<void>;
45
+ }
46
+ export default Server;
47
+ export { sessionUsageCache };
48
+ export { router };
49
+ export { calculateTokenCount };
50
+ export { searchProjectBySession };
51
+ export type { RouterScenarioType, RouterFallbackConfig } from "./utils/router";
52
+ export { ConfigService } from "./services/config";
53
+ export { ProviderService } from "./services/provider";
54
+ export { TransformerService } from "./services/transformer";
55
+ export { TokenizerService } from "./services/tokenizer";
56
+ export { pluginManager, tokenSpeedPlugin, getTokenSpeedStats, getGlobalTokenSpeedStats, CCRPlugin, CCRPluginOptions, PluginMetadata } from "./plugins";
57
+ export { SSEParserTransform, SSESerializerTransform, rewriteStream } from "./utils/sse";
58
+ export { isClientAbortError } from "./utils/retry";
59
+ export { sanitizeHeadersForLog, diffHeadersForLog, } from "./utils/redact";
60
+ export { exchangeAuthorizationCode, fetchUserEmail, resolveProjectId, saveTokens, loadTokens, getValidAccessToken, ANTIGRAVITY_CLIENT_ID, ANTIGRAVITY_CLIENT_SECRET, ANTIGRAVITY_REDIRECT_URI, ANTIGRAVITY_SCOPES, type AntigravityTokens, } from "./utils/antigravity-auth";
@@ -0,0 +1,32 @@
1
+ export interface ConfigOptions {
2
+ envPath?: string;
3
+ jsonPath?: string;
4
+ useEnvFile?: boolean;
5
+ useJsonFile?: boolean;
6
+ useEnvironmentVariables?: boolean;
7
+ initialConfig?: AppConfig;
8
+ logger?: any;
9
+ }
10
+ export interface AppConfig {
11
+ [key: string]: any;
12
+ }
13
+ export declare class ConfigService {
14
+ private config;
15
+ private options;
16
+ private logger;
17
+ constructor(options?: ConfigOptions);
18
+ private loadConfig;
19
+ private loadJsonConfig;
20
+ private loadEnvConfig;
21
+ private loadEnvironmentVariables;
22
+ private parseEnvConfig;
23
+ private isAbsolutePath;
24
+ get<T = any>(key: keyof AppConfig): T | undefined;
25
+ get<T = any>(key: keyof AppConfig, defaultValue: T): T;
26
+ getAll(): AppConfig;
27
+ getHttpsProxy(): string | undefined;
28
+ has(key: keyof AppConfig): boolean;
29
+ set(key: keyof AppConfig, value: any): void;
30
+ reload(): void;
31
+ getConfigSummary(): string;
32
+ }
@@ -0,0 +1,34 @@
1
+ import { LLMProvider, RegisterProviderRequest, ModelRoute, RequestRouteInfo } from "../types/llm";
2
+ import { ConfigService } from "./config";
3
+ import { TransformerService } from "./transformer";
4
+ export declare class ProviderService {
5
+ private readonly configService;
6
+ private readonly transformerService;
7
+ private readonly logger;
8
+ private providers;
9
+ private modelRoutes;
10
+ constructor(configService: ConfigService, transformerService: TransformerService, logger: any);
11
+ private initializeCustomProviders;
12
+ private initializeFromProvidersArray;
13
+ /** Match TransformerService: instances used in provider use[] need the service logger. */
14
+ private attachTransformerLogger;
15
+ registerProvider(request: RegisterProviderRequest): LLMProvider;
16
+ getProviders(): LLMProvider[];
17
+ getProvider(name: string): LLMProvider | undefined;
18
+ updateProvider(id: string, updates: Partial<LLMProvider>): LLMProvider | null;
19
+ deleteProvider(id: string): boolean;
20
+ toggleProvider(name: string, enabled: boolean): boolean;
21
+ resolveModelRoute(modelName: string): RequestRouteInfo | null;
22
+ getAvailableModelNames(): string[];
23
+ getModelRoutes(): ModelRoute[];
24
+ private parseTransformerConfig;
25
+ getAvailableModels(): Promise<{
26
+ object: string;
27
+ data: Array<{
28
+ id: string;
29
+ object: string;
30
+ owned_by: string;
31
+ provider: string;
32
+ }>;
33
+ }>;
34
+ }