@x12i/ai-profiles 5.1.0 → 5.3.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/README.md +12 -8
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -1
- package/dist/customizationPin.d.ts +15 -0
- package/dist/customizationPin.d.ts.map +1 -0
- package/dist/customizationPin.js +96 -0
- package/dist/customizationPin.js.map +1 -0
- package/dist/data/models-profiles.json +550 -412
- package/dist/data/models-registry.json +1152 -924
- package/dist/data/reasoning-coverage.json +55 -40
- package/dist/data/reasoning-directives.json +498 -307
- package/dist/finalProfileModelMappingPatch.d.ts.map +1 -1
- package/dist/finalProfileModelMappingPatch.js +37 -32
- package/dist/finalProfileModelMappingPatch.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/inferModelFamily.d.ts.map +1 -1
- package/dist/inferModelFamily.js +2 -0
- package/dist/inferModelFamily.js.map +1 -1
- package/dist/loader/loadAIProfilesRegistry.d.ts.map +1 -1
- package/dist/loader/loadAIProfilesRegistry.js +8 -2
- package/dist/loader/loadAIProfilesRegistry.js.map +1 -1
- package/dist/loader/loadModelsCatalog.d.ts.map +1 -1
- package/dist/loader/loadModelsCatalog.js +8 -6
- package/dist/loader/loadModelsCatalog.js.map +1 -1
- package/dist/loader/loadModelsProfilesJson.d.ts +5 -0
- package/dist/loader/loadModelsProfilesJson.d.ts.map +1 -1
- package/dist/loader/loadModelsProfilesJson.js +21 -1
- package/dist/loader/loadModelsProfilesJson.js.map +1 -1
- package/dist/loader/loadRemoteModelsCatalog.d.ts.map +1 -1
- package/dist/loader/loadRemoteModelsCatalog.js +5 -2
- package/dist/loader/loadRemoteModelsCatalog.js.map +1 -1
- package/dist/loader/loadRemoteModelsProfiles.d.ts.map +1 -1
- package/dist/loader/loadRemoteModelsProfiles.js +5 -2
- package/dist/loader/loadRemoteModelsProfiles.js.map +1 -1
- package/dist/loader/loadRemoteRegistry.d.ts.map +1 -1
- package/dist/loader/loadRemoteRegistry.js +5 -2
- package/dist/loader/loadRemoteRegistry.js.map +1 -1
- package/dist/resolveAIProfile.d.ts.map +1 -1
- package/dist/resolveAIProfile.js +14 -3
- package/dist/resolveAIProfile.js.map +1 -1
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vendorModelId.js +1 -1
- package/package.json +2 -2
- package/dist/data/models-catalog.json +0 -21228
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
# @x12i/ai-profiles
|
|
10
10
|
|
|
11
|
-
Resolve AI profile names into concrete model choices. The package ships JSON in `src/data/` as the offline
|
|
11
|
+
Resolve AI profile names into concrete model choices. The package ships JSON in `src/data/` as the offline copy. `source: "auto"` loads `GET /v1/datasets/profiles` and `GET /v1/datasets/catalog` from `https://ai-registry.app.x12i.com` (or `AI_REGISTRY_URL`). A successful document is used as-is and cached for 60 seconds. `refresh: true` bypasses that cache. Network or validation failure uses the bundled JSON. `AI_REGISTRY_SOURCE=bundled` skips those fetches. `loadLatestDataset({ fetch, baseUrl })` is the one-shot profiles read and accepts the same options as the other catalog packages.
|
|
12
12
|
|
|
13
13
|
> **v4.4** ships production routing (OpenRouter default + vendor-direct), product-line `*-latest-model` vendor routes, Gemini-backed google lanes, and **unversioned** open-assets URLs. Pin **`"@x12i/ai-profiles": "^4.4.0"`**. Upload `models-profiles.json` / `models-catalog.json` to open-assets **without** `.v4` / `.v2` suffixes.
|
|
14
14
|
>
|
|
@@ -866,22 +866,26 @@ const model = await resolveAIProfile("balanced/default", {
|
|
|
866
866
|
|
|
867
867
|
**Default (`source: "auto"`):**
|
|
868
868
|
|
|
869
|
-
1. Fetch
|
|
870
|
-
2. Validate the response
|
|
871
|
-
3. If fetch or validation fails, use the JSON shipped inside this npm package
|
|
872
|
-
4.
|
|
869
|
+
1. Fetch the profiles and catalog datasets from the registry (`AI_REGISTRY_URL`, then `AI_CATALOG_URL`, then `https://ai-registry.app.x12i.com`).
|
|
870
|
+
2. Validate the response. A valid document is the dataset. Bundled rows are not merged back in. It is cached in process memory for 60 seconds.
|
|
871
|
+
3. If fetch or validation fails, use the JSON shipped inside this npm package. If an earlier fetch is still in memory, reuse it and add a warning.
|
|
872
|
+
4. `refresh: true` fetches again before the 60 seconds elapse.
|
|
873
873
|
|
|
874
|
-
**`source: "bundled"`** — package JSON only, no
|
|
874
|
+
**`source: "bundled"`** — package JSON only, no dataset fetch.
|
|
875
875
|
|
|
876
876
|
**`source: "remote"`** — fetch every time (still cached after success); errors propagate, no bundled fallback.
|
|
877
877
|
|
|
878
|
-
|
|
878
|
+
`AI_REGISTRY_SOURCE=bundled` forces the bundled datasets even when `source` is `auto` or `remote`.
|
|
879
|
+
|
|
880
|
+
Pass `authixToken` (or set `AUTHIX_TOKEN`) to apply pins from `GET /v1/customization`. `context` or `AI_REGISTRY_CONTEXT` selects the bucket; omitted means `default`. A pin replaces that profile/choice model. Other keys stay on the registry document. If the customization request fails, resolve continues with the published model and a `CUSTOMIZATION_UNAVAILABLE` warning. The token is sent only to the registry customization route.
|
|
881
|
+
|
|
882
|
+
No local database. No disk cache in v1.
|
|
879
883
|
|
|
880
884
|
The `version` field in the JSON files (and `registryVersion` on resolved output) is an optional label for humans or external tooling. This package does not compare versions, enforce semver, or pick assets by version number.
|
|
881
885
|
|
|
882
886
|
## Remote assets
|
|
883
887
|
|
|
884
|
-
|
|
888
|
+
Registry reads use `/v1/datasets/profiles` and `/v1/datasets/catalog`. Maintainer scripts can still upload the bundled JSON files **as-is** (no filename version suffix):
|
|
885
889
|
|
|
886
890
|
- `https://open-assets.x12i.com/models-profiles.json`
|
|
887
891
|
- `https://open-assets.x12i.com/models-catalog.json`
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import type { AIRuntimeDefaults } from "./types.js";
|
|
2
2
|
export declare const DEFAULT_CACHE_TTL_MS: number;
|
|
3
|
+
/** Memory cache for a successful registry document. */
|
|
4
|
+
export declare const REGISTRY_CACHE_TTL_MS: number;
|
|
3
5
|
export declare const DEFAULT_FETCH_TIMEOUT_MS = 5000;
|
|
6
|
+
export declare const DEFAULT_REGISTRY_URL = "https://ai-registry.app.x12i.com";
|
|
7
|
+
/** Worker sets this so package loaders do not call the registry they are serving. */
|
|
8
|
+
export declare function isRegistrySourceBundled(): boolean;
|
|
9
|
+
export declare function registryOrigin(): string;
|
|
10
|
+
export declare function registryDatasetUrl(id: string): string;
|
|
4
11
|
export declare const REMOTE_MODELS_PROFILES_URL = "https://open-assets.x12i.com/models-profiles.json";
|
|
5
12
|
export declare const REMOTE_MODELS_CATALOG_URL = "https://open-assets.x12i.com/models-catalog.json";
|
|
6
13
|
/** Public OpenRouter model list (used by maintainers to regenerate the catalog). */
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,oBAAoB,QAAsB,CAAC;AACxD,eAAO,MAAM,wBAAwB,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,oBAAoB,QAAsB,CAAC;AACxD,uDAAuD;AACvD,eAAO,MAAM,qBAAqB,QAAY,CAAC;AAC/C,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,oBAAoB,qCAAqC,CAAC;AAMvE,qFAAqF;AACrF,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED,wBAAgB,cAAc,IAAI,MAAM,CAIvC;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,eAAO,MAAM,0BAA0B,sDACc,CAAC;AAEtD,eAAO,MAAM,yBAAyB,qDACc,CAAC;AAErD,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,wCACC,CAAC;AAExC,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAEhD,eAAO,MAAM,yBAAyB,EACpC,oCAA6C,CAAC;AAEhD,6FAA6F;AAC7F,eAAO,MAAM,uBAAuB,iDAAuC,CAAC;AAC5E,eAAO,MAAM,iBAAiB,0CAA2C,CAAC;AAE1E,eAAO,MAAM,mBAAmB,+GAStB,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,sBAAsB,uFAOzB,CAAC;AAEX,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,sDAMnB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,iBAAiB,CAahE,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
export const DEFAULT_CACHE_TTL_MS = 24 * 60 * 60 * 1000;
|
|
2
|
+
/** Memory cache for a successful registry document. */
|
|
3
|
+
export const REGISTRY_CACHE_TTL_MS = 60 * 1000;
|
|
2
4
|
export const DEFAULT_FETCH_TIMEOUT_MS = 5000;
|
|
5
|
+
export const DEFAULT_REGISTRY_URL = "https://ai-registry.app.x12i.com";
|
|
6
|
+
function processEnv() {
|
|
7
|
+
return globalThis.process?.env;
|
|
8
|
+
}
|
|
9
|
+
/** Worker sets this so package loaders do not call the registry they are serving. */
|
|
10
|
+
export function isRegistrySourceBundled() {
|
|
11
|
+
return processEnv()?.AI_REGISTRY_SOURCE?.trim() === "bundled";
|
|
12
|
+
}
|
|
13
|
+
export function registryOrigin() {
|
|
14
|
+
const env = processEnv();
|
|
15
|
+
const value = env?.AI_REGISTRY_URL?.trim() || env?.AI_CATALOG_URL?.trim();
|
|
16
|
+
return (value || DEFAULT_REGISTRY_URL).replace(/\/+$/, "");
|
|
17
|
+
}
|
|
18
|
+
export function registryDatasetUrl(id) {
|
|
19
|
+
return `${registryOrigin()}/v1/datasets/${encodeURIComponent(id)}`;
|
|
20
|
+
}
|
|
3
21
|
export const REMOTE_MODELS_PROFILES_URL = "https://open-assets.x12i.com/models-profiles.json";
|
|
4
22
|
export const REMOTE_MODELS_CATALOG_URL = "https://open-assets.x12i.com/models-catalog.json";
|
|
5
23
|
/** Public OpenRouter model list (used by maintainers to regenerate the catalog). */
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,uDAAuD;AACvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;AAEvE,SAAS,UAAU;IACjB,OAAQ,UAAyE,CAAC,OAAO,EAAE,GAAG,CAAC;AACjG,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,uBAAuB;IACrC,OAAO,UAAU,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,SAAS,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC1E,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,GAAG,cAAc,EAAE,gBAAgB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GACrC,mDAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,yBAAyB,GACpC,kDAAkD,CAAC;AAErD,oFAAoF;AACpF,MAAM,CAAC,MAAM,yBAAyB,GACpC,qCAAqC,CAAC;AAExC,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAEhD,MAAM,CAAC,MAAM,yBAAyB,GACpC,oCAA6C,CAAC;AAEhD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,yBAAyB,CAAU,CAAC;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,UAAU;IACV,MAAM;IACN,gBAAgB;IAChB,aAAa;IACb,QAAQ;CACA,CAAC;AAEX,8CAA8C;AAC9C,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,WAAW;IACX,QAAQ;IACR,UAAU;IACV,MAAM;IACN,gBAAgB;IAChB,aAAa;CACL,CAAC;AAEX,sFAAsF;AACtF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;CACE,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAgC;IACnE,eAAe,EAAE,QAAQ;IACzB,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,MAAM;IACrB,gBAAgB,EAAE,KAAK;IACvB,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,KAAK;IACtB,kBAAkB,EAAE,KAAK;IACzB,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,SAAS;IAC1B,OAAO,EAAE,YAAY;CACtB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AIProfileWarning, ModelsCatalogJson, PreferOpenRouterInput, ResolvedAIProfile } from "./types.js";
|
|
2
|
+
export declare function clearCustomizationCache(): void;
|
|
3
|
+
export declare function customizationAuth(options: {
|
|
4
|
+
authixToken?: string;
|
|
5
|
+
context?: string;
|
|
6
|
+
}): {
|
|
7
|
+
token: string;
|
|
8
|
+
context?: string;
|
|
9
|
+
} | undefined;
|
|
10
|
+
export declare function applyProfilePin(resolved: ResolvedAIProfile, modelId: string, catalog: ModelsCatalogJson, preferOpenRouter: PreferOpenRouterInput | undefined): ResolvedAIProfile;
|
|
11
|
+
export declare function loadProfilePins(token: string, context: string | undefined): Promise<{
|
|
12
|
+
profiles: Record<string, string>;
|
|
13
|
+
warning?: AIProfileWarning;
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=customizationPin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customizationPin.d.ts","sourceRoot":"","sources":["../src/customizationPin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAc,iBAAiB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAW5H,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAQD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,SAAS,CAKZ;AAcD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,EAC1B,gBAAgB,EAAE,qBAAqB,GAAG,SAAS,GAClD,iBAAiB,CAuCnB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CA0B3E"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { REGISTRY_CACHE_TTL_MS, registryOrigin } from "./constants.js";
|
|
2
|
+
import { resolvePreferOpenRouter } from "./resolveModelRouting.js";
|
|
3
|
+
const cache = new Map();
|
|
4
|
+
export function clearCustomizationCache() {
|
|
5
|
+
cache.clear();
|
|
6
|
+
}
|
|
7
|
+
function envValue(name) {
|
|
8
|
+
const value = globalThis.process?.env?.[name];
|
|
9
|
+
const trimmed = value?.trim();
|
|
10
|
+
return trimmed || undefined;
|
|
11
|
+
}
|
|
12
|
+
export function customizationAuth(options) {
|
|
13
|
+
const token = options.authixToken?.trim() || envValue("AUTHIX_TOKEN");
|
|
14
|
+
if (!token)
|
|
15
|
+
return undefined;
|
|
16
|
+
const context = options.context?.trim() || envValue("AI_REGISTRY_CONTEXT");
|
|
17
|
+
return context ? { token, context } : { token };
|
|
18
|
+
}
|
|
19
|
+
function findEntry(catalog, modelId) {
|
|
20
|
+
const needle = modelId.trim().toLowerCase();
|
|
21
|
+
return catalog.models.find((entry) => {
|
|
22
|
+
const direct = `${entry.direct.provider}/${entry.direct.modelId}`.toLowerCase();
|
|
23
|
+
return (entry.openrouter.modelId.toLowerCase() === needle ||
|
|
24
|
+
direct === needle ||
|
|
25
|
+
entry.direct.modelId.toLowerCase() === needle);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export function applyProfilePin(resolved, modelId, catalog, preferOpenRouter) {
|
|
29
|
+
const prefer = resolvePreferOpenRouter(preferOpenRouter);
|
|
30
|
+
const entry = findEntry(catalog, modelId);
|
|
31
|
+
const slash = modelId.indexOf("/");
|
|
32
|
+
const provider = (slash > 0 ? modelId.slice(0, slash) : entry?.direct.provider ?? resolved.provider);
|
|
33
|
+
const bareModel = slash > 0 ? modelId.slice(slash + 1) : modelId;
|
|
34
|
+
const openRouterId = entry?.openrouter.modelId ?? modelId;
|
|
35
|
+
const directProvider = (entry?.direct.provider ?? provider);
|
|
36
|
+
const directModel = entry?.direct.modelId ?? bareModel;
|
|
37
|
+
const warnings = [
|
|
38
|
+
...(resolved.warnings ?? []),
|
|
39
|
+
{
|
|
40
|
+
code: "PROFILE_PIN_APPLIED",
|
|
41
|
+
message: `Profile ${resolved.profile}/${resolved.choice} is pinned to ${modelId}.`,
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
const pricing = entry?.openrouter.pricing;
|
|
45
|
+
return {
|
|
46
|
+
...resolved,
|
|
47
|
+
provider: prefer ? "openrouter" : directProvider,
|
|
48
|
+
modelId: prefer ? openRouterId : directModel,
|
|
49
|
+
routing: prefer ? "openrouter" : "direct",
|
|
50
|
+
invocation: {
|
|
51
|
+
direct: { provider: directProvider, modelId: directModel },
|
|
52
|
+
openrouter: { provider: "openrouter", modelId: openRouterId },
|
|
53
|
+
},
|
|
54
|
+
...(pricing && (typeof pricing.input === "number" || typeof pricing.output === "number")
|
|
55
|
+
? {
|
|
56
|
+
pricing: {
|
|
57
|
+
input: typeof pricing.input === "number" ? pricing.input : 0,
|
|
58
|
+
output: typeof pricing.output === "number" ? pricing.output : 0,
|
|
59
|
+
currency: "USD",
|
|
60
|
+
unit: "1M_tokens",
|
|
61
|
+
...(typeof pricing.cachedInput === "number" ? { cachedInput: pricing.cachedInput } : {}),
|
|
62
|
+
},
|
|
63
|
+
}
|
|
64
|
+
: {}),
|
|
65
|
+
warnings,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export async function loadProfilePins(token, context) {
|
|
69
|
+
const key = `${token}\n${context ?? ""}`;
|
|
70
|
+
const cached = cache.get(key);
|
|
71
|
+
if (cached && cached.expiresAt > Date.now()) {
|
|
72
|
+
return { profiles: cached.profiles, ...(cached.warning ? { warning: cached.warning } : {}) };
|
|
73
|
+
}
|
|
74
|
+
const url = `${registryOrigin()}/v1/customization${context ? `?context=${encodeURIComponent(context)}` : ""}`;
|
|
75
|
+
try {
|
|
76
|
+
const response = await fetch(url, {
|
|
77
|
+
headers: { accept: "application/json", authorization: `Bearer ${token}` },
|
|
78
|
+
});
|
|
79
|
+
if (!response.ok) {
|
|
80
|
+
throw new Error(`HTTP ${response.status}`);
|
|
81
|
+
}
|
|
82
|
+
const body = (await response.json());
|
|
83
|
+
const profiles = body.overrides?.profiles ?? {};
|
|
84
|
+
cache.set(key, { expiresAt: Date.now() + REGISTRY_CACHE_TTL_MS, profiles });
|
|
85
|
+
return { profiles };
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
const warning = {
|
|
89
|
+
code: "CUSTOMIZATION_UNAVAILABLE",
|
|
90
|
+
message: "Customization could not be loaded. Using the published profile model.",
|
|
91
|
+
};
|
|
92
|
+
cache.set(key, { expiresAt: Date.now() + 5_000, profiles: {}, warning });
|
|
93
|
+
return { profiles: {}, warning };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=customizationPin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customizationPin.js","sourceRoot":"","sources":["../src/customizationPin.ts"],"names":[],"mappings":"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"}
|