jiva-core 0.3.41 → 0.3.42-dev.b6b238d
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 +28 -7
- package/dist/code/agent.d.ts +4 -0
- package/dist/code/agent.d.ts.map +1 -1
- package/dist/code/agent.js +70 -18
- package/dist/code/agent.js.map +1 -1
- package/dist/core/agent-interface.d.ts +8 -0
- package/dist/core/agent-interface.d.ts.map +1 -1
- package/dist/core/agent-spawner.d.ts.map +1 -1
- package/dist/core/agent-spawner.js +2 -1
- package/dist/core/agent-spawner.js.map +1 -1
- package/dist/core/config.d.ts +56 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +4 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/conversation-manager.d.ts +4 -3
- package/dist/core/conversation-manager.d.ts.map +1 -1
- package/dist/core/conversation-manager.js +16 -8
- package/dist/core/conversation-manager.js.map +1 -1
- package/dist/core/dual-agent.d.ts +3 -0
- package/dist/core/dual-agent.d.ts.map +1 -1
- package/dist/core/dual-agent.js +15 -4
- package/dist/core/dual-agent.js.map +1 -1
- package/dist/core/worker-agent.d.ts.map +1 -1
- package/dist/core/worker-agent.js +32 -0
- package/dist/core/worker-agent.js.map +1 -1
- package/dist/core/workspace.d.ts +6 -0
- package/dist/core/workspace.d.ts.map +1 -1
- package/dist/core/workspace.js +18 -0
- package/dist/core/workspace.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/cli/index.js +7 -7
- package/dist/interfaces/cli/index.js.map +1 -1
- package/dist/interfaces/cli/repl.d.ts.map +1 -1
- package/dist/interfaces/cli/repl.js +21 -3
- package/dist/interfaces/cli/repl.js.map +1 -1
- package/dist/interfaces/cli/setup-wizard.d.ts +5 -3
- package/dist/interfaces/cli/setup-wizard.d.ts.map +1 -1
- package/dist/interfaces/cli/setup-wizard.js +265 -288
- package/dist/interfaces/cli/setup-wizard.js.map +1 -1
- package/dist/interfaces/http/middleware/auth.d.ts.map +1 -1
- package/dist/interfaces/http/middleware/auth.js +2 -1
- package/dist/interfaces/http/middleware/auth.js.map +1 -1
- package/dist/interfaces/http/routes/chat.d.ts.map +1 -1
- package/dist/interfaces/http/routes/chat.js +20 -0
- package/dist/interfaces/http/routes/chat.js.map +1 -1
- package/dist/interfaces/http/session-manager.d.ts +6 -0
- package/dist/interfaces/http/session-manager.d.ts.map +1 -1
- package/dist/interfaces/http/session-manager.js +14 -5
- package/dist/interfaces/http/session-manager.js.map +1 -1
- package/dist/interfaces/http/websocket-handler.d.ts.map +1 -1
- package/dist/interfaces/http/websocket-handler.js +12 -0
- package/dist/interfaces/http/websocket-handler.js.map +1 -1
- package/dist/models/krutrim.d.ts +8 -66
- package/dist/models/krutrim.d.ts.map +1 -1
- package/dist/models/krutrim.js +7 -307
- package/dist/models/krutrim.js.map +1 -1
- package/dist/models/model-client.d.ts +95 -0
- package/dist/models/model-client.d.ts.map +1 -0
- package/dist/models/model-client.js +317 -0
- package/dist/models/model-client.js.map +1 -0
- package/dist/models/orchestrator.d.ts +9 -8
- package/dist/models/orchestrator.d.ts.map +1 -1
- package/dist/models/orchestrator.js +2 -1
- package/dist/models/orchestrator.js.map +1 -1
- package/dist/storage/types.d.ts +1 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI-Compatible Model Client
|
|
3
|
+
*
|
|
4
|
+
* Generic client for any OpenAI-compatible chat completion API.
|
|
5
|
+
* Supports: Krutrim, Groq, Sarvam, OpenAI, and any other provider
|
|
6
|
+
* that exposes a /v1/chat/completions endpoint.
|
|
7
|
+
*
|
|
8
|
+
* Provider-specific behaviour is controlled entirely through config flags:
|
|
9
|
+
* - useHarmonyFormat → Krutrim gpt-oss-120b (Harmony tool format)
|
|
10
|
+
* - reasoningEffortStrategy → how reasoning effort is communicated
|
|
11
|
+
* - defaultMaxTokens → required for reasoning models (e.g. Sarvam-105B)
|
|
12
|
+
*/
|
|
13
|
+
import { formatMessagesForHarmony, parseHarmonyResponse } from './harmony.js';
|
|
14
|
+
import { ModelError } from '../utils/errors.js';
|
|
15
|
+
import { logger } from '../utils/logger.js';
|
|
16
|
+
export class ModelClient {
|
|
17
|
+
config;
|
|
18
|
+
constructor(config) {
|
|
19
|
+
this.config = config;
|
|
20
|
+
}
|
|
21
|
+
supportsVision() {
|
|
22
|
+
return this.config.type === 'multimodal';
|
|
23
|
+
}
|
|
24
|
+
supportsToolCalling() {
|
|
25
|
+
// Both the reasoning model and dedicated tool-calling model support tool calling
|
|
26
|
+
return this.config.type === 'reasoning' || this.config.type === 'tool-calling';
|
|
27
|
+
}
|
|
28
|
+
async chat(options) {
|
|
29
|
+
// 'tool-calling' models are treated as reasoning models for tool-call formatting purposes
|
|
30
|
+
const isReasoningModel = this.config.type === 'reasoning' || this.config.type === 'tool-calling';
|
|
31
|
+
// Retry logic for transient errors (WAF/rate limiting/server errors)
|
|
32
|
+
const maxRetries = 4;
|
|
33
|
+
let lastError = null;
|
|
34
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
35
|
+
if (attempt > 0) {
|
|
36
|
+
await new Promise(resolve => setTimeout(resolve, this._lastRetryWait ?? 2000));
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
return await this.attemptChat(options, isReasoningModel);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
lastError = error;
|
|
43
|
+
// Retry on transient errors: 403 (WAF), 429 (rate limit), 500/502/503/504 (server errors)
|
|
44
|
+
if (error instanceof ModelError) {
|
|
45
|
+
const is429 = error.message.includes('(429)');
|
|
46
|
+
const shouldRetry = error.message.includes('(403)') || // WAF blocking
|
|
47
|
+
is429 || // Rate limiting
|
|
48
|
+
error.message.includes('(500)') || // Internal server error
|
|
49
|
+
error.message.includes('(502)') || // Bad gateway
|
|
50
|
+
error.message.includes('(503)') || // Service unavailable
|
|
51
|
+
error.message.includes('(504)'); // Gateway timeout
|
|
52
|
+
if (!shouldRetry || attempt === maxRetries) {
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
// Log the error type for debugging
|
|
56
|
+
let errorType = 'Unknown error';
|
|
57
|
+
if (error.message.includes('(403)'))
|
|
58
|
+
errorType = '403 Access Denied (WAF)';
|
|
59
|
+
else if (is429)
|
|
60
|
+
errorType = '429 Rate Limited';
|
|
61
|
+
else if (error.message.includes('(500)'))
|
|
62
|
+
errorType = '500 Internal Server Error';
|
|
63
|
+
else if (error.message.includes('(502)'))
|
|
64
|
+
errorType = '502 Bad Gateway';
|
|
65
|
+
else if (error.message.includes('(503)'))
|
|
66
|
+
errorType = '503 Service Unavailable';
|
|
67
|
+
else if (error.message.includes('(504)'))
|
|
68
|
+
errorType = '504 Gateway Timeout';
|
|
69
|
+
// For 429s, parse the actual retry-after time from the error message.
|
|
70
|
+
// Groq returns: "Please try again in 8.53s."
|
|
71
|
+
if (is429) {
|
|
72
|
+
const match = error.message.match(/try again in (\d+(?:\.\d+)?)\s*s/i);
|
|
73
|
+
const retryAfterMs = match ? Math.ceil(parseFloat(match[1]) * 1000) + 500 : null;
|
|
74
|
+
// Use parsed time, falling back to capped exponential backoff
|
|
75
|
+
const exponential = Math.min(Math.pow(2, attempt) * 1000, 30_000);
|
|
76
|
+
this._lastRetryWait = retryAfterMs ?? exponential;
|
|
77
|
+
logger.warn(`Got ${errorType}, will retry in ${(this._lastRetryWait / 1000).toFixed(1)}s (attempt ${attempt + 1}/${maxRetries + 1})...`);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
const waitTime = Math.min(Math.pow(2, attempt) * 1000, 30_000);
|
|
81
|
+
this._lastRetryWait = waitTime;
|
|
82
|
+
logger.warn(`Got ${errorType}, will retry in ${waitTime / 1000}s (attempt ${attempt + 1}/${maxRetries + 1})...`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
throw lastError;
|
|
91
|
+
}
|
|
92
|
+
/** Retry wait time in ms, set dynamically based on API hint or exponential backoff. */
|
|
93
|
+
_lastRetryWait;
|
|
94
|
+
async attemptChat(options, isReasoningModel) {
|
|
95
|
+
try {
|
|
96
|
+
let messages;
|
|
97
|
+
let tools;
|
|
98
|
+
const useHarmony = this.config.useHarmonyFormat ?? false;
|
|
99
|
+
if (isReasoningModel && options.tools && options.tools.length > 0) {
|
|
100
|
+
if (useHarmony) {
|
|
101
|
+
// Harmony format (Krutrim gpt-oss-120b only)
|
|
102
|
+
// Tools are embedded in the developer message as XML/TypeScript signatures
|
|
103
|
+
tools = options.tools.map(t => ({
|
|
104
|
+
name: t.name,
|
|
105
|
+
description: t.description,
|
|
106
|
+
parameters: t.parameters,
|
|
107
|
+
}));
|
|
108
|
+
messages = formatMessagesForHarmony(options.messages, tools);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// Standard OpenAI format - tools sent as separate request field
|
|
112
|
+
messages = options.messages;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
messages = options.messages;
|
|
117
|
+
}
|
|
118
|
+
// All OpenAI-compatible APIs support standard roles: system, user, assistant, tool
|
|
119
|
+
// Convert 'developer' role to 'system' for API compatibility
|
|
120
|
+
const apiMessages = messages.map((msg) => {
|
|
121
|
+
if (msg.role === 'developer') {
|
|
122
|
+
return { ...msg, role: 'system' };
|
|
123
|
+
}
|
|
124
|
+
return msg;
|
|
125
|
+
});
|
|
126
|
+
// ── Reasoning effort ────────────────────────────────────────────────────
|
|
127
|
+
// Per-call value takes precedence over model-level default.
|
|
128
|
+
const effort = options.reasoningEffort ?? this.config.defaultReasoningEffort;
|
|
129
|
+
const strategy = this.config.reasoningEffortStrategy ?? 'both';
|
|
130
|
+
// System-prompt injection: prepend "Reasoning: <level>" as the very first
|
|
131
|
+
// system message. Required for gpt-oss-120b on Krutrim (it strips the API param).
|
|
132
|
+
if (effort && isReasoningModel && (strategy === 'system_prompt' || strategy === 'both')) {
|
|
133
|
+
apiMessages.unshift({ role: 'system', content: `Reasoning: ${effort}` });
|
|
134
|
+
}
|
|
135
|
+
const requestBody = {
|
|
136
|
+
model: options.model || this.config.model,
|
|
137
|
+
messages: apiMessages,
|
|
138
|
+
temperature: options.temperature ?? 0.2, // Lower default to reduce hallucination
|
|
139
|
+
};
|
|
140
|
+
// max_tokens: explicit call option > config default
|
|
141
|
+
// Config default is important for reasoning models (Sarvam-105B) that need
|
|
142
|
+
// a large token budget to finish their thinking chain before producing output.
|
|
143
|
+
const maxTokens = options.maxTokens ?? this.config.defaultMaxTokens;
|
|
144
|
+
if (maxTokens) {
|
|
145
|
+
requestBody.max_tokens = maxTokens;
|
|
146
|
+
}
|
|
147
|
+
// API param: supported natively by Groq and Sarvam; silently ignored elsewhere.
|
|
148
|
+
if (effort && isReasoningModel && (strategy === 'api_param' || strategy === 'both')) {
|
|
149
|
+
requestBody.reasoning_effort = effort;
|
|
150
|
+
}
|
|
151
|
+
// include_reasoning: request thinking tokens in the response (Groq-specific).
|
|
152
|
+
// Sarvam always returns reasoning_content regardless of this flag.
|
|
153
|
+
if (this.config.includeReasoning && isReasoningModel) {
|
|
154
|
+
requestBody.include_reasoning = true;
|
|
155
|
+
}
|
|
156
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
157
|
+
// Send tools in standard OpenAI format if not using Harmony
|
|
158
|
+
if (!useHarmony && isReasoningModel && options.tools && options.tools.length > 0) {
|
|
159
|
+
requestBody.tools = options.tools.map(t => ({
|
|
160
|
+
type: 'function',
|
|
161
|
+
function: {
|
|
162
|
+
name: t.name,
|
|
163
|
+
description: t.description,
|
|
164
|
+
parameters: t.parameters,
|
|
165
|
+
},
|
|
166
|
+
}));
|
|
167
|
+
requestBody.tool_choice = 'auto';
|
|
168
|
+
}
|
|
169
|
+
// Log full request for debugging
|
|
170
|
+
logger.debug('API Request:', JSON.stringify(requestBody, null, 2));
|
|
171
|
+
logger.debug('Request size:', JSON.stringify(requestBody).length, 'bytes');
|
|
172
|
+
logger.debug('Message count:', requestBody.messages.length);
|
|
173
|
+
const response = await fetch(this.config.endpoint, {
|
|
174
|
+
method: 'POST',
|
|
175
|
+
headers: {
|
|
176
|
+
'Content-Type': 'application/json',
|
|
177
|
+
'Authorization': `Bearer ${this.config.apiKey}`,
|
|
178
|
+
'User-Agent': 'Jiva/0.1.0',
|
|
179
|
+
'Accept': 'application/json',
|
|
180
|
+
},
|
|
181
|
+
body: JSON.stringify(requestBody),
|
|
182
|
+
});
|
|
183
|
+
if (!response.ok) {
|
|
184
|
+
const errorText = await response.text();
|
|
185
|
+
logger.error(`API Error Response (${response.status}):`, errorText);
|
|
186
|
+
logger.debug('Request that failed:', JSON.stringify(requestBody, null, 2));
|
|
187
|
+
// Write failing request to file for debugging
|
|
188
|
+
if (response.status === 403) {
|
|
189
|
+
try {
|
|
190
|
+
const fs = await import('fs');
|
|
191
|
+
const debugPath = '/tmp/jiva_failed_request.json';
|
|
192
|
+
await fs.promises.writeFile(debugPath, JSON.stringify(requestBody, null, 2));
|
|
193
|
+
logger.warn(`Failing request saved to: ${debugPath}`);
|
|
194
|
+
}
|
|
195
|
+
catch (e) {
|
|
196
|
+
// Ignore file write errors
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
throw new ModelError(`API error (${response.status}): ${errorText}`, this.config.model);
|
|
200
|
+
}
|
|
201
|
+
const data = await response.json();
|
|
202
|
+
logger.debug('API Response:', JSON.stringify(data, null, 2));
|
|
203
|
+
if (!data.choices || data.choices.length === 0) {
|
|
204
|
+
throw new ModelError('No choices in response', this.config.model);
|
|
205
|
+
}
|
|
206
|
+
const choice = data.choices[0];
|
|
207
|
+
const messageContent = choice.message?.content || '';
|
|
208
|
+
// Log reasoning tokens at debug level.
|
|
209
|
+
// Groq exposes them as choice.message.reasoning
|
|
210
|
+
// Sarvam exposes them as choice.message.reasoning_content
|
|
211
|
+
const reasoningTokens = choice.message?.reasoning_content ?? choice.message?.reasoning;
|
|
212
|
+
if (reasoningTokens) {
|
|
213
|
+
logger.debug(`[Model reasoning] ${reasoningTokens.substring(0, 2000)}${reasoningTokens.length > 2000 ? '…' : ''}`);
|
|
214
|
+
}
|
|
215
|
+
// Parse response based on format used
|
|
216
|
+
if (useHarmony && isReasoningModel && options.tools && options.tools.length > 0) {
|
|
217
|
+
// Parse Harmony format response (Krutrim gpt-oss-120b only)
|
|
218
|
+
const parsed = parseHarmonyResponse(messageContent);
|
|
219
|
+
return {
|
|
220
|
+
content: parsed.final || parsed.commentary || messageContent,
|
|
221
|
+
toolCalls: parsed.toolCalls.length > 0 ? parsed.toolCalls : undefined,
|
|
222
|
+
usage: data.usage ? {
|
|
223
|
+
promptTokens: data.usage.prompt_tokens || 0,
|
|
224
|
+
completionTokens: data.usage.completion_tokens || 0,
|
|
225
|
+
totalTokens: data.usage.total_tokens || 0,
|
|
226
|
+
} : undefined,
|
|
227
|
+
raw: {
|
|
228
|
+
...data,
|
|
229
|
+
parsedHarmony: parsed,
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
// Standard OpenAI format response
|
|
235
|
+
const toolCalls = choice.message?.tool_calls;
|
|
236
|
+
return {
|
|
237
|
+
content: messageContent,
|
|
238
|
+
toolCalls: toolCalls && toolCalls.length > 0 ? toolCalls : undefined,
|
|
239
|
+
usage: data.usage ? {
|
|
240
|
+
promptTokens: data.usage.prompt_tokens || 0,
|
|
241
|
+
completionTokens: data.usage.completion_tokens || 0,
|
|
242
|
+
totalTokens: data.usage.total_tokens || 0,
|
|
243
|
+
} : undefined,
|
|
244
|
+
raw: data,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
if (error instanceof ModelError) {
|
|
250
|
+
throw error;
|
|
251
|
+
}
|
|
252
|
+
throw new ModelError(`Failed to communicate with API: ${error instanceof Error ? error.message : String(error)}`, this.config.model);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Helper method for vision tasks using multimodal model
|
|
257
|
+
*/
|
|
258
|
+
async describeImage(imageUrl, prompt) {
|
|
259
|
+
if (!this.supportsVision()) {
|
|
260
|
+
throw new ModelError('This model does not support vision tasks', this.config.model);
|
|
261
|
+
}
|
|
262
|
+
const response = await this.chat({
|
|
263
|
+
model: this.config.model,
|
|
264
|
+
messages: [
|
|
265
|
+
{
|
|
266
|
+
role: 'user',
|
|
267
|
+
content: [
|
|
268
|
+
{
|
|
269
|
+
type: 'text',
|
|
270
|
+
text: prompt || 'Describe this image in detail.',
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
type: 'image_url',
|
|
274
|
+
image_url: {
|
|
275
|
+
url: imageUrl,
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
],
|
|
279
|
+
},
|
|
280
|
+
],
|
|
281
|
+
});
|
|
282
|
+
return response.content;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Test connectivity to the API endpoint
|
|
286
|
+
*/
|
|
287
|
+
async testConnectivity() {
|
|
288
|
+
const startTime = Date.now();
|
|
289
|
+
try {
|
|
290
|
+
logger.debug(`Testing connectivity to ${this.config.endpoint}...`);
|
|
291
|
+
const testResponse = await this.chat({
|
|
292
|
+
messages: [{ role: 'user', content: 'test' }],
|
|
293
|
+
temperature: 0,
|
|
294
|
+
maxTokens: 5,
|
|
295
|
+
reasoningEffort: 'low',
|
|
296
|
+
});
|
|
297
|
+
const latency = Date.now() - startTime;
|
|
298
|
+
logger.debug(`Connectivity test passed in ${latency}ms`);
|
|
299
|
+
return { success: true, latency };
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
303
|
+
logger.error(`Connectivity test failed: ${errorMessage}`);
|
|
304
|
+
return {
|
|
305
|
+
success: false,
|
|
306
|
+
error: errorMessage,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Factory function to create a model client instance
|
|
313
|
+
*/
|
|
314
|
+
export function createModelClient(config) {
|
|
315
|
+
return new ModelClient(config);
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=model-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-client.js","sourceRoot":"","sources":["../../src/models/model-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Multi-Model Orchestrator
|
|
3
3
|
*
|
|
4
|
-
* Coordinates between reasoning
|
|
4
|
+
* Coordinates between reasoning, multimodal, and tool-calling model instances.
|
|
5
|
+
* Provider-agnostic: works with any ModelClient (Krutrim, Groq, Sarvam, OpenAI-compatible).
|
|
5
6
|
*/
|
|
6
|
-
import {
|
|
7
|
+
import { ModelClient } from './model-client.js';
|
|
7
8
|
import { ChatCompletionOptions, ModelResponse } from './base.js';
|
|
8
9
|
export interface OrchestratorConfig {
|
|
9
|
-
reasoningModel:
|
|
10
|
-
multimodalModel?:
|
|
10
|
+
reasoningModel: ModelClient;
|
|
11
|
+
multimodalModel?: ModelClient;
|
|
11
12
|
/**
|
|
12
13
|
* Optional dedicated tool-calling LLM.
|
|
13
14
|
* When configured this model is used as the *primary* model for all tool
|
|
@@ -15,7 +16,7 @@ export interface OrchestratorConfig {
|
|
|
15
16
|
* The reasoning model then serves as the secondary fallback.
|
|
16
17
|
* If not configured the reasoning model is the only model used for tool calls.
|
|
17
18
|
*/
|
|
18
|
-
toolCallingModel?:
|
|
19
|
+
toolCallingModel?: ModelClient;
|
|
19
20
|
}
|
|
20
21
|
export declare class ModelOrchestrator {
|
|
21
22
|
private reasoningModel;
|
|
@@ -56,15 +57,15 @@ export declare class ModelOrchestrator {
|
|
|
56
57
|
/**
|
|
57
58
|
* Get reasoning model instance
|
|
58
59
|
*/
|
|
59
|
-
getReasoningModel():
|
|
60
|
+
getReasoningModel(): ModelClient;
|
|
60
61
|
/**
|
|
61
62
|
* Get multimodal model instance if configured
|
|
62
63
|
*/
|
|
63
|
-
getMultimodalModel():
|
|
64
|
+
getMultimodalModel(): ModelClient | undefined;
|
|
64
65
|
/**
|
|
65
66
|
* Get tool-calling model instance if configured
|
|
66
67
|
*/
|
|
67
|
-
getToolCallingModel():
|
|
68
|
+
getToolCallingModel(): ModelClient | undefined;
|
|
68
69
|
/**
|
|
69
70
|
* Check if multimodal support is available
|
|
70
71
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/models/orchestrator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/models/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAA2B,qBAAqB,EAAE,aAAa,EAAQ,MAAM,WAAW,CAAC;AAIhG,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,WAAW,CAAC;IAC5B,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC;CAChC;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,eAAe,CAAC,CAAc;IACtC,OAAO,CAAC,gBAAgB,CAAC,CAAc;gBAE3B,MAAM,EAAE,kBAAkB;IAMtC;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlE;;;;;OAKG;IACG,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAmBpG;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;YACW,uBAAuB;IA0DrC;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAiCrC;;OAEG;IACH,iBAAiB,IAAI,WAAW;IAIhC;;OAEG;IACH,kBAAkB,IAAI,WAAW,GAAG,SAAS;IAI7C;;OAEG;IACH,mBAAmB,IAAI,WAAW,GAAG,SAAS;IAI9C;;OAEG;IACH,oBAAoB,IAAI,OAAO;CAGhC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Multi-Model Orchestrator
|
|
3
3
|
*
|
|
4
|
-
* Coordinates between reasoning
|
|
4
|
+
* Coordinates between reasoning, multimodal, and tool-calling model instances.
|
|
5
|
+
* Provider-agnostic: works with any ModelClient (Krutrim, Groq, Sarvam, OpenAI-compatible).
|
|
5
6
|
*/
|
|
6
7
|
import { logger } from '../utils/logger.js';
|
|
7
8
|
import { ModelError } from '../utils/errors.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/models/orchestrator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/models/orchestrator.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAGnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAG5B,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAGvC,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,KAAK,UAAU;IACf,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0FH;;GAEG;AACH,MAAM,CAAN,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,gDAAyB,CAAA;IACzB,wCAAiB,CAAA;IACjB,sCAAe,CAAA;AACjB,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jiva-core",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.42-dev.b6b238d",
|
|
4
4
|
"description": "Versatile autonomous AI agent with three-agent architecture (Manager, Worker, Client) powered by gpt-oss-120b. Adaptive validation, full MCP support, and intelligent quality control.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|