wave-agent-sdk 0.0.1 → 0.0.2
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/agent.d.ts +32 -2
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +36 -3
- package/dist/managers/aiManager.d.ts +7 -1
- package/dist/managers/aiManager.d.ts.map +1 -1
- package/dist/managers/aiManager.js +18 -9
- package/dist/services/aiService.d.ts +5 -0
- package/dist/services/aiService.d.ts.map +1 -1
- package/dist/services/aiService.js +18 -14
- package/dist/services/session.d.ts.map +1 -1
- package/dist/services/session.js +4 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +16 -0
- package/dist/utils/configResolver.d.ts +38 -0
- package/dist/utils/configResolver.d.ts.map +1 -0
- package/dist/utils/configResolver.js +106 -0
- package/dist/utils/configValidator.d.ts +36 -0
- package/dist/utils/configValidator.d.ts.map +1 -0
- package/dist/utils/configValidator.js +78 -0
- package/dist/utils/constants.d.ts +10 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +10 -0
- package/package.json +11 -15
- package/src/agent.ts +77 -6
- package/src/managers/aiManager.ts +29 -14
- package/src/services/aiService.ts +49 -21
- package/src/services/session.ts +5 -0
- package/src/types.ts +75 -0
- package/src/utils/configResolver.ts +142 -0
- package/src/utils/configValidator.ts +133 -0
- package/src/utils/constants.ts +10 -0
package/dist/agent.d.ts
CHANGED
|
@@ -3,7 +3,18 @@ import { type McpManagerCallbacks } from "./managers/mcpManager.js";
|
|
|
3
3
|
import { type BackgroundBashManagerCallbacks } from "./managers/backgroundBashManager.js";
|
|
4
4
|
import type { SlashCommand, CustomSlashCommand } from "./types.js";
|
|
5
5
|
import type { Message, Logger, McpServerStatus } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Configuration options for Agent instances
|
|
8
|
+
*
|
|
9
|
+
* IMPORTANT: This interface is used by both Agent constructor and Agent.create()
|
|
10
|
+
* Any changes to this interface must be compatible with both methods.
|
|
11
|
+
*/
|
|
6
12
|
export interface AgentOptions {
|
|
13
|
+
apiKey?: string;
|
|
14
|
+
baseURL?: string;
|
|
15
|
+
agentModel?: string;
|
|
16
|
+
fastModel?: string;
|
|
17
|
+
tokenLimit?: number;
|
|
7
18
|
callbacks?: AgentCallbacks;
|
|
8
19
|
restoreSessionId?: string;
|
|
9
20
|
continueLastSession?: boolean;
|
|
@@ -30,7 +41,18 @@ export declare class Agent {
|
|
|
30
41
|
private hookManager;
|
|
31
42
|
private workdir;
|
|
32
43
|
private systemPrompt?;
|
|
33
|
-
private
|
|
44
|
+
private gatewayConfig;
|
|
45
|
+
private modelConfig;
|
|
46
|
+
private tokenLimit;
|
|
47
|
+
/**
|
|
48
|
+
* Agent constructor - handles configuration resolution and validation
|
|
49
|
+
*
|
|
50
|
+
* IMPORTANT: Keep this constructor's signature exactly the same as Agent.create()
|
|
51
|
+
* to maintain API consistency. Both methods should accept the same AgentOptions.
|
|
52
|
+
*
|
|
53
|
+
* @param options - Configuration options for the Agent instance
|
|
54
|
+
*/
|
|
55
|
+
constructor(options: AgentOptions);
|
|
34
56
|
get sessionId(): string;
|
|
35
57
|
get messages(): Message[];
|
|
36
58
|
get latestTotalTokens(): number;
|
|
@@ -51,7 +73,15 @@ export declare class Agent {
|
|
|
51
73
|
} | null;
|
|
52
74
|
/** Kill background bash shell */
|
|
53
75
|
killBackgroundShell(id: string): boolean;
|
|
54
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Static async factory method for creating Agent instances
|
|
78
|
+
*
|
|
79
|
+
* IMPORTANT: Keep this method's signature exactly the same as the constructor
|
|
80
|
+
* to maintain consistency and avoid confusion for users of the API.
|
|
81
|
+
*
|
|
82
|
+
* @param options - Same AgentOptions interface used by constructor
|
|
83
|
+
* @returns Promise<Agent> - Fully initialized Agent instance
|
|
84
|
+
*/
|
|
55
85
|
static create(options: AgentOptions): Promise<Agent>;
|
|
56
86
|
/** Private initialization method, handles async initialization logic */
|
|
57
87
|
private initialize;
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,8BAA8B,CAAC;AAItC,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -7,15 +7,36 @@ import { BashManager } from "./managers/bashManager.js";
|
|
|
7
7
|
import { BackgroundBashManager, } from "./managers/backgroundBashManager.js";
|
|
8
8
|
import { SlashCommandManager } from "./managers/slashCommandManager.js";
|
|
9
9
|
import { HookManager } from "./hooks/index.js";
|
|
10
|
+
import { configResolver } from "./utils/configResolver.js";
|
|
11
|
+
import { configValidator } from "./utils/configValidator.js";
|
|
10
12
|
export class Agent {
|
|
11
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Agent constructor - handles configuration resolution and validation
|
|
15
|
+
*
|
|
16
|
+
* IMPORTANT: Keep this constructor's signature exactly the same as Agent.create()
|
|
17
|
+
* to maintain API consistency. Both methods should accept the same AgentOptions.
|
|
18
|
+
*
|
|
19
|
+
* @param options - Configuration options for the Agent instance
|
|
20
|
+
*/
|
|
12
21
|
constructor(options) {
|
|
13
22
|
this.bashManager = null;
|
|
14
23
|
const { callbacks = {}, logger, workdir, systemPrompt } = options;
|
|
24
|
+
// Resolve configuration from constructor args and environment variables
|
|
25
|
+
const gatewayConfig = configResolver.resolveGatewayConfig(options.apiKey, options.baseURL);
|
|
26
|
+
const modelConfig = configResolver.resolveModelConfig(options.agentModel, options.fastModel);
|
|
27
|
+
const tokenLimit = configResolver.resolveTokenLimit(options.tokenLimit);
|
|
28
|
+
// Validate resolved configuration
|
|
29
|
+
configValidator.validateGatewayConfig(gatewayConfig);
|
|
30
|
+
configValidator.validateTokenLimit(tokenLimit);
|
|
31
|
+
configValidator.validateModelConfig(modelConfig.agentModel, modelConfig.fastModel);
|
|
15
32
|
this.callbacks = callbacks;
|
|
16
33
|
this.logger = logger; // Save the passed logger
|
|
17
34
|
this.workdir = workdir || process.cwd(); // Set working directory, default to current working directory
|
|
18
35
|
this.systemPrompt = systemPrompt; // Save custom system prompt
|
|
36
|
+
// Store resolved configuration
|
|
37
|
+
this.gatewayConfig = gatewayConfig;
|
|
38
|
+
this.modelConfig = modelConfig;
|
|
39
|
+
this.tokenLimit = tokenLimit;
|
|
19
40
|
this.backgroundBashManager = new BackgroundBashManager({
|
|
20
41
|
callbacks,
|
|
21
42
|
workdir: this.workdir,
|
|
@@ -29,7 +50,7 @@ export class Agent {
|
|
|
29
50
|
workdir: this.workdir,
|
|
30
51
|
logger: this.logger,
|
|
31
52
|
});
|
|
32
|
-
// Initialize AI manager
|
|
53
|
+
// Initialize AI manager with resolved configuration
|
|
33
54
|
this.aiManager = new AIManager({
|
|
34
55
|
messageManager: this.messageManager,
|
|
35
56
|
toolManager: this.toolManager,
|
|
@@ -39,6 +60,9 @@ export class Agent {
|
|
|
39
60
|
callbacks,
|
|
40
61
|
workdir: this.workdir,
|
|
41
62
|
systemPrompt: this.systemPrompt,
|
|
63
|
+
gatewayConfig: this.gatewayConfig,
|
|
64
|
+
modelConfig: this.modelConfig,
|
|
65
|
+
tokenLimit: this.tokenLimit,
|
|
42
66
|
});
|
|
43
67
|
// Initialize command manager
|
|
44
68
|
this.slashCommandManager = new SlashCommandManager({
|
|
@@ -90,8 +114,17 @@ export class Agent {
|
|
|
90
114
|
killBackgroundShell(id) {
|
|
91
115
|
return this.backgroundBashManager.killShell(id);
|
|
92
116
|
}
|
|
93
|
-
/**
|
|
117
|
+
/**
|
|
118
|
+
* Static async factory method for creating Agent instances
|
|
119
|
+
*
|
|
120
|
+
* IMPORTANT: Keep this method's signature exactly the same as the constructor
|
|
121
|
+
* to maintain consistency and avoid confusion for users of the API.
|
|
122
|
+
*
|
|
123
|
+
* @param options - Same AgentOptions interface used by constructor
|
|
124
|
+
* @returns Promise<Agent> - Fully initialized Agent instance
|
|
125
|
+
*/
|
|
94
126
|
static async create(options) {
|
|
127
|
+
// Create Agent instance - configuration resolution and validation now happens in constructor
|
|
95
128
|
const instance = new Agent(options);
|
|
96
129
|
await instance.initialize({
|
|
97
130
|
restoreSessionId: options.restoreSessionId,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Logger } from "../types.js";
|
|
1
|
+
import type { Logger, GatewayConfig, ModelConfig } from "../types.js";
|
|
2
2
|
import type { ToolManager } from "./toolManager.js";
|
|
3
3
|
import type { MessageManager } from "./messageManager.js";
|
|
4
4
|
import type { BackgroundBashManager } from "./backgroundBashManager.js";
|
|
@@ -15,6 +15,9 @@ export interface AIManagerOptions {
|
|
|
15
15
|
callbacks?: AIManagerCallbacks;
|
|
16
16
|
workdir: string;
|
|
17
17
|
systemPrompt?: string;
|
|
18
|
+
gatewayConfig: GatewayConfig;
|
|
19
|
+
modelConfig: ModelConfig;
|
|
20
|
+
tokenLimit: number;
|
|
18
21
|
}
|
|
19
22
|
export declare class AIManager {
|
|
20
23
|
isLoading: boolean;
|
|
@@ -27,6 +30,9 @@ export declare class AIManager {
|
|
|
27
30
|
private hookManager?;
|
|
28
31
|
private workdir;
|
|
29
32
|
private systemPrompt?;
|
|
33
|
+
private gatewayConfig;
|
|
34
|
+
private modelConfig;
|
|
35
|
+
private tokenLimit;
|
|
30
36
|
constructor(options: AIManagerOptions);
|
|
31
37
|
private isCompressing;
|
|
32
38
|
private callbacks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiManager.d.ts","sourceRoot":"","sources":["../../src/managers/aiManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"aiManager.d.ts","sourceRoot":"","sources":["../../src/managers/aiManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,kBAAkB;IACjC,wBAAwB,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IACb,SAAS,EAAE,OAAO,CAAS;IAClC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,qBAAqB,CAAC,CAAwB;IACtD,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAAS;IAG9B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,gBAAgB;IAgBrC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,SAAS,CAAqB;IAEtC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAYvB,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAItC,cAAc,IAAI,IAAI;IAuB7B,OAAO,CAAC,qBAAqB;YAqBf,8BAA8B;IAoDrC,gBAAgB,IAAI,OAAO;IAI3B,gBAAgB,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI;IAOxC,aAAa,CACxB,OAAO,GAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,GACL,OAAO,CAAC,IAAI,CAAC;IAkQhB;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,sBAAsB;IA0CpC;;OAEG;YACW,uBAAuB;CA2CtC"}
|
|
@@ -2,7 +2,6 @@ import { callAgent, compressMessages } from "../services/aiService.js";
|
|
|
2
2
|
import { getMessagesToCompress } from "../utils/messageOperations.js";
|
|
3
3
|
import { convertMessagesForAPI } from "../utils/convertMessagesForAPI.js";
|
|
4
4
|
import * as memory from "../services/memory.js";
|
|
5
|
-
import { DEFAULT_TOKEN_LIMIT } from "../utils/constants.js";
|
|
6
5
|
export class AIManager {
|
|
7
6
|
constructor(options) {
|
|
8
7
|
this.isLoading = false;
|
|
@@ -17,6 +16,10 @@ export class AIManager {
|
|
|
17
16
|
this.workdir = options.workdir;
|
|
18
17
|
this.systemPrompt = options.systemPrompt;
|
|
19
18
|
this.callbacks = options.callbacks ?? {};
|
|
19
|
+
// Store resolved configuration
|
|
20
|
+
this.gatewayConfig = options.gatewayConfig;
|
|
21
|
+
this.modelConfig = options.modelConfig;
|
|
22
|
+
this.tokenLimit = options.tokenLimit;
|
|
20
23
|
}
|
|
21
24
|
/**
|
|
22
25
|
* Get filtered tool configuration
|
|
@@ -78,10 +81,9 @@ export class AIManager {
|
|
|
78
81
|
return;
|
|
79
82
|
// Update token statistics - display latest token usage
|
|
80
83
|
this.messageManager.setlatestTotalTokens(usage.total_tokens);
|
|
81
|
-
// Check if token limit exceeded
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
this.logger?.info(`Token usage exceeded ${tokenLimit}, compressing messages...`);
|
|
84
|
+
// Check if token limit exceeded - use injected configuration
|
|
85
|
+
if (usage.total_tokens > this.tokenLimit) {
|
|
86
|
+
this.logger?.info(`Token usage exceeded ${this.tokenLimit}, compressing messages...`);
|
|
85
87
|
// Check if messages need compression
|
|
86
88
|
const { messagesToCompress, insertIndex } = getMessagesToCompress(this.messageManager.getMessages(), 7);
|
|
87
89
|
// If there are messages to compress, perform compression
|
|
@@ -90,6 +92,8 @@ export class AIManager {
|
|
|
90
92
|
this.setIsCompressing(true);
|
|
91
93
|
try {
|
|
92
94
|
const compressedContent = await compressMessages({
|
|
95
|
+
gatewayConfig: this.gatewayConfig,
|
|
96
|
+
modelConfig: this.modelConfig,
|
|
93
97
|
messages: recentChatMessages,
|
|
94
98
|
abortSignal: abortController.signal,
|
|
95
99
|
});
|
|
@@ -138,6 +142,8 @@ export class AIManager {
|
|
|
138
142
|
const combinedMemory = await memory.getCombinedMemoryContent(this.workdir);
|
|
139
143
|
// Call AI service (non-streaming)
|
|
140
144
|
const result = await callAgent({
|
|
145
|
+
gatewayConfig: this.gatewayConfig,
|
|
146
|
+
modelConfig: this.modelConfig,
|
|
141
147
|
messages: recentMessages,
|
|
142
148
|
sessionId: this.messageManager.getSessionId(),
|
|
143
149
|
abortSignal: abortController.signal,
|
|
@@ -303,10 +309,13 @@ export class AIManager {
|
|
|
303
309
|
// Only clear loading state for the initial call
|
|
304
310
|
if (recursionDepth === 0) {
|
|
305
311
|
this.setIsLoading(false);
|
|
306
|
-
// Save session
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
312
|
+
// Save session and execute Stop hooks in parallel but maintain order
|
|
313
|
+
(async () => {
|
|
314
|
+
// Save session before executing Stop hooks
|
|
315
|
+
await this.messageManager.saveSession();
|
|
316
|
+
// Execute Stop hooks when AI response cycle completes
|
|
317
|
+
await this.executeStopHooks();
|
|
318
|
+
})();
|
|
310
319
|
}
|
|
311
320
|
}
|
|
312
321
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ChatCompletionMessageToolCall } from "openai/resources";
|
|
2
2
|
import { ChatCompletionMessageParam, ChatCompletionFunctionTool } from "openai/resources.js";
|
|
3
|
+
import type { GatewayConfig, ModelConfig } from "../types.js";
|
|
3
4
|
export interface CallAgentOptions {
|
|
5
|
+
gatewayConfig: GatewayConfig;
|
|
6
|
+
modelConfig: ModelConfig;
|
|
4
7
|
messages: ChatCompletionMessageParam[];
|
|
5
8
|
sessionId?: string;
|
|
6
9
|
abortSignal?: AbortSignal;
|
|
@@ -21,6 +24,8 @@ export interface CallAgentResult {
|
|
|
21
24
|
}
|
|
22
25
|
export declare function callAgent(options: CallAgentOptions): Promise<CallAgentResult>;
|
|
23
26
|
export interface CompressMessagesOptions {
|
|
27
|
+
gatewayConfig: GatewayConfig;
|
|
28
|
+
modelConfig: ModelConfig;
|
|
24
29
|
messages: ChatCompletionMessageParam[];
|
|
25
30
|
abortSignal?: AbortSignal;
|
|
26
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiService.d.ts","sourceRoot":"","sources":["../../src/services/aiService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAEL,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"aiService.d.ts","sourceRoot":"","sources":["../../src/services/aiService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAEL,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAmC9D,MAAM,WAAW,gBAAgB;IAE/B,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IAGzB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,6BAA6B,EAAE,CAAC;IAC7C,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CA0G1B;AAED,MAAM,WAAW,uBAAuB;IAEtC,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IAGzB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAyFjB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import OpenAI from "openai";
|
|
2
|
-
import { FAST_MODEL_ID, AGENT_MODEL_ID } from "../utils/constants.js";
|
|
3
2
|
/**
|
|
4
3
|
* Get specific configuration parameters based on model name
|
|
5
4
|
* @param modelName Model name
|
|
@@ -19,14 +18,14 @@ function getModelConfig(modelName, baseConfig = {}) {
|
|
|
19
18
|
}
|
|
20
19
|
return config;
|
|
21
20
|
}
|
|
22
|
-
// Initialize OpenAI client with environment variables
|
|
23
|
-
const openai = new OpenAI({
|
|
24
|
-
apiKey: process.env.AIGW_TOKEN,
|
|
25
|
-
baseURL: process.env.AIGW_URL,
|
|
26
|
-
});
|
|
27
21
|
export async function callAgent(options) {
|
|
28
|
-
const { messages, abortSignal, memory, workdir, tools, model, systemPrompt } = options;
|
|
22
|
+
const { gatewayConfig, modelConfig, messages, abortSignal, memory, workdir, tools, model, systemPrompt, } = options;
|
|
29
23
|
try {
|
|
24
|
+
// Create OpenAI client with injected configuration
|
|
25
|
+
const openai = new OpenAI({
|
|
26
|
+
apiKey: gatewayConfig.apiKey,
|
|
27
|
+
baseURL: gatewayConfig.baseURL,
|
|
28
|
+
});
|
|
30
29
|
// Build system prompt content
|
|
31
30
|
let systemContent;
|
|
32
31
|
if (systemPrompt) {
|
|
@@ -52,14 +51,14 @@ ${workdir}
|
|
|
52
51
|
};
|
|
53
52
|
// ChatCompletionMessageParam[] is already in OpenAI format, add system prompt to the beginning
|
|
54
53
|
const openaiMessages = [systemMessage, ...messages];
|
|
55
|
-
// Get model configuration
|
|
56
|
-
const
|
|
54
|
+
// Get model configuration - use injected modelConfig with optional override
|
|
55
|
+
const openaiModelConfig = getModelConfig(model || modelConfig.agentModel, {
|
|
57
56
|
temperature: 0,
|
|
58
57
|
max_completion_tokens: 32768,
|
|
59
58
|
});
|
|
60
59
|
// Prepare API call parameters
|
|
61
60
|
const createParams = {
|
|
62
|
-
...
|
|
61
|
+
...openaiModelConfig,
|
|
63
62
|
messages: openaiMessages,
|
|
64
63
|
};
|
|
65
64
|
// Only add tools if they exist
|
|
@@ -102,15 +101,20 @@ ${workdir}
|
|
|
102
101
|
}
|
|
103
102
|
}
|
|
104
103
|
export async function compressMessages(options) {
|
|
105
|
-
const { messages, abortSignal } = options;
|
|
106
|
-
//
|
|
107
|
-
const
|
|
104
|
+
const { gatewayConfig, modelConfig, messages, abortSignal } = options;
|
|
105
|
+
// Create OpenAI client with injected configuration
|
|
106
|
+
const openai = new OpenAI({
|
|
107
|
+
apiKey: gatewayConfig.apiKey,
|
|
108
|
+
baseURL: gatewayConfig.baseURL,
|
|
109
|
+
});
|
|
110
|
+
// Get model configuration - use injected fast model
|
|
111
|
+
const openaiModelConfig = getModelConfig(modelConfig.fastModel, {
|
|
108
112
|
temperature: 0.1,
|
|
109
113
|
max_tokens: 1500,
|
|
110
114
|
});
|
|
111
115
|
try {
|
|
112
116
|
const response = await openai.chat.completions.create({
|
|
113
|
-
...
|
|
117
|
+
...openaiModelConfig,
|
|
114
118
|
messages: [
|
|
115
119
|
{
|
|
116
120
|
role: "system",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/services/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAkBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG5D;AAcD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,iBAAiB,GAAE,MAAU,EAC7B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/services/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAkBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG5D;AAcD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,iBAAiB,GAAE,MAAU,EAC7B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAmB7B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAa7B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,kBAAkB,UAAQ,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC,CA2C5B;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYvE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B7E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASvE"}
|
package/dist/services/session.js
CHANGED
|
@@ -42,6 +42,10 @@ export async function saveSession(sessionId, messages, workdir, latestTotalToken
|
|
|
42
42
|
if (process.env.NODE_ENV === "test") {
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
|
+
// Do not save if there are no messages
|
|
46
|
+
if (messages.length === 0) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
45
49
|
await ensureSessionDir();
|
|
46
50
|
// Filter out diff blocks before saving
|
|
47
51
|
const filteredMessages = filterDiffBlocks(messages);
|
package/dist/types.d.ts
CHANGED
|
@@ -209,4 +209,61 @@ export declare const SKILL_DEFAULTS: {
|
|
|
209
209
|
readonly SCAN_TIMEOUT: 5000;
|
|
210
210
|
readonly LOAD_TIMEOUT: 2000;
|
|
211
211
|
};
|
|
212
|
+
export interface GatewayConfig {
|
|
213
|
+
apiKey: string;
|
|
214
|
+
baseURL: string;
|
|
215
|
+
}
|
|
216
|
+
export interface ModelConfig {
|
|
217
|
+
agentModel: string;
|
|
218
|
+
fastModel: string;
|
|
219
|
+
}
|
|
220
|
+
export interface ConfigurationResolver {
|
|
221
|
+
/**
|
|
222
|
+
* Resolves gateway configuration from constructor args and environment
|
|
223
|
+
* @param apiKey - API key from constructor (optional)
|
|
224
|
+
* @param baseURL - Base URL from constructor (optional)
|
|
225
|
+
* @returns Resolved gateway configuration
|
|
226
|
+
* @throws Error if required configuration is missing after fallbacks
|
|
227
|
+
*/
|
|
228
|
+
resolveGatewayConfig(apiKey?: string, baseURL?: string): GatewayConfig;
|
|
229
|
+
/**
|
|
230
|
+
* Resolves model configuration with fallbacks
|
|
231
|
+
* @param agentModel - Agent model from constructor (optional)
|
|
232
|
+
* @param fastModel - Fast model from constructor (optional)
|
|
233
|
+
* @returns Resolved model configuration with defaults
|
|
234
|
+
*/
|
|
235
|
+
resolveModelConfig(agentModel?: string, fastModel?: string): ModelConfig;
|
|
236
|
+
/**
|
|
237
|
+
* Resolves token limit with fallbacks
|
|
238
|
+
* @param constructorLimit - Token limit from constructor (optional)
|
|
239
|
+
* @returns Resolved token limit
|
|
240
|
+
*/
|
|
241
|
+
resolveTokenLimit(constructorLimit?: number): number;
|
|
242
|
+
}
|
|
243
|
+
export interface ConfigurationValidator {
|
|
244
|
+
/**
|
|
245
|
+
* Validates gateway configuration
|
|
246
|
+
* @param config - Configuration to validate
|
|
247
|
+
* @throws Error with descriptive message if invalid
|
|
248
|
+
*/
|
|
249
|
+
validateGatewayConfig(config: GatewayConfig): void;
|
|
250
|
+
/**
|
|
251
|
+
* Validates token limit value
|
|
252
|
+
* @param tokenLimit - Token limit to validate
|
|
253
|
+
* @throws Error if invalid
|
|
254
|
+
*/
|
|
255
|
+
validateTokenLimit(tokenLimit: number): void;
|
|
256
|
+
}
|
|
257
|
+
export declare class ConfigurationError extends Error {
|
|
258
|
+
readonly field: string;
|
|
259
|
+
readonly provided?: unknown | undefined;
|
|
260
|
+
constructor(message: string, field: string, provided?: unknown | undefined);
|
|
261
|
+
}
|
|
262
|
+
export declare const CONFIG_ERRORS: {
|
|
263
|
+
readonly MISSING_API_KEY: "Gateway configuration requires apiKey. Provide via constructor or AIGW_TOKEN environment variable.";
|
|
264
|
+
readonly MISSING_BASE_URL: "Gateway configuration requires baseURL. Provide via constructor or AIGW_URL environment variable.";
|
|
265
|
+
readonly INVALID_TOKEN_LIMIT: "Token limit must be a positive integer.";
|
|
266
|
+
readonly EMPTY_API_KEY: "API key cannot be empty string.";
|
|
267
|
+
readonly EMPTY_BASE_URL: "Base URL cannot be empty string.";
|
|
268
|
+
};
|
|
212
269
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -11,3 +11,19 @@ export const SKILL_DEFAULTS = {
|
|
|
11
11
|
SCAN_TIMEOUT: 5000,
|
|
12
12
|
LOAD_TIMEOUT: 2000,
|
|
13
13
|
};
|
|
14
|
+
export class ConfigurationError extends Error {
|
|
15
|
+
constructor(message, field, provided) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.field = field;
|
|
18
|
+
this.provided = provided;
|
|
19
|
+
this.name = "ConfigurationError";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Standard error messages
|
|
23
|
+
export const CONFIG_ERRORS = {
|
|
24
|
+
MISSING_API_KEY: "Gateway configuration requires apiKey. Provide via constructor or AIGW_TOKEN environment variable.",
|
|
25
|
+
MISSING_BASE_URL: "Gateway configuration requires baseURL. Provide via constructor or AIGW_URL environment variable.",
|
|
26
|
+
INVALID_TOKEN_LIMIT: "Token limit must be a positive integer.",
|
|
27
|
+
EMPTY_API_KEY: "API key cannot be empty string.",
|
|
28
|
+
EMPTY_BASE_URL: "Base URL cannot be empty string.",
|
|
29
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration resolver utilities for Agent Constructor Configuration
|
|
3
|
+
* Resolves configuration from constructor arguments with environment fallbacks
|
|
4
|
+
*/
|
|
5
|
+
import { GatewayConfig, ModelConfig } from "../types.js";
|
|
6
|
+
export declare class ConfigResolver {
|
|
7
|
+
/**
|
|
8
|
+
* Resolves gateway configuration from constructor args and environment
|
|
9
|
+
* @param apiKey - API key from constructor (optional)
|
|
10
|
+
* @param baseURL - Base URL from constructor (optional)
|
|
11
|
+
* @returns Resolved gateway configuration
|
|
12
|
+
* @throws ConfigurationError if required configuration is missing after fallbacks
|
|
13
|
+
*/
|
|
14
|
+
static resolveGatewayConfig(apiKey?: string, baseURL?: string): GatewayConfig;
|
|
15
|
+
/**
|
|
16
|
+
* Resolves model configuration with fallbacks
|
|
17
|
+
* @param agentModel - Agent model from constructor (optional)
|
|
18
|
+
* @param fastModel - Fast model from constructor (optional)
|
|
19
|
+
* @returns Resolved model configuration with defaults
|
|
20
|
+
*/
|
|
21
|
+
static resolveModelConfig(agentModel?: string, fastModel?: string): ModelConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Resolves token limit with fallbacks
|
|
24
|
+
* @param constructorLimit - Token limit from constructor (optional)
|
|
25
|
+
* @returns Resolved token limit
|
|
26
|
+
*/
|
|
27
|
+
static resolveTokenLimit(constructorLimit?: number): number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Static configuration resolver instance
|
|
31
|
+
* Implements ConfigurationResolver interface from types.ts
|
|
32
|
+
*/
|
|
33
|
+
export declare const configResolver: {
|
|
34
|
+
resolveGatewayConfig: typeof ConfigResolver.resolveGatewayConfig;
|
|
35
|
+
resolveModelConfig: typeof ConfigResolver.resolveModelConfig;
|
|
36
|
+
resolveTokenLimit: typeof ConfigResolver.resolveTokenLimit;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=configResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configResolver.d.ts","sourceRoot":"","sources":["../../src/utils/configResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,aAAa,EACb,WAAW,EAGZ,MAAM,aAAa,CAAC;AAErB,qBAAa,cAAc;IACzB;;;;;;OAMG;IACH,MAAM,CAAC,oBAAoB,CACzB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,aAAa;IAuDhB;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CACvB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,WAAW;IAmBd;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;CAoB5D;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;CAI1B,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration resolver utilities for Agent Constructor Configuration
|
|
3
|
+
* Resolves configuration from constructor arguments with environment fallbacks
|
|
4
|
+
*/
|
|
5
|
+
import { ConfigurationError, CONFIG_ERRORS, } from "../types.js";
|
|
6
|
+
export class ConfigResolver {
|
|
7
|
+
/**
|
|
8
|
+
* Resolves gateway configuration from constructor args and environment
|
|
9
|
+
* @param apiKey - API key from constructor (optional)
|
|
10
|
+
* @param baseURL - Base URL from constructor (optional)
|
|
11
|
+
* @returns Resolved gateway configuration
|
|
12
|
+
* @throws ConfigurationError if required configuration is missing after fallbacks
|
|
13
|
+
*/
|
|
14
|
+
static resolveGatewayConfig(apiKey, baseURL) {
|
|
15
|
+
// Resolve API key: constructor > environment variable
|
|
16
|
+
// Note: Explicitly provided empty strings should be treated as invalid, not fall back to env
|
|
17
|
+
let resolvedApiKey;
|
|
18
|
+
if (apiKey !== undefined) {
|
|
19
|
+
resolvedApiKey = apiKey;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
resolvedApiKey = process.env.AIGW_TOKEN || "";
|
|
23
|
+
}
|
|
24
|
+
if (!resolvedApiKey && apiKey === undefined) {
|
|
25
|
+
throw new ConfigurationError(CONFIG_ERRORS.MISSING_API_KEY, "apiKey", {
|
|
26
|
+
constructor: apiKey,
|
|
27
|
+
environment: process.env.AIGW_TOKEN,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (resolvedApiKey.trim() === "") {
|
|
31
|
+
throw new ConfigurationError(CONFIG_ERRORS.EMPTY_API_KEY, "apiKey", resolvedApiKey);
|
|
32
|
+
}
|
|
33
|
+
// Resolve base URL: constructor > environment variable
|
|
34
|
+
// Note: Explicitly provided empty strings should be treated as invalid, not fall back to env
|
|
35
|
+
let resolvedBaseURL;
|
|
36
|
+
if (baseURL !== undefined) {
|
|
37
|
+
resolvedBaseURL = baseURL;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
resolvedBaseURL = process.env.AIGW_URL || "";
|
|
41
|
+
}
|
|
42
|
+
if (!resolvedBaseURL && baseURL === undefined) {
|
|
43
|
+
throw new ConfigurationError(CONFIG_ERRORS.MISSING_BASE_URL, "baseURL", {
|
|
44
|
+
constructor: baseURL,
|
|
45
|
+
environment: process.env.AIGW_URL,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
if (resolvedBaseURL.trim() === "") {
|
|
49
|
+
throw new ConfigurationError(CONFIG_ERRORS.EMPTY_BASE_URL, "baseURL", resolvedBaseURL);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
apiKey: resolvedApiKey,
|
|
53
|
+
baseURL: resolvedBaseURL,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resolves model configuration with fallbacks
|
|
58
|
+
* @param agentModel - Agent model from constructor (optional)
|
|
59
|
+
* @param fastModel - Fast model from constructor (optional)
|
|
60
|
+
* @returns Resolved model configuration with defaults
|
|
61
|
+
*/
|
|
62
|
+
static resolveModelConfig(agentModel, fastModel) {
|
|
63
|
+
// Default values as per data-model.md
|
|
64
|
+
const DEFAULT_AGENT_MODEL = "claude-sonnet-4-20250514";
|
|
65
|
+
const DEFAULT_FAST_MODEL = "gemini-2.5-flash";
|
|
66
|
+
// Resolve agent model: constructor > environment > default
|
|
67
|
+
const resolvedAgentModel = agentModel || process.env.AIGW_MODEL || DEFAULT_AGENT_MODEL;
|
|
68
|
+
// Resolve fast model: constructor > environment > default
|
|
69
|
+
const resolvedFastModel = fastModel || process.env.AIGW_FAST_MODEL || DEFAULT_FAST_MODEL;
|
|
70
|
+
return {
|
|
71
|
+
agentModel: resolvedAgentModel,
|
|
72
|
+
fastModel: resolvedFastModel,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Resolves token limit with fallbacks
|
|
77
|
+
* @param constructorLimit - Token limit from constructor (optional)
|
|
78
|
+
* @returns Resolved token limit
|
|
79
|
+
*/
|
|
80
|
+
static resolveTokenLimit(constructorLimit) {
|
|
81
|
+
const DEFAULT_TOKEN_LIMIT = 64000;
|
|
82
|
+
// If constructor value provided, use it
|
|
83
|
+
if (constructorLimit !== undefined) {
|
|
84
|
+
return constructorLimit;
|
|
85
|
+
}
|
|
86
|
+
// Try environment variable
|
|
87
|
+
const envTokenLimit = process.env.TOKEN_LIMIT;
|
|
88
|
+
if (envTokenLimit) {
|
|
89
|
+
const parsed = parseInt(envTokenLimit, 10);
|
|
90
|
+
if (!isNaN(parsed)) {
|
|
91
|
+
return parsed;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Use default
|
|
95
|
+
return DEFAULT_TOKEN_LIMIT;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Static configuration resolver instance
|
|
100
|
+
* Implements ConfigurationResolver interface from types.ts
|
|
101
|
+
*/
|
|
102
|
+
export const configResolver = {
|
|
103
|
+
resolveGatewayConfig: ConfigResolver.resolveGatewayConfig,
|
|
104
|
+
resolveModelConfig: ConfigResolver.resolveModelConfig,
|
|
105
|
+
resolveTokenLimit: ConfigResolver.resolveTokenLimit,
|
|
106
|
+
};
|