@dbx-tools/appkit-model-gateway 0.9.190 → 0.9.193

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 CHANGED
@@ -151,6 +151,12 @@ discovered value.
151
151
  `Originator: codex`. Codex slugs prefer fully qualified Databricks model service
152
152
  names.
153
153
 
154
+ Add `metadata=true` to either the standard or Codex request to include the
155
+ optional dbx-tools metadata object on each model. Its latency and rating fields
156
+ each expose a root sortable score plus nested measurements or source rankings.
157
+ The default response omits the field so existing OpenAI and Codex clients keep
158
+ their current payload shape.
159
+
154
160
  Codex merges provider models with its bundled catalogue. The gateway reserves a
155
161
  separate provider priority range so bundled recommendations remain together,
156
162
  then places Smart Router before the Databricks model list. Codex-specific model
package/index.ts CHANGED
@@ -3,8 +3,10 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-model-gateway";
6
- export const PACKAGE_VERSION = "0.9.190";
6
+ export const PACKAGE_VERSION = "0.9.193";
7
+ export * as aIDecide from "./src/ai-decide.ts";
7
8
  export * as gateway from "./src/gateway.ts";
9
+ export * as modelContext from "./src/model-context.ts";
8
10
  export * as models from "./src/models.ts";
9
11
  export * as plugin from "./src/plugin.ts";
10
12
  export * as reasoningAdapt from "./src/reasoning-adapt.ts";
@@ -14,8 +16,12 @@ export * as routes from "./src/routes.ts";
14
16
  export * as smartRouter from "./src/smart-router.ts";
15
17
  export * as translation from "./src/translation.ts";
16
18
  export * as transport from "./src/transport.ts";
19
+ export { AiDecideRouterService, AiDecideRouterError } from "./src/ai-decide.ts";
20
+ export type { AiDecideSelectionOptions, AiDecideSelection } from "./src/ai-decide.ts";
17
21
  export { ModelGatewayError, ModelGateway, sanitizeInferenceBody, adaptInferenceTemperature, gatewayModelSelection } from "./src/gateway.ts";
18
22
  export type { ModelGatewayOptions } from "./src/gateway.ts";
23
+ export { normalizeModelContext } from "./src/model-context.ts";
24
+ export type { ModelContextEvent, NormalizeModelContextOptions, NormalizedModelContext } from "./src/model-context.ts";
19
25
  export { listModelsPayload, codexModelSlug } from "./src/models.ts";
20
26
  export { ModelGatewayPlugin, modelGateway } from "./src/plugin.ts";
21
27
  export type { ModelGatewayPluginConfig } from "./src/plugin.ts";
package/lib/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-model-gateway";
2
- export declare const PACKAGE_VERSION = "0.9.190";
2
+ export declare const PACKAGE_VERSION = "0.9.193";
3
+ export * as aIDecide from "./src/ai-decide.ts";
3
4
  export * as gateway from "./src/gateway.ts";
5
+ export * as modelContext from "./src/model-context.ts";
4
6
  export * as models from "./src/models.ts";
5
7
  export * as plugin from "./src/plugin.ts";
6
8
  export * as reasoningAdapt from "./src/reasoning-adapt.ts";
@@ -10,8 +12,12 @@ export * as routes from "./src/routes.ts";
10
12
  export * as smartRouter from "./src/smart-router.ts";
11
13
  export * as translation from "./src/translation.ts";
12
14
  export * as transport from "./src/transport.ts";
15
+ export { AiDecideRouterService, AiDecideRouterError } from "./src/ai-decide.ts";
16
+ export type { AiDecideSelectionOptions, AiDecideSelection } from "./src/ai-decide.ts";
13
17
  export { ModelGatewayError, ModelGateway, sanitizeInferenceBody, adaptInferenceTemperature, gatewayModelSelection } from "./src/gateway.ts";
14
18
  export type { ModelGatewayOptions } from "./src/gateway.ts";
