@relkit/app 0.1.0 → 0.4.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 +21 -42
- package/dist/app-validation.d.ts +4 -0
- package/dist/app-validation.d.ts.map +1 -0
- package/dist/app-validation.js +23 -0
- package/dist/app-validation.js.map +1 -0
- package/dist/config.d.ts +2 -32
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -74
- package/dist/config.js.map +1 -1
- package/dist/define-app-types.d.ts +59 -0
- package/dist/define-app-types.d.ts.map +1 -0
- package/dist/define-app-types.js +2 -0
- package/dist/define-app-types.js.map +1 -0
- package/dist/define-app.d.ts +22 -0
- package/dist/define-app.d.ts.map +1 -0
- package/dist/define-app.js +86 -0
- package/dist/define-app.js.map +1 -0
- 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/package.json +16 -14
- package/dist/config-types.d.ts +0 -59
- package/dist/config-types.d.ts.map +0 -1
- package/dist/config-types.js +0 -2
- package/dist/config-types.js.map +0 -1
- package/dist/config-validation.d.ts +0 -10
- package/dist/config-validation.d.ts.map +0 -1
- package/dist/config-validation.js +0 -83
- package/dist/config-validation.js.map +0 -1
- package/dist/model-providers.d.ts +0 -18
- package/dist/model-providers.d.ts.map +0 -1
- package/dist/model-providers.js +0 -48
- package/dist/model-providers.js.map +0 -1
- package/dist/providers-validation-utils.d.ts +0 -13
- package/dist/providers-validation-utils.d.ts.map +0 -1
- package/dist/providers-validation-utils.js +0 -155
- package/dist/providers-validation-utils.js.map +0 -1
- package/dist/providers-validation.d.ts +0 -8
- package/dist/providers-validation.d.ts.map +0 -1
- package/dist/providers-validation.js +0 -130
- package/dist/providers-validation.js.map +0 -1
- package/dist/providers.d.ts +0 -107
- package/dist/providers.d.ts.map +0 -1
- package/dist/providers.js +0 -78
- package/dist/providers.js.map +0 -1
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { isEnvRef } from "@relkit/config";
|
|
2
|
-
import { normalizeId } from "@relkit/contracts";
|
|
3
|
-
import { copyProviderTopology } from "./providers.js";
|
|
4
|
-
const MAPS = ["buckets", "caches", "jobs", "events", "models", "observability"];
|
|
5
|
-
const DEFAULTS = {
|
|
6
|
-
buckets: "bucket",
|
|
7
|
-
caches: "cache",
|
|
8
|
-
jobs: "job",
|
|
9
|
-
events: "event",
|
|
10
|
-
models: "model",
|
|
11
|
-
observability: "observability",
|
|
12
|
-
};
|
|
13
|
-
export function copyProviderMaps(value) {
|
|
14
|
-
const topology = providerTopology(value);
|
|
15
|
-
return {
|
|
16
|
-
...(topology.buckets === undefined ? {} : { buckets: topology.buckets }),
|
|
17
|
-
...(topology.cache === undefined ? {} : { caches: topology.cache }),
|
|
18
|
-
...(topology.jobs === undefined ? {} : { jobs: topology.jobs }),
|
|
19
|
-
...(topology.events === undefined ? {} : { events: topology.events }),
|
|
20
|
-
...(topology.models === undefined ? {} : { models: topology.models }),
|
|
21
|
-
...(topology.observability === undefined ? {} : { observability: topology.observability }),
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
export function providerTopology(value) {
|
|
25
|
-
return copyProviderTopology({
|
|
26
|
-
...(value.buckets === undefined ? {} : { buckets: value.buckets }),
|
|
27
|
-
...(value.caches === undefined ? {} : { cache: value.caches }),
|
|
28
|
-
...(value.jobs === undefined ? {} : { jobs: value.jobs }),
|
|
29
|
-
...(value.events === undefined ? {} : { events: value.events }),
|
|
30
|
-
...(value.models === undefined ? {} : { models: value.models }),
|
|
31
|
-
...(value.observability === undefined ? {} : { observability: value.observability }),
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
export function validateDefaults(maps, defaults) {
|
|
35
|
-
for (const mapName of MAPS) {
|
|
36
|
-
const profiles = maps[mapName];
|
|
37
|
-
const defaultName = DEFAULTS[mapName];
|
|
38
|
-
const selected = defaults?.[defaultName];
|
|
39
|
-
if (selected !== undefined &&
|
|
40
|
-
(typeof selected !== "string" || profiles?.[selected] === undefined)) {
|
|
41
|
-
throw new TypeError(`defaults.${defaultName} must reference a ${mapName} profile`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
for (const key of Object.keys(defaults ?? {})) {
|
|
45
|
-
if (!Object.values(DEFAULTS).includes(key)) {
|
|
46
|
-
throw new TypeError(`Unknown default capability "${key}"`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
export function resolveDefaults(maps, defaults) {
|
|
51
|
-
validateDefaults(maps, defaults);
|
|
52
|
-
const resolved = {};
|
|
53
|
-
for (const mapName of MAPS) {
|
|
54
|
-
const selected = defaults?.[DEFAULTS[mapName]];
|
|
55
|
-
const profiles = Object.keys(maps[mapName] ?? {});
|
|
56
|
-
if (typeof selected === "string")
|
|
57
|
-
resolved[DEFAULTS[mapName]] = selected;
|
|
58
|
-
else if (profiles.length === 1)
|
|
59
|
-
resolved[DEFAULTS[mapName]] = profiles[0];
|
|
60
|
-
}
|
|
61
|
-
return Object.freeze(resolved);
|
|
62
|
-
}
|
|
63
|
-
export function isEnvDefinition(value) {
|
|
64
|
-
if (!isRecord(value) || value.kind !== "env-definition" || !isRecord(value.shape))
|
|
65
|
-
return false;
|
|
66
|
-
return Object.entries(value.shape).every(([name, builder]) => {
|
|
67
|
-
const reference = value[name];
|
|
68
|
-
return (isRecord(builder) &&
|
|
69
|
-
builder.kind === "env-builder" &&
|
|
70
|
-
typeof builder.parse === "function" &&
|
|
71
|
-
typeof builder.getDefault === "function" &&
|
|
72
|
-
isEnvRef(reference) &&
|
|
73
|
-
reference.name === name);
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
export function deriveApplicationId(packageName) {
|
|
77
|
-
const normalized = packageName.startsWith("@") ? packageName.slice(1) : packageName;
|
|
78
|
-
return normalizeId(normalized.replaceAll("/", "."));
|
|
79
|
-
}
|
|
80
|
-
function isRecord(value) {
|
|
81
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=config-validation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-validation.js","sourceRoot":"","sources":["../src/config-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { ProviderValue } from "./providers.js";
|
|
2
|
-
/** Serializable settings for one named AI SDK provider recipe. */
|
|
3
|
-
export interface ModelProviderOptions {
|
|
4
|
-
readonly defaultModel?: string;
|
|
5
|
-
readonly [key: string]: ProviderValue;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Value-free per-environment AI SDK provider configuration. Both defaults are
|
|
9
|
-
* required; credentials should be environment references and are resolved only
|
|
10
|
-
* when a runtime provider registry is constructed.
|
|
11
|
-
*/
|
|
12
|
-
export interface ModelProviders {
|
|
13
|
-
readonly defaultProvider: string;
|
|
14
|
-
readonly defaultModel: string;
|
|
15
|
-
readonly [provider: string]: string | ModelProviderOptions;
|
|
16
|
-
}
|
|
17
|
-
export declare function assertModelProviders(value: unknown): asserts value is ModelProviders;
|
|
18
|
-
//# sourceMappingURL=model-providers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-providers.d.ts","sourceRoot":"","sources":["../src/model-providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,oBAAoB,CAAC;CAC5D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CA6BpF"}
|
package/dist/model-providers.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { normalizeId } from "@relkit/contracts";
|
|
2
|
-
export function assertModelProviders(value) {
|
|
3
|
-
if (!isPlainRecord(value) || Object.getOwnPropertySymbols(value).length > 0) {
|
|
4
|
-
throw new TypeError("modelProviders must be a plain object");
|
|
5
|
-
}
|
|
6
|
-
const provider = ownText(value, "defaultProvider");
|
|
7
|
-
const model = ownText(value, "defaultModel");
|
|
8
|
-
if (provider === undefined)
|
|
9
|
-
throw new TypeError("modelProviders.defaultProvider is required");
|
|
10
|
-
if (model === undefined)
|
|
11
|
-
throw new TypeError("modelProviders.defaultModel is required");
|
|
12
|
-
const names = Object.getOwnPropertyNames(value).filter((name) => name !== "defaultProvider" && name !== "defaultModel");
|
|
13
|
-
if (names.length === 0) {
|
|
14
|
-
throw new TypeError("modelProviders must declare at least one provider");
|
|
15
|
-
}
|
|
16
|
-
if (!names.includes(provider)) {
|
|
17
|
-
throw new TypeError(`modelProviders.defaultProvider "${provider}" is not configured`);
|
|
18
|
-
}
|
|
19
|
-
for (const name of names) {
|
|
20
|
-
try {
|
|
21
|
-
normalizeId(name);
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
throw new TypeError(`modelProviders provider name "${name}" must be a stable ID`);
|
|
25
|
-
}
|
|
26
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, name);
|
|
27
|
-
if (!descriptor || !("value" in descriptor) || !isPlainRecord(descriptor.value)) {
|
|
28
|
-
throw new TypeError(`modelProviders.${name} must be an object`);
|
|
29
|
-
}
|
|
30
|
-
ownText(descriptor.value, "defaultModel", `modelProviders.${name}.defaultModel`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function ownText(value, name, path = `modelProviders.${name}`) {
|
|
34
|
-
if (!Object.prototype.hasOwnProperty.call(value, name))
|
|
35
|
-
return undefined;
|
|
36
|
-
const entry = value[name];
|
|
37
|
-
if (typeof entry !== "string" || entry.trim() === "") {
|
|
38
|
-
throw new TypeError(`${path} must be non-empty text`);
|
|
39
|
-
}
|
|
40
|
-
return entry.trim();
|
|
41
|
-
}
|
|
42
|
-
function isPlainRecord(value) {
|
|
43
|
-
return (value !== null &&
|
|
44
|
-
typeof value === "object" &&
|
|
45
|
-
!Array.isArray(value) &&
|
|
46
|
-
(Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null));
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=model-providers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-providers.js","sourceRoot":"","sources":["../src/model-providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type EnvRef } from "@relkit/config";
|
|
2
|
-
import type { ProviderCapability, ProviderValue } from "./providers.js";
|
|
3
|
-
export declare function normalizeValue(value: unknown, path: string, active?: Set<object>): ProviderValue;
|
|
4
|
-
export declare function isProviderValue(value: unknown, active?: Set<object>): value is ProviderValue;
|
|
5
|
-
export declare function isValueFreeEnvRef(value: unknown): value is EnvRef;
|
|
6
|
-
export declare function isStringEnvRef(value: unknown): value is EnvRef<string, string>;
|
|
7
|
-
export declare function isPlainRecord(value: unknown): value is Record<string, any>;
|
|
8
|
-
export declare function isStableProfile(value: string): boolean;
|
|
9
|
-
export declare function isCapabilityList(value: unknown, capabilities: readonly ProviderCapability[]): boolean;
|
|
10
|
-
export declare function sameCapabilities(value: unknown, expected: readonly ProviderCapability[]): boolean;
|
|
11
|
-
export declare function isSensitiveKey(key: string | undefined): boolean;
|
|
12
|
-
export declare function walk(value: ProviderValue, visit: (reference: EnvRef) => void): void;
|
|
13
|
-
//# sourceMappingURL=providers-validation-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers-validation-utils.d.ts","sourceRoot":"","sources":["../src/providers-validation-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAExE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,cAAoB,GACzB,aAAa,CAiCf;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,MAAM,cAAoB,GACzB,KAAK,IAAI,aAAa,CA0BxB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAUjE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE9E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAO1E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,SAAS,kBAAkB,EAAE,GAC1C,OAAO,CAMT;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GAAG,OAAO,CAMjG;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE/D;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAMnF"}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { isEnvRef } from "@relkit/config";
|
|
2
|
-
import { deepFreeze, isJsonValue, normalizeId } from "@relkit/contracts";
|
|
3
|
-
export function normalizeValue(value, path, active = new Set()) {
|
|
4
|
-
if (isValueFreeEnvRef(value))
|
|
5
|
-
return value;
|
|
6
|
-
if (value instanceof URL)
|
|
7
|
-
return value.toString();
|
|
8
|
-
if (isJsonPrimitive(value))
|
|
9
|
-
return value;
|
|
10
|
-
if (Array.isArray(value)) {
|
|
11
|
-
assertArray(value, path);
|
|
12
|
-
enter(value, path, active);
|
|
13
|
-
try {
|
|
14
|
-
return Object.freeze(value.map((item, index) => normalizeValue(item, `${path}[${index}]`, active)));
|
|
15
|
-
}
|
|
16
|
-
finally {
|
|
17
|
-
active.delete(value);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
if (!isPlainRecord(value))
|
|
21
|
-
throw new TypeError(`${path} must contain JSON-safe metadata`);
|
|
22
|
-
if (Object.getOwnPropertySymbols(value).length > 0) {
|
|
23
|
-
throw new TypeError(`${path} cannot contain symbol keys`);
|
|
24
|
-
}
|
|
25
|
-
enter(value, path, active);
|
|
26
|
-
const result = {};
|
|
27
|
-
try {
|
|
28
|
-
for (const name of Object.getOwnPropertyNames(value)) {
|
|
29
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, name);
|
|
30
|
-
if (!descriptor || !("value" in descriptor)) {
|
|
31
|
-
throw new TypeError(`${path}.${name} must be data`);
|
|
32
|
-
}
|
|
33
|
-
result[name] = normalizeValue(descriptor.value, `${path}.${name}`, active);
|
|
34
|
-
}
|
|
35
|
-
return deepFreeze(result);
|
|
36
|
-
}
|
|
37
|
-
finally {
|
|
38
|
-
active.delete(value);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
export function isProviderValue(value, active = new Set()) {
|
|
42
|
-
if (isValueFreeEnvRef(value) || isJsonPrimitive(value))
|
|
43
|
-
return true;
|
|
44
|
-
if (Array.isArray(value)) {
|
|
45
|
-
if (!isSafeArray(value) || active.has(value))
|
|
46
|
-
return false;
|
|
47
|
-
active.add(value);
|
|
48
|
-
try {
|
|
49
|
-
return value.every((item) => isProviderValue(item, active));
|
|
50
|
-
}
|
|
51
|
-
finally {
|
|
52
|
-
active.delete(value);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
if (!isPlainRecord(value) || Object.getOwnPropertySymbols(value).length > 0)
|
|
56
|
-
return false;
|
|
57
|
-
if (active.has(value))
|
|
58
|
-
return false;
|
|
59
|
-
active.add(value);
|
|
60
|
-
try {
|
|
61
|
-
return Object.getOwnPropertyNames(value).every((key) => {
|
|
62
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
63
|
-
return (descriptor !== undefined &&
|
|
64
|
-
"value" in descriptor &&
|
|
65
|
-
isProviderValue(descriptor.value, active));
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
finally {
|
|
69
|
-
active.delete(value);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
export function isValueFreeEnvRef(value) {
|
|
73
|
-
if (!isEnvRef(value) || Object.getOwnPropertySymbols(value).length > 0)
|
|
74
|
-
return false;
|
|
75
|
-
const keys = Object.keys(value).sort();
|
|
76
|
-
return (keys.join("\0") === ["kind", "metadata", "name", "sensitive", "type"].join("\0") &&
|
|
77
|
-
isJsonValue(value.metadata) &&
|
|
78
|
-
(!value.sensitive ||
|
|
79
|
-
value.metadata.example === undefined ||
|
|
80
|
-
value.metadata.example === "[redacted]"));
|
|
81
|
-
}
|
|
82
|
-
export function isStringEnvRef(value) {
|
|
83
|
-
return isValueFreeEnvRef(value) && value.type === "string";
|
|
84
|
-
}
|
|
85
|
-
export function isPlainRecord(value) {
|
|
86
|
-
return (value !== null &&
|
|
87
|
-
typeof value === "object" &&
|
|
88
|
-
!Array.isArray(value) &&
|
|
89
|
-
(Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null));
|
|
90
|
-
}
|
|
91
|
-
export function isStableProfile(value) {
|
|
92
|
-
try {
|
|
93
|
-
normalizeId(value);
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
export function isCapabilityList(value, capabilities) {
|
|
101
|
-
return (Array.isArray(value) &&
|
|
102
|
-
new Set(value).size === value.length &&
|
|
103
|
-
value.every((entry) => capabilities.includes(entry)));
|
|
104
|
-
}
|
|
105
|
-
export function sameCapabilities(value, expected) {
|
|
106
|
-
return (Array.isArray(value) &&
|
|
107
|
-
value.length === expected.length &&
|
|
108
|
-
value.every((entry, index) => entry === expected[index]));
|
|
109
|
-
}
|
|
110
|
-
export function isSensitiveKey(key) {
|
|
111
|
-
return key !== undefined && /(?:api[-_]?key|password|secret|token|credential)/i.test(key);
|
|
112
|
-
}
|
|
113
|
-
export function walk(value, visit) {
|
|
114
|
-
if (isValueFreeEnvRef(value))
|
|
115
|
-
return visit(value);
|
|
116
|
-
if (Array.isArray(value))
|
|
117
|
-
return value.forEach((item) => walk(item, visit));
|
|
118
|
-
if (isPlainRecord(value)) {
|
|
119
|
-
Object.values(value).forEach((item) => walk(item, visit));
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
function assertArray(value, path) {
|
|
123
|
-
if (!isSafeArray(value))
|
|
124
|
-
throw new TypeError(`${path} must be a dense JSON array`);
|
|
125
|
-
}
|
|
126
|
-
function isSafeArray(value) {
|
|
127
|
-
if (Object.getOwnPropertySymbols(value).length > 0)
|
|
128
|
-
return false;
|
|
129
|
-
for (const key of Object.getOwnPropertyNames(value)) {
|
|
130
|
-
if (key !== "length" && !isArrayIndex(key, value.length))
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
133
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
134
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
|
|
135
|
-
if (!descriptor || !("value" in descriptor))
|
|
136
|
-
return false;
|
|
137
|
-
}
|
|
138
|
-
return true;
|
|
139
|
-
}
|
|
140
|
-
function isArrayIndex(value, length) {
|
|
141
|
-
const index = Number(value);
|
|
142
|
-
return Number.isSafeInteger(index) && index >= 0 && index < length && String(index) === value;
|
|
143
|
-
}
|
|
144
|
-
function enter(value, path, active) {
|
|
145
|
-
if (active.has(value))
|
|
146
|
-
throw new TypeError(`${path} must not contain cycles`);
|
|
147
|
-
active.add(value);
|
|
148
|
-
}
|
|
149
|
-
function isJsonPrimitive(value) {
|
|
150
|
-
return (value === null ||
|
|
151
|
-
typeof value === "string" ||
|
|
152
|
-
typeof value === "boolean" ||
|
|
153
|
-
(typeof value === "number" && Number.isFinite(value)));
|
|
154
|
-
}
|
|
155
|
-
//# sourceMappingURL=providers-validation-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers-validation-utils.js","sourceRoot":"","sources":["../src/providers-validation-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { ProviderAdapter, ProviderBinding, ProviderCapability, ProviderEnvironmentReference, ProviderOwnership, ProviderTopology, ProviderValue } from "./providers.js";
|
|
2
|
-
export declare function createAdapter<C extends ProviderCapability, N extends string>(capability: C, adapter: N, options: object, secretPaths: readonly string[], rejectSensitiveLiterals?: boolean): ProviderAdapter<C, N>;
|
|
3
|
-
export declare function createBinding<C extends ProviderCapability, N extends string>(ownership: ProviderOwnership, adapter: ProviderAdapter<C, N>): ProviderBinding<C, N>;
|
|
4
|
-
export declare function copyProviderTopology(value: unknown): ProviderTopology;
|
|
5
|
-
export declare function isProviderTopology(value: unknown): value is ProviderTopology;
|
|
6
|
-
export declare function isProviderBinding(value: unknown): value is ProviderBinding;
|
|
7
|
-
export declare function providerEnvironment(value: ProviderValue): readonly ProviderEnvironmentReference[];
|
|
8
|
-
//# sourceMappingURL=providers-validation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers-validation.d.ts","sourceRoot":"","sources":["../src/providers-validation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,kBAAkB,EAElB,4BAA4B,EAC5B,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACd,MAAM,gBAAgB,CAAC;AASxB,wBAAgB,aAAa,CAAC,CAAC,SAAS,kBAAkB,EAAE,CAAC,SAAS,MAAM,EAC1E,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,uBAAuB,UAAQ,GAC9B,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAcvB;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,kBAAkB,EAAE,CAAC,SAAS,MAAM,EAC1E,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC7B,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAGvB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAsBrE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAO5E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAO1E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,4BAA4B,EAAE,CAUjG"}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { isEnvRef } from "@relkit/config";
|
|
2
|
-
import { deepFreeze, normalizeId } from "@relkit/contracts";
|
|
3
|
-
import { assertModelProviders } from "./model-providers.js";
|
|
4
|
-
import { PROVIDER_CAPABILITIES } from "./providers.js";
|
|
5
|
-
import { isPlainRecord, isProviderValue, normalizeValue, walk, } from "./providers-validation-utils.js";
|
|
6
|
-
export function createAdapter(capability, adapter, options, secretPaths, rejectSensitiveLiterals = false) {
|
|
7
|
-
if (!isPlainRecord(options))
|
|
8
|
-
throw new TypeError(`${adapter} options must be an object`);
|
|
9
|
-
if (capability === "models")
|
|
10
|
-
assertModelProviders(options);
|
|
11
|
-
assertSecretPaths(options, secretPaths, adapter);
|
|
12
|
-
const configuration = normalizeValue(options, `providers.${capability}.${adapter}`);
|
|
13
|
-
if (!isPlainRecord(configuration))
|
|
14
|
-
throw new TypeError(`${adapter} options must be an object`);
|
|
15
|
-
if (rejectSensitiveLiterals)
|
|
16
|
-
assertNoSensitiveLiterals(configuration, adapter);
|
|
17
|
-
return deepFreeze({
|
|
18
|
-
kind: "provider-adapter",
|
|
19
|
-
capability,
|
|
20
|
-
adapter,
|
|
21
|
-
configuration: configuration,
|
|
22
|
-
environment: providerEnvironment(configuration),
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
export function createBinding(ownership, adapter) {
|
|
26
|
-
if (!isProviderAdapter(adapter))
|
|
27
|
-
throw new TypeError("Invalid provider adapter");
|
|
28
|
-
return deepFreeze({ kind: "provider-binding", ownership, adapter });
|
|
29
|
-
}
|
|
30
|
-
export function copyProviderTopology(value) {
|
|
31
|
-
if (!isPlainRecord(value))
|
|
32
|
-
throw new TypeError("App providers must be an object");
|
|
33
|
-
const result = {};
|
|
34
|
-
for (const [capability, profiles] of Object.entries(value)) {
|
|
35
|
-
if (profiles === undefined)
|
|
36
|
-
continue;
|
|
37
|
-
if (!PROVIDER_CAPABILITIES.includes(capability)) {
|
|
38
|
-
throw new TypeError(`Unknown provider capability "${capability}"`);
|
|
39
|
-
}
|
|
40
|
-
if (!isPlainRecord(profiles)) {
|
|
41
|
-
throw new TypeError(`Provider capability "${capability}" must contain profiles`);
|
|
42
|
-
}
|
|
43
|
-
const bindings = {};
|
|
44
|
-
for (const [profile, binding] of Object.entries(profiles)) {
|
|
45
|
-
normalizeId(profile);
|
|
46
|
-
if (!isProviderBinding(binding) || binding.adapter.capability !== capability) {
|
|
47
|
-
throw new TypeError(`Invalid ${capability} provider binding "${profile}"`);
|
|
48
|
-
}
|
|
49
|
-
bindings[profile] = binding;
|
|
50
|
-
}
|
|
51
|
-
result[capability] = bindings;
|
|
52
|
-
}
|
|
53
|
-
return deepFreeze(result);
|
|
54
|
-
}
|
|
55
|
-
export function isProviderTopology(value) {
|
|
56
|
-
try {
|
|
57
|
-
copyProviderTopology(value);
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
export function isProviderBinding(value) {
|
|
65
|
-
return (isPlainRecord(value) &&
|
|
66
|
-
value.kind === "provider-binding" &&
|
|
67
|
-
(value.ownership === "external" || value.ownership === "managed") &&
|
|
68
|
-
isProviderAdapter(value.adapter));
|
|
69
|
-
}
|
|
70
|
-
export function providerEnvironment(value) {
|
|
71
|
-
const refs = new Map();
|
|
72
|
-
walk(value, (reference) => {
|
|
73
|
-
refs.set(reference.name, {
|
|
74
|
-
name: reference.name,
|
|
75
|
-
type: reference.type,
|
|
76
|
-
sensitive: reference.sensitive,
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
return Object.freeze([...refs.values()].sort((a, b) => a.name.localeCompare(b.name)));
|
|
80
|
-
}
|
|
81
|
-
function isProviderAdapter(value) {
|
|
82
|
-
return (isPlainRecord(value) &&
|
|
83
|
-
value.kind === "provider-adapter" &&
|
|
84
|
-
PROVIDER_CAPABILITIES.includes(value.capability) &&
|
|
85
|
-
typeof value.adapter === "string" &&
|
|
86
|
-
value.adapter.length > 0 &&
|
|
87
|
-
isPlainRecord(value.configuration) &&
|
|
88
|
-
isProviderValue(value.configuration) &&
|
|
89
|
-
Array.isArray(value.environment));
|
|
90
|
-
}
|
|
91
|
-
function assertSecretPaths(value, paths, adapter) {
|
|
92
|
-
for (const path of paths) {
|
|
93
|
-
const candidate = readPath(value, path);
|
|
94
|
-
if (candidate !== undefined && (!isEnvRef(candidate) || !candidate.sensitive)) {
|
|
95
|
-
throw new TypeError(`${adapter}.${path} must be a secret environment reference`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
function assertNoSensitiveLiterals(value, path) {
|
|
100
|
-
if (!isPlainRecord(value))
|
|
101
|
-
return;
|
|
102
|
-
for (const [key, item] of Object.entries(value)) {
|
|
103
|
-
const current = `${path}.${key}`;
|
|
104
|
-
if (/(?:api[-_]?key|password|secret|token|credential|headers?)/i.test(key)) {
|
|
105
|
-
if (isEnvRef(item)) {
|
|
106
|
-
if (!item.sensitive)
|
|
107
|
-
throw new TypeError(`${current} must use a secret environment reference`);
|
|
108
|
-
}
|
|
109
|
-
else if (isPlainRecord(item)) {
|
|
110
|
-
assertNoSensitiveLiterals(item, current);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
throw new TypeError(`${current} must use a secret environment reference`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
else if (isPlainRecord(item)) {
|
|
117
|
-
assertNoSensitiveLiterals(item, current);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
function readPath(value, path) {
|
|
122
|
-
let current = value;
|
|
123
|
-
for (const part of path.split(".")) {
|
|
124
|
-
if (!isPlainRecord(current))
|
|
125
|
-
return undefined;
|
|
126
|
-
current = current[part];
|
|
127
|
-
}
|
|
128
|
-
return current;
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=providers-validation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers-validation.js","sourceRoot":"","sources":["../src/providers-validation.ts"],"names":[],"mappings":"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"}
|
package/dist/providers.d.ts
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import type { EnvRef } from "@relkit/config";
|
|
2
|
-
import type { JsonPrimitive } from "@relkit/contracts";
|
|
3
|
-
import type { ModelProviders } from "./model-providers.js";
|
|
4
|
-
import { copyProviderTopology, isProviderBinding, isProviderTopology, providerEnvironment } from "./providers-validation.js";
|
|
5
|
-
export type { ModelProviderOptions, ModelProviders } from "./model-providers.js";
|
|
6
|
-
export declare const PROVIDER_CAPABILITIES: readonly ["buckets", "cache", "jobs", "events", "models", "observability"];
|
|
7
|
-
export type ProviderCapability = (typeof PROVIDER_CAPABILITIES)[number];
|
|
8
|
-
export type ProviderOwnership = "external" | "managed";
|
|
9
|
-
export type ProviderValue = JsonPrimitive | EnvRef | readonly ProviderValue[] | {
|
|
10
|
-
readonly [key: string]: ProviderValue;
|
|
11
|
-
};
|
|
12
|
-
export type ProviderConfig = Readonly<Record<string, ProviderValue>>;
|
|
13
|
-
export interface ProviderEnvironmentReference {
|
|
14
|
-
readonly name: string;
|
|
15
|
-
readonly type: string;
|
|
16
|
-
readonly sensitive: boolean;
|
|
17
|
-
}
|
|
18
|
-
export interface ProviderAdapter<Capability extends ProviderCapability = ProviderCapability, Name extends string = string> {
|
|
19
|
-
readonly kind: "provider-adapter";
|
|
20
|
-
readonly capability: Capability;
|
|
21
|
-
readonly adapter: Name;
|
|
22
|
-
readonly configuration: ProviderConfig;
|
|
23
|
-
readonly environment: readonly ProviderEnvironmentReference[];
|
|
24
|
-
}
|
|
25
|
-
export interface ProviderBinding<Capability extends ProviderCapability = ProviderCapability, Name extends string = string> {
|
|
26
|
-
readonly kind: "provider-binding";
|
|
27
|
-
readonly ownership: ProviderOwnership;
|
|
28
|
-
readonly adapter: ProviderAdapter<Capability, Name>;
|
|
29
|
-
}
|
|
30
|
-
export type CapabilityBindings<C extends ProviderCapability> = Readonly<Record<string, ProviderBinding<C>>>;
|
|
31
|
-
export interface ProviderTopology {
|
|
32
|
-
readonly buckets?: CapabilityBindings<"buckets">;
|
|
33
|
-
readonly cache?: CapabilityBindings<"cache">;
|
|
34
|
-
readonly jobs?: CapabilityBindings<"jobs">;
|
|
35
|
-
readonly events?: CapabilityBindings<"events">;
|
|
36
|
-
readonly models?: CapabilityBindings<"models">;
|
|
37
|
-
readonly observability?: CapabilityBindings<"observability">;
|
|
38
|
-
}
|
|
39
|
-
export interface S3Options {
|
|
40
|
-
readonly endpoint: string | URL | EnvRef;
|
|
41
|
-
readonly bucketName: string | EnvRef;
|
|
42
|
-
readonly region: string | EnvRef;
|
|
43
|
-
readonly credentials?: {
|
|
44
|
-
readonly accessKeyId?: EnvRef;
|
|
45
|
-
readonly secretAccessKey?: EnvRef;
|
|
46
|
-
readonly sessionToken?: EnvRef;
|
|
47
|
-
};
|
|
48
|
-
readonly forcePathStyle?: boolean | EnvRef;
|
|
49
|
-
}
|
|
50
|
-
export interface RedisOptions {
|
|
51
|
-
readonly url: EnvRef;
|
|
52
|
-
}
|
|
53
|
-
export interface AwsProtocolOptions {
|
|
54
|
-
readonly region: string | EnvRef;
|
|
55
|
-
readonly endpoint?: string | URL | EnvRef;
|
|
56
|
-
readonly credentials?: S3Options["credentials"];
|
|
57
|
-
}
|
|
58
|
-
export interface SqsOptions extends AwsProtocolOptions {
|
|
59
|
-
readonly queueUrl: string | URL | EnvRef;
|
|
60
|
-
}
|
|
61
|
-
export interface EventBridgeOptions extends AwsProtocolOptions {
|
|
62
|
-
readonly busName: string | EnvRef;
|
|
63
|
-
readonly source?: string | EnvRef;
|
|
64
|
-
}
|
|
65
|
-
export interface OtlpOptions {
|
|
66
|
-
readonly endpoint: string | URL | EnvRef;
|
|
67
|
-
readonly headers?: Readonly<Record<string, EnvRef>>;
|
|
68
|
-
}
|
|
69
|
-
export declare function s3(options: S3Options): ProviderAdapter<"buckets", "s3">;
|
|
70
|
-
export declare function redis(options: RedisOptions): ProviderAdapter<"cache", "redis">;
|
|
71
|
-
export declare function sqs(options: SqsOptions): ProviderAdapter<"jobs", "sqs">;
|
|
72
|
-
export declare function eventBridge(options: EventBridgeOptions): ProviderAdapter<"events", "eventbridge">;
|
|
73
|
-
export declare function aiSdk(options: ModelProviders): ProviderAdapter<"models", "ai-sdk">;
|
|
74
|
-
export declare function otlp(options: OtlpOptions): ProviderAdapter<"observability", "otlp">;
|
|
75
|
-
export declare function cloudWatch(options: Pick<AwsProtocolOptions, "region">): ProviderAdapter<"observability", "cloudwatch">;
|
|
76
|
-
/**
|
|
77
|
-
* Marks an adapter as connected to infrastructure owned outside the deployment stack.
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* ```ts
|
|
81
|
-
* import { defineEnv, env, external, redis } from "@relkit/app/config"
|
|
82
|
-
*
|
|
83
|
-
* const applicationEnv = defineEnv({ CACHE_URL: env.secret() })
|
|
84
|
-
* const cache = external(redis({ url: applicationEnv.CACHE_URL }))
|
|
85
|
-
* void cache
|
|
86
|
-
* ```
|
|
87
|
-
* @category Providers
|
|
88
|
-
* @since 0.1.0
|
|
89
|
-
*/
|
|
90
|
-
export declare function external<C extends ProviderCapability, N extends string>(adapter: ProviderAdapter<C, N>): ProviderBinding<C, N>;
|
|
91
|
-
/**
|
|
92
|
-
* Marks an adapter as infrastructure owned by the deployment stack.
|
|
93
|
-
*
|
|
94
|
-
* @example
|
|
95
|
-
* ```ts
|
|
96
|
-
* import { defineEnv, env, managed, redis } from "@relkit/app/config"
|
|
97
|
-
*
|
|
98
|
-
* const applicationEnv = defineEnv({ CACHE_URL: env.secret() })
|
|
99
|
-
* const cache = managed(redis({ url: applicationEnv.CACHE_URL }))
|
|
100
|
-
* void cache
|
|
101
|
-
* ```
|
|
102
|
-
* @category Providers
|
|
103
|
-
* @since 0.1.0
|
|
104
|
-
*/
|
|
105
|
-
export declare function managed<C extends ProviderCapability, N extends string>(adapter: ProviderAdapter<C, N>): ProviderBinding<C, N>;
|
|
106
|
-
export { copyProviderTopology, isProviderBinding, isProviderTopology, providerEnvironment };
|
|
107
|
-
//# sourceMappingURL=providers.d.ts.map
|
package/dist/providers.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
|