@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.
- package/README.md +102 -12
- package/dist/api/middleware.d.ts +9 -0
- package/dist/api/routes.d.ts +15 -0
- package/dist/cjs/server.cjs +238 -230
- package/dist/cjs/server.cjs.map +4 -4
- package/dist/cursor-sdk/events-to-sse.d.ts +113 -0
- package/dist/cursor-sdk/hooks-template.d.ts +1 -0
- package/dist/cursor-sdk/prompt.d.ts +29 -0
- package/dist/cursor-sdk/runner.d.ts +11 -0
- package/dist/cursor-sdk/send.d.ts +9 -0
- package/dist/cursor-sdk/session.d.ts +146 -0
- package/dist/cursor-sdk/shared.d.ts +14 -0
- package/dist/cursor-sdk/tools.d.ts +4 -0
- package/dist/cursor-sdk/usage.d.ts +28 -0
- package/dist/esm/server.mjs +233 -225
- package/dist/esm/server.mjs.map +4 -4
- package/dist/index.d.ts +2 -0
- package/dist/plugins/index.d.ts +4 -0
- package/dist/plugins/output/console-handler.d.ts +23 -0
- package/dist/plugins/output/index.d.ts +29 -0
- package/dist/plugins/output/output-manager.d.ts +110 -0
- package/dist/plugins/output/temp-file-handler.d.ts +53 -0
- package/dist/plugins/output/types.d.ts +157 -0
- package/dist/plugins/output/webhook-handler.d.ts +37 -0
- package/dist/plugins/plugin-manager.d.ts +62 -0
- package/dist/plugins/token-speed.d.ts +22 -0
- package/dist/plugins/types.d.ts +25 -0
- package/dist/server.d.ts +60 -0
- package/dist/services/config.d.ts +32 -0
- package/dist/services/provider.d.ts +34 -0
- package/dist/services/tokenizer.d.ts +44 -0
- package/dist/services/transformer.d.ts +28 -0
- package/dist/tests/anthropic.stream-boundaries.d.ts +1 -0
- package/dist/tests/anthropic.stream-cancel.d.ts +1 -0
- package/dist/tests/antigravity.claude-tool-schema.d.ts +1 -0
- package/dist/tests/antigravity.endpoint-fallback.d.ts +1 -0
- package/dist/tests/cache-control.strip.d.ts +1 -0
- package/dist/tests/cache-paths.integration.d.ts +1 -0
- package/dist/tests/claude-auth.beta-headers.d.ts +1 -0
- package/dist/tests/codex-auth.reliability.d.ts +1 -0
- package/dist/tests/cursor-sdk.cancel.d.ts +1 -0
- package/dist/tests/cursor-sdk.on-delta-thinking.d.ts +1 -0
- package/dist/tests/cursor-sdk.progress-only.d.ts +1 -0
- package/dist/tests/cursor-sdk.runner-recovery.d.ts +1 -0
- package/dist/tests/cursor-sdk.send.d.ts +1 -0
- package/dist/tests/cursor-sdk.stream-error.d.ts +1 -0
- package/dist/tests/cursor-sdk.thinking-signature.d.ts +1 -0
- package/dist/tests/cursor-sdk.usage.d.ts +1 -0
- package/dist/tests/deepseek.reasoning.d.ts +1 -0
- package/dist/tests/gemini.abnormal-finish.d.ts +1 -0
- package/dist/tests/gemini.dual-dialect-request.d.ts +1 -0
- package/dist/tests/gemini.function-call-signatures.d.ts +1 -0
- package/dist/tests/gemini.parity.d.ts +1 -0
- package/dist/tests/gemini.thinking-effort.d.ts +1 -0
- package/dist/tests/gemini.thought-signature-roundtrip.d.ts +1 -0
- package/dist/tests/opencode-headers.no-provider-retry.d.ts +1 -0
- package/dist/tests/thinking-sequencer.dual-dialect.d.ts +1 -0
- package/dist/tests/transformer-service.endpoints.d.ts +1 -0
- package/dist/tests/upstream-ports.smoke.d.ts +1 -0
- package/dist/tokenizer/api-tokenizer.d.ts +45 -0
- package/dist/tokenizer/huggingface-tokenizer.d.ts +52 -0
- package/dist/tokenizer/tiktoken-tokenizer.d.ts +20 -0
- package/dist/transformer/anthropic.transformer.d.ts +22 -0
- package/dist/transformer/antigravity-auth.transformer.d.ts +15 -0
- package/dist/transformer/cerebras.transformer.d.ts +16 -0
- package/dist/transformer/chrome-on-device.transformer.d.ts +7 -0
- package/dist/transformer/claude-auth.transformer.d.ts +25 -0
- package/dist/transformer/cleancache.transformer.d.ts +6 -0
- package/dist/transformer/codex.transformer.d.ts +61 -0
- package/dist/transformer/cursor-sdk.transformer.d.ts +23 -0
- package/dist/transformer/customparams.transformer.d.ts +30 -0
- package/dist/transformer/deepseek.transformer.d.ts +7 -0
- package/dist/transformer/enhancetool.transformer.d.ts +6 -0
- package/dist/transformer/extrathinktag.transformer.d.ts +10 -0
- package/dist/transformer/forcereasoning.transformer.d.ts +8 -0
- package/dist/transformer/gemini.transformer.d.ts +15 -0
- package/dist/transformer/groq.transformer.d.ts +7 -0
- package/dist/transformer/index.d.ts +65 -0
- package/dist/transformer/maxcompletiontokens.transformer.d.ts +6 -0
- package/dist/transformer/maxtoken.transformer.d.ts +9 -0
- package/dist/transformer/mistral.transformer.d.ts +25 -0
- package/dist/transformer/openai.responses.transformer.d.ts +13 -0
- package/dist/transformer/openai.transformer.d.ts +52 -0
- package/dist/transformer/opencode-headers.transformer.d.ts +30 -0
- package/dist/transformer/openrouter.transformer.d.ts +10 -0
- package/dist/transformer/qwen-auth.transformer.d.ts +9 -0
- package/dist/transformer/reasoning.transformer.d.ts +10 -0
- package/dist/transformer/sampling.transformer.d.ts +13 -0
- package/dist/transformer/streamoptions.transformer.d.ts +6 -0
- package/dist/transformer/tooluse.transformer.d.ts +7 -0
- package/dist/transformer/vercel.transformer.d.ts +11 -0
- package/dist/transformer/vertex-claude.transformer.d.ts +9 -0
- package/dist/transformer/vertex-gemini.transformer.d.ts +12 -0
- package/dist/transformer/vertex-openai.transformer.d.ts +19 -0
- package/dist/types/llm.d.ts +255 -0
- package/dist/types/transformer.d.ts +23 -0
- package/dist/utils/antigravity-auth.d.ts +75 -0
- package/dist/utils/auth-recovery.d.ts +2 -0
- package/dist/utils/cache.d.ts +14 -0
- package/dist/utils/cacheControl.d.ts +44 -0
- package/dist/utils/claude-auth.d.ts +22 -0
- package/dist/utils/codex-auth.d.ts +33 -0
- package/dist/utils/converter.d.ts +11 -0
- package/dist/utils/cursor-auth.d.ts +3 -0
- package/dist/utils/deepseek.util.d.ts +28 -0
- package/dist/utils/gemini-cache.d.ts +8 -0
- package/dist/utils/gemini-thinking.d.ts +66 -0
- package/dist/utils/gemini.util.d.ts +43 -0
- package/dist/utils/google.util.d.ts +160 -0
- package/dist/utils/image.d.ts +1 -0
- package/dist/utils/mistral.util.d.ts +14 -0
- package/dist/utils/openai.util.d.ts +17 -0
- package/dist/utils/qwen-auth.d.ts +13 -0
- package/dist/utils/redact.d.ts +30 -0
- package/dist/utils/request.d.ts +4 -0
- package/dist/utils/retry.d.ts +27 -0
- package/dist/utils/router.d.ts +42 -0
- package/dist/utils/schema.d.ts +46 -0
- package/dist/utils/sse/SSEParser.transform.d.ts +6 -0
- package/dist/utils/sse/SSESerializer.transform.d.ts +3 -0
- package/dist/utils/sse/index.d.ts +3 -0
- package/dist/utils/sse/rewriteStream.d.ts +9 -0
- package/dist/utils/stream.d.ts +11 -0
- package/dist/utils/thinking.d.ts +33 -0
- package/dist/utils/thought-signature-cache.d.ts +34 -0
- package/dist/utils/toolArgumentsParser.d.ts +8 -0
- package/dist/utils/vertex-claude.util.d.ts +47 -0
- package/package.json +3 -3
package/dist/index.d.ts
ADDED
|
@@ -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
|
+
}
|
package/dist/server.d.ts
ADDED
|
@@ -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
|
+
}
|