@sentropic/llm-mesh 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.
Files changed (63) hide show
  1. package/LICENSE +59 -0
  2. package/README.md +15 -0
  3. package/dist/adapter-auth.d.ts +6 -0
  4. package/dist/adapter-auth.d.ts.map +1 -0
  5. package/dist/adapter-auth.js +38 -0
  6. package/dist/adapter-auth.js.map +1 -0
  7. package/dist/adapter-core.d.ts +42 -0
  8. package/dist/adapter-core.d.ts.map +1 -0
  9. package/dist/adapter-core.js +51 -0
  10. package/dist/adapter-core.js.map +1 -0
  11. package/dist/adapters.d.ts +40 -0
  12. package/dist/adapters.d.ts.map +1 -0
  13. package/dist/adapters.js +39 -0
  14. package/dist/adapters.js.map +1 -0
  15. package/dist/auth.d.ts +92 -0
  16. package/dist/auth.d.ts.map +1 -0
  17. package/dist/auth.js +80 -0
  18. package/dist/auth.js.map +1 -0
  19. package/dist/capabilities.d.ts +60 -0
  20. package/dist/capabilities.d.ts.map +1 -0
  21. package/dist/capabilities.js +15 -0
  22. package/dist/capabilities.js.map +1 -0
  23. package/dist/catalog.d.ts +253 -0
  24. package/dist/catalog.d.ts.map +1 -0
  25. package/dist/catalog.js +261 -0
  26. package/dist/catalog.js.map +1 -0
  27. package/dist/errors.d.ts +22 -0
  28. package/dist/errors.d.ts.map +1 -0
  29. package/dist/errors.js +85 -0
  30. package/dist/errors.js.map +1 -0
  31. package/dist/generation.d.ts +63 -0
  32. package/dist/generation.d.ts.map +1 -0
  33. package/dist/generation.js +2 -0
  34. package/dist/generation.js.map +1 -0
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +13 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/mesh.d.ts +37 -0
  40. package/dist/mesh.d.ts.map +1 -0
  41. package/dist/mesh.js +109 -0
  42. package/dist/mesh.js.map +1 -0
  43. package/dist/messages.d.ts +38 -0
  44. package/dist/messages.d.ts.map +1 -0
  45. package/dist/messages.js +2 -0
  46. package/dist/messages.js.map +1 -0
  47. package/dist/providers.d.ts +25 -0
  48. package/dist/providers.d.ts.map +1 -0
  49. package/dist/providers.js +31 -0
  50. package/dist/providers.js.map +1 -0
  51. package/dist/registry.d.ts +37 -0
  52. package/dist/registry.d.ts.map +1 -0
  53. package/dist/registry.js +26 -0
  54. package/dist/registry.js.map +1 -0
  55. package/dist/streaming.d.ts +72 -0
  56. package/dist/streaming.d.ts.map +1 -0
  57. package/dist/streaming.js +11 -0
  58. package/dist/streaming.js.map +1 -0
  59. package/dist/tools.d.ts +112 -0
  60. package/dist/tools.d.ts.map +1 -0
  61. package/dist/tools.js +2 -0
  62. package/dist/tools.js.map +1 -0
  63. package/package.json +33 -0
@@ -0,0 +1,63 @@
1
+ import type { AuthInput, AuthResolver } from './auth.js';
2
+ import type { LlmMeshMessage } from './messages.js';
3
+ import type { ModelId, ModelReference, ProviderId, QualifiedModelId } from './providers.js';
4
+ import type { FinishReason, StreamEvent, TokenUsage } from './streaming.js';
5
+ import type { JsonObjectSchema, ToolCall, ToolChoice, ToolDefinition } from './tools.js';
6
+ export type ModelSelection = QualifiedModelId | ModelReference;
7
+ export type ResponseFormat = {
8
+ type: 'text';
9
+ } | {
10
+ type: 'json-object';
11
+ } | {
12
+ type: 'json-schema';
13
+ name: string;
14
+ schema: JsonObjectSchema;
15
+ description?: string;
16
+ strict?: boolean;
17
+ };
18
+ export interface ReasoningOptions {
19
+ effort?: 'none' | 'low' | 'medium' | 'high' | 'xhigh';
20
+ summary?: 'auto' | 'concise' | 'detailed';
21
+ }
22
+ export interface LlmMeshRequestMetadata {
23
+ correlationId?: string;
24
+ userId?: string | null;
25
+ workspaceId?: string | null;
26
+ tenantId?: string | null;
27
+ tags?: readonly string[];
28
+ attributes?: Record<string, unknown>;
29
+ }
30
+ export interface GenerateRequest {
31
+ model?: ModelSelection;
32
+ providerId?: ProviderId;
33
+ modelId?: ModelId;
34
+ messages: readonly LlmMeshMessage[];
35
+ auth?: AuthInput | AuthResolver;
36
+ tools?: readonly ToolDefinition[];
37
+ toolChoice?: ToolChoice;
38
+ responseFormat?: ResponseFormat;
39
+ reasoning?: ReasoningOptions;
40
+ maxOutputTokens?: number;
41
+ temperature?: number;
42
+ topP?: number;
43
+ signal?: AbortSignal;
44
+ metadata?: LlmMeshRequestMetadata;
45
+ providerOptions?: Record<string, unknown>;
46
+ }
47
+ export interface StreamRequest extends GenerateRequest {
48
+ previousResponseId?: string;
49
+ }
50
+ export interface GenerateResponse {
51
+ id: string;
52
+ providerId: ProviderId;
53
+ modelId: ModelId;
54
+ message: LlmMeshMessage;
55
+ text: string;
56
+ toolCalls: readonly ToolCall[];
57
+ finishReason: FinishReason;
58
+ usage?: TokenUsage;
59
+ structuredOutput?: unknown;
60
+ providerMetadata?: Record<string, unknown>;
61
+ }
62
+ export type StreamResult = AsyncIterable<StreamEvent>;
63
+ //# sourceMappingURL=generation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../src/generation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation.js","sourceRoot":"","sources":["../src/generation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ export * from './adapters.js';
2
+ export * from './auth.js';
3
+ export * from './capabilities.js';
4
+ export * from './catalog.js';
5
+ export * from './errors.js';
6
+ export * from './generation.js';
7
+ export * from './messages.js';
8
+ export * from './mesh.js';
9
+ export * from './providers.js';
10
+ export * from './registry.js';
11
+ export * from './streaming.js';
12
+ export * from './tools.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ export * from './adapters.js';
2
+ export * from './auth.js';
3
+ export * from './capabilities.js';
4
+ export * from './catalog.js';
5
+ export * from './errors.js';
6
+ export * from './generation.js';
7
+ export * from './messages.js';
8
+ export * from './mesh.js';
9
+ export * from './providers.js';
10
+ export * from './registry.js';
11
+ export * from './streaming.js';
12
+ export * from './tools.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
package/dist/mesh.d.ts ADDED
@@ -0,0 +1,37 @@
1
+ import { type AuthDescriptor, type AuthResolver } from './auth.js';
2
+ import type { GenerateRequest, GenerateResponse, StreamRequest, StreamResult } from './generation.js';
3
+ import type { FinishReason, TokenUsage } from './streaming.js';
4
+ import type { ProviderRegistry } from './registry.js';
5
+ import { type ProviderId } from './providers.js';
6
+ export interface LlmMeshHooks {
7
+ onRequest?(event: LlmMeshRequestEvent): void | Promise<void>;
8
+ onResponse?(event: LlmMeshResponseEvent): void | Promise<void>;
9
+ onError?(event: LlmMeshErrorEvent): void | Promise<void>;
10
+ }
11
+ export interface LlmMeshRequestEvent {
12
+ operation: 'generate' | 'stream';
13
+ providerId: ProviderId;
14
+ modelId: string;
15
+ auth?: AuthDescriptor;
16
+ }
17
+ export interface LlmMeshResponseEvent extends LlmMeshRequestEvent {
18
+ finishReason?: FinishReason;
19
+ responseId?: string;
20
+ usage?: TokenUsage;
21
+ }
22
+ export interface LlmMeshErrorEvent extends LlmMeshRequestEvent {
23
+ error: unknown;
24
+ }
25
+ export interface CreateLlmMeshOptions {
26
+ registry: ProviderRegistry;
27
+ authResolver?: AuthResolver;
28
+ hooks?: LlmMeshHooks;
29
+ }
30
+ export interface LlmMesh {
31
+ listProviders: ProviderRegistry['listProviders'];
32
+ listModels: ProviderRegistry['listModels'];
33
+ generate(request: GenerateRequest): Promise<GenerateResponse>;
34
+ stream(request: StreamRequest): Promise<StreamResult>;
35
+ }
36
+ export declare const createLlmMesh: ({ registry, authResolver, hooks }: CreateLlmMeshOptions) => LlmMesh;
37
+ //# sourceMappingURL=mesh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh.d.ts","sourceRoot":"","sources":["../src/mesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,cAAc,EAAkB,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAEtG,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtG,OAAO,KAAK,EAAE,YAAY,EAAe,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEpF,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,UAAU,CAAC,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,OAAO,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,UAAU,GAAG,QAAQ,CAAC;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,aAAa,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACjD,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9D,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACvD;AAiED,eAAO,MAAM,aAAa,sCAAuC,oBAAoB,KAAG,OAwDvF,CAAC"}
package/dist/mesh.js ADDED
@@ -0,0 +1,109 @@
1
+ import { getAuthDescriptor } from './auth.js';
2
+ import { isProviderId } from './providers.js';
3
+ const selectModel = (request, registry) => {
4
+ const alias = typeof request.model === 'string' ? request.model.split(':', 2) : null;
5
+ const ref = request.model && typeof request.model === 'object' ? request.model : null;
6
+ const providerId = ref?.providerId ?? request.providerId ?? (alias && isProviderId(alias[0]) ? alias[0] : undefined);
7
+ const modelId = ref?.modelId ?? request.modelId ?? alias?.[1];
8
+ if (!providerId || !modelId)
9
+ throw new Error('A provider/model selection is required');
10
+ const profile = registry.listModels().find((model) => model.providerId === providerId && model.modelId === modelId);
11
+ if (!profile)
12
+ throw new Error(`Model not found: ${providerId}:${modelId}`);
13
+ return { providerId, modelId, profile };
14
+ };
15
+ const validateFeatures = (operation, request, profile) => {
16
+ if (operation === 'stream' && profile.capabilities.streaming.support === 'unsupported') {
17
+ throw new Error(`Streaming is unsupported for ${profile.providerId}:${profile.modelId}`);
18
+ }
19
+ if ((request.tools?.length || request.toolChoice === 'required') && profile.capabilities.tools.support === 'unsupported') {
20
+ throw new Error(`Tool use is unsupported for ${profile.providerId}:${profile.modelId}`);
21
+ }
22
+ if (request.responseFormat && request.responseFormat.type !== 'text' && profile.capabilities.structuredOutput.support === 'unsupported') {
23
+ throw new Error(`Structured output is unsupported for ${profile.providerId}:${profile.modelId}`);
24
+ }
25
+ if (request.reasoning && request.reasoning.effort !== 'none' && profile.capabilities.reasoning.support === 'unsupported') {
26
+ throw new Error(`Reasoning is unsupported for ${profile.providerId}:${profile.modelId}`);
27
+ }
28
+ };
29
+ const resolveAuth = async (request, selection, authResolver) => {
30
+ if (request.auth && typeof request.auth !== 'function')
31
+ return request.auth;
32
+ const resolver = typeof request.auth === 'function' ? request.auth : authResolver;
33
+ return resolver?.({
34
+ providerId: selection.providerId,
35
+ modelId: selection.modelId,
36
+ userId: request.metadata?.userId,
37
+ workspaceId: request.metadata?.workspaceId,
38
+ metadata: request.metadata?.attributes,
39
+ });
40
+ };
41
+ const normalizeRequest = (request, selection, auth) => {
42
+ const { model: _model, auth: _requestAuth, ...rest } = request;
43
+ return {
44
+ ...rest,
45
+ providerId: selection.providerId,
46
+ modelId: selection.modelId,
47
+ ...(auth ? { auth } : {}),
48
+ };
49
+ };
50
+ export const createLlmMesh = ({ registry, authResolver, hooks }) => {
51
+ const emit = async (event, type) => {
52
+ await hooks?.[type]?.(event);
53
+ };
54
+ const prepare = async (operation, request) => {
55
+ const selection = selectModel(request, registry);
56
+ validateFeatures(operation, request, selection.profile);
57
+ const auth = await resolveAuth(request, selection, authResolver);
58
+ const adapter = registry.requireProvider(selection.providerId);
59
+ const validation = adapter.validateAuth(auth);
60
+ if (!validation.ok)
61
+ throw new Error(validation.message ?? 'Provider auth source is not configured');
62
+ const eventBase = {
63
+ operation,
64
+ providerId: selection.providerId,
65
+ modelId: selection.modelId,
66
+ ...(auth ? { auth: getAuthDescriptor(auth) } : {}),
67
+ };
68
+ await emit(eventBase, 'onRequest');
69
+ return { adapter, auth, eventBase, request: normalizeRequest(request, selection, auth) };
70
+ };
71
+ return {
72
+ listProviders: () => registry.listProviders(),
73
+ listModels: () => registry.listModels(),
74
+ async generate(request) {
75
+ const prepared = await prepare('generate', request);
76
+ try {
77
+ const response = await prepared.adapter.generate(prepared.request, { auth: prepared.auth });
78
+ await emit({ ...prepared.eventBase, finishReason: response.finishReason, responseId: response.id, usage: response.usage }, 'onResponse');
79
+ return response;
80
+ }
81
+ catch (error) {
82
+ await emit({ ...prepared.eventBase, error }, 'onError');
83
+ throw error;
84
+ }
85
+ },
86
+ async stream(request) {
87
+ const prepared = await prepare('stream', request);
88
+ try {
89
+ const stream = await prepared.adapter.stream(prepared.request, { auth: prepared.auth });
90
+ return (async function* () {
91
+ for await (const event of stream) {
92
+ if (event.type === 'done') {
93
+ await emit({ ...prepared.eventBase, finishReason: event.data.finishReason, responseId: event.data.responseId, usage: event.data.usage }, 'onResponse');
94
+ }
95
+ else if (event.type === 'error') {
96
+ await emit({ ...prepared.eventBase, error: event.data }, 'onError');
97
+ }
98
+ yield event;
99
+ }
100
+ })();
101
+ }
102
+ catch (error) {
103
+ await emit({ ...prepared.eventBase, error }, 'onError');
104
+ throw error;
105
+ }
106
+ },
107
+ };
108
+ };
109
+ //# sourceMappingURL=mesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh.js","sourceRoot":"","sources":["../src/mesh.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { ToolCall, ToolResult } from './tools.js';
2
+ export type MessageRole = 'system' | 'developer' | 'user' | 'assistant' | 'tool';
3
+ export interface TextContentPart {
4
+ type: 'text';
5
+ text: string;
6
+ }
7
+ export interface ImageContentPart {
8
+ type: 'image';
9
+ mediaType?: string;
10
+ data?: string;
11
+ url?: string;
12
+ }
13
+ export interface FileContentPart {
14
+ type: 'file';
15
+ mediaType?: string;
16
+ data?: string;
17
+ url?: string;
18
+ filename?: string;
19
+ }
20
+ export type MessageContent = string | readonly (TextContentPart | ImageContentPart | FileContentPart)[];
21
+ export interface BaseMessage {
22
+ role: MessageRole;
23
+ content: MessageContent;
24
+ name?: string;
25
+ metadata?: Record<string, unknown>;
26
+ }
27
+ export interface AssistantMessage extends BaseMessage {
28
+ role: 'assistant';
29
+ toolCalls?: readonly ToolCall[];
30
+ }
31
+ export interface ToolMessage extends BaseMessage {
32
+ role: 'tool';
33
+ toolResult: ToolResult;
34
+ }
35
+ export type LlmMeshMessage = (BaseMessage & {
36
+ role: 'system' | 'developer' | 'user';
37
+ }) | AssistantMessage | ToolMessage;
38
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAEjF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC,eAAe,GAAG,gBAAgB,GAAG,eAAe,CAAC,EAAE,CAAC;AAExG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GACtB,CAAC,WAAW,GAAG;IAAE,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAA;CAAE,CAAC,GACzD,gBAAgB,GAChB,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ export declare const providerIds: readonly ["openai", "gemini", "anthropic", "mistral", "cohere"];
2
+ export type ProviderId = (typeof providerIds)[number];
3
+ export type ProviderStatus = 'ready' | 'planned';
4
+ export type ProviderFamily = 'openai' | 'google' | 'anthropic' | 'mistral' | 'cohere';
5
+ export type ReasoningTier = 'none' | 'light' | 'standard' | 'advanced';
6
+ export type ModelTaskHint = 'chat' | 'structured' | 'summary' | 'doc';
7
+ export declare const knownModelIds: readonly ["gpt-5.4", "gpt-5.4-nano", "gpt-4.1-nano", "gemini-3.1-pro-preview-customtools", "gemini-3.1-flash-lite-preview", "claude-sonnet-4-6", "claude-opus-4-6", "mistral-small-2603", "magistral-medium-2509", "command-a-03-2025", "command-a-reasoning-08-2025"];
8
+ export type KnownModelId = (typeof knownModelIds)[number];
9
+ export type ModelId = KnownModelId | (string & {});
10
+ export type QualifiedModelId = `${ProviderId}:${string}`;
11
+ export declare const knownModelIdsByProvider: {
12
+ readonly openai: readonly ["gpt-5.4", "gpt-5.4-nano", "gpt-4.1-nano"];
13
+ readonly gemini: readonly ["gemini-3.1-pro-preview-customtools", "gemini-3.1-flash-lite-preview"];
14
+ readonly anthropic: readonly ["claude-sonnet-4-6", "claude-opus-4-6"];
15
+ readonly mistral: readonly ["mistral-small-2603", "magistral-medium-2509"];
16
+ readonly cohere: readonly ["command-a-03-2025", "command-a-reasoning-08-2025"];
17
+ };
18
+ export interface ModelReference {
19
+ providerId: ProviderId;
20
+ modelId: ModelId;
21
+ }
22
+ export declare const toQualifiedModelId: (model: ModelReference) => QualifiedModelId;
23
+ export declare const isProviderId: (value: string) => value is "openai" | "gemini" | "anthropic" | "mistral" | "cohere";
24
+ export declare const isKnownModelId: (value: string) => value is "gpt-5.4" | "gpt-5.4-nano" | "gpt-4.1-nano" | "gemini-3.1-pro-preview-customtools" | "gemini-3.1-flash-lite-preview" | "claude-sonnet-4-6" | "claude-opus-4-6" | "mistral-small-2603" | "magistral-medium-2509" | "command-a-03-2025" | "command-a-reasoning-08-2025";
25
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,iEAAkE,CAAC;AAE3F,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;AAEtE,eAAO,MAAM,aAAa,wQAYhB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GAAG,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;AAEzD,eAAO,MAAM,uBAAuB;;;;;;CAM4B,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,UAAW,cAAc,KAAG,gBAE1D,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,MAAM,sEAEzC,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,MAAM,mRAE3C,CAAC"}
@@ -0,0 +1,31 @@
1
+ export const providerIds = ['openai', 'gemini', 'anthropic', 'mistral', 'cohere'];
2
+ export const knownModelIds = [
3
+ 'gpt-5.4',
4
+ 'gpt-5.4-nano',
5
+ 'gpt-4.1-nano',
6
+ 'gemini-3.1-pro-preview-customtools',
7
+ 'gemini-3.1-flash-lite-preview',
8
+ 'claude-sonnet-4-6',
9
+ 'claude-opus-4-6',
10
+ 'mistral-small-2603',
11
+ 'magistral-medium-2509',
12
+ 'command-a-03-2025',
13
+ 'command-a-reasoning-08-2025',
14
+ ];
15
+ export const knownModelIdsByProvider = {
16
+ openai: ['gpt-5.4', 'gpt-5.4-nano', 'gpt-4.1-nano'],
17
+ gemini: ['gemini-3.1-pro-preview-customtools', 'gemini-3.1-flash-lite-preview'],
18
+ anthropic: ['claude-sonnet-4-6', 'claude-opus-4-6'],
19
+ mistral: ['mistral-small-2603', 'magistral-medium-2509'],
20
+ cohere: ['command-a-03-2025', 'command-a-reasoning-08-2025'],
21
+ };
22
+ export const toQualifiedModelId = (model) => {
23
+ return `${model.providerId}:${model.modelId}`;
24
+ };
25
+ export const isProviderId = (value) => {
26
+ return providerIds.includes(value);
27
+ };
28
+ export const isKnownModelId = (value) => {
29
+ return knownModelIds.includes(value);
30
+ };
31
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAC;AAY3F,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS;IACT,cAAc;IACd,cAAc;IACd,oCAAoC;IACpC,+BAA+B;IAC/B,mBAAmB;IACnB,iBAAiB;IACjB,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,6BAA6B;CACrB,CAAC;AAQX,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,MAAM,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,CAAC;IACnD,MAAM,EAAE,CAAC,oCAAoC,EAAE,+BAA+B,CAAC;IAC/E,SAAS,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;IACnD,OAAO,EAAE,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;IACxD,MAAM,EAAE,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;CACE,CAAC;AAOjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAqB,EAAoB,EAAE;IAC5E,OAAO,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAuB,EAAE;IACjE,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAmB,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAyB,EAAE;IACrE,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAqB,CAAC,CAAC;AACvD,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { AuthInput } from './auth.js';
2
+ import type { GenerateRequest, GenerateResponse, StreamRequest, StreamResult } from './generation.js';
3
+ import type { ModelProfile, ProviderDescriptor } from './catalog.js';
4
+ import type { ProviderId } from './providers.js';
5
+ import type { NormalizedProviderError } from './errors.js';
6
+ export interface CredentialValidationResult {
7
+ ok: boolean;
8
+ message?: string;
9
+ }
10
+ export interface ProviderRuntimeContext {
11
+ auth?: AuthInput;
12
+ metadata?: Record<string, unknown>;
13
+ }
14
+ export interface ProviderAdapter {
15
+ readonly provider: ProviderDescriptor;
16
+ listModels(): readonly ModelProfile[];
17
+ generate(request: GenerateRequest, context?: ProviderRuntimeContext): Promise<GenerateResponse>;
18
+ stream(request: StreamRequest, context?: ProviderRuntimeContext): Promise<StreamResult>;
19
+ validateAuth(source?: AuthInput): CredentialValidationResult;
20
+ normalizeError(error: unknown): NormalizedProviderError;
21
+ }
22
+ export interface ProviderRegistry {
23
+ listProviders(): readonly ProviderDescriptor[];
24
+ listModels(): readonly ModelProfile[];
25
+ getProvider(providerId: ProviderId): ProviderAdapter | null;
26
+ requireProvider(providerId: ProviderId): ProviderAdapter;
27
+ }
28
+ export declare class StaticProviderRegistry implements ProviderRegistry {
29
+ private readonly providers;
30
+ constructor(adapters: readonly ProviderAdapter[]);
31
+ listProviders(): readonly ProviderDescriptor[];
32
+ listModels(): readonly ModelProfile[];
33
+ getProvider(providerId: ProviderId): ProviderAdapter | null;
34
+ requireProvider(providerId: ProviderId): ProviderAdapter;
35
+ }
36
+ export declare const createProviderRegistry: (adapters: readonly ProviderAdapter[]) => ProviderRegistry;
37
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtG,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,UAAU,IAAI,SAAS,YAAY,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChG,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxF,YAAY,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,0BAA0B,CAAC;IAC7D,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,IAAI,SAAS,kBAAkB,EAAE,CAAC;IAC/C,UAAU,IAAI,SAAS,YAAY,EAAE,CAAC;IACtC,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI,CAAC;IAC5D,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAAC;CAC1D;AAED,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;gBAEzD,QAAQ,EAAE,SAAS,eAAe,EAAE;IAIhD,aAAa,IAAI,SAAS,kBAAkB,EAAE;IAI9C,UAAU,IAAI,SAAS,YAAY,EAAE;IAIrC,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI;IAI3D,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe;CAOzD;AAED,eAAO,MAAM,sBAAsB,aACvB,SAAS,eAAe,EAAE,KACnC,gBAEF,CAAC"}
@@ -0,0 +1,26 @@
1
+ export class StaticProviderRegistry {
2
+ providers;
3
+ constructor(adapters) {
4
+ this.providers = new Map(adapters.map((adapter) => [adapter.provider.providerId, adapter]));
5
+ }
6
+ listProviders() {
7
+ return [...this.providers.values()].map((adapter) => adapter.provider);
8
+ }
9
+ listModels() {
10
+ return [...this.providers.values()].flatMap((adapter) => [...adapter.listModels()]);
11
+ }
12
+ getProvider(providerId) {
13
+ return this.providers.get(providerId) ?? null;
14
+ }
15
+ requireProvider(providerId) {
16
+ const provider = this.getProvider(providerId);
17
+ if (!provider) {
18
+ throw new Error(`Provider not found: ${providerId}`);
19
+ }
20
+ return provider;
21
+ }
22
+ }
23
+ export const createProviderRegistry = (adapters) => {
24
+ return new StaticProviderRegistry(adapters);
25
+ };
26
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAgCA,MAAM,OAAO,sBAAsB;IAChB,SAAS,CAA2C;IAErE,YAAY,QAAoC;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,WAAW,CAAC,UAAsB;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IAChD,CAAC;IAED,eAAe,CAAC,UAAsB;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,QAAoC,EAClB,EAAE;IACpB,OAAO,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC"}
@@ -0,0 +1,72 @@
1
+ import type { ModelId, ProviderId } from './providers.js';
2
+ import type { NormalizedProviderError } from './errors.js';
3
+ import type { ToolCall, ToolCallDelta, ToolResult } from './tools.js';
4
+ export declare const streamEventTypes: readonly ["reasoning_delta", "content_delta", "tool_call_start", "tool_call_delta", "tool_call_result", "status", "error", "done"];
5
+ export type StreamEventType = (typeof streamEventTypes)[number];
6
+ export type FinishReason = 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'error' | 'cancelled' | 'unknown';
7
+ export interface TokenUsage {
8
+ inputTokens?: number;
9
+ outputTokens?: number;
10
+ reasoningTokens?: number;
11
+ totalTokens?: number;
12
+ providerRawUsage?: unknown;
13
+ }
14
+ export interface ReasoningDeltaEvent {
15
+ type: 'reasoning_delta';
16
+ data: {
17
+ delta: string;
18
+ kind?: 'summary' | 'summary_done' | 'hidden' | 'signature' | (string & {});
19
+ metadata?: Record<string, unknown>;
20
+ };
21
+ }
22
+ export interface ContentDeltaEvent {
23
+ type: 'content_delta';
24
+ data: {
25
+ delta: string;
26
+ index?: number;
27
+ metadata?: Record<string, unknown>;
28
+ };
29
+ }
30
+ export interface ToolCallStartEvent {
31
+ type: 'tool_call_start';
32
+ data: ToolCall;
33
+ }
34
+ export interface ToolCallDeltaEvent {
35
+ type: 'tool_call_delta';
36
+ data: ToolCallDelta;
37
+ }
38
+ export interface ToolCallResultEvent {
39
+ type: 'tool_call_result';
40
+ data: ToolResult;
41
+ }
42
+ export interface StatusEvent {
43
+ type: 'status';
44
+ data: {
45
+ status: 'started' | 'selected_model' | 'retrying' | 'tool_calling' | 'completed' | (string & {});
46
+ providerId?: ProviderId;
47
+ modelId?: ModelId;
48
+ sentropicResponseId?: string;
49
+ providerResponseId?: string;
50
+ message?: string;
51
+ metadata?: Record<string, unknown>;
52
+ };
53
+ }
54
+ export interface ErrorEvent {
55
+ type: 'error';
56
+ data: NormalizedProviderError;
57
+ }
58
+ export interface DoneEvent {
59
+ type: 'done';
60
+ data: {
61
+ finishReason?: FinishReason;
62
+ usage?: TokenUsage;
63
+ responseId?: string;
64
+ sentropicResponseId?: string;
65
+ providerResponseId?: string;
66
+ providerId?: ProviderId;
67
+ modelId?: ModelId;
68
+ metadata?: Record<string, unknown>;
69
+ };
70
+ }
71
+ export type StreamEvent = ReasoningDeltaEvent | ContentDeltaEvent | ToolCallStartEvent | ToolCallDeltaEvent | ToolCallResultEvent | StatusEvent | ErrorEvent | DoneEvent;
72
+ //# sourceMappingURL=streaming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export const streamEventTypes = [
2
+ 'reasoning_delta',
3
+ 'content_delta',
4
+ 'tool_call_start',
5
+ 'tool_call_delta',
6
+ 'tool_call_result',
7
+ 'status',
8
+ 'error',
9
+ 'done',
10
+ ];
11
+ //# sourceMappingURL=streaming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,QAAQ;IACR,OAAO;IACP,MAAM;CACE,CAAC"}