@hilbras/omnihilbras 0.6.5 → 0.7.1

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.
@@ -35,7 +35,7 @@ export const CLINE_OAUTH = {
35
35
  };
36
36
  const defaultRefreshSkewMs = 60_000;
37
37
  /** Reported to Cline as this client's version. */
38
- const omnihilbrasVersion = '0.6.5';
38
+ const omnihilbrasVersion = '0.7.1';
39
39
  /** Cline only accepts WorkOS JWTs with an explicit prefix. */
40
40
  export function toClineAccessToken(token) {
41
41
  const trimmed = token.trim();
@@ -0,0 +1,64 @@
1
+ import type { HttpTransport } from '../transport.js';
2
+ import type { ChatChunk, ChatRequest, ChatResponse, CredentialValidation, Model, ProviderAdapter, ProviderCredential, ProviderRequestContext } from '../types.js';
3
+ /**
4
+ * OpenCode Zen serves one catalog through three different wire formats. Which
5
+ * format a model uses is a property of the model, not of the connection, so a
6
+ * single base URL can only ever serve part of the catalog. The published table
7
+ * at `opencode.ai/docs/zen` is the source for the routing below.
8
+ *
9
+ * Anything not listed is served from the chat lane, which is the format Zen
10
+ * documents for the remainder of the catalog.
11
+ */
12
+ export declare const ZEN_BASE_URL = "https://opencode.ai/zen";
13
+ export declare const ZEN_LANES: {
14
+ readonly chat: "https://opencode.ai/zen/v1/chat/completions";
15
+ readonly messages: "https://opencode.ai/zen/v1/messages";
16
+ readonly responses: "https://opencode.ai/zen/v1/responses";
17
+ };
18
+ export type ZenLane = keyof typeof ZEN_LANES;
19
+ /** The lane a model is served from, and whether this adapter can speak it. */
20
+ export declare function zenLaneFor(model: string): {
21
+ lane: ZenLane;
22
+ supported: boolean;
23
+ };
24
+ export type ZenAdapterOptions = {
25
+ transport?: HttpTransport;
26
+ /** Overrides the model catalog endpoint, for tests. */
27
+ modelsUrl?: string;
28
+ };
29
+ export declare class ZenAdapter implements ProviderAdapter {
30
+ readonly id = "opencode";
31
+ readonly name = "OpenCode Zen";
32
+ readonly capabilities: {
33
+ readonly chat: true;
34
+ readonly streaming: false;
35
+ readonly models: true;
36
+ };
37
+ private readonly transport;
38
+ private readonly chatLane;
39
+ private readonly modelsUrl;
40
+ constructor(options?: ZenAdapterOptions);
41
+ listModels(context?: ProviderRequestContext): Promise<Model[]>;
42
+ /**
43
+ * The catalog is public, so a successful listing says nothing about a token.
44
+ * A signed-in probe would cost a billable request on every health poll, so the
45
+ * credential is checked for presence and shape only.
46
+ */
47
+ validateCredential(credential: ProviderCredential | undefined): Promise<CredentialValidation>;
48
+ chat(request: ChatRequest, context?: ProviderRequestContext): Promise<ChatResponse>;
49
+ /**
50
+ * Streaming is not implemented for the messages or responses lanes. Saying so
51
+ * is better than silently answering without a stream, which would break a
52
+ * client that is waiting for one.
53
+ */
54
+ streamChat(request: ChatRequest, context?: ProviderRequestContext): AsyncIterable<ChatChunk>;
55
+ healthCheck(context?: ProviderRequestContext): Promise<{
56
+ status: 'healthy' | 'degraded' | 'unavailable';
57
+ checkedAt: string;
58
+ message?: string;
59
+ }>;
60
+ /** The messages lane: raw key in `x-api-key`, plus the required version header. */
61
+ private apiKeyHeaders;
62
+ private authHeaders;
63
+ }
64
+ //# sourceMappingURL=zen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zen.d.ts","sourceRoot":"","sources":["../../src/adapters/zen.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,SAAS,EAAe,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAgB,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,sBAAsB,EAAc,MAAM,aAAa,CAAC;AAEzM;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,4BAA4B,CAAC;AACtD,eAAO,MAAM,SAAS;;;;CAIZ,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,SAAS,CAAC;AAe7C,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAM/E;AA0KD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,UAAW,YAAW,eAAe;IAChD,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,YAAY;;;;MAA2D;IAChF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,OAAO,GAAE,iBAAsB;IASrC,UAAU,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAkBxE;;;;OAIG;IACG,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAU7F,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,YAAY,CAAC;IAgC7F;;;;OAIG;IACI,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,sBAA2B,GAAG,aAAa,CAAC,SAAS,CAAC;IAajG,WAAW,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAazJ,mFAAmF;IACnF,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,WAAW;CASpB"}
@@ -0,0 +1,307 @@
1
+ import { ProviderError } from '../errors.js';
2
+ import { FetchHttpTransport } from '../transport.js';
3
+ import { OpenAICompatibleAdapter } from './openai-compatible.js';
4
+ /**
5
+ * OpenCode Zen serves one catalog through three different wire formats. Which
6
+ * format a model uses is a property of the model, not of the connection, so a
7
+ * single base URL can only ever serve part of the catalog. The published table
8
+ * at `opencode.ai/docs/zen` is the source for the routing below.
9
+ *
10
+ * Anything not listed is served from the chat lane, which is the format Zen
11
+ * documents for the remainder of the catalog.
12
+ */
13
+ export const ZEN_BASE_URL = 'https://opencode.ai/zen';
14
+ export const ZEN_LANES = {
15
+ chat: `${ZEN_BASE_URL}/v1/chat/completions`,
16
+ messages: `${ZEN_BASE_URL}/v1/messages`,
17
+ responses: `${ZEN_BASE_URL}/v1/responses`,
18
+ };
19
+ /**
20
+ * Model families with a published non-chat endpoint. Matched by prefix so a new
21
+ * `claude-*` or `gpt-*` is routed correctly without a code change, and matched
22
+ * against the id after any vendor prefix.
23
+ */
24
+ const messagesFamily = /^claude-/;
25
+ const messagesExact = new Set(['qwen3.8-flash', 'qwen3.7-max', 'qwen3.7-plus', 'qwen3.6-plus', 'qwen3.5-plus', 'union-alpha']);
26
+ const responsesFamily = /^(gpt-|grok-|muse-spark-)/;
27
+ /** Models Zen serves from an endpoint this adapter does not implement. */
28
+ const unsupported = new Set(['jev-1.13', 'jev-1.13-free']);
29
+ const unsupportedFamily = /^gemini-/;
30
+ /** The lane a model is served from, and whether this adapter can speak it. */
31
+ export function zenLaneFor(model) {
32
+ const id = model.includes('/') ? model.slice(model.lastIndexOf('/') + 1) : model;
33
+ if (unsupported.has(id) || unsupportedFamily.test(id))
34
+ return { lane: 'chat', supported: false };
35
+ if (messagesFamily.test(id) || messagesExact.has(id))
36
+ return { lane: 'messages', supported: true };
37
+ if (responsesFamily.test(id))
38
+ return { lane: 'responses', supported: true };
39
+ return { lane: 'chat', supported: true };
40
+ }
41
+ function unsupportedLane(model, id) {
42
+ const kind = unsupported.has(id) ? 'decision models on /zen/v1/systemone' : 'Gemini models on /zen/v1/models/{id}';
43
+ return new ProviderError('NOT_SUPPORTED', `OpenCode Zen serves ${kind}, which this gateway does not implement. Skipping ${model}.`, {
44
+ providerId: 'opencode',
45
+ publicMessage: `OpenCode Zen serves ${kind}, which this gateway does not implement yet.`,
46
+ });
47
+ }
48
+ /** Maps a message role onto the Responses input item role. */
49
+ function responsesRole(message) {
50
+ if (message.role === 'assistant')
51
+ return 'assistant';
52
+ if (message.role === 'tool')
53
+ return 'user';
54
+ return 'user';
55
+ }
56
+ /** The Responses API takes content as typed parts rather than a bare string. */
57
+ function toResponsesInput(messages) {
58
+ return messages.map((message) => ({
59
+ role: responsesRole(message),
60
+ content: [{ type: message.role === 'assistant' ? 'output_text' : 'input_text', text: messageText(message) }],
61
+ }));
62
+ }
63
+ function messageText(message) {
64
+ if (typeof message.content === 'string')
65
+ return message.content;
66
+ if (!Array.isArray(message.content))
67
+ return '';
68
+ return message.content
69
+ .map((part) => {
70
+ if (typeof part === 'string')
71
+ return part;
72
+ if (part && typeof part === 'object' && 'text' in part && typeof part.text === 'string')
73
+ return part.text;
74
+ return '';
75
+ })
76
+ .join('');
77
+ }
78
+ function toResponsesBody(request) {
79
+ const body = {
80
+ model: request.model,
81
+ input: toResponsesInput(request.messages),
82
+ stream: false,
83
+ };
84
+ if (request.maxOutputTokens !== undefined)
85
+ body.max_output_tokens = request.maxOutputTokens;
86
+ if (request.temperature !== undefined)
87
+ body.temperature = request.temperature;
88
+ if (request.topP !== undefined)
89
+ body.top_p = request.topP;
90
+ if (request.stop?.length)
91
+ body.stop = [...request.stop];
92
+ return body;
93
+ }
94
+ function responsesFinishReason(payload) {
95
+ if (payload.incomplete_details?.reason === 'max_output_tokens')
96
+ return 'length';
97
+ const last = payload.output?.[payload.output.length - 1];
98
+ if (last?.type === 'tool_call')
99
+ return 'tool_calls';
100
+ if (payload.status === 'incomplete')
101
+ return 'length';
102
+ return 'stop';
103
+ }
104
+ /** Concatenates the text parts of every output message. */
105
+ function responsesText(payload) {
106
+ if (typeof payload.output_text === 'string' && payload.output_text.trim())
107
+ return payload.output_text;
108
+ const parts = [];
109
+ for (const item of payload.output ?? []) {
110
+ if (item.type && item.type !== 'message')
111
+ continue;
112
+ for (const part of item.content ?? []) {
113
+ if (part.type === 'output_text' && typeof part.text === 'string')
114
+ parts.push(part.text);
115
+ }
116
+ }
117
+ return parts.join('');
118
+ }
119
+ function toResponsesChatResponse(payload, requestedModel) {
120
+ const text = responsesText(payload);
121
+ return {
122
+ id: payload.id ?? `response-${requestedModel}`,
123
+ providerId: 'opencode',
124
+ model: payload.model ?? requestedModel,
125
+ createdAt: payload.created_at ? new Date(payload.created_at * 1000).toISOString() : new Date().toISOString(),
126
+ message: { role: 'assistant', content: text },
127
+ finishReason: responsesFinishReason(payload),
128
+ usage: responsesUsage(payload.usage),
129
+ };
130
+ }
131
+ function responsesUsage(usage) {
132
+ if (!usage)
133
+ return undefined;
134
+ return {
135
+ ...(usage.input_tokens === undefined ? {} : { inputTokens: usage.input_tokens }),
136
+ ...(usage.output_tokens === undefined ? {} : { outputTokens: usage.output_tokens }),
137
+ ...(usage.total_tokens === undefined ? {} : { totalTokens: usage.total_tokens }),
138
+ };
139
+ }
140
+ function messagesFinishReason(reason) {
141
+ if (reason === 'max_tokens')
142
+ return 'length';
143
+ if (reason === 'tool_use')
144
+ return 'tool_calls';
145
+ return 'stop';
146
+ }
147
+ function toMessagesBody(request) {
148
+ const system = request.messages.filter((message) => message.role === 'system').map(messageText).filter(Boolean);
149
+ const messages = request.messages
150
+ .filter((message) => message.role !== 'system')
151
+ .map((message) => ({ role: message.role === 'assistant' ? 'assistant' : 'user', content: messageText(message) }));
152
+ const body = {
153
+ model: request.model,
154
+ messages,
155
+ max_tokens: request.maxOutputTokens ?? 1024,
156
+ stream: false,
157
+ };
158
+ if (system.length > 0)
159
+ body.system = system.join('\n\n');
160
+ if (request.temperature !== undefined)
161
+ body.temperature = request.temperature;
162
+ if (request.topP !== undefined)
163
+ body.top_p = request.topP;
164
+ if (request.stop?.length)
165
+ body.stop = [...request.stop];
166
+ return body;
167
+ }
168
+ function toMessagesChatResponse(payload, requestedModel) {
169
+ const text = (payload.content ?? []).filter((part) => part.type === 'text' && typeof part.text === 'string').map((part) => part.text).join('');
170
+ return {
171
+ id: payload.id ?? `msg-${requestedModel}`,
172
+ providerId: 'opencode',
173
+ model: payload.model ?? requestedModel,
174
+ createdAt: new Date().toISOString(),
175
+ message: { role: 'assistant', content: text },
176
+ finishReason: messagesFinishReason(payload.stop_reason),
177
+ usage: payload.usage
178
+ ? { inputTokens: payload.usage.input_tokens, outputTokens: payload.usage.output_tokens }
179
+ : undefined,
180
+ };
181
+ }
182
+ export class ZenAdapter {
183
+ id = 'opencode';
184
+ name = 'OpenCode Zen';
185
+ capabilities = { chat: true, streaming: false, models: true };
186
+ transport;
187
+ chatLane;
188
+ modelsUrl;
189
+ constructor(options = {}) {
190
+ this.transport = options.transport ?? new FetchHttpTransport();
191
+ this.chatLane = new OpenAICompatibleAdapter({ id: 'opencode', name: 'OpenCode Zen', baseUrl: `${ZEN_BASE_URL}/v1`, auth: { header: 'Authorization', prefix: 'Bearer' } }, { transport: this.transport });
192
+ this.modelsUrl = options.modelsUrl ?? `${ZEN_BASE_URL}/v1/models`;
193
+ }
194
+ async listModels(context = {}) {
195
+ const response = await this.transport.request({
196
+ method: 'GET',
197
+ providerId: this.id,
198
+ url: this.modelsUrl,
199
+ headers: this.authHeaders(context.credential),
200
+ ...(context.signal ? { signal: context.signal } : {}),
201
+ });
202
+ const data = response.data?.data;
203
+ if (!Array.isArray(data)) {
204
+ throw new ProviderError('INVALID_RESPONSE', 'The OpenCode Zen model list is missing data.', { providerId: this.id });
205
+ }
206
+ return data
207
+ .map((entry) => (typeof entry?.id === 'string' ? entry.id.trim() : ''))
208
+ .filter((id) => id.length > 0)
209
+ .map((id) => ({ id, providerId: this.id, displayName: id }));
210
+ }
211
+ /**
212
+ * The catalog is public, so a successful listing says nothing about a token.
213
+ * A signed-in probe would cost a billable request on every health poll, so the
214
+ * credential is checked for presence and shape only.
215
+ */
216
+ async validateCredential(credential) {
217
+ if (credential?.type === 'none' || !credential?.value) {
218
+ throw new ProviderError('AUTHENTICATION_FAILED', 'An OpenCode Zen API key is required.', {
219
+ providerId: this.id,
220
+ publicMessage: 'An OpenCode Zen API key is required.',
221
+ });
222
+ }
223
+ return { status: 'valid', checkedAt: new Date().toISOString() };
224
+ }
225
+ async chat(request, context = {}) {
226
+ const { lane, supported } = zenLaneFor(request.model);
227
+ const id = request.model.includes('/') ? request.model.slice(request.model.lastIndexOf('/') + 1) : request.model;
228
+ if (!supported)
229
+ throw unsupportedLane(request.model, id);
230
+ if (lane === 'chat')
231
+ return this.chatLane.chat(request, context);
232
+ const isResponses = lane === 'responses';
233
+ const response = await this.transport.request({
234
+ method: 'POST',
235
+ providerId: this.id,
236
+ url: ZEN_LANES[lane],
237
+ // The messages lane does not take a bearer token. It takes the raw key in
238
+ // `x-api-key`, and sending `Authorization: Bearer` there is answered with a
239
+ // 401 even when the key is valid.
240
+ headers: isResponses
241
+ ? this.authHeaders(context.credential)
242
+ : this.apiKeyHeaders(context.credential),
243
+ body: JSON.stringify(isResponses ? toResponsesBody(request) : toMessagesBody(request)),
244
+ ...(context.signal ? { signal: context.signal } : {}),
245
+ });
246
+ const payload = response.data;
247
+ if (payload?.error) {
248
+ const reason = typeof payload.error === 'string' ? payload.error : payload.error.message;
249
+ throw new ProviderError('PROVIDER_REQUEST_FAILED', reason ? `OpenCode Zen rejected the request: ${reason}` : 'OpenCode Zen rejected the request.', {
250
+ providerId: this.id,
251
+ publicMessage: reason ? `OpenCode Zen rejected the request: ${reason}` : 'OpenCode Zen rejected the request.',
252
+ });
253
+ }
254
+ return isResponses ? toResponsesChatResponse(payload, request.model) : toMessagesChatResponse(payload, request.model);
255
+ }
256
+ /**
257
+ * Streaming is not implemented for the messages or responses lanes. Saying so
258
+ * is better than silently answering without a stream, which would break a
259
+ * client that is waiting for one.
260
+ */
261
+ async *streamChat(request, context = {}) {
262
+ const { lane, supported } = zenLaneFor(request.model);
263
+ const id = request.model.includes('/') ? request.model.slice(request.model.lastIndexOf('/') + 1) : request.model;
264
+ if (!supported)
265
+ throw unsupportedLane(request.model, id);
266
+ if (lane !== 'chat') {
267
+ throw new ProviderError('NOT_SUPPORTED', `Streaming is not implemented for OpenCode Zen models on the ${lane} lane.`, {
268
+ providerId: this.id,
269
+ publicMessage: `Streaming is not implemented for this OpenCode Zen model. Use a non-streaming request.`,
270
+ });
271
+ }
272
+ yield* this.chatLane.streamChat(request, context);
273
+ }
274
+ async healthCheck(context = {}) {
275
+ try {
276
+ await this.listModels(context);
277
+ return { status: 'healthy', checkedAt: new Date().toISOString() };
278
+ }
279
+ catch (error) {
280
+ return {
281
+ status: 'unavailable',
282
+ checkedAt: new Date().toISOString(),
283
+ message: error instanceof Error ? error.message : 'The OpenCode Zen model list could not be read.',
284
+ };
285
+ }
286
+ }
287
+ /** The messages lane: raw key in `x-api-key`, plus the required version header. */
288
+ apiKeyHeaders(credential) {
289
+ const value = credential?.type === 'none' ? '' : credential?.value ?? '';
290
+ return {
291
+ accept: 'application/json',
292
+ 'content-type': 'application/json',
293
+ 'anthropic-version': '2023-06-01',
294
+ ...(value ? { 'x-api-key': value } : {}),
295
+ };
296
+ }
297
+ authHeaders(credential, extra = {}) {
298
+ const value = credential?.type === 'none' ? '' : credential?.value ?? '';
299
+ return {
300
+ accept: 'application/json',
301
+ 'content-type': 'application/json',
302
+ ...extra,
303
+ ...(value ? { Authorization: `Bearer ${value}` } : {}),
304
+ };
305
+ }
306
+ }
307
+ //# sourceMappingURL=zen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zen.js","sourceRoot":"","sources":["../../src/adapters/zen.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,5 +10,6 @@ export * from './secret-store.js';
10
10
  export * from './streaming.js';
11
11
  export * from './transport.js';
12
12
  export * from './types.js';
13
+ export * from './adapters/zen.js';
13
14
  export * from './url.js';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -10,5 +10,6 @@ export * from './secret-store.js';
10
10
  export * from './streaming.js';
11
11
  export * from './transport.js';
12
12
  export * from './types.js';
13
+ export * from './adapters/zen.js';
13
14
  export * from './url.js';
14
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hilbras/omnihilbras",
3
- "version": "0.6.5",
3
+ "version": "0.7.1",
4
4
  "description": "Typed provider SDK for the OmniHilbras gateway: normalized chat, streaming, model listing, and capability contracts for OpenAI, Anthropic, Gemini, and OpenAI-compatible providers.",
5
5
  "license": "MIT",
6
6
  "author": "Hilbras",