@aeye/ai 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/README.md +1324 -0
- package/dist/ai.d.ts +204 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +837 -0
- package/dist/ai.js.map +1 -0
- package/dist/apis/base.d.ts +181 -0
- package/dist/apis/base.d.ts.map +1 -0
- package/dist/apis/base.js +359 -0
- package/dist/apis/base.js.map +1 -0
- package/dist/apis/chat.d.ts +82 -0
- package/dist/apis/chat.d.ts.map +1 -0
- package/dist/apis/chat.js +214 -0
- package/dist/apis/chat.js.map +1 -0
- package/dist/apis/embed.d.ts +27 -0
- package/dist/apis/embed.d.ts.map +1 -0
- package/dist/apis/embed.js +70 -0
- package/dist/apis/embed.js.map +1 -0
- package/dist/apis/image.d.ts +77 -0
- package/dist/apis/image.d.ts.map +1 -0
- package/dist/apis/image.js +313 -0
- package/dist/apis/image.js.map +1 -0
- package/dist/apis/models.d.ts +108 -0
- package/dist/apis/models.d.ts.map +1 -0
- package/dist/apis/models.js +118 -0
- package/dist/apis/models.js.map +1 -0
- package/dist/apis/speech.d.ts +27 -0
- package/dist/apis/speech.d.ts.map +1 -0
- package/dist/apis/speech.js +79 -0
- package/dist/apis/speech.js.map +1 -0
- package/dist/apis/transcribe.d.ts +26 -0
- package/dist/apis/transcribe.d.ts.map +1 -0
- package/dist/apis/transcribe.js +103 -0
- package/dist/apis/transcribe.js.map +1 -0
- package/dist/common.d.ts +10 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +17 -0
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/modelDetection.d.ts +31 -0
- package/dist/modelDetection.d.ts.map +1 -0
- package/dist/modelDetection.js +78 -0
- package/dist/modelDetection.js.map +1 -0
- package/dist/registry.d.ts +150 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +639 -0
- package/dist/registry.js.map +1 -0
- package/dist/types.d.ts +767 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech.js","sourceRoot":"","sources":["../../src/apis/speech.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,MAAM,OAAO,SAAiC,SAAQ,OAKrD;IACC,YAAY,EAAS;QACnB,KAAK,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC;IAED,+EAA+E;IAC/E,2CAA2C;IAC3C,+EAA+E;IAErE,uBAAuB,CAAC,QAA2B,EAAE,OAAsB,EAAE,YAAqB;QAC1G,OAAO,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;IAChC,CAAC;IAES,qBAAqB,CAAC,QAA0B,EAAE,OAAsB,EAAE,YAAqB;QACvG,MAAM,MAAM,GAAG,IAAI,GAAG,CAAiB,QAAQ,CAAC,CAAC;QAEjD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAES,oBAAoB;QAC5B,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IAES,YAAY,CAAC,SAA+B;QACpD,OAAO,SAAS,KAAK,SAAS;YAC5B,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,iCAAiC,CAAC;IACxC,CAAC;IAES,eAAe,CAAC,SAA+B;QACvD,OAAO,SAAS,KAAK,SAAS;YAC5B,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,oCAAoC,CAAC;IAC3C,CAAC;IAES,KAAK,CAAC,cAAc,CAC5B,OAAsB,EACtB,QAA6B,EAC7B,GAAiB;QAEjB,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAO,CACpC,OAAO,EACP,GAAG,EACH,QAAQ,CAAC,cAAc,CACxB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,CAAC,oBAAoB,CACnC,OAAsB,EACtB,QAA6B,EAC7B,GAAiB;QAEjB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,+EAA+E;IAC/E,qBAAqB;IACrB,+EAA+E;IAErE,oBAAoB,CAAC,OAAsB;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClD,0FAA0F;QAC1F,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACzD,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,EAAE,CAAC;QAE/C,OAAO;YACL,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM;aACd;YACD,KAAK,EAAE;gBACL,OAAO,EAAE,gBAAgB;aAC1B;SACF,CAAC;IACJ,CAAC;IAES,gBAAgB,CAAC,QAAwB;QACjD,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAES,gBAAgB,CAAC,MAAwB,EAAE,KAAa;QAChE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAES,mBAAmB,CAC3B,OAA4B;QAE5B,OAAO,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC;IAC9B,CAAC;IAES,sBAAsB,CAC9B,OAA4B;QAE5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,mBAAmB,CAAC,QAA6B;QACzD,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;IACpC,CAAC;IAES,mBAAmB,CAAC,QAA6B;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcribe API
|
|
3
|
+
*
|
|
4
|
+
* Provides speech-to-text functionality.
|
|
5
|
+
*/
|
|
6
|
+
import type { AI } from '../ai';
|
|
7
|
+
import type { AIBaseTypes, AIContext, ModelCapability, ModelHandlerFor, ModelParameter, SelectedModelFor, TranscriptionChunk, TranscriptionRequest, TranscriptionResponse, Usage } from '../types';
|
|
8
|
+
import { BaseAPI } from './base';
|
|
9
|
+
export declare class TranscribeAPI<T extends AIBaseTypes> extends BaseAPI<T, TranscriptionRequest, TranscriptionResponse, TranscriptionChunk> {
|
|
10
|
+
constructor(ai: AI<T>);
|
|
11
|
+
protected getRequiredCapabilities(provided: ModelCapability[], request: TranscriptionRequest, forStreaming: boolean): ModelCapability[];
|
|
12
|
+
protected getRequiredParameters(provided: ModelParameter[], request: TranscriptionRequest, forStreaming: boolean): ModelParameter[];
|
|
13
|
+
protected getNoModelFoundError(): string;
|
|
14
|
+
protected getErrorType(): string;
|
|
15
|
+
protected getErrorMessage(): string;
|
|
16
|
+
protected executeRequest(request: TranscriptionRequest, selected: SelectedModelFor<T>, ctx: AIContext<T>): Promise<TranscriptionResponse>;
|
|
17
|
+
protected estimateRequestUsage(): Usage;
|
|
18
|
+
protected executeStreamRequest(request: TranscriptionRequest, selected: SelectedModelFor<T>, ctx: AIContext<T>): AsyncIterable<TranscriptionChunk>;
|
|
19
|
+
protected responseToChunks(response: TranscriptionResponse): TranscriptionChunk[];
|
|
20
|
+
protected chunksToResponse(chunks: TranscriptionChunk[], givenModel: string): TranscriptionResponse;
|
|
21
|
+
protected getHandlerGetMethod(handler?: ModelHandlerFor<T>): ((request: TranscriptionRequest, ctx: AIContext<T>) => Promise<TranscriptionResponse>) | undefined;
|
|
22
|
+
protected getHandlerStreamMethod(handler?: ModelHandlerFor<T>): ((request: TranscriptionRequest, ctx: AIContext<T>) => AsyncIterable<TranscriptionChunk>) | undefined;
|
|
23
|
+
protected hasProviderExecutor(selected: SelectedModelFor<T>): boolean;
|
|
24
|
+
protected hasProviderStreamer(selected: SelectedModelFor<T>): boolean;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=transcribe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribe.d.ts","sourceRoot":"","sources":["../../src/apis/transcribe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,eAAe,EACf,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,EACN,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,CAAE,SAAQ,OAAO,CAC/D,CAAC,EACD,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,CACnB;gBACa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAQrB,SAAS,CAAC,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,OAAO,GAAG,eAAe,EAAE;IAIvI,SAAS,CAAC,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,OAAO,GAAG,cAAc,EAAE;IAanI,SAAS,CAAC,oBAAoB,IAAI,MAAM;IAIxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAIhC,SAAS,CAAC,eAAe,IAAI,MAAM;cAInB,cAAc,CAC5B,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC7B,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAChB,OAAO,CAAC,qBAAqB,CAAC;IAYjC,SAAS,CAAC,oBAAoB,IAAI,KAAK;cAiBtB,oBAAoB,CACnC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC7B,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAChB,aAAa,CAAC,kBAAkB,CAAC;IAYpC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,kBAAkB,EAAE;IAQjF,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,qBAAqB;IAuBnG,SAAS,CAAC,mBAAmB,CAC3B,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,CAAC,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,SAAS;IAIrG,SAAS,CAAC,sBAAsB,CAC9B,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,CAAC,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,kBAAkB,CAAC,CAAC,GAAG,SAAS;IAIxG,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO;IAIrE,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO;CAGtE"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcribe API
|
|
3
|
+
*
|
|
4
|
+
* Provides speech-to-text functionality.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseAPI } from './base';
|
|
7
|
+
export class TranscribeAPI extends BaseAPI {
|
|
8
|
+
constructor(ai) {
|
|
9
|
+
super(ai);
|
|
10
|
+
}
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// REQUIRED ABSTRACT METHOD IMPLEMENTATIONS
|
|
13
|
+
// ============================================================================
|
|
14
|
+
getRequiredCapabilities(provided, request, forStreaming) {
|
|
15
|
+
return ['hearing', ...provided];
|
|
16
|
+
}
|
|
17
|
+
getRequiredParameters(provided, request, forStreaming) {
|
|
18
|
+
const params = new Set();
|
|
19
|
+
if (request.prompt !== undefined) {
|
|
20
|
+
params.add('transcribePrompt');
|
|
21
|
+
}
|
|
22
|
+
if (forStreaming) {
|
|
23
|
+
params.add('transcribeStream');
|
|
24
|
+
}
|
|
25
|
+
return Array.from(params);
|
|
26
|
+
}
|
|
27
|
+
getNoModelFoundError() {
|
|
28
|
+
return 'No compatible model found for transcription';
|
|
29
|
+
}
|
|
30
|
+
getErrorType() {
|
|
31
|
+
return 'transcription-failed';
|
|
32
|
+
}
|
|
33
|
+
getErrorMessage() {
|
|
34
|
+
return 'Transcription failed';
|
|
35
|
+
}
|
|
36
|
+
async executeRequest(request, selected, ctx) {
|
|
37
|
+
return await selected.provider.transcribe(request, ctx, selected.providerConfig);
|
|
38
|
+
}
|
|
39
|
+
// ============================================================================
|
|
40
|
+
// OPTIONAL OVERRIDES
|
|
41
|
+
// ============================================================================
|
|
42
|
+
estimateRequestUsage() {
|
|
43
|
+
// Default estimate for audio transcription
|
|
44
|
+
// Assume 1 minute of audio ~ 200 tokens of output
|
|
45
|
+
const estimatedMinutes = 1;
|
|
46
|
+
const estimatedTokens = estimatedMinutes * 200;
|
|
47
|
+
return {
|
|
48
|
+
audio: {
|
|
49
|
+
seconds: estimatedMinutes * 60,
|
|
50
|
+
input: 1000 // Rough estimate for audio input tokens
|
|
51
|
+
},
|
|
52
|
+
text: {
|
|
53
|
+
output: estimatedTokens
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
async *executeStreamRequest(request, selected, ctx) {
|
|
58
|
+
if (!selected.provider.transcribeStream) {
|
|
59
|
+
throw new Error(`Provider ${selected.model.provider} does not support streaming transcription`);
|
|
60
|
+
}
|
|
61
|
+
yield* selected.provider.transcribeStream(request, ctx, selected.providerConfig);
|
|
62
|
+
}
|
|
63
|
+
responseToChunks(response) {
|
|
64
|
+
return [{
|
|
65
|
+
text: response.text,
|
|
66
|
+
model: response.model,
|
|
67
|
+
usage: response.usage,
|
|
68
|
+
}];
|
|
69
|
+
}
|
|
70
|
+
chunksToResponse(chunks, givenModel) {
|
|
71
|
+
let text = '';
|
|
72
|
+
let model = givenModel;
|
|
73
|
+
let usage;
|
|
74
|
+
for (const chunk of chunks) {
|
|
75
|
+
if (chunk.model) {
|
|
76
|
+
model = chunk.model;
|
|
77
|
+
}
|
|
78
|
+
if (chunk.usage) {
|
|
79
|
+
usage = chunk.usage;
|
|
80
|
+
}
|
|
81
|
+
if (chunk.delta) {
|
|
82
|
+
text += chunk.delta;
|
|
83
|
+
}
|
|
84
|
+
if (chunk.text) {
|
|
85
|
+
text = chunk.text;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return { text, model, usage };
|
|
89
|
+
}
|
|
90
|
+
getHandlerGetMethod(handler) {
|
|
91
|
+
return handler?.transcribe?.get;
|
|
92
|
+
}
|
|
93
|
+
getHandlerStreamMethod(handler) {
|
|
94
|
+
return handler?.transcribe?.stream;
|
|
95
|
+
}
|
|
96
|
+
hasProviderExecutor(selected) {
|
|
97
|
+
return !!selected.provider.transcribe;
|
|
98
|
+
}
|
|
99
|
+
hasProviderStreamer(selected) {
|
|
100
|
+
return !!selected.provider.transcribeStream;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=transcribe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribe.js","sourceRoot":"","sources":["../../src/apis/transcribe.ts"],"names":[],"mappings":"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"}
|
package/dist/common.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ModelInput } from "@aeye/core";
|
|
2
|
+
import { ModelInfo } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Type guard to check if a ModelInput is a ModelInfo object.
|
|
5
|
+
*
|
|
6
|
+
* @param input - The model input to check.
|
|
7
|
+
* @returns True if the input is a ModelInfo object, false otherwise.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isModelInfo<TProvider extends string = string>(input: ModelInput): input is ModelInfo<TProvider>;
|
|
10
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;;;;EAKE;AACF,wBAAgB,WAAW,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,KAAK,IAAI,SAAS,CAAC,SAAS,CAAC,CAS/G"}
|
package/dist/common.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type guard to check if a ModelInput is a ModelInfo object.
|
|
3
|
+
*
|
|
4
|
+
* @param input - The model input to check.
|
|
5
|
+
* @returns True if the input is a ModelInfo object, false otherwise.
|
|
6
|
+
*/
|
|
7
|
+
export function isModelInfo(input) {
|
|
8
|
+
return typeof input === 'object'
|
|
9
|
+
&& ('id' in input)
|
|
10
|
+
&& ('provider' in input)
|
|
11
|
+
&& ('name' in input)
|
|
12
|
+
&& ('capabilities' in input)
|
|
13
|
+
&& ('tier' in input)
|
|
14
|
+
&& ('pricing' in input)
|
|
15
|
+
&& ('contextWindow' in input);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAGA;;;;;EAKE;AACF,MAAM,UAAU,WAAW,CAAoC,KAAiB;IAC9E,OAAO,OAAO,KAAK,KAAK,QAAQ;WAC3B,CAAC,IAAI,IAAI,KAAK,CAAC;WACf,CAAC,UAAU,IAAI,KAAK,CAAC;WACrB,CAAC,MAAM,IAAI,KAAK,CAAC;WACjB,CAAC,cAAc,IAAI,KAAK,CAAC;WACzB,CAAC,MAAM,IAAI,KAAK,CAAC;WACjB,CAAC,SAAS,IAAI,KAAK,CAAC;WACpB,CAAC,eAAe,IAAI,KAAK,CAAC,CAAC;AAClC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Library (Instance-Based API)
|
|
3
|
+
*
|
|
4
|
+
* Main export file for the class-based AI library.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types';
|
|
7
|
+
export * from './modelDetection';
|
|
8
|
+
export * from './ai';
|
|
9
|
+
export * from './registry';
|
|
10
|
+
export * from './apis/models';
|
|
11
|
+
export * from './apis/base';
|
|
12
|
+
export * from './apis/chat';
|
|
13
|
+
export * from './apis/embed';
|
|
14
|
+
export * from './apis/image';
|
|
15
|
+
export * from './apis/speech';
|
|
16
|
+
export * from './apis/transcribe';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,MAAM,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Library (Instance-Based API)
|
|
3
|
+
*
|
|
4
|
+
* Main export file for the class-based AI library.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types';
|
|
7
|
+
export * from './modelDetection';
|
|
8
|
+
export * from './ai';
|
|
9
|
+
export * from './registry';
|
|
10
|
+
export * from './apis/models';
|
|
11
|
+
export * from './apis/base';
|
|
12
|
+
export * from './apis/chat';
|
|
13
|
+
export * from './apis/embed';
|
|
14
|
+
export * from './apis/image';
|
|
15
|
+
export * from './apis/speech';
|
|
16
|
+
export * from './apis/transcribe';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,MAAM,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Detection Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for detecting model capabilities, tiers, and other metadata
|
|
5
|
+
* independently of provider implementations. This allows providers to be used
|
|
6
|
+
* interchangeably (e.g., using OpenAI models through OpenRouter).
|
|
7
|
+
*/
|
|
8
|
+
import type { ModelCapability, ModelTier } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Model metadata for capability detection
|
|
11
|
+
*/
|
|
12
|
+
export interface ModelMetadata {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
modality?: string;
|
|
16
|
+
capabilities?: string[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Detect model tier from model name
|
|
20
|
+
* Note: This should only be used as a fallback when provider doesn't provide tier info
|
|
21
|
+
*/
|
|
22
|
+
export declare function detectTier(name: string): ModelTier;
|
|
23
|
+
/**
|
|
24
|
+
* Detect capabilities from modality string (OpenRouter format)
|
|
25
|
+
*/
|
|
26
|
+
export declare function detectCapabilitiesFromModality(modality: string, modelId: string): Set<ModelCapability>;
|
|
27
|
+
/**
|
|
28
|
+
* Detect ZDR (Zero Data Retention) support from provider metadata
|
|
29
|
+
*/
|
|
30
|
+
export declare function detectZDRFromModeration(isModerated: boolean): boolean;
|
|
31
|
+
//# sourceMappingURL=modelDetection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelDetection.d.ts","sourceRoot":"","sources":["../src/modelDetection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAgClD;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,GAAG,CAAC,eAAe,CAAC,CAsCtB;AAGD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAGrE"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Detection Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for detecting model capabilities, tiers, and other metadata
|
|
5
|
+
* independently of provider implementations. This allows providers to be used
|
|
6
|
+
* interchangeably (e.g., using OpenAI models through OpenRouter).
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Detect model tier from model name
|
|
10
|
+
* Note: This should only be used as a fallback when provider doesn't provide tier info
|
|
11
|
+
*/
|
|
12
|
+
export function detectTier(name) {
|
|
13
|
+
const n = name.toLowerCase();
|
|
14
|
+
// Check name for tier indicators
|
|
15
|
+
if (n.includes('flagship')) {
|
|
16
|
+
return 'flagship';
|
|
17
|
+
}
|
|
18
|
+
if (n.includes('preview') ||
|
|
19
|
+
n.includes('experimental') ||
|
|
20
|
+
n.includes('alpha') ||
|
|
21
|
+
n.includes('beta')) {
|
|
22
|
+
return 'experimental';
|
|
23
|
+
}
|
|
24
|
+
if (n.includes('legacy')) {
|
|
25
|
+
return 'legacy';
|
|
26
|
+
}
|
|
27
|
+
if (n.includes('mini') ||
|
|
28
|
+
n.includes('small') ||
|
|
29
|
+
n.includes('haiku') ||
|
|
30
|
+
n.includes('efficient')) {
|
|
31
|
+
return 'efficient';
|
|
32
|
+
}
|
|
33
|
+
// Default to flagship (assume modern model if no indicators)
|
|
34
|
+
return 'flagship';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Detect capabilities from modality string (OpenRouter format)
|
|
38
|
+
*/
|
|
39
|
+
export function detectCapabilitiesFromModality(modality, modelId) {
|
|
40
|
+
const capabilities = new Set();
|
|
41
|
+
const lowerModality = modality.toLowerCase();
|
|
42
|
+
const [input, output = input] = lowerModality.split('->').map((s) => s.trim());
|
|
43
|
+
// Text capabilities
|
|
44
|
+
if (output.includes('text')) {
|
|
45
|
+
capabilities.add('chat');
|
|
46
|
+
capabilities.add('json');
|
|
47
|
+
capabilities.add('tools');
|
|
48
|
+
// structured output can't be detected from this
|
|
49
|
+
}
|
|
50
|
+
// Vision capabilities
|
|
51
|
+
if (input.includes('image')) {
|
|
52
|
+
capabilities.add('vision');
|
|
53
|
+
}
|
|
54
|
+
// Image generation
|
|
55
|
+
if (output.includes('image')) {
|
|
56
|
+
capabilities.add('image');
|
|
57
|
+
}
|
|
58
|
+
// Audio capabilities
|
|
59
|
+
if (input.includes('audio')) {
|
|
60
|
+
capabilities.add('hearing');
|
|
61
|
+
}
|
|
62
|
+
if (output.includes('audio')) {
|
|
63
|
+
capabilities.add('audio');
|
|
64
|
+
}
|
|
65
|
+
// Embedding
|
|
66
|
+
if (output.includes('embedding') || output.includes('vector')) {
|
|
67
|
+
capabilities.add('embedding');
|
|
68
|
+
}
|
|
69
|
+
return capabilities;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Detect ZDR (Zero Data Retention) support from provider metadata
|
|
73
|
+
*/
|
|
74
|
+
export function detectZDRFromModeration(isModerated) {
|
|
75
|
+
// If a model is NOT moderated, it typically means ZDR is supported
|
|
76
|
+
return !isModerated;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=modelDetection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelDetection.js","sourceRoot":"","sources":["../src/modelDetection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAE7B,iCAAiC;IACjC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IACE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrB,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAClB,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IACE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EACvB,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,6DAA6D;IAC7D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAgB,EAChB,OAAe;IAEf,MAAM,YAAY,GAAG,IAAI,GAAG,EAAmB,CAAC;IAChD,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAE7C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAE/E,oBAAoB;IACpB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,gDAAgD;IAClD,CAAC;IAED,sBAAsB;IACtB,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,qBAAqB;IACrB,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,YAAY;IACZ,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9D,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAGD;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAoB;IAC1D,mEAAmE;IACnE,OAAO,CAAC,WAAW,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Registry
|
|
3
|
+
*
|
|
4
|
+
* Centralized model management with provider ordering and adapter registration.
|
|
5
|
+
* Provider order ensures deterministic model resolution: first provider to return a model ID wins.
|
|
6
|
+
*/
|
|
7
|
+
import type { AIBaseMetadata, ModelCapability, ModelHandler, ModelInfo, ModelOverride, ModelSelectionWeights, ModelSource, Provider, Providers, ScoredModel, SelectedModel } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Determines which capabilities a provider supports based on its defined methods.
|
|
10
|
+
* Treats streaming and non-streaming methods as equivalent for capability detection.
|
|
11
|
+
*
|
|
12
|
+
* This is useful for:
|
|
13
|
+
* - Filtering providers during model selection
|
|
14
|
+
* - Validating provider compatibility before requests
|
|
15
|
+
* - Displaying provider capabilities in UI
|
|
16
|
+
*
|
|
17
|
+
* @param provider - The provider to inspect
|
|
18
|
+
* @returns Set of capabilities the provider supports
|
|
19
|
+
*
|
|
20
|
+
* @example Basic usage
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { OpenAIProvider } from '@aeye/openai';
|
|
23
|
+
* import { getProviderCapabilities } from '@aeye/ai';
|
|
24
|
+
*
|
|
25
|
+
* const openai = new OpenAIProvider({ apiKey: '...' });
|
|
26
|
+
* const caps = getProviderCapabilities(openai);
|
|
27
|
+
* console.log(caps);
|
|
28
|
+
* // Set(['chat', 'streaming', 'image', 'audio', 'hearing', 'embedding'])
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @example Checking specific capability
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const openrouter = new OpenRouterProvider({ apiKey: '...' });
|
|
34
|
+
* const caps = getProviderCapabilities(openrouter);
|
|
35
|
+
*
|
|
36
|
+
* if (caps.has('image')) {
|
|
37
|
+
* console.log('Provider supports image generation');
|
|
38
|
+
* } else {
|
|
39
|
+
* console.log('Provider does not support image generation');
|
|
40
|
+
* }
|
|
41
|
+
* // Output: "Provider does not support image generation"
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @example Filtering providers by capability
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const providers = { openai, openrouter, anthropic };
|
|
47
|
+
* const imageProviders = Object.entries(providers)
|
|
48
|
+
* .filter(([name, provider]) => getProviderCapabilities(provider).has('image'))
|
|
49
|
+
* .map(([name]) => name);
|
|
50
|
+
* console.log(imageProviders); // ['openai']
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function getProviderCapabilities(provider: Provider): Set<ModelCapability>;
|
|
54
|
+
export declare class ModelRegistry<TProviders extends Providers, TProviderKey extends keyof TProviders & string = keyof TProviders & string, TProvider extends TProviders[TProviderKey] = TProviders[TProviderKey]> {
|
|
55
|
+
private models;
|
|
56
|
+
private modelHandlers;
|
|
57
|
+
private providers;
|
|
58
|
+
private providerCapabilities;
|
|
59
|
+
private modelSources;
|
|
60
|
+
private modelOverrides;
|
|
61
|
+
private defaultCostPerMillionTokens;
|
|
62
|
+
private defaultWeights?;
|
|
63
|
+
private weightProfiles;
|
|
64
|
+
constructor(providers: TProviders, modelOverrides?: ModelOverride[], defaultCostPerMillionTokens?: number, modelSources?: ModelSource[], defaultWeights?: ModelSelectionWeights, weightProfiles?: Record<string, ModelSelectionWeights>);
|
|
65
|
+
/**
|
|
66
|
+
* Add model sources to the registry
|
|
67
|
+
*/
|
|
68
|
+
addModelSources(sources: ModelSource[]): void;
|
|
69
|
+
/**
|
|
70
|
+
* Register a model in the registry
|
|
71
|
+
*
|
|
72
|
+
* Always registers under two keys:
|
|
73
|
+
* - model.id (e.g., "gpt-4" or "openai/gpt-4")
|
|
74
|
+
* - provider/model.id (e.g., "openai/gpt-4" or "openrouter/openai/gpt-4")
|
|
75
|
+
*
|
|
76
|
+
* On collision, models are merged
|
|
77
|
+
*/
|
|
78
|
+
registerModel(model: ModelInfo<TProviderKey>): void;
|
|
79
|
+
/**
|
|
80
|
+
* Register multiple models
|
|
81
|
+
*/
|
|
82
|
+
registerModels(models: ModelInfo<TProviderKey>[]): void;
|
|
83
|
+
/**
|
|
84
|
+
* Get a model by ID (checks all providers in order)
|
|
85
|
+
*/
|
|
86
|
+
getModel(id: string): ModelInfo<TProviderKey> | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* Gets the provider to use for a given model ID
|
|
89
|
+
*
|
|
90
|
+
* @param id
|
|
91
|
+
* @returns
|
|
92
|
+
*/
|
|
93
|
+
getProviderFor(id: string): [TProviderKey, TProvider] | [];
|
|
94
|
+
/**
|
|
95
|
+
* List all models
|
|
96
|
+
*/
|
|
97
|
+
listModels(): ModelInfo<TProviderKey>[];
|
|
98
|
+
/**
|
|
99
|
+
* List models for which we have providers
|
|
100
|
+
*/
|
|
101
|
+
providedModels(): ModelInfo<TProviderKey>[];
|
|
102
|
+
/**
|
|
103
|
+
* Search and score models based on criteria
|
|
104
|
+
*/
|
|
105
|
+
searchModels(metadata: AIBaseMetadata<TProviders>): ScoredModel<TProviderKey>[];
|
|
106
|
+
/**
|
|
107
|
+
* Select best model based on criteria
|
|
108
|
+
*/
|
|
109
|
+
selectModel(criteria: AIBaseMetadata<TProviders>): SelectedModel<TProviders, TProviderKey> | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* Register a model handler
|
|
112
|
+
*/
|
|
113
|
+
registerHandler(handler: ModelHandler<any>): void;
|
|
114
|
+
/**
|
|
115
|
+
* Get handler for a model
|
|
116
|
+
*/
|
|
117
|
+
getHandler(provider: string, model: string): ModelHandler | undefined;
|
|
118
|
+
/**
|
|
119
|
+
* Get provider info
|
|
120
|
+
*/
|
|
121
|
+
getProvider(name: TProviderKey): TProvider | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* Get pre-computed capabilities for a provider
|
|
124
|
+
* @param name - Provider name
|
|
125
|
+
* @returns Set of capabilities the provider supports, or undefined if provider not found
|
|
126
|
+
*/
|
|
127
|
+
getProviderCapabilities(name: TProviderKey): Set<ModelCapability> | undefined;
|
|
128
|
+
/**
|
|
129
|
+
* Score a model against criteria
|
|
130
|
+
*/
|
|
131
|
+
private scoreModel;
|
|
132
|
+
/**
|
|
133
|
+
* Calculate weighted score for a model
|
|
134
|
+
*/
|
|
135
|
+
private calculateWeightedScore;
|
|
136
|
+
/**
|
|
137
|
+
* Apply overrides to a model
|
|
138
|
+
*/
|
|
139
|
+
private applyOverrides;
|
|
140
|
+
/**
|
|
141
|
+
* Merge two ModelInfo objects intelligently
|
|
142
|
+
* Prefers non-default values and combines capabilities
|
|
143
|
+
*/
|
|
144
|
+
private mergeModelInfo;
|
|
145
|
+
/**
|
|
146
|
+
* Refresh models from all providers and model sources
|
|
147
|
+
*/
|
|
148
|
+
refresh(): Promise<void>;
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|