19
+ export { normalizeModelContext } from "./src/model-context.ts";
20
+ export type { ModelContextEvent, NormalizeModelContextOptions, NormalizedModelContext } from "./src/model-context.ts";
15
21
  export { listModelsPayload, codexModelSlug } from "./src/models.ts";
16
22
  export { ModelGatewayPlugin, modelGateway } from "./src/plugin.ts";
17
23
  export type { ModelGatewayPluginConfig } from "./src/plugin.ts";
package/lib/index.js CHANGED
@@ -2,8 +2,10 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-model-gateway";
5
- export const PACKAGE_VERSION = "0.9.190";
5
+ export const PACKAGE_VERSION = "0.9.193";
6
+ export * as aIDecide from "./src/ai-decide.js";
6
7
  export * as gateway from "./src/gateway.js";
8
+ export * as modelContext from "./src/model-context.js";
7
9
  export * as models from "./src/models.js";
8
10
  export * as plugin from "./src/plugin.js";
9
11
  export * as reasoningAdapt from "./src/reasoning-adapt.js";
@@ -13,7 +15,9 @@ export * as routes from "./src/routes.js";
13
15
  export * as smartRouter from "./src/smart-router.js";
14
16
  export * as translation from "./src/translation.js";
15
17
  export * as transport from "./src/transport.js";
18
+ export { AiDecideRouterService, AiDecideRouterError } from "./src/ai-decide.js";
16
19
  export { ModelGatewayError, ModelGateway, sanitizeInferenceBody, adaptInferenceTemperature, gatewayModelSelection } from "./src/gateway.js";
20
+ export { normalizeModelContext } from "./src/model-context.js";
17
21
  export { listModelsPayload, codexModelSlug } from "./src/models.js";
18
22
  export { ModelGatewayPlugin, modelGateway } from "./src/plugin.js";
19
23
  export { adaptInferenceReasoning, learnAndAdaptReasoningRetry } from "./src/reasoning-adapt.js";
@@ -23,4 +27,4 @@ export { sendHealth, sendModels, sendInference } from "./src/routes.js";
23
27
  export { SMART_ROUTER_DEFAULT_SETTINGS, SmartRouterProbeRecordSchema, SmartRouterError, AppKitSmartRouterStore, AppKitSmartRouterProbeStore, SmartRouterService, smartRouterCandidates, SmartRouterContextBuilder, SmartModelRouter, smartRouterTurnKey } from "./src/smart-router.js";
24
28
  export { translateGatewayRequest } from "./src/translation.js";
25
29
  export { fetchDatabricks, directDatabricksRequestBody, gatewayResponseHeaders } from "./src/transport.js";
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxpQ0FBaUMsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxjQUFjLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLFdBQVcsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssV0FBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSw0QkFBNEIsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSwyQkFBMkIsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZSLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsMkJBQTJCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvYXBwa2l0LW1vZGVsLWdhdGV3YXlcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xOTBcIjtcbmV4cG9ydCAqIGFzIGdhdGV3YXkgZnJvbSBcIi4vc3JjL2dhdGV3YXkudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVscyBmcm9tIFwiLi9zcmMvbW9kZWxzLnRzXCI7XG5leHBvcnQgKiBhcyBwbHVnaW4gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0ICogYXMgcmVhc29uaW5nQWRhcHQgZnJvbSBcIi4vc3JjL3JlYXNvbmluZy1hZGFwdC50c1wiO1xuZXhwb3J0ICogYXMgcmVnaXN0cnkgZnJvbSBcIi4vc3JjL3JlZ2lzdHJ5LnRzXCI7XG5leHBvcnQgKiBhcyByb3V0ZXIgZnJvbSBcIi4vc3JjL3JvdXRlci50c1wiO1xuZXhwb3J0ICogYXMgcm91dGVzIGZyb20gXCIuL3NyYy9yb3V0ZXMudHNcIjtcbmV4cG9ydCAqIGFzIHNtYXJ0Um91dGVyIGZyb20gXCIuL3NyYy9zbWFydC1yb3V0ZXIudHNcIjtcbmV4cG9ydCAqIGFzIHRyYW5zbGF0aW9uIGZyb20gXCIuL3NyYy90cmFuc2xhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgdHJhbnNwb3J0IGZyb20gXCIuL3NyYy90cmFuc3BvcnQudHNcIjtcbmV4cG9ydCB7IE1vZGVsR2F0ZXdheUVycm9yLCBNb2RlbEdhdGV3YXksIHNhbml0aXplSW5mZXJlbmNlQm9keSwgYWRhcHRJbmZlcmVuY2VUZW1wZXJhdHVyZSwgZ2F0ZXdheU1vZGVsU2VsZWN0aW9uIH0gZnJvbSBcIi4vc3JjL2dhdGV3YXkudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxHYXRld2F5T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9nYXRld2F5LnRzXCI7XG5leHBvcnQgeyBsaXN0TW9kZWxzUGF5bG9hZCwgY29kZXhNb2RlbFNsdWcgfSBmcm9tIFwiLi9zcmMvbW9kZWxzLnRzXCI7XG5leHBvcnQgeyBNb2RlbEdhdGV3YXlQbHVnaW4sIG1vZGVsR2F0ZXdheSB9IGZyb20gXCIuL3NyYy9wbHVnaW4udHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxHYXRld2F5UGx1Z2luQ29uZmlnIH0gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0IHsgYWRhcHRJbmZlcmVuY2VSZWFzb25pbmcsIGxlYXJuQW5kQWRhcHRSZWFzb25pbmdSZXRyeSB9IGZyb20gXCIuL3NyYy9yZWFzb25pbmctYWRhcHQudHNcIjtcbmV4cG9ydCB0eXBlIHsgQWRhcHRlZEluZmVyZW5jZUJvZHkgfSBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLWFkYXB0LnRzXCI7XG5leHBvcnQgeyBEYXRhYnJpY2tzTW9kZWxSZWdpc3RyeSB9IGZyb20gXCIuL3NyYy9yZWdpc3RyeS50c1wiO1xuZXhwb3J0IHR5cGUgeyBNb2RlbFJlZ2lzdHJ5UmVzb2x2ZU9wdGlvbnMsIE1vZGVsUmVnaXN0cnksIE1vZGVsUmVnaXN0cnlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3JlZ2lzdHJ5LnRzXCI7XG5leHBvcnQgeyBVbnN1cHBvcnRlZEdhdGV3YXlGZWF0dXJlRXJyb3IsIHJlc29sdmVSb3V0ZSwgcmVxdWVzdGVkRmVhdHVyZXMsIGlzQ29kZXhPcmlnaW5hdG9yIH0gZnJvbSBcIi4vc3JjL3JvdXRlci50c1wiO1xuZXhwb3J0IHsgc2VuZEhlYWx0aCwgc2VuZE1vZGVscywgc2VuZEluZmVyZW5jZSB9IGZyb20gXCIuL3NyYy9yb3V0ZXMudHNcIjtcbmV4cG9ydCB7IFNNQVJUX1JPVVRFUl9ERUZBVUxUX1NFVFRJTkdTLCBTbWFydFJvdXRlclByb2JlUmVjb3JkU2NoZW1hLCBTbWFydFJvdXRlckVycm9yLCBBcHBLaXRTbWFydFJvdXRlclN0b3JlLCBBcHBLaXRTbWFydFJvdXRlclByb2JlU3RvcmUsIFNtYXJ0Um91dGVyU2VydmljZSwgc21hcnRSb3V0ZXJDYW5kaWRhdGVzLCBTbWFydFJvdXRlckNvbnRleHRCdWlsZGVyLCBTbWFydE1vZGVsUm91dGVyLCBzbWFydFJvdXRlclR1cm5LZXkgfSBmcm9tIFwiLi9zcmMvc21hcnQtcm91dGVyLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNtYXJ0Um91dGVyU2V0dGluZ3MsIFNtYXJ0Um91dGVyQ2FuZGlkYXRlLCBTbWFydFJvdXRlclNlbGVjdGlvbiwgU21hcnRSb3V0ZXJTdG9yZSwgU21hcnRSb3V0ZXJQcm9iZVJlY29yZCwgU21hcnRSb3V0ZXJQcm9iZVN0b3JlLCBTbWFydFJvdXRlclJlc3VsdCwgU21hcnRSb3V0ZXJDb250ZXh0LCBTbWFydFJvdXRlclNlbGVjdE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc21hcnQtcm91dGVyLnRzXCI7XG5leHBvcnQgeyB0cmFuc2xhdGVHYXRld2F5UmVxdWVzdCB9IGZyb20gXCIuL3NyYy90cmFuc2xhdGlvbi50c1wiO1xuZXhwb3J0IHsgZmV0Y2hEYXRhYnJpY2tzLCBkaXJlY3REYXRhYnJpY2tzUmVxdWVzdEJvZHksIGdhdGV3YXlSZXNwb25zZUhlYWRlcnMgfSBmcm9tIFwiLi9zcmMvdHJhbnNwb3J0LnRzXCI7XG5leHBvcnQgdHlwZSB7IERhdGFicmlja3NUcmFuc3BvcnRSZXF1ZXN0IH0gZnJvbSBcIi4vc3JjL3RyYW5zcG9ydC50c1wiO1xuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxpQ0FBaUMsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxRQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssWUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssY0FBYyxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLFdBQVcsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWhGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1SSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNySCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsNEJBQTRCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsMkJBQTJCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2UixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLDJCQUEyQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2FwcGtpdC1tb2RlbC1nYXRld2F5XCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTkzXCI7XG5leHBvcnQgKiBhcyBhSURlY2lkZSBmcm9tIFwiLi9zcmMvYWktZGVjaWRlLnRzXCI7XG5leHBvcnQgKiBhcyBnYXRld2F5IGZyb20gXCIuL3NyYy9nYXRld2F5LnRzXCI7XG5leHBvcnQgKiBhcyBtb2RlbENvbnRleHQgZnJvbSBcIi4vc3JjL21vZGVsLWNvbnRleHQudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVscyBmcm9tIFwiLi9zcmMvbW9kZWxzLnRzXCI7XG5leHBvcnQgKiBhcyBwbHVnaW4gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0ICogYXMgcmVhc29uaW5nQWRhcHQgZnJvbSBcIi4vc3JjL3JlYXNvbmluZy1hZGFwdC50c1wiO1xuZXhwb3J0ICogYXMgcmVnaXN0cnkgZnJvbSBcIi4vc3JjL3JlZ2lzdHJ5LnRzXCI7XG5leHBvcnQgKiBhcyByb3V0ZXIgZnJvbSBcIi4vc3JjL3JvdXRlci50c1wiO1xuZXhwb3J0ICogYXMgcm91dGVzIGZyb20gXCIuL3NyYy9yb3V0ZXMudHNcIjtcbmV4cG9ydCAqIGFzIHNtYXJ0Um91dGVyIGZyb20gXCIuL3NyYy9zbWFydC1yb3V0ZXIudHNcIjtcbmV4cG9ydCAqIGFzIHRyYW5zbGF0aW9uIGZyb20gXCIuL3NyYy90cmFuc2xhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgdHJhbnNwb3J0IGZyb20gXCIuL3NyYy90cmFuc3BvcnQudHNcIjtcbmV4cG9ydCB7IEFpRGVjaWRlUm91dGVyU2VydmljZSwgQWlEZWNpZGVSb3V0ZXJFcnJvciB9IGZyb20gXCIuL3NyYy9haS1kZWNpZGUudHNcIjtcbmV4cG9ydCB0eXBlIHsgQWlEZWNpZGVTZWxlY3Rpb25PcHRpb25zLCBBaURlY2lkZVNlbGVjdGlvbiB9IGZyb20gXCIuL3NyYy9haS1kZWNpZGUudHNcIjtcbmV4cG9ydCB7IE1vZGVsR2F0ZXdheUVycm9yLCBNb2RlbEdhdGV3YXksIHNhbml0aXplSW5mZXJlbmNlQm9keSwgYWRhcHRJbmZlcmVuY2VUZW1wZXJhdHVyZSwgZ2F0ZXdheU1vZGVsU2VsZWN0aW9uIH0gZnJvbSBcIi4vc3JjL2dhdGV3YXkudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxHYXRld2F5T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9nYXRld2F5LnRzXCI7XG5leHBvcnQgeyBub3JtYWxpemVNb2RlbENvbnRleHQgfSBmcm9tIFwiLi9zcmMvbW9kZWwtY29udGV4dC50c1wiO1xuZXhwb3J0IHR5cGUgeyBNb2RlbENvbnRleHRFdmVudCwgTm9ybWFsaXplTW9kZWxDb250ZXh0T3B0aW9ucywgTm9ybWFsaXplZE1vZGVsQ29udGV4dCB9IGZyb20gXCIuL3NyYy9tb2RlbC1jb250ZXh0LnRzXCI7XG5leHBvcnQgeyBsaXN0TW9kZWxzUGF5bG9hZCwgY29kZXhNb2RlbFNsdWcgfSBmcm9tIFwiLi9zcmMvbW9kZWxzLnRzXCI7XG5leHBvcnQgeyBNb2RlbEdhdGV3YXlQbHVnaW4sIG1vZGVsR2F0ZXdheSB9IGZyb20gXCIuL3NyYy9wbHVnaW4udHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxHYXRld2F5UGx1Z2luQ29uZmlnIH0gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0IHsgYWRhcHRJbmZlcmVuY2VSZWFzb25pbmcsIGxlYXJuQW5kQWRhcHRSZWFzb25pbmdSZXRyeSB9IGZyb20gXCIuL3NyYy9yZWFzb25pbmctYWRhcHQudHNcIjtcbmV4cG9ydCB0eXBlIHsgQWRhcHRlZEluZmVyZW5jZUJvZHkgfSBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLWFkYXB0LnRzXCI7XG5leHBvcnQgeyBEYXRhYnJpY2tzTW9kZWxSZWdpc3RyeSB9IGZyb20gXCIuL3NyYy9yZWdpc3RyeS50c1wiO1xuZXhwb3J0IHR5cGUgeyBNb2RlbFJlZ2lzdHJ5UmVzb2x2ZU9wdGlvbnMsIE1vZGVsUmVnaXN0cnksIE1vZGVsUmVnaXN0cnlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3JlZ2lzdHJ5LnRzXCI7XG5leHBvcnQgeyBVbnN1cHBvcnRlZEdhdGV3YXlGZWF0dXJlRXJyb3IsIHJlc29sdmVSb3V0ZSwgcmVxdWVzdGVkRmVhdHVyZXMsIGlzQ29kZXhPcmlnaW5hdG9yIH0gZnJvbSBcIi4vc3JjL3JvdXRlci50c1wiO1xuZXhwb3J0IHsgc2VuZEhlYWx0aCwgc2VuZE1vZGVscywgc2VuZEluZmVyZW5jZSB9IGZyb20gXCIuL3NyYy9yb3V0ZXMudHNcIjtcbmV4cG9ydCB7IFNNQVJUX1JPVVRFUl9ERUZBVUxUX1NFVFRJTkdTLCBTbWFydFJvdXRlclByb2JlUmVjb3JkU2NoZW1hLCBTbWFydFJvdXRlckVycm9yLCBBcHBLaXRTbWFydFJvdXRlclN0b3JlLCBBcHBLaXRTbWFydFJvdXRlclByb2JlU3RvcmUsIFNtYXJ0Um91dGVyU2VydmljZSwgc21hcnRSb3V0ZXJDYW5kaWRhdGVzLCBTbWFydFJvdXRlckNvbnRleHRCdWlsZGVyLCBTbWFydE1vZGVsUm91dGVyLCBzbWFydFJvdXRlclR1cm5LZXkgfSBmcm9tIFwiLi9zcmMvc21hcnQtcm91dGVyLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNtYXJ0Um91dGVyU2V0dGluZ3MsIFNtYXJ0Um91dGVyQ2FuZGlkYXRlLCBTbWFydFJvdXRlclNlbGVjdGlvbiwgU21hcnRSb3V0ZXJTdG9yZSwgU21hcnRSb3V0ZXJQcm9iZVJlY29yZCwgU21hcnRSb3V0ZXJQcm9iZVN0b3JlLCBTbWFydFJvdXRlclJlc3VsdCwgU21hcnRSb3V0ZXJDb250ZXh0LCBTbWFydFJvdXRlclNlbGVjdE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc21hcnQtcm91dGVyLnRzXCI7XG5leHBvcnQgeyB0cmFuc2xhdGVHYXRld2F5UmVxdWVzdCB9IGZyb20gXCIuL3NyYy90cmFuc2xhdGlvbi50c1wiO1xuZXhwb3J0IHsgZmV0Y2hEYXRhYnJpY2tzLCBkaXJlY3REYXRhYnJpY2tzUmVxdWVzdEJvZHksIGdhdGV3YXlSZXNwb25zZUhlYWRlcnMgfSBmcm9tIFwiLi9zcmMvdHJhbnNwb3J0LnRzXCI7XG5leHBvcnQgdHlwZSB7IERhdGFicmlja3NUcmFuc3BvcnRSZXF1ZXN0IH0gZnJvbSBcIi4vc3JjL3RyYW5zcG9ydC50c1wiO1xuIl19
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Databricks AI Functions `ai_decide` model selection.
3
+ *
4
+ * @module
5
+ */
6
+ import { type WorkspaceClient } from "@databricks/appkit";
7
+ import { type ServingEndpointSummary } from "@dbx-tools/shared-model";
8
+ import { type AiDecideModelFilters, type AiDecideObservation, type AiDecideStrategy } from "@dbx-tools/shared-model-gateway";
9
+ import { type SmartRouterProbeStore } from "./smart-router.ts";
10
+ /** Selection policy accepted by {@link AiDecideRouterService.select}. */
11
+ export interface AiDecideSelectionOptions {
12
+ readonly strategy?: AiDecideStrategy;
13
+ readonly filters?: AiDecideModelFilters;
14
+ readonly signal?: AbortSignal;
15
+ readonly timeoutMs?: number;
16
+ }
17
+ /** Concrete endpoint and observable decision returned by `ai_decide`. */
18
+ export interface AiDecideSelection {
19
+ readonly endpoint: ServingEndpointSummary;
20
+ readonly observation: AiDecideObservation;
21
+ }
22
+ type AiDecideInvoker = (client: WorkspaceClient, body: Readonly<Record<string, unknown>>, signal: AbortSignal, timeoutMs: number) => Promise<unknown>;
23
+ /** Select the best sufficient live foundation model through Databricks `ai_decide`. */
24
+ export declare class AiDecideRouterService {
25
+ private readonly invoke;
26
+ private readonly probeStore;
27
+ private readonly context;
28
+ private readonly probes;
29
+ private readonly probeCaches;
30
+ constructor(invoke?: AiDecideInvoker, probeStore?: SmartRouterProbeStore);
31
+ select(input: unknown, endpoints: readonly ServingEndpointSummary[], client?: WorkspaceClient | undefined, options?: AiDecideSelectionOptions): Promise<AiDecideSelection>;
32
+ /** Probe and memoize whether the active workspace identity can call `ai_decide`. */
33
+ isEnabled(endpoints: readonly ServingEndpointSummary[], client?: WorkspaceClient | undefined): Promise<boolean>;
34
+ /** Stop process-local probe caches after active refreshes settle. */
35
+ dispose(): void;
36
+ private loadProbe;
37
+ private setProbeValue;
38
+ private probeRecord;
39
+ private probeTtl;
40
+ private readStoredProbe;
41
+ private writeProcessProbe;
42
+ private writeStoredProbe;
43
+ private probeCache;
44
+ }
45
+ /** HTTP failure returned by the Databricks AI Functions router. */
46
+ export declare class AiDecideRouterError extends Error {
47
+ readonly status: number;
48
+ constructor(status: number, message: string);
49
+ }
50
+ export {};