@acme-engine/core 0.1.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/dist/common.d.ts +40 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +2 -0
- package/dist/common.js.map +1 -0
- package/dist/contracts.d.ts +65 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +2 -0
- package/dist/contracts.js.map +1 -0
- package/dist/errors.d.ts +24 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +20 -0
- package/dist/errors.js.map +1 -0
- package/dist/evaluation.d.ts +14 -0
- package/dist/evaluation.d.ts.map +1 -0
- package/dist/evaluation.js +2 -0
- package/dist/evaluation.js.map +1 -0
- package/dist/execution-engine.d.ts +30 -0
- package/dist/execution-engine.d.ts.map +1 -0
- package/dist/execution-engine.js +885 -0
- package/dist/execution-engine.js.map +1 -0
- package/dist/execution-identity.d.ts +35 -0
- package/dist/execution-identity.d.ts.map +1 -0
- package/dist/execution-identity.js +177 -0
- package/dist/execution-identity.js.map +1 -0
- package/dist/execution-status.d.ts +2 -0
- package/dist/execution-status.d.ts.map +1 -0
- package/dist/execution-status.js +2 -0
- package/dist/execution-status.js.map +1 -0
- package/dist/execution-types.d.ts +58 -0
- package/dist/execution-types.d.ts.map +1 -0
- package/dist/execution-types.js +2 -0
- package/dist/execution-types.js.map +1 -0
- package/dist/hashing.d.ts +6 -0
- package/dist/hashing.d.ts.map +1 -0
- package/dist/hashing.js +73 -0
- package/dist/hashing.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/memory-engine.d.ts +13 -0
- package/dist/memory-engine.d.ts.map +1 -0
- package/dist/memory-engine.js +591 -0
- package/dist/memory-engine.js.map +1 -0
- package/dist/memory.d.ts +151 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +2 -0
- package/dist/memory.js.map +1 -0
- package/dist/model-call-usage.d.ts +40 -0
- package/dist/model-call-usage.d.ts.map +1 -0
- package/dist/model-call-usage.js +0 -0
- package/dist/model-call-usage.js.map +1 -0
- package/dist/model-execution-engine.d.ts +16 -0
- package/dist/model-execution-engine.d.ts.map +1 -0
- package/dist/model-execution-engine.js +598 -0
- package/dist/model-execution-engine.js.map +1 -0
- package/dist/model-execution-identity.d.ts +16 -0
- package/dist/model-execution-identity.d.ts.map +1 -0
- package/dist/model-execution-identity.js +84 -0
- package/dist/model-execution-identity.js.map +1 -0
- package/dist/model-execution-types.d.ts +66 -0
- package/dist/model-execution-types.d.ts.map +1 -0
- package/dist/model-execution-types.js +8 -0
- package/dist/model-execution-types.js.map +1 -0
- package/dist/model-gateway-router.d.ts +11 -0
- package/dist/model-gateway-router.d.ts.map +1 -0
- package/dist/model-gateway-router.js +69 -0
- package/dist/model-gateway-router.js.map +1 -0
- package/dist/model-request-hash.d.ts +5 -0
- package/dist/model-request-hash.d.ts.map +1 -0
- package/dist/model-request-hash.js +11 -0
- package/dist/model-request-hash.js.map +1 -0
- package/dist/model-response-hash.d.ts +5 -0
- package/dist/model-response-hash.d.ts.map +1 -0
- package/dist/model-response-hash.js +11 -0
- package/dist/model-response-hash.js.map +1 -0
- package/dist/model-validation.d.ts +11 -0
- package/dist/model-validation.d.ts.map +1 -0
- package/dist/model-validation.js +580 -0
- package/dist/model-validation.js.map +1 -0
- package/dist/model.d.ts +125 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +4 -0
- package/dist/model.js.map +1 -0
- package/dist/modules.d.ts +83 -0
- package/dist/modules.d.ts.map +1 -0
- package/dist/modules.js +7 -0
- package/dist/modules.js.map +1 -0
- package/dist/outbox.d.ts +88 -0
- package/dist/outbox.d.ts.map +1 -0
- package/dist/outbox.js +180 -0
- package/dist/outbox.js.map +1 -0
- package/dist/payload-encryptor.d.ts +92 -0
- package/dist/payload-encryptor.d.ts.map +1 -0
- package/dist/payload-encryptor.js +173 -0
- package/dist/payload-encryptor.js.map +1 -0
- package/dist/registries.d.ts +5 -0
- package/dist/registries.d.ts.map +1 -0
- package/dist/registries.js +159 -0
- package/dist/registries.js.map +1 -0
- package/dist/repository-digest.d.ts +5 -0
- package/dist/repository-digest.d.ts.map +1 -0
- package/dist/repository-digest.js +25 -0
- package/dist/repository-digest.js.map +1 -0
- package/dist/repository-model-call.d.ts +43 -0
- package/dist/repository-model-call.d.ts.map +1 -0
- package/dist/repository-model-call.js +2 -0
- package/dist/repository-model-call.js.map +1 -0
- package/dist/repository-model-execution.d.ts +49 -0
- package/dist/repository-model-execution.d.ts.map +1 -0
- package/dist/repository-model-execution.js +2 -0
- package/dist/repository-model-execution.js.map +1 -0
- package/dist/repository.d.ts +260 -0
- package/dist/repository.d.ts.map +1 -0
- package/dist/repository.js +2 -0
- package/dist/repository.js.map +1 -0
- package/dist/response-pipeline.d.ts +3 -0
- package/dist/response-pipeline.d.ts.map +1 -0
- package/dist/response-pipeline.js +132 -0
- package/dist/response-pipeline.js.map +1 -0
- package/dist/state-engine.d.ts +19 -0
- package/dist/state-engine.d.ts.map +1 -0
- package/dist/state-engine.js +272 -0
- package/dist/state-engine.js.map +1 -0
- package/dist/state-projection.d.ts +5 -0
- package/dist/state-projection.d.ts.map +1 -0
- package/dist/state-projection.js +145 -0
- package/dist/state-projection.js.map +1 -0
- package/dist/state.d.ts +41 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +2 -0
- package/dist/state.js.map +1 -0
- package/dist/stranded-execution.d.ts +59 -0
- package/dist/stranded-execution.d.ts.map +1 -0
- package/dist/stranded-execution.js +235 -0
- package/dist/stranded-execution.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { AcmeError } from './errors.js';
|
|
2
|
+
import { nodeHashing } from './hashing.js';
|
|
3
|
+
import { validateModelSelection } from './model-validation.js';
|
|
4
|
+
import { DEFAULT_MODEL_EXECUTION_POLICY, } from './model-execution-types.js';
|
|
5
|
+
export const ACME_MODEL_EXECUTION_ID_ALGORITHM = 'acme-model-execution-id-1';
|
|
6
|
+
export const ACME_MODEL_EXECUTION_FINGERPRINT_ALGORITHM = 'acme-model-execution-fingerprint-1';
|
|
7
|
+
const policyKeys = new Set(['timeoutMs', 'retention']);
|
|
8
|
+
function invalid(message, details) {
|
|
9
|
+
throw new AcmeError({
|
|
10
|
+
code: 'INVALID_REQUEST',
|
|
11
|
+
message,
|
|
12
|
+
stage: 'accepted',
|
|
13
|
+
retryable: false,
|
|
14
|
+
...(details === undefined ? {} : { details }),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function requireText(value, field) {
|
|
18
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
19
|
+
invalid(`${field} must be a non-empty string.`, { field });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function positiveInteger(value, field) {
|
|
23
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
24
|
+
invalid(`${field} must be a positive safe integer.`, { field });
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
function deepFreeze(value) {
|
|
29
|
+
if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {
|
|
30
|
+
Object.freeze(value);
|
|
31
|
+
for (const child of Object.values(value)) {
|
|
32
|
+
deepFreeze(child);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
export function resolveModelExecutionPolicy(supplied) {
|
|
38
|
+
if (supplied !== undefined &&
|
|
39
|
+
(supplied === null ||
|
|
40
|
+
typeof supplied !== 'object' ||
|
|
41
|
+
Array.isArray(supplied))) {
|
|
42
|
+
invalid('Model execution policy must be an object.');
|
|
43
|
+
}
|
|
44
|
+
const policy = supplied ?? {};
|
|
45
|
+
const unexpected = Object.keys(policy)
|
|
46
|
+
.filter((key) => !policyKeys.has(key))
|
|
47
|
+
.sort();
|
|
48
|
+
if (unexpected.length > 0) {
|
|
49
|
+
invalid('Model execution policy contains unexpected fields.', {
|
|
50
|
+
unexpected,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const timeoutMs = policy.timeoutMs === undefined
|
|
54
|
+
? DEFAULT_MODEL_EXECUTION_POLICY.timeoutMs
|
|
55
|
+
: positiveInteger(policy.timeoutMs, 'policy.timeoutMs');
|
|
56
|
+
const retention = policy.retention ?? DEFAULT_MODEL_EXECUTION_POLICY.retention;
|
|
57
|
+
if (retention !== 'none' &&
|
|
58
|
+
retention !== 'hash-only' &&
|
|
59
|
+
retention !== 'encrypted-payload') {
|
|
60
|
+
invalid('policy.retention is invalid.');
|
|
61
|
+
}
|
|
62
|
+
return deepFreeze({ timeoutMs, retention });
|
|
63
|
+
}
|
|
64
|
+
export function deriveModelExecutionId(requestKey, hashing = nodeHashing) {
|
|
65
|
+
requireText(requestKey, 'requestKey');
|
|
66
|
+
return `model_execution_${hashing.sha256(hashing.canonicalJson({
|
|
67
|
+
algorithm: ACME_MODEL_EXECUTION_ID_ALGORITHM,
|
|
68
|
+
requestKey,
|
|
69
|
+
}))}`;
|
|
70
|
+
}
|
|
71
|
+
export function computeModelExecutionFingerprint(input, hashing = nodeHashing) {
|
|
72
|
+
requireText(input.requestKey, 'requestKey');
|
|
73
|
+
requireText(input.requestHash, 'requestHash');
|
|
74
|
+
const model = validateModelSelection(input.model);
|
|
75
|
+
return hashing.sha256(hashing.canonicalJson({
|
|
76
|
+
algorithm: ACME_MODEL_EXECUTION_FINGERPRINT_ALGORITHM,
|
|
77
|
+
requestKey: input.requestKey,
|
|
78
|
+
model,
|
|
79
|
+
requestHash: input.requestHash,
|
|
80
|
+
requiredCapabilities: input.requiredCapabilities,
|
|
81
|
+
policy: input.policy,
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=model-execution-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-execution-identity.js","sourceRoot":"","sources":["../src/model-execution-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { IsoTimestamp, JsonValue } from './common.js';
|
|
2
|
+
import type { AcmeErrorData } from './errors.js';
|
|
3
|
+
import type { ModelCapabilities, ModelRequest, ModelSelection, NormalizedModelResponse, NormalizedUsage } from './model.js';
|
|
4
|
+
export declare const ACME_MODEL_EXECUTION_MAX_REQUEST_BYTES: 1048576;
|
|
5
|
+
export declare const ACME_MODEL_EXECUTION_MAX_STREAM_EVENT_BYTES: 65536;
|
|
6
|
+
export declare const ACME_MODEL_EXECUTION_MAX_RETAINED_PAYLOAD_BYTES: 1048576;
|
|
7
|
+
export declare const DEFAULT_MODEL_EXECUTION_POLICY: Readonly<{
|
|
8
|
+
timeoutMs: 30000;
|
|
9
|
+
retention: "hash-only";
|
|
10
|
+
}>;
|
|
11
|
+
export interface ModelExecutionPolicy {
|
|
12
|
+
readonly timeoutMs: number;
|
|
13
|
+
readonly retention: 'none' | 'hash-only' | 'encrypted-payload';
|
|
14
|
+
}
|
|
15
|
+
export interface ModelExecutionRequest {
|
|
16
|
+
readonly requestKey: string;
|
|
17
|
+
readonly model: ModelSelection;
|
|
18
|
+
readonly request: ModelRequest;
|
|
19
|
+
readonly requiredCapabilities?: Partial<ModelCapabilities>;
|
|
20
|
+
readonly policy?: Partial<ModelExecutionPolicy>;
|
|
21
|
+
}
|
|
22
|
+
export type ModelExecutionFailureKind = 'timeout' | 'cancel' | 'provider-http' | 'malformed-stream' | 'truncated-stream' | 'ambiguous-delivery' | 'invalid-response' | 'unavailable' | 'auth' | 'rate-limit' | 'content-filter' | 'conflict' | 'unsupported-capability' | 'invalid-request' | 'resume-evidence-unavailable' | 'cancelled' | 'internal';
|
|
23
|
+
export interface ModelExecutionDiagnostic {
|
|
24
|
+
readonly kind: ModelExecutionFailureKind | 'completed';
|
|
25
|
+
readonly delivery?: 'not-sent' | 'sent' | 'unknown';
|
|
26
|
+
readonly httpStatus?: number;
|
|
27
|
+
readonly finishReason?: NormalizedModelResponse['finishReason'];
|
|
28
|
+
}
|
|
29
|
+
export type ModelExecutionStatus = 'accepted' | 'calling-model' | 'succeeded' | 'failed' | 'cancelled' | 'conflicted' | 'ambiguous';
|
|
30
|
+
export type ModelExecutionResult = {
|
|
31
|
+
readonly status: 'succeeded';
|
|
32
|
+
readonly modelExecutionId: string;
|
|
33
|
+
readonly replayed: boolean;
|
|
34
|
+
readonly response: NormalizedModelResponse;
|
|
35
|
+
readonly usage: NormalizedUsage;
|
|
36
|
+
readonly diagnostic: ModelExecutionDiagnostic;
|
|
37
|
+
} | {
|
|
38
|
+
readonly status: 'failed' | 'cancelled' | 'conflicted';
|
|
39
|
+
readonly modelExecutionId: string;
|
|
40
|
+
readonly error: AcmeErrorData;
|
|
41
|
+
readonly diagnostic: ModelExecutionDiagnostic;
|
|
42
|
+
};
|
|
43
|
+
export interface ModelExecuteOptions {
|
|
44
|
+
readonly signal?: AbortSignal;
|
|
45
|
+
readonly onEvent?: (event: import('./model.js').ModelStreamEvent) => void | Promise<void>;
|
|
46
|
+
}
|
|
47
|
+
export interface ModelExecutionRecord {
|
|
48
|
+
readonly modelExecutionId: string;
|
|
49
|
+
readonly requestKey: string;
|
|
50
|
+
readonly requestFingerprint: string;
|
|
51
|
+
readonly requestHash: string;
|
|
52
|
+
readonly selection: ModelSelection;
|
|
53
|
+
readonly request: ModelRequest;
|
|
54
|
+
readonly requiredCapabilities: Partial<ModelCapabilities>;
|
|
55
|
+
readonly policy: ModelExecutionPolicy;
|
|
56
|
+
readonly status: ModelExecutionStatus;
|
|
57
|
+
readonly createdAt: IsoTimestamp;
|
|
58
|
+
readonly updatedAt: IsoTimestamp;
|
|
59
|
+
readonly error?: AcmeErrorData;
|
|
60
|
+
readonly diagnostic?: ModelExecutionDiagnostic;
|
|
61
|
+
readonly result?: ModelExecutionResult;
|
|
62
|
+
}
|
|
63
|
+
export type JsonObject = {
|
|
64
|
+
readonly [key: string]: JsonValue;
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=model-execution-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-execution-types.d.ts","sourceRoot":"","sources":["../src/model-execution-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const ACME_MODEL_EXECUTION_MAX_REQUEST_BYTES = 1_048_576;
|
|
2
|
+
export const ACME_MODEL_EXECUTION_MAX_STREAM_EVENT_BYTES = 65_536;
|
|
3
|
+
export const ACME_MODEL_EXECUTION_MAX_RETAINED_PAYLOAD_BYTES = 1_048_576;
|
|
4
|
+
export const DEFAULT_MODEL_EXECUTION_POLICY = Object.freeze({
|
|
5
|
+
timeoutMs: 30_000,
|
|
6
|
+
retention: 'hash-only',
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=model-execution-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-execution-types.js","sourceRoot":"","sources":["../src/model-execution-types.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,sCAAsC,GAAG,SAAkB,CAAC;AACzE,MAAM,CAAC,MAAM,2CAA2C,GAAG,MAAe,CAAC;AAC3E,MAAM,CAAC,MAAM,+CAA+C,GAC1D,SAAkB,CAAC;AAErB,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1D,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,WAAW;CACvB,CAAgC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ModelGateway } from './model.js';
|
|
2
|
+
export interface RoutedModelGatewayOptions {
|
|
3
|
+
readonly routes: Readonly<Record<string, ModelGateway>>;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Composition-time ModelGateway that delegates only to a route whose key
|
|
7
|
+
* equals the caller-owned providerHint. Missing and unknown hints fail
|
|
8
|
+
* before dispatch. Core does not infer a provider from the model name.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createRoutedModelGateway(options: RoutedModelGatewayOptions): ModelGateway;
|
|
11
|
+
//# sourceMappingURL=model-gateway-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-gateway-router.d.ts","sourceRoot":"","sources":["../src/model-gateway-router.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,YAAY,EAKlB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;CACzD;AA2CD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,yBAAyB,GACjC,YAAY,CA8Cd"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { AcmeError } from './errors.js';
|
|
2
|
+
import {} from './model.js';
|
|
3
|
+
import { validateModelSelection } from './model-validation.js';
|
|
4
|
+
function fail(code, message, details) {
|
|
5
|
+
throw new AcmeError({
|
|
6
|
+
code,
|
|
7
|
+
message,
|
|
8
|
+
stage: 'calling-model',
|
|
9
|
+
retryable: false,
|
|
10
|
+
...(details === undefined ? {} : { details }),
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function resolveRoute(routes, selection) {
|
|
14
|
+
const normalized = validateModelSelection(selection);
|
|
15
|
+
const hint = normalized.providerHint;
|
|
16
|
+
if (hint === undefined) {
|
|
17
|
+
fail('INVALID_REQUEST', 'Routed model execution requires an explicit providerHint.', { selection: normalized });
|
|
18
|
+
}
|
|
19
|
+
const gateway = routes.get(hint);
|
|
20
|
+
if (gateway === undefined) {
|
|
21
|
+
fail('INVALID_REQUEST', 'No configured provider route matches the selection.', {
|
|
22
|
+
providerHint: hint,
|
|
23
|
+
configured: [...routes.keys()],
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return gateway;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Composition-time ModelGateway that delegates only to a route whose key
|
|
30
|
+
* equals the caller-owned providerHint. Missing and unknown hints fail
|
|
31
|
+
* before dispatch. Core does not infer a provider from the model name.
|
|
32
|
+
*/
|
|
33
|
+
export function createRoutedModelGateway(options) {
|
|
34
|
+
const routes = new Map();
|
|
35
|
+
for (const [key, gateway] of Object.entries(options.routes)) {
|
|
36
|
+
const trimmed = key.trim();
|
|
37
|
+
if (trimmed.length === 0) {
|
|
38
|
+
throw new Error('Routed model gateway route keys must be non-empty.');
|
|
39
|
+
}
|
|
40
|
+
if (routes.has(trimmed)) {
|
|
41
|
+
throw new Error(`Duplicate routed model gateway route: ${trimmed}`);
|
|
42
|
+
}
|
|
43
|
+
routes.set(trimmed, gateway);
|
|
44
|
+
}
|
|
45
|
+
if (routes.size === 0) {
|
|
46
|
+
throw new Error('Routed model gateway requires at least one route.');
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
async capabilities(selection) {
|
|
50
|
+
return resolveRoute(routes, selection).capabilities(selection);
|
|
51
|
+
},
|
|
52
|
+
async generate(request, context) {
|
|
53
|
+
return resolveRoute(routes, context.selection).generate(request, context);
|
|
54
|
+
},
|
|
55
|
+
async *stream(request, context) {
|
|
56
|
+
const gateway = resolveRoute(routes, context.selection);
|
|
57
|
+
const stream = gateway.stream?.bind(gateway);
|
|
58
|
+
if (stream === undefined) {
|
|
59
|
+
fail('UNSUPPORTED_CAPABILITY', 'The selected provider route cannot stream.', {
|
|
60
|
+
...(context.selection.providerHint === undefined
|
|
61
|
+
? {}
|
|
62
|
+
: { providerHint: context.selection.providerHint }),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
yield* stream(request, context);
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=model-gateway-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-gateway-router.js","sourceRoot":"","sources":["../src/model-gateway-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Hashing } from './common.js';
|
|
2
|
+
import type { ModelRequest } from './model.js';
|
|
3
|
+
export declare const ACME_MODEL_REQUEST_HASH_ALGORITHM: "acme-model-request-hash-1";
|
|
4
|
+
export declare function computeModelRequestHash(request: ModelRequest, hashing?: Hashing): string;
|
|
5
|
+
//# sourceMappingURL=model-request-hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-request-hash.d.ts","sourceRoot":"","sources":["../src/model-request-hash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,eAAO,MAAM,iCAAiC,EAC5C,2BAAoC,CAAC;AAEvC,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,OAAqB,GAC7B,MAAM,CAQR"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { nodeHashing } from './hashing.js';
|
|
2
|
+
import { validateModelRequest } from './model-validation.js';
|
|
3
|
+
export const ACME_MODEL_REQUEST_HASH_ALGORITHM = 'acme-model-request-hash-1';
|
|
4
|
+
export function computeModelRequestHash(request, hashing = nodeHashing) {
|
|
5
|
+
const validated = validateModelRequest(request);
|
|
6
|
+
return hashing.sha256(hashing.canonicalJson({
|
|
7
|
+
algorithm: ACME_MODEL_REQUEST_HASH_ALGORITHM,
|
|
8
|
+
request: validated,
|
|
9
|
+
}));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=model-request-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-request-hash.js","sourceRoot":"","sources":["../src/model-request-hash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,CAAC,MAAM,iCAAiC,GAC5C,2BAAoC,CAAC;AAEvC,MAAM,UAAU,uBAAuB,CACrC,OAAqB,EACrB,UAAmB,WAAW;IAE9B,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,aAAa,CAAC;QACpB,SAAS,EAAE,iCAAiC;QAC5C,OAAO,EAAE,SAAS;KACK,CAAC,CAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Hashing } from './common.js';
|
|
2
|
+
import type { NormalizedModelResponse } from './model.js';
|
|
3
|
+
export declare const ACME_MODEL_RESPONSE_HASH_ALGORITHM: "acme-model-response-hash-1";
|
|
4
|
+
export declare function computeModelResponseHash(response: NormalizedModelResponse, hashing?: Hashing): string;
|
|
5
|
+
//# sourceMappingURL=model-response-hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-response-hash.d.ts","sourceRoot":"","sources":["../src/model-response-hash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG1D,eAAO,MAAM,kCAAkC,EAC7C,4BAAqC,CAAC;AAExC,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,uBAAuB,EACjC,OAAO,GAAE,OAAqB,GAC7B,MAAM,CAQR"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { nodeHashing } from './hashing.js';
|
|
2
|
+
import { validateNormalizedModelResponse } from './model-validation.js';
|
|
3
|
+
export const ACME_MODEL_RESPONSE_HASH_ALGORITHM = 'acme-model-response-hash-1';
|
|
4
|
+
export function computeModelResponseHash(response, hashing = nodeHashing) {
|
|
5
|
+
const validated = validateNormalizedModelResponse(response);
|
|
6
|
+
return hashing.sha256(hashing.canonicalJson({
|
|
7
|
+
algorithm: ACME_MODEL_RESPONSE_HASH_ALGORITHM,
|
|
8
|
+
response: validated,
|
|
9
|
+
}));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=model-response-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-response-hash.js","sourceRoot":"","sources":["../src/model-response-hash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,CAAC,MAAM,kCAAkC,GAC7C,4BAAqC,CAAC;AAExC,MAAM,UAAU,wBAAwB,CACtC,QAAiC,EACjC,UAAmB,WAAW;IAE9B,MAAM,SAAS,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;IAC5D,OAAO,OAAO,CAAC,MAAM,CACnB,OAAO,CAAC,aAAa,CAAC;QACpB,SAAS,EAAE,kCAAkC;QAC7C,QAAQ,EAAE,SAAS;KACI,CAAC,CAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { GatewayCallContext, ModelCapabilities, ModelRequest, ModelSelection, ModelStreamEvent, NormalizedModelResponse } from './model.js';
|
|
2
|
+
export declare function validateModelSelection(value: ModelSelection): ModelSelection;
|
|
3
|
+
export declare function validateModelCapabilities(value: ModelCapabilities): ModelCapabilities;
|
|
4
|
+
export declare function validateRequiredModelCapabilities(value: Partial<ModelCapabilities>): Partial<ModelCapabilities>;
|
|
5
|
+
export declare function validateModelRequest(value: ModelRequest): ModelRequest;
|
|
6
|
+
export declare function validateNormalizedModelResponse(value: NormalizedModelResponse): NormalizedModelResponse;
|
|
7
|
+
export declare function validateModelStreamEvent(value: ModelStreamEvent): ModelStreamEvent;
|
|
8
|
+
export declare function validateGatewayCallContext(value: GatewayCallContext): GatewayCallContext;
|
|
9
|
+
export declare function missingRequiredModelCapabilities(available: ModelCapabilities, required: Partial<ModelCapabilities>): readonly string[];
|
|
10
|
+
export declare function assertRequiredModelCapabilities(available: ModelCapabilities, required: Partial<ModelCapabilities>): void;
|
|
11
|
+
//# sourceMappingURL=model-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-validation.d.ts","sourceRoot":"","sources":["../src/model-validation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAKjB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EAGxB,MAAM,YAAY,CAAC;AA+jBpB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAG5E;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,iBAAiB,GACvB,iBAAiB,CAMnB;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAM5B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAGtE;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,uBAAuB,GAC7B,uBAAuB,CAGzB;AAgHD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,gBAAgB,GACtB,gBAAgB,CAGlB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,kBAAkB,GACxB,kBAAkB,CAgDpB;AAED,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACnC,SAAS,MAAM,EAAE,CAqBnB;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACnC,IAAI,CAWN"}
|