adonis-ai-kit 1.1.0 → 1.2.0
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/CHANGELOG.md +74 -0
- package/README.md +77 -5
- package/dist/src/acp/acp_agents.d.ts +25 -11
- package/dist/src/acp/acp_agents.d.ts.map +1 -1
- package/dist/src/acp/acp_agents.js +62 -38
- package/dist/src/acp/acp_agents.js.map +1 -1
- package/dist/src/acp/provider.d.ts +14 -4
- package/dist/src/acp/provider.d.ts.map +1 -1
- package/dist/src/acp/provider.js +23 -2
- package/dist/src/acp/provider.js.map +1 -1
- package/dist/src/acp/types.d.ts +21 -0
- package/dist/src/acp/types.d.ts.map +1 -1
- package/dist/src/agents/loader.d.ts +3 -3
- package/dist/src/agents/loader.d.ts.map +1 -1
- package/dist/src/agents/loader.js.map +1 -1
- package/dist/src/ai_manager.d.ts +12 -8
- package/dist/src/ai_manager.d.ts.map +1 -1
- package/dist/src/ai_manager.js +128 -15
- package/dist/src/ai_manager.js.map +1 -1
- package/dist/src/budget/types.d.ts +1 -6
- package/dist/src/budget/types.d.ts.map +1 -1
- package/dist/src/catalog/source.d.ts +18 -3
- package/dist/src/catalog/source.d.ts.map +1 -1
- package/dist/src/catalog/source.js +15 -5
- package/dist/src/catalog/source.js.map +1 -1
- package/dist/src/circuit_breaker.d.ts +21 -0
- package/dist/src/circuit_breaker.d.ts.map +1 -1
- package/dist/src/circuit_breaker.js +64 -19
- package/dist/src/circuit_breaker.js.map +1 -1
- package/dist/src/error_classifier.d.ts +34 -1
- package/dist/src/error_classifier.d.ts.map +1 -1
- package/dist/src/error_classifier.js +159 -33
- package/dist/src/error_classifier.js.map +1 -1
- package/dist/src/guard/registry.d.ts +6 -0
- package/dist/src/guard/registry.d.ts.map +1 -1
- package/dist/src/guard/registry.js +12 -2
- package/dist/src/guard/registry.js.map +1 -1
- package/dist/src/guard/types.d.ts +6 -7
- package/dist/src/guard/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +4 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/logger.d.ts +7 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +2 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/models/catalog_resolver.d.ts +24 -0
- package/dist/src/models/catalog_resolver.d.ts.map +1 -0
- package/dist/src/models/catalog_resolver.js +66 -0
- package/dist/src/models/catalog_resolver.js.map +1 -0
- package/dist/src/models/index.d.ts +14 -0
- package/dist/src/models/index.d.ts.map +1 -0
- package/dist/src/models/index.js +8 -0
- package/dist/src/models/index.js.map +1 -0
- package/dist/src/models/keys.d.ts +9 -0
- package/dist/src/models/keys.d.ts.map +1 -0
- package/dist/src/models/keys.js +12 -0
- package/dist/src/models/keys.js.map +1 -0
- package/dist/src/models/language_model_factory.d.ts +44 -0
- package/dist/src/models/language_model_factory.d.ts.map +1 -0
- package/dist/src/models/language_model_factory.js +193 -0
- package/dist/src/models/language_model_factory.js.map +1 -0
- package/dist/src/models/model_chain.d.ts +58 -0
- package/dist/src/models/model_chain.d.ts.map +1 -0
- package/dist/src/models/model_chain.js +144 -0
- package/dist/src/models/model_chain.js.map +1 -0
- package/dist/src/models/model_ref.d.ts +12 -0
- package/dist/src/models/model_ref.d.ts.map +1 -0
- package/dist/src/models/model_ref.js +33 -0
- package/dist/src/models/model_ref.js.map +1 -0
- package/dist/src/models/protocols.d.ts +6 -0
- package/dist/src/models/protocols.d.ts.map +1 -0
- package/dist/src/models/protocols.js +33 -0
- package/dist/src/models/protocols.js.map +1 -0
- package/dist/src/models/provider_factories.d.ts +19 -0
- package/dist/src/models/provider_factories.d.ts.map +1 -0
- package/dist/src/models/provider_factories.js +70 -0
- package/dist/src/models/provider_factories.js.map +1 -0
- package/dist/src/models/types.d.ts +17 -0
- package/dist/src/models/types.d.ts.map +1 -0
- package/dist/src/models/types.js +2 -0
- package/dist/src/models/types.js.map +1 -0
- package/dist/src/types.d.ts +46 -3
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +70 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error_classifier.d.ts","sourceRoot":"","sources":["../../src/error_classifier.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"error_classifier.d.ts","sourceRoot":"","sources":["../../src/error_classifier.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAA;AAEtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,4EAA4E;IAC5E,UAAU,EAAE,UAAU,CAAA;IACtB,6GAA6G;IAC7G,eAAe,EAAE,OAAO,CAAA;CACzB;AA+DD;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAClB,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,GACd,eAAe,GACf,qBAAqB,GACrB,SAAS,CAAA;AAkBb;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CA0B7D;AAYD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAEhE;AAUD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAEtE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,mBAAmB,CAqC5F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAyBrE"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AiException, ProviderUnavailableError } from './errors.js';
|
|
2
|
-
const RETRYABLE_STATUS = new Set([408, 409, 425, 429]);
|
|
3
2
|
const NETWORK_CODES = new Set([
|
|
4
3
|
'ECONNRESET',
|
|
5
4
|
'ECONNREFUSED',
|
|
@@ -27,54 +26,181 @@ const FATAL_NAMES = new Set([
|
|
|
27
26
|
'AI_LoadAPIKeyError',
|
|
28
27
|
'ZodError',
|
|
29
28
|
]);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
const NETWORK_MESSAGE = /fetch failed|network|socket hang up|timed? ?out|connection (reset|refused|closed)/i;
|
|
30
|
+
/**
|
|
31
|
+
* Returns the first value `pick` extracts from the error or from its `cause` / `lastError`
|
|
32
|
+
* chain (AI SDK `RetryError` keeps the real failure in `lastError`), looking at most `depth` levels down.
|
|
33
|
+
*/
|
|
34
|
+
function findErrorField(error, pick, depth = 5) {
|
|
35
|
+
if (error === null || typeof error !== 'object')
|
|
36
|
+
return undefined;
|
|
37
|
+
const node = error;
|
|
38
|
+
const own = pick(node);
|
|
39
|
+
if (own !== undefined)
|
|
40
|
+
return own;
|
|
41
|
+
if (depth <= 0)
|
|
42
|
+
return undefined;
|
|
43
|
+
return findErrorField(node.cause, pick, depth - 1) ?? findErrorField(node.lastError, pick, depth - 1);
|
|
44
|
+
}
|
|
45
|
+
const asNumber = (v) => (typeof v === 'number' ? v : undefined);
|
|
46
|
+
function statusOf(error) {
|
|
47
|
+
return findErrorField(error, (n) => asNumber(n.statusCode) ?? asNumber(n.status) ?? asNumber(n.response?.status));
|
|
48
|
+
}
|
|
49
|
+
function codeOf(error) {
|
|
50
|
+
return findErrorField(error, (n) => (typeof n.code === 'string' ? n.code : undefined));
|
|
51
|
+
}
|
|
52
|
+
function classByStatusCode(status, message) {
|
|
53
|
+
if (status === 429)
|
|
54
|
+
return 'rate_limit';
|
|
55
|
+
if (status === 529 || status === 409 || status === 425)
|
|
56
|
+
return 'overloaded';
|
|
57
|
+
if (status === 408)
|
|
58
|
+
return 'timeout';
|
|
59
|
+
if (status === 401 || status === 403)
|
|
60
|
+
return 'auth_error';
|
|
61
|
+
if (status === 404)
|
|
62
|
+
return 'model_not_found';
|
|
63
|
+
if (status === 400) {
|
|
64
|
+
if (message.includes('too long') || message.includes('max_tokens') || message.includes('context length')) {
|
|
65
|
+
return 'prompt_too_long';
|
|
66
|
+
}
|
|
67
|
+
return 'invalid_request';
|
|
68
|
+
}
|
|
69
|
+
if (status >= 500)
|
|
70
|
+
return 'server_error';
|
|
71
|
+
return 'unknown';
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Classifies an error into the fine-grained {@link ErrorClass} taxonomy.
|
|
75
|
+
* The HTTP status and error code are looked up through the `cause` / `lastError` chain.
|
|
76
|
+
*/
|
|
77
|
+
export function classifyErrorClass(error) {
|
|
78
|
+
const isObject = error !== null && typeof error === 'object';
|
|
79
|
+
const name = isObject ? error.name : undefined;
|
|
80
|
+
const message = isObject ? String(error.message ?? '') : '';
|
|
81
|
+
const status = statusOf(error);
|
|
82
|
+
if (status !== undefined)
|
|
83
|
+
return classByStatusCode(status, message);
|
|
84
|
+
if (name === 'AI_NoOutputGeneratedError' || name === 'NoOutputGeneratedError') {
|
|
85
|
+
if (message.includes('403') || message.includes('401'))
|
|
86
|
+
return 'auth_error';
|
|
87
|
+
if (message.includes('429'))
|
|
88
|
+
return 'rate_limit';
|
|
89
|
+
if (message.includes('500') || message.includes('502') || message.includes('503'))
|
|
90
|
+
return 'server_error';
|
|
91
|
+
return 'no_output_generated';
|
|
92
|
+
}
|
|
93
|
+
if (name === 'TimeoutError')
|
|
94
|
+
return 'timeout';
|
|
95
|
+
const code = codeOf(error);
|
|
96
|
+
if (code && NETWORK_CODES.has(code))
|
|
97
|
+
return 'network_error';
|
|
98
|
+
if (message.includes('fetch failed') || message.includes('ECONNREFUSED') || message.includes('ENOTFOUND')) {
|
|
99
|
+
return 'network_error';
|
|
100
|
+
}
|
|
101
|
+
if (message.includes('timeout') || message.includes('ETIMEDOUT'))
|
|
102
|
+
return 'timeout';
|
|
103
|
+
if (message.includes('too long') || message.includes('context length'))
|
|
104
|
+
return 'prompt_too_long';
|
|
105
|
+
return 'unknown';
|
|
33
106
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
107
|
+
const RETRYABLE_ERROR_CLASSES = new Set([
|
|
108
|
+
'rate_limit',
|
|
109
|
+
'overloaded',
|
|
110
|
+
'timeout',
|
|
111
|
+
'server_error',
|
|
112
|
+
'network_error',
|
|
113
|
+
'prompt_too_long',
|
|
114
|
+
'no_output_generated',
|
|
115
|
+
]);
|
|
116
|
+
/**
|
|
117
|
+
* Whether an error class is transient and therefore eligible for fallback routing.
|
|
118
|
+
*/
|
|
119
|
+
export function isRetryableError(errorClass) {
|
|
120
|
+
return RETRYABLE_ERROR_CLASSES.has(errorClass);
|
|
121
|
+
}
|
|
122
|
+
const BREAKER_ERROR_CLASSES = new Set([
|
|
123
|
+
'rate_limit',
|
|
124
|
+
'overloaded',
|
|
125
|
+
'timeout',
|
|
126
|
+
'server_error',
|
|
127
|
+
'network_error',
|
|
128
|
+
]);
|
|
129
|
+
/**
|
|
130
|
+
* Whether an error class reflects upstream health and should count against the circuit breaker.
|
|
131
|
+
* `prompt_too_long` and `no_output_generated` fall back to another model but never open the breaker.
|
|
132
|
+
*/
|
|
133
|
+
export function countsAsBreakerFailure(errorClass) {
|
|
134
|
+
return BREAKER_ERROR_CLASSES.has(errorClass);
|
|
37
135
|
}
|
|
38
136
|
/**
|
|
39
137
|
* Classifies an error for fallback / circuit-breaker decisions.
|
|
40
138
|
* `abortSignal` is the caller's signal: when it is aborted the failure is the caller's doing.
|
|
41
139
|
*/
|
|
42
140
|
export function classifyError(error, abortSignal) {
|
|
141
|
+
const outcome = (kind, reason, errorClass = 'unknown') => ({
|
|
142
|
+
kind,
|
|
143
|
+
reason,
|
|
144
|
+
errorClass,
|
|
145
|
+
countsAsFailure: kind === 'retryable' && countsAsBreakerFailure(errorClass),
|
|
146
|
+
});
|
|
43
147
|
if (abortSignal?.aborted)
|
|
44
|
-
return
|
|
45
|
-
if (error instanceof ProviderUnavailableError)
|
|
46
|
-
return
|
|
47
|
-
}
|
|
148
|
+
return outcome('fatal', 'aborted by caller');
|
|
149
|
+
if (error instanceof ProviderUnavailableError)
|
|
150
|
+
return outcome('skip', 'circuit breaker open');
|
|
48
151
|
if (error instanceof AiException &&
|
|
49
152
|
(error.code === 'E_AI_MISSING_DEPENDENCY' || error.code === 'E_AI_CONFIG_ERROR')) {
|
|
50
|
-
return
|
|
51
|
-
}
|
|
52
|
-
if (error === null || typeof error !== 'object') {
|
|
53
|
-
return { kind: 'fatal', reason: 'unknown error' };
|
|
153
|
+
return outcome('skip', error.code);
|
|
54
154
|
}
|
|
155
|
+
if (error === null || typeof error !== 'object')
|
|
156
|
+
return outcome('fatal', 'unknown error');
|
|
55
157
|
const err = error;
|
|
56
158
|
if (err.name === 'AbortError')
|
|
57
|
-
return
|
|
159
|
+
return outcome('fatal', 'aborted');
|
|
58
160
|
if (FATAL_NAMES.has(err.name))
|
|
59
|
-
return
|
|
60
|
-
const
|
|
61
|
-
if (
|
|
62
|
-
|
|
63
|
-
|
|
161
|
+
return outcome('fatal', `validation (${err.name})`);
|
|
162
|
+
const errorClass = classifyErrorClass(error);
|
|
163
|
+
if (isRetryableError(errorClass))
|
|
164
|
+
return outcome('retryable', errorClass, errorClass);
|
|
165
|
+
if (errorClass !== 'unknown')
|
|
166
|
+
return outcome('fatal', errorClass, errorClass);
|
|
167
|
+
// Unclassified: keep the loose heuristics, but never override an explicit HTTP status.
|
|
168
|
+
if (statusOf(error) === undefined) {
|
|
169
|
+
if (NETWORK_MESSAGE.test(typeof err.message === 'string' ? err.message : '')) {
|
|
170
|
+
return outcome('retryable', 'network', 'network_error');
|
|
64
171
|
}
|
|
65
|
-
|
|
172
|
+
if (err.isRetryable === true)
|
|
173
|
+
return outcome('retryable', 'provider marked retryable');
|
|
66
174
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
175
|
+
return outcome('fatal', 'unclassified error');
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Human-readable message for an error class, safe to show to an operator.
|
|
179
|
+
*/
|
|
180
|
+
export function getUserFriendlyMessage(errorClass) {
|
|
181
|
+
switch (errorClass) {
|
|
182
|
+
case 'rate_limit':
|
|
183
|
+
return 'Rate limited by API provider';
|
|
184
|
+
case 'overloaded':
|
|
185
|
+
return 'API provider overloaded';
|
|
186
|
+
case 'timeout':
|
|
187
|
+
return 'API request timed out';
|
|
188
|
+
case 'auth_error':
|
|
189
|
+
return 'API authentication failed — check API key';
|
|
190
|
+
case 'model_not_found':
|
|
191
|
+
return 'Model not found — check LLM_MODEL config';
|
|
192
|
+
case 'prompt_too_long':
|
|
193
|
+
return 'Context too large for model — consider compaction';
|
|
194
|
+
case 'invalid_request':
|
|
195
|
+
return 'Invalid API request';
|
|
196
|
+
case 'server_error':
|
|
197
|
+
return 'API server error';
|
|
198
|
+
case 'network_error':
|
|
199
|
+
return 'Network error — check connectivity';
|
|
200
|
+
case 'no_output_generated':
|
|
201
|
+
return 'Model produced no output — transient error, will retry';
|
|
202
|
+
default:
|
|
203
|
+
return 'Unknown API error';
|
|
75
204
|
}
|
|
76
|
-
if (err.isRetryable === true)
|
|
77
|
-
return { kind: 'retryable', reason: 'provider marked retryable' };
|
|
78
|
-
return { kind: 'fatal', reason: 'unclassified error' };
|
|
79
205
|
}
|
|
80
206
|
//# sourceMappingURL=error_classifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error_classifier.js","sourceRoot":"","sources":["../../src/error_classifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"error_classifier.js","sourceRoot":"","sources":["../../src/error_classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,12 @@ export interface ToolAccessOptions {
|
|
|
7
7
|
timeoutMs?: number;
|
|
8
8
|
/** Agent whose permission matrix applies in `getToolsByList()`. */
|
|
9
9
|
agentName?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Per-call permission map. When given, it is the only source of permissions for this call:
|
|
12
|
+
* tools missing from it get the registry's `defaultPermission`. The agent matrix is neither
|
|
13
|
+
* read nor modified, so nothing leaks into later calls.
|
|
14
|
+
*/
|
|
15
|
+
permissions?: Record<string, ToolPermission>;
|
|
10
16
|
}
|
|
11
17
|
export interface WrapToolOptions extends ToolAccessOptions {
|
|
12
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/guard/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAG5D,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/guard/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAG5D,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CAC7C;AAED,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD;;;;;OAKG;IACH,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,cAAc,CAAA;CACnC;AASD;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,gBAAgB,CAAsD;IAC9E,OAAO,CAAC,kBAAkB,CAAyC;IACnE,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,MAAM,CAAC,CAAQ;gBAEX,IAAI,GAAE,mBAAwB;IAM1C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI;IAQ1F,aAAa,CACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACrC,iBAAiB,CAAC,EAAE,cAAc,GACjC,IAAI;IAOP,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI;IASzF,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc;IAcvE;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,GAAE,eAAoB,GAAG,cAAc;IA8F3F;;;OAGG;IACH,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAWjC;;;OAGG;IACH,cAAc,CACZ,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAiBjC,OAAO,CAAC,WAAW;CA2BpB"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { PolicyViolationError } from './errors.js';
|
|
2
|
+
/** A tool description may be a function (AI SDK v7); fall back to the tool name then. */
|
|
3
|
+
function describeTool(tool, fallback) {
|
|
4
|
+
return typeof tool.description === 'string' && tool.description.length > 0
|
|
5
|
+
? tool.description
|
|
6
|
+
: fallback;
|
|
7
|
+
}
|
|
2
8
|
/**
|
|
3
9
|
* Registry for managing AI agent tools, access permissions, policy guards,
|
|
4
10
|
* and Human-in-the-loop confirmation hooks.
|
|
@@ -102,7 +108,7 @@ export class ToolRegistry {
|
|
|
102
108
|
const confirmation = await options.confirmation.waitForResponse({
|
|
103
109
|
sessionId: options.sessionId,
|
|
104
110
|
toolName: name,
|
|
105
|
-
action: tool
|
|
111
|
+
action: describeTool(tool, name),
|
|
106
112
|
params: args ?? {},
|
|
107
113
|
}, options.timeoutMs, execOptions?.abortSignal);
|
|
108
114
|
if (confirmation.status !== 'approved') {
|
|
@@ -166,7 +172,11 @@ export class ToolRegistry {
|
|
|
166
172
|
return result;
|
|
167
173
|
}
|
|
168
174
|
resolveTool(agentName, name, tool, options) {
|
|
169
|
-
const permission =
|
|
175
|
+
const permission = options.permissions
|
|
176
|
+
? Object.hasOwn(options.permissions, name)
|
|
177
|
+
? options.permissions[name]
|
|
178
|
+
: this.defaultPermission
|
|
179
|
+
: this.getAgentPermission(agentName, name);
|
|
170
180
|
if (permission === 'deny') {
|
|
171
181
|
return null;
|
|
172
182
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/guard/registry.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/guard/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
export
|
|
2
|
-
info(message: string, ...args: unknown[]): void;
|
|
3
|
-
warn(message: string, ...args: unknown[]): void;
|
|
4
|
-
error(message: string, ...args: unknown[]): void;
|
|
5
|
-
debug?(message: string, ...args: unknown[]): void;
|
|
6
|
-
}
|
|
1
|
+
export type { Logger } from '../logger.js';
|
|
7
2
|
export type ToolPermission = 'allow' | 'ask' | 'deny';
|
|
8
3
|
/**
|
|
9
4
|
* Structural shape of an AI SDK tool (v5+: `inputSchema`; legacy v4 tools used `parameters`).
|
|
10
5
|
* Extra keys (`outputSchema`, `providerOptions`, ...) are preserved when a tool is wrapped.
|
|
11
6
|
*/
|
|
12
7
|
export interface ToolDefinition<TArgs = any, TResult = any> {
|
|
13
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Tool description. AI SDK v7 also allows a function that builds the description
|
|
10
|
+
* from the call context, so both shapes are accepted.
|
|
11
|
+
*/
|
|
12
|
+
description?: string | ((options: any) => string);
|
|
14
13
|
inputSchema?: unknown;
|
|
15
14
|
/** @deprecated AI SDK v4 name of `inputSchema`. */
|
|
16
15
|
parameters?: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/guard/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/guard/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;AAErD;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG;IACxD;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,MAAM,CAAC,CAAA;IACjD,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,mDAAmD;IACnD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IACpE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9D,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAA;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAA;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAErD;;OAEG;IACH,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAEhD;;;OAGG;IACH,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAEhC;;OAEG;IACH,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;CAClB"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
|
+
export type { Logger } from './logger.js';
|
|
2
3
|
export * from './errors.js';
|
|
4
|
+
export * from './error_classifier.js';
|
|
3
5
|
export * from './circuit_breaker.js';
|
|
4
6
|
export * from './define_config.js';
|
|
5
7
|
export * from './ai_manager.js';
|
|
@@ -9,5 +11,6 @@ export * from './acp/index.js';
|
|
|
9
11
|
export * from './agents/index.js';
|
|
10
12
|
export * from './guard/index.js';
|
|
11
13
|
export * from './budget/index.js';
|
|
12
|
-
export
|
|
14
|
+
export * from './models/index.js';
|
|
15
|
+
export type { ToolPermission } from './guard/index.js';
|
|
13
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AAGjC,YAAY,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,cAAc,aAAa,CAAA;AAC3B,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AAGjC,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
2
|
export * from './errors.js';
|
|
3
|
+
export * from './error_classifier.js';
|
|
3
4
|
export * from './circuit_breaker.js';
|
|
4
5
|
export * from './define_config.js';
|
|
5
6
|
export * from './ai_manager.js';
|
|
@@ -9,4 +10,5 @@ export * from './acp/index.js';
|
|
|
9
10
|
export * from './agents/index.js';
|
|
10
11
|
export * from './guard/index.js';
|
|
11
12
|
export * from './budget/index.js';
|
|
13
|
+
export * from './models/index.js';
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAE1B,cAAc,aAAa,CAAA;AAC3B,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface Logger {
|
|
2
|
+
debug?(message: string, ...args: unknown[]): void;
|
|
3
|
+
info(message: string, ...args: unknown[]): void;
|
|
4
|
+
warn(message: string, ...args: unknown[]): void;
|
|
5
|
+
error(message: string, ...args: unknown[]): void;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IACjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AcpRuntimeOptions } from '../acp/types.js';
|
|
2
|
+
import type { ModelsDevCatalog } from '../catalog/models_dev.js';
|
|
3
|
+
import type { ResolvedModel } from './types.js';
|
|
4
|
+
export interface ModelResolver {
|
|
5
|
+
resolve(ref?: string): Promise<ResolvedModel>;
|
|
6
|
+
}
|
|
7
|
+
export interface CatalogModelResolverOptions {
|
|
8
|
+
catalog: {
|
|
9
|
+
load(): Promise<ModelsDevCatalog>;
|
|
10
|
+
};
|
|
11
|
+
/** Model reference used when `resolve()` is called without one. */
|
|
12
|
+
defaultModelRef?: () => string | undefined;
|
|
13
|
+
/** Provider to use for refs that are not provider-prefixed. */
|
|
14
|
+
explicitProvider?: () => string | undefined;
|
|
15
|
+
/** Default: the first non-empty `process.env[name]`. */
|
|
16
|
+
getApiKey?: (envNames: string[]) => string | undefined;
|
|
17
|
+
acp?: AcpRuntimeOptions;
|
|
18
|
+
}
|
|
19
|
+
export declare class CatalogModelResolver implements ModelResolver {
|
|
20
|
+
private readonly options;
|
|
21
|
+
constructor(options: CatalogModelResolverOptions);
|
|
22
|
+
resolve(ref?: string): Promise<ResolvedModel>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=catalog_resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog_resolver.d.ts","sourceRoot":"","sources":["../../../src/models/catalog_resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAGhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAC9C;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE;QAAE,IAAI,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAA;KAAE,CAAA;IAC9C,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;IAC1C,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAA;IAC3C,wDAAwD;IACxD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,MAAM,GAAG,SAAS,CAAA;IACtD,GAAG,CAAC,EAAE,iBAAiB,CAAA;CACxB;AAYD,qBAAa,oBAAqB,YAAW,aAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,2BAA2B;IAE3D,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAkDpD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { buildAcpRuntimeConfig } from '../acp/acp_agents.js';
|
|
2
|
+
import { parseModelRef } from './model_ref.js';
|
|
3
|
+
import { resolveProviderNpm } from './protocols.js';
|
|
4
|
+
const ACP_NPM = '@mcpc-tech/acp-ai-provider';
|
|
5
|
+
function firstEnvValue(envNames) {
|
|
6
|
+
for (const name of envNames) {
|
|
7
|
+
const value = process.env[name];
|
|
8
|
+
if (value)
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
export class CatalogModelResolver {
|
|
14
|
+
options;
|
|
15
|
+
constructor(options) {
|
|
16
|
+
this.options = options;
|
|
17
|
+
}
|
|
18
|
+
async resolve(ref) {
|
|
19
|
+
const { options } = this;
|
|
20
|
+
const catalog = await options.catalog.load();
|
|
21
|
+
const resolved = ref || options.defaultModelRef?.();
|
|
22
|
+
const explicitProvider = options.explicitProvider?.();
|
|
23
|
+
let providerID;
|
|
24
|
+
let modelID;
|
|
25
|
+
if (resolved) {
|
|
26
|
+
const parsed = parseModelRef({
|
|
27
|
+
modelRef: resolved,
|
|
28
|
+
explicitProvider,
|
|
29
|
+
knownProviderIds: Object.keys(catalog),
|
|
30
|
+
});
|
|
31
|
+
providerID = parsed.providerId;
|
|
32
|
+
modelID = parsed.modelId;
|
|
33
|
+
if (!catalog[providerID])
|
|
34
|
+
throw new Error(`Unknown provider: ${providerID}`);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
providerID = explicitProvider || '';
|
|
38
|
+
if (!catalog[providerID])
|
|
39
|
+
throw new Error('A model or provider is required');
|
|
40
|
+
modelID = Object.keys(catalog[providerID].models)[0];
|
|
41
|
+
}
|
|
42
|
+
const provider = catalog[providerID];
|
|
43
|
+
if (!provider.models[modelID] && resolved && provider.models[resolved]) {
|
|
44
|
+
modelID = resolved;
|
|
45
|
+
}
|
|
46
|
+
const modelInfo = provider.models[modelID];
|
|
47
|
+
const apiKey = (options.getApiKey ?? firstEnvValue)(provider.env ?? []);
|
|
48
|
+
const npm = resolveProviderNpm({ npmPackage: provider.npm, protocol: provider.protocol });
|
|
49
|
+
if (provider.protocol === 'acp') {
|
|
50
|
+
const agentId = modelID || Object.keys(provider.models)[0];
|
|
51
|
+
const acpConfig = buildAcpRuntimeConfig(agentId, options.acp);
|
|
52
|
+
if (acpConfig) {
|
|
53
|
+
return { providerID, modelID: agentId, npm: npm || ACP_NPM, acpAgentId: agentId, acpConfig };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
providerID,
|
|
58
|
+
modelID,
|
|
59
|
+
apiUrl: provider.api,
|
|
60
|
+
npm,
|
|
61
|
+
apiKey,
|
|
62
|
+
headers: modelInfo?.headers,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=catalog_resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog_resolver.js","sourceRoot":"","sources":["../../../src/models/catalog_resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type { ResolvedModel } from './types.js';
|
|
2
|
+
export { parseModelRef } from './model_ref.js';
|
|
3
|
+
export type { ParseModelRefOptions, ParsedModelRef } from './model_ref.js';
|
|
4
|
+
export { modelKeyFor, breakerKeyFor } from './keys.js';
|
|
5
|
+
export { PROTOCOL_TO_NPM, resolveProviderNpm } from './protocols.js';
|
|
6
|
+
export { BUILTIN_PROVIDER_EXPORTS, ProviderFactoryRegistry } from './provider_factories.js';
|
|
7
|
+
export type { ProviderFactory } from './provider_factories.js';
|
|
8
|
+
export { LanguageModelFactory } from './language_model_factory.js';
|
|
9
|
+
export type { LanguageModelFactoryOptions } from './language_model_factory.js';
|
|
10
|
+
export { CatalogModelResolver } from './catalog_resolver.js';
|
|
11
|
+
export type { CatalogModelResolverOptions, ModelResolver } from './catalog_resolver.js';
|
|
12
|
+
export { buildChainCandidates, runModelChain } from './model_chain.js';
|
|
13
|
+
export type { ChainAttempt, ChainCandidate, FallbackEvent, ModelChainOptions, } from './model_chain.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAC3F,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,YAAY,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,YAAY,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACtE,YAAY,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { parseModelRef } from './model_ref.js';
|
|
2
|
+
export { modelKeyFor, breakerKeyFor } from './keys.js';
|
|
3
|
+
export { PROTOCOL_TO_NPM, resolveProviderNpm } from './protocols.js';
|
|
4
|
+
export { BUILTIN_PROVIDER_EXPORTS, ProviderFactoryRegistry } from './provider_factories.js';
|
|
5
|
+
export { LanguageModelFactory } from './language_model_factory.js';
|
|
6
|
+
export { CatalogModelResolver } from './catalog_resolver.js';
|
|
7
|
+
export { buildChainCandidates, runModelChain } from './model_chain.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAE3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE5D,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ResolvedModel } from './types.js';
|
|
2
|
+
export declare function modelKeyFor(m: Pick<ResolvedModel, 'providerID' | 'modelID'>): string;
|
|
3
|
+
/**
|
|
4
|
+
* Identity used for circuit-breaker lookups. Two credentials of the same
|
|
5
|
+
* provider/model are different failure domains, so a non-empty credential key
|
|
6
|
+
* wins; otherwise the plain `provider/model` key is used.
|
|
7
|
+
*/
|
|
8
|
+
export declare function breakerKeyFor(m: Pick<ResolvedModel, 'providerID' | 'modelID' | 'credentialKey'>): string;
|
|
9
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/models/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,SAAS,CAAC,GAAG,MAAM,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,SAAS,GAAG,eAAe,CAAC,GACjE,MAAM,CAER"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function modelKeyFor(m) {
|
|
2
|
+
return `${m.providerID}/${m.modelID}`;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Identity used for circuit-breaker lookups. Two credentials of the same
|
|
6
|
+
* provider/model are different failure domains, so a non-empty credential key
|
|
7
|
+
* wins; otherwise the plain `provider/model` key is used.
|
|
8
|
+
*/
|
|
9
|
+
export function breakerKeyFor(m) {
|
|
10
|
+
return m.credentialKey ? m.credentialKey : modelKeyFor(m);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/models/keys.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAC,CAAgD;IAC1E,OAAO,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,CAAkE;IAElE,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC"}
|