@eaziz/prepare 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/LICENSE +21 -0
- package/README.md +124 -0
- package/dist/contracts.d.ts +55 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +2 -0
- package/dist/contracts.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/protocols/catalog.d.ts +9 -0
- package/dist/protocols/catalog.d.ts.map +1 -0
- package/dist/protocols/catalog.js +21 -0
- package/dist/protocols/catalog.js.map +1 -0
- package/dist/protocols/content.d.ts +6 -0
- package/dist/protocols/content.d.ts.map +1 -0
- package/dist/protocols/content.js +129 -0
- package/dist/protocols/content.js.map +1 -0
- package/dist/protocols/images.d.ts +9 -0
- package/dist/protocols/images.d.ts.map +1 -0
- package/dist/protocols/images.js +39 -0
- package/dist/protocols/images.js.map +1 -0
- package/dist/protocols/media.d.ts +75 -0
- package/dist/protocols/media.d.ts.map +1 -0
- package/dist/protocols/media.js +255 -0
- package/dist/protocols/media.js.map +1 -0
- package/dist/protocols/text.d.ts +7 -0
- package/dist/protocols/text.d.ts.map +1 -0
- package/dist/protocols/text.js +140 -0
- package/dist/protocols/text.js.map +1 -0
- package/dist/request-compiler.d.ts +16 -0
- package/dist/request-compiler.d.ts.map +1 -0
- package/dist/request-compiler.js +104 -0
- package/dist/request-compiler.js.map +1 -0
- package/dist/request-realtime.d.ts +6 -0
- package/dist/request-realtime.d.ts.map +1 -0
- package/dist/request-realtime.js +21 -0
- package/dist/request-realtime.js.map +1 -0
- package/dist/request-types.d.ts +91 -0
- package/dist/request-types.d.ts.map +1 -0
- package/dist/request-types.js +2 -0
- package/dist/request-types.js.map +1 -0
- package/dist/request-utils.d.ts +29 -0
- package/dist/request-utils.d.ts.map +1 -0
- package/dist/request-utils.js +79 -0
- package/dist/request-utils.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { Message, ModelType, ToolDefinition, WireProtocol } from "./contracts.js";
|
|
2
|
+
type TextProtocol = "openai-chat-completions" | "openai-responses" | "anthropic-messages" | "gemini-generate-content";
|
|
3
|
+
type SpeechProtocol = Extract<WireProtocol, `${string}-audio`>;
|
|
4
|
+
type TranscriptionProtocol = "openai-audio" | "zhipu-audio" | "dashscope-transcription";
|
|
5
|
+
type VideoProtocol = Extract<WireProtocol, `${string}-video`>;
|
|
6
|
+
type RealtimeProtocol = "openai-responses-websocket" | "openai-realtime";
|
|
7
|
+
export interface PreparationBase<TModelType extends ModelType, TProtocol extends WireProtocol, TInput> {
|
|
8
|
+
readonly modelType: TModelType;
|
|
9
|
+
readonly protocol: TProtocol;
|
|
10
|
+
readonly model: string;
|
|
11
|
+
readonly input: TInput;
|
|
12
|
+
readonly baseURL?: string;
|
|
13
|
+
readonly endpoint?: string;
|
|
14
|
+
readonly headers?: HeadersInit;
|
|
15
|
+
}
|
|
16
|
+
export interface TextGenerationInput {
|
|
17
|
+
readonly messages: readonly Message[];
|
|
18
|
+
readonly maxTokens?: number;
|
|
19
|
+
readonly stream?: boolean;
|
|
20
|
+
readonly temperature?: number;
|
|
21
|
+
readonly topP?: number;
|
|
22
|
+
readonly stop?: string | readonly string[];
|
|
23
|
+
readonly tools?: readonly ToolDefinition[];
|
|
24
|
+
readonly toolChoice?: unknown;
|
|
25
|
+
readonly responseFormat?: unknown;
|
|
26
|
+
readonly instructions?: string;
|
|
27
|
+
readonly reasoning?: Readonly<Record<string, unknown>>;
|
|
28
|
+
readonly extraBody?: Readonly<Record<string, unknown>>;
|
|
29
|
+
}
|
|
30
|
+
export interface EmbeddingInput {
|
|
31
|
+
readonly input: string | readonly string[] | readonly number[] | readonly (readonly number[])[];
|
|
32
|
+
readonly dimensions?: number;
|
|
33
|
+
readonly encodingFormat?: "float" | "base64";
|
|
34
|
+
readonly extraBody?: Readonly<Record<string, unknown>>;
|
|
35
|
+
}
|
|
36
|
+
export interface RerankInput {
|
|
37
|
+
readonly query: string;
|
|
38
|
+
readonly documents: readonly (string | Readonly<Record<string, unknown>>)[];
|
|
39
|
+
readonly topN?: number;
|
|
40
|
+
readonly returnDocuments?: boolean;
|
|
41
|
+
readonly extraBody?: Readonly<Record<string, unknown>>;
|
|
42
|
+
}
|
|
43
|
+
export interface ImageGenerationInput {
|
|
44
|
+
readonly prompt: string;
|
|
45
|
+
readonly size?: string | {
|
|
46
|
+
readonly width: number;
|
|
47
|
+
readonly height: number;
|
|
48
|
+
};
|
|
49
|
+
readonly n?: number;
|
|
50
|
+
readonly quality?: string;
|
|
51
|
+
readonly style?: string;
|
|
52
|
+
readonly responseFormat?: string;
|
|
53
|
+
readonly extraBody?: Readonly<Record<string, unknown>>;
|
|
54
|
+
}
|
|
55
|
+
export interface ImageEditingInput {
|
|
56
|
+
readonly prompt: string;
|
|
57
|
+
readonly images: readonly (Blob | Uint8Array | string)[];
|
|
58
|
+
readonly mask?: Blob | Uint8Array | string;
|
|
59
|
+
readonly size?: string;
|
|
60
|
+
readonly n?: number;
|
|
61
|
+
readonly extraFields?: Readonly<Record<string, unknown>>;
|
|
62
|
+
}
|
|
63
|
+
export interface SpeechGenerationInput {
|
|
64
|
+
readonly text: string;
|
|
65
|
+
readonly voice?: string;
|
|
66
|
+
readonly responseFormat?: string;
|
|
67
|
+
readonly speed?: number;
|
|
68
|
+
readonly parameters?: Readonly<Record<string, unknown>>;
|
|
69
|
+
readonly extraBody?: Readonly<Record<string, unknown>>;
|
|
70
|
+
}
|
|
71
|
+
export interface TranscriptionInput {
|
|
72
|
+
readonly file: Blob | Uint8Array | string;
|
|
73
|
+
readonly filename?: string;
|
|
74
|
+
readonly language?: string;
|
|
75
|
+
readonly prompt?: string;
|
|
76
|
+
readonly extraFields?: Readonly<Record<string, string>>;
|
|
77
|
+
readonly extraBody?: Readonly<Record<string, unknown>>;
|
|
78
|
+
}
|
|
79
|
+
export interface VideoGenerationInput {
|
|
80
|
+
readonly prompt: string;
|
|
81
|
+
readonly input?: Readonly<Record<string, unknown>>;
|
|
82
|
+
readonly parameters?: Readonly<Record<string, unknown>>;
|
|
83
|
+
readonly extraBody?: Readonly<Record<string, unknown>>;
|
|
84
|
+
}
|
|
85
|
+
export interface RealtimeInput {
|
|
86
|
+
readonly session?: Readonly<Record<string, unknown>>;
|
|
87
|
+
readonly query?: Readonly<Record<string, string>>;
|
|
88
|
+
}
|
|
89
|
+
export type RequestPreparation = PreparationBase<"text-generation" | "multimodal-generation", TextProtocol, TextGenerationInput> | PreparationBase<"embedding", "openai-embeddings", EmbeddingInput> | PreparationBase<"rerank", "cohere-rerank", RerankInput> | PreparationBase<"image-generation", "openai-images", ImageGenerationInput> | PreparationBase<"image-editing", "openai-images", ImageEditingInput> | PreparationBase<"speech-generation", SpeechProtocol, SpeechGenerationInput> | PreparationBase<"transcription", TranscriptionProtocol, TranscriptionInput> | PreparationBase<"video-generation", VideoProtocol, VideoGenerationInput> | PreparationBase<"realtime", RealtimeProtocol, RealtimeInput>;
|
|
90
|
+
export {};
|
|
91
|
+
//# sourceMappingURL=request-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-types.d.ts","sourceRoot":"","sources":["../src/request-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-types.js","sourceRoot":"","sources":["../src/request-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface PreparedRequest {
|
|
2
|
+
readonly method: "POST" | "GET";
|
|
3
|
+
readonly path: string;
|
|
4
|
+
/** Absolute URL when a baseURL/endpoint was supplied to the converter. */
|
|
5
|
+
readonly url?: string;
|
|
6
|
+
readonly transport?: "http" | "websocket";
|
|
7
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
8
|
+
readonly body?: string | FormData;
|
|
9
|
+
}
|
|
10
|
+
export type RequestAddress = Readonly<{
|
|
11
|
+
baseURL?: string;
|
|
12
|
+
endpoint?: string;
|
|
13
|
+
headers?: HeadersInit;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function jsonRequest(request: RequestAddress, path: string, body: Readonly<Record<string, unknown>>, protocolHeaders?: Readonly<Record<string, string>>): PreparedRequest;
|
|
16
|
+
export declare function requestWithBody(request: RequestAddress, path: string, body: string | FormData): PreparedRequest;
|
|
17
|
+
export declare function requestURL(request: Pick<RequestAddress, "baseURL" | "endpoint">, path: string): {
|
|
18
|
+
readonly url?: string;
|
|
19
|
+
};
|
|
20
|
+
/** Lifecycle requests must continue to use baseURL, not the submit endpoint. */
|
|
21
|
+
export declare function baseURLRequestURL(request: Pick<RequestAddress, "baseURL">, path: string): {
|
|
22
|
+
readonly url?: string;
|
|
23
|
+
};
|
|
24
|
+
export declare function headerRecord(headers?: HeadersInit): Record<string, string>;
|
|
25
|
+
export declare function dataURL(value: string | Uint8Array, mediaType: string): string;
|
|
26
|
+
export declare function stripDataURL(value: string): string;
|
|
27
|
+
export declare function toBase64(bytes: Uint8Array): string;
|
|
28
|
+
export declare function mediaBlob(value: Blob | Uint8Array | string): Blob;
|
|
29
|
+
//# sourceMappingURL=request-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-utils.d.ts","sourceRoot":"","sources":["../src/request-utils.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CACnC;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,CAAC,CAAC;AAEH,wBAAgB,WAAW,CACzB,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACvC,eAAe,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GACrD,eAAe,CAYjB;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,QAAQ,GACtB,eAAe,CAQjB;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,UAAU,CAAC,EACrD,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAI3B;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,EACxC,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAG3B;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO1E;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAKlD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CAcjE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export function jsonRequest(request, path, body, protocolHeaders = {}) {
|
|
2
|
+
return {
|
|
3
|
+
method: "POST",
|
|
4
|
+
path,
|
|
5
|
+
...requestURL(request, path),
|
|
6
|
+
headers: {
|
|
7
|
+
"content-type": "application/json",
|
|
8
|
+
...protocolHeaders,
|
|
9
|
+
...headerRecord(request.headers),
|
|
10
|
+
},
|
|
11
|
+
body: JSON.stringify(body),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export function requestWithBody(request, path, body) {
|
|
15
|
+
return {
|
|
16
|
+
method: "POST",
|
|
17
|
+
path,
|
|
18
|
+
...requestURL(request, path),
|
|
19
|
+
headers: headerRecord(request.headers),
|
|
20
|
+
body,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function requestURL(request, path) {
|
|
24
|
+
if (request.endpoint)
|
|
25
|
+
return { url: request.endpoint };
|
|
26
|
+
if (!request.baseURL)
|
|
27
|
+
return {};
|
|
28
|
+
return { url: joinURL(request.baseURL, path) };
|
|
29
|
+
}
|
|
30
|
+
/** Lifecycle requests must continue to use baseURL, not the submit endpoint. */
|
|
31
|
+
export function baseURLRequestURL(request, path) {
|
|
32
|
+
if (!request.baseURL)
|
|
33
|
+
return {};
|
|
34
|
+
return { url: joinURL(request.baseURL, path) };
|
|
35
|
+
}
|
|
36
|
+
export function headerRecord(headers) {
|
|
37
|
+
const result = {};
|
|
38
|
+
if (!headers)
|
|
39
|
+
return result;
|
|
40
|
+
new Headers(headers).forEach((value, key) => {
|
|
41
|
+
result[key] = value;
|
|
42
|
+
});
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
export function dataURL(value, mediaType) {
|
|
46
|
+
return typeof value === "string" ? value : `data:${mediaType};base64,${toBase64(value)}`;
|
|
47
|
+
}
|
|
48
|
+
export function stripDataURL(value) {
|
|
49
|
+
const comma = value.indexOf(",");
|
|
50
|
+
return value.startsWith("data:") && comma >= 0 ? value.slice(comma + 1) : value;
|
|
51
|
+
}
|
|
52
|
+
export function toBase64(bytes) {
|
|
53
|
+
if (typeof Buffer !== "undefined")
|
|
54
|
+
return Buffer.from(bytes).toString("base64");
|
|
55
|
+
let binary = "";
|
|
56
|
+
for (const byte of bytes)
|
|
57
|
+
binary += String.fromCharCode(byte);
|
|
58
|
+
return btoa(binary);
|
|
59
|
+
}
|
|
60
|
+
export function mediaBlob(value) {
|
|
61
|
+
if (value instanceof Blob)
|
|
62
|
+
return value;
|
|
63
|
+
if (value instanceof Uint8Array)
|
|
64
|
+
return new Blob([new Uint8Array(value).buffer]);
|
|
65
|
+
if (value.startsWith("data:")) {
|
|
66
|
+
const match = /^data:([^;,]+)?;base64,(.*)$/.exec(value);
|
|
67
|
+
if (match?.[2]) {
|
|
68
|
+
const bytes = typeof Buffer !== "undefined"
|
|
69
|
+
? new Uint8Array(Buffer.from(match[2], "base64"))
|
|
70
|
+
: Uint8Array.from(atob(match[2]), (character) => character.charCodeAt(0));
|
|
71
|
+
return new Blob([bytes], { type: match[1] ?? "application/octet-stream" });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return new Blob([value]);
|
|
75
|
+
}
|
|
76
|
+
function joinURL(baseURL, path) {
|
|
77
|
+
return `${baseURL.replace(/\/$/, "")}/${path.replace(/^\//, "")}`;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=request-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-utils.js","sourceRoot":"","sources":["../src/request-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@eaziz/prepare",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Compile semantic AI requests into provider wire-protocol requests without sending them.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"sideEffects": false,
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./contracts": {
|
|
15
|
+
"types": "./dist/contracts.d.ts",
|
|
16
|
+
"import": "./dist/contracts.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"README.md",
|
|
25
|
+
"LICENSE"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc -p tsconfig.json",
|
|
29
|
+
"clean": "node -e \"import('node:fs/promises').then(fs => fs.rm('dist', { recursive: true, force: true }))\"",
|
|
30
|
+
"test": "npm run build && node --test",
|
|
31
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
32
|
+
"prepack": "npm test"
|
|
33
|
+
},
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=18"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"ai",
|
|
39
|
+
"llm",
|
|
40
|
+
"request-compiler",
|
|
41
|
+
"protocol-adapter"
|
|
42
|
+
],
|
|
43
|
+
"license": "MIT",
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^24.13.3",
|
|
46
|
+
"typescript": "^5.9.0"
|
|
47
|
+
}
|
|
48
|
+
}
|