@push.rocks/smartai 2.0.0 → 2.2.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.
@@ -0,0 +1,27 @@
1
+ {
2
+ "@git.zone/cli": {
3
+ "projectType": "npm",
4
+ "module": {
5
+ "githost": "code.foss.global",
6
+ "gitscope": "push.rocks",
7
+ "gitrepo": "smartai",
8
+ "description": "Provider registry and capability utilities for ai-sdk (Vercel AI SDK). Core export returns LanguageModel; subpath exports provide vision, audio, image, document and research capabilities.",
9
+ "npmPackagename": "@push.rocks/smartai",
10
+ "license": "MIT",
11
+ "projectDomain": "push.rocks"
12
+ },
13
+ "release": {
14
+ "registries": [
15
+ "https://verdaccio.lossless.digital",
16
+ "https://registry.npmjs.org"
17
+ ],
18
+ "accessLevel": "public"
19
+ }
20
+ },
21
+ "@git.zone/tsdoc": {
22
+ "legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
23
+ },
24
+ "@ship.zone/szci": {
25
+ "npmGlobalTools": []
26
+ }
27
+ }
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartai',
6
- version: '2.0.0',
6
+ version: '2.2.0',
7
7
  description: 'Provider registry and capability utilities for ai-sdk (Vercel AI SDK). Core export returns LanguageModel; subpath exports provide vision, audio, image, document and research capabilities.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDZMQUE2TDtDQUMzTSxDQUFBIn0=
@@ -1,5 +1,5 @@
1
- export { getModel } from './smartai.classes.smartai.js';
2
- export type { ISmartAiOptions, TProvider, IOllamaModelOptions, LanguageModelV3 } from './smartai.interfaces.js';
1
+ export { getModel, getModelSetup } from './smartai.classes.smartai.js';
2
+ export type { IOpenAiProviderOptions, ISmartAiModelSetup, ISmartAiOptions, TOpenAiReasoningEffort, TOpenAiTextVerbosity, TProvider, TSmartAiProviderOptions, IOllamaModelOptions, LanguageModelV3, } from './smartai.interfaces.js';
3
3
  export { createAnthropicCachingMiddleware } from './smartai.middleware.anthropic.js';
4
4
  export { createOllamaModel } from './smartai.provider.ollama.js';
5
5
  export { generateText, streamText, tool, jsonSchema } from 'ai';
package/dist_ts/index.js CHANGED
@@ -1,6 +1,6 @@
1
- export { getModel } from './smartai.classes.smartai.js';
1
+ export { getModel, getModelSetup } from './smartai.classes.smartai.js';
2
2
  export { createAnthropicCachingMiddleware } from './smartai.middleware.anthropic.js';
3
3
  export { createOllamaModel } from './smartai.provider.ollama.js';
4
4
  // Re-export commonly used ai-sdk functions for consumer convenience
5
5
  export { generateText, streamText, tool, jsonSchema } from 'ai';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFakUsb0VBQW9FO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMifQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBWXZFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpFLG9FQUFvRTtBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDIn0=
@@ -1,7 +1,11 @@
1
- import type { ISmartAiOptions, LanguageModelV3 } from './smartai.interfaces.js';
1
+ import type { ISmartAiModelSetup, ISmartAiOptions, LanguageModelV3 } from './smartai.interfaces.js';
2
2
  /**
3
3
  * Returns a LanguageModelV3 for the given provider and model.
4
4
  * This is the primary API — consumers use the returned model with AI SDK's
5
5
  * generateText(), streamText(), etc.
6
6
  */
7
7
  export declare function getModel(options: ISmartAiOptions): LanguageModelV3;
8
+ /**
9
+ * Returns the model plus request-time providerOptions for AI SDK calls.
10
+ */
11
+ export declare function getModelSetup(options: ISmartAiOptions): ISmartAiModelSetup;
@@ -48,4 +48,11 @@ export function getModel(options) {
48
48
  throw new Error(`Unknown provider: ${options.provider}`);
49
49
  }
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5jbGFzc2VzLnNtYXJ0YWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFpLmNsYXNzZXMuc21hcnRhaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUF3QjtJQUMvQyxRQUFRLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM5RCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztZQUNqRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLEtBQUssS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNqRCxPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsVUFBVSxFQUFFLGdDQUFnQyxFQUFFO2FBQy9DLENBQStCLENBQUM7UUFDbkMsQ0FBQztRQUNELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNkLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDM0QsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2QsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQW9CLENBQUM7UUFDN0MsQ0FBQztRQUNELEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDekQsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2YsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM1RCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFvQixDQUFDO1FBQzdDLENBQUM7UUFDRCxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDWCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQW9CLENBQUM7UUFDN0MsQ0FBQztRQUNELEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztZQUNsQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDL0QsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsS0FBSyxRQUFRO1lBQ1gsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQztZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXNCLE9BQTJCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0FBQ0gsQ0FBQyJ9
51
+ /**
52
+ * Returns the model plus request-time providerOptions for AI SDK calls.
53
+ */
54
+ export function getModelSetup(options) {
55
+ const model = getModel(options);
56
+ return options.providerOptions ? { model, providerOptions: options.providerOptions } : { model };
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5jbGFzc2VzLnNtYXJ0YWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFpLmNsYXNzZXMuc21hcnRhaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUF3QjtJQUMvQyxRQUFRLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM5RCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztZQUNqRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLEtBQUssS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNqRCxPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsVUFBVSxFQUFFLGdDQUFnQyxFQUFFO2FBQy9DLENBQStCLENBQUM7UUFDbkMsQ0FBQztRQUNELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNkLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDM0QsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2QsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQW9CLENBQUM7UUFDN0MsQ0FBQztRQUNELEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDekQsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2YsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM1RCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFvQixDQUFDO1FBQzdDLENBQUM7UUFDRCxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDWCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQW9CLENBQUM7UUFDN0MsQ0FBQztRQUNELEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztZQUNsQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDL0QsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsS0FBSyxRQUFRO1lBQ1gsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQztZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXNCLE9BQTJCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUF3QjtJQUNwRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsT0FBTyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ25HLENBQUMifQ==
@@ -1,9 +1,50 @@
1
- import type { LanguageModelV3 } from '@ai-sdk/provider';
1
+ import type { JSONObject, JSONValue, LanguageModelV3 } from '@ai-sdk/provider';
2
2
  export type TProvider = 'anthropic' | 'openai' | 'google' | 'groq' | 'mistral' | 'xai' | 'perplexity' | 'ollama';
3
+ export type TOpenAiReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
4
+ export type TOpenAiTextVerbosity = 'low' | 'medium' | 'high';
5
+ export interface IOpenAiProviderOptions extends JSONObject {
6
+ conversation?: string | null;
7
+ include?: string[] | null;
8
+ instructions?: string | null;
9
+ logitBias?: Record<string, number>;
10
+ logprobs?: boolean | number | null;
11
+ maxCompletionTokens?: number;
12
+ maxToolCalls?: number | null;
13
+ metadata?: JSONObject | null;
14
+ parallelToolCalls?: boolean | null;
15
+ previousResponseId?: string | null;
16
+ prediction?: JSONObject;
17
+ promptCacheKey?: string | null;
18
+ promptCacheRetention?: 'in_memory' | '24h' | null;
19
+ reasoningEffort?: TOpenAiReasoningEffort | null;
20
+ reasoningSummary?: string | null;
21
+ safetyIdentifier?: string | null;
22
+ serviceTier?: 'auto' | 'flex' | 'priority' | 'default' | null;
23
+ store?: boolean | null;
24
+ strictJsonSchema?: boolean | null;
25
+ systemMessageMode?: 'remove' | 'system' | 'developer';
26
+ textVerbosity?: TOpenAiTextVerbosity | null;
27
+ truncation?: 'auto' | 'disabled' | null;
28
+ user?: string | null;
29
+ forceReasoning?: boolean;
30
+ [key: string]: JSONValue | undefined;
31
+ }
32
+ export type TSmartAiProviderOptions = Record<string, JSONObject> & {
33
+ openai?: IOpenAiProviderOptions;
34
+ };
35
+ export interface ISmartAiModelSetup {
36
+ model: LanguageModelV3;
37
+ providerOptions?: TSmartAiProviderOptions;
38
+ }
3
39
  export interface ISmartAiOptions {
4
40
  provider: TProvider;
5
41
  model: string;
6
42
  apiKey?: string;
43
+ /**
44
+ * Provider-specific AI SDK generation options.
45
+ * Pass this to generateText()/streamText() alongside the model.
46
+ */
47
+ providerOptions?: TSmartAiProviderOptions;
7
48
  /** For Ollama: base URL of the local server. Default: http://localhost:11434 */
8
49
  baseUrl?: string;
9
50
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@push.rocks/smartai",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "private": false,
5
5
  "description": "Provider registry and capability utilities for ai-sdk (Vercel AI SDK). Core export returns LanguageModel; subpath exports provide vision, audio, image, document and research capabilities.",
6
6
  "main": "dist_ts/index.js",
@@ -37,31 +37,34 @@
37
37
  "scripts": {
38
38
  "test": "(tstest test/ --verbose --logfile)",
39
39
  "typecheck": "tsbuild check",
40
- "build": "(tsbuild tsfolders --allowimplicitany)",
40
+ "build": "(tsbuild tsfolders)",
41
41
  "buildDocs": "(tsdoc)"
42
42
  },
43
43
  "devDependencies": {
44
- "@git.zone/tsbuild": "^4.2.6",
45
- "@git.zone/tsbundle": "^2.9.1",
46
- "@git.zone/tsrun": "^2.0.1",
47
- "@git.zone/tstest": "^3.2.0",
48
- "@push.rocks/qenv": "^6.1.3",
49
- "@types/node": "^25.3.3",
50
- "typescript": "^5.9.3"
44
+ "@git.zone/tsbuild": "^4.4.0",
45
+ "@git.zone/tsrun": "^2.0.3",
46
+ "@git.zone/tstest": "^3.6.3",
47
+ "@push.rocks/qenv": "^6.1.4",
48
+ "@types/json-schema": "^7.0.15",
49
+ "@types/lodash.clonedeep": "^4.5.9",
50
+ "@types/node": "^25.6.0",
51
+ "@types/pngjs": "^6.0.5",
52
+ "typescript": "^6.0.3",
53
+ "undici-types": "^8.2.0"
51
54
  },
52
55
  "dependencies": {
53
- "@ai-sdk/anthropic": "^3.0.58",
54
- "@ai-sdk/google": "^3.0.43",
55
- "@ai-sdk/groq": "^3.0.29",
56
- "@ai-sdk/mistral": "^3.0.24",
57
- "@ai-sdk/openai": "^3.0.41",
58
- "@ai-sdk/perplexity": "^3.0.23",
59
- "@ai-sdk/provider": "^3.0.8",
60
- "@ai-sdk/xai": "^3.0.67",
61
- "@anthropic-ai/sdk": "^0.78.0",
62
- "@push.rocks/smartpdf": "^4.1.3",
63
- "ai": "^6.0.116",
64
- "openai": "^6.26.0"
56
+ "@ai-sdk/anthropic": "^3.0.75",
57
+ "@ai-sdk/google": "^3.0.67",
58
+ "@ai-sdk/groq": "^3.0.38",
59
+ "@ai-sdk/mistral": "^3.0.35",
60
+ "@ai-sdk/openai": "^3.0.62",
61
+ "@ai-sdk/perplexity": "^3.0.32",
62
+ "@ai-sdk/provider": "^3.0.10",
63
+ "@ai-sdk/xai": "^3.0.88",
64
+ "@anthropic-ai/sdk": "0.95.0",
65
+ "@push.rocks/smartpdf": "^4.2.2",
66
+ "ai": "^6.0.175",
67
+ "openai": "^6.36.0"
65
68
  },
66
69
  "repository": {
67
70
  "type": "git",
@@ -83,6 +86,8 @@
83
86
  "ts_research/**/*",
84
87
  "dist_*/**/*",
85
88
  "assets/**/*",
89
+ ".smartconfig.json",
90
+ "license",
86
91
  "npmextra.json",
87
92
  "readme.md"
88
93
  ],
@@ -114,8 +119,7 @@
114
119
  "onlyBuiltDependencies": [
115
120
  "esbuild",
116
121
  "puppeteer"
117
- ],
118
- "overrides": {}
122
+ ]
119
123
  },
120
- "packageManager": "pnpm@10.7.0+sha512.6b865ad4b62a1d9842b61d674a393903b871d9244954f652b8842c2b553c72176b278f64c463e52d40fff8aba385c235c8c9ecf5cc7de4fd78b8bb6d49633ab6"
124
+ "packageManager": "pnpm@10.28.2"
121
125
  }
package/readme.hints.md CHANGED
@@ -6,6 +6,7 @@ The package is a **provider registry** built on the Vercel AI SDK (`ai` v6). The
6
6
 
7
7
  ### Core Entry (`ts/`)
8
8
  - `getModel(options)` → returns `LanguageModelV3` for any supported provider
9
+ - `getModelSetup(options)` → returns `{ model, providerOptions }` for request-time AI SDK provider options
9
10
  - Providers: anthropic, openai, google, groq, mistral, xai, perplexity, ollama
10
11
  - Anthropic prompt caching via `wrapLanguageModel` middleware (enabled by default)
11
12
  - Custom Ollama provider implementing `LanguageModelV3` directly (for think, num_ctx support)
@@ -19,11 +20,11 @@ The package is a **provider registry** built on the Vercel AI SDK (`ai` v6). The
19
20
 
20
21
  ## Dependencies
21
22
 
22
- - `ai` ^6.0.116 — Vercel AI SDK core
23
+ - `ai` ^6.0.175 — Vercel AI SDK core
23
24
  - `@ai-sdk/*` — Provider packages (anthropic, openai, google, groq, mistral, xai, perplexity)
24
- - `@ai-sdk/provider` ^3.0.8 — LanguageModelV3 types
25
- - `@anthropic-ai/sdk` ^0.78.0 — Direct SDK for research (web search tool)
26
- - `openai` ^6.25.0 — Direct SDK for audio TTS and image generation/editing
25
+ - `@ai-sdk/provider` ^3.0.10 — LanguageModelV3 types
26
+ - `@anthropic-ai/sdk` ^0.95.0 — Direct SDK for research (web search tool)
27
+ - `openai` ^6.36.0 — Direct SDK for audio TTS and image generation/editing
27
28
  - `@push.rocks/smartpdf` ^4.1.3 — PDF to PNG conversion for document analysis
28
29
 
29
30
  ## Build
@@ -40,6 +41,8 @@ The package is a **provider registry** built on the Vercel AI SDK (`ai` v6). The
40
41
  - Ollama `think` param goes at request body top level, not inside `options`
41
42
  - Qwen models get default temperature 0.55 in the custom Ollama provider
42
43
  - `qenv.getEnvVarOnDemand()` returns a Promise — must be awaited in tests
44
+ - OpenAI reasoning options belong in AI SDK `providerOptions`, not model construction options
45
+ - SmartAI accepts OpenAI model IDs as plain strings, including `gpt-5.5`
43
46
 
44
47
  ## Testing
45
48
 
package/readme.md CHANGED
@@ -70,11 +70,43 @@ const options: ISmartAiOptions = {
70
70
  baseUrl: 'http://localhost:11434',
71
71
  // Ollama-only: model runtime options
72
72
  ollamaOptions: { think: true, num_ctx: 4096 },
73
+ // OpenAI request-time options for generateText()/streamText()
74
+ providerOptions: { openai: { reasoningEffort: 'xhigh' } },
73
75
  };
74
76
 
75
77
  const model = getModel(options);
76
78
  ```
77
79
 
80
+ ### `getModelSetup(options): { model, providerOptions }`
81
+
82
+ Use this when a provider needs request-time AI SDK `providerOptions`, such as GPT-5 reasoning settings for OpenAI. `getModel()` remains available for existing consumers; `getModelSetup()` returns the same model plus provider options to pass into `generateText()` or `streamText()`.
83
+
84
+ ```typescript
85
+ import { getModelSetup, generateText } from '@push.rocks/smartai';
86
+
87
+ const setup = getModelSetup({
88
+ provider: 'openai',
89
+ apiKey: process.env.OPENAI_API_KEY,
90
+ model: 'gpt-5.5',
91
+ providerOptions: {
92
+ openai: {
93
+ reasoningEffort: 'xhigh',
94
+ textVerbosity: 'high',
95
+ },
96
+ },
97
+ });
98
+
99
+ const result = await generateText({
100
+ model: setup.model,
101
+ prompt: 'Draft a careful migration plan.',
102
+ providerOptions: setup.providerOptions,
103
+ });
104
+
105
+ console.log(result.text);
106
+ ```
107
+
108
+ OpenAI `reasoningEffort` supports `'none'`, `'minimal'`, `'low'`, `'medium'`, `'high'`, and `'xhigh'`. Model IDs are accepted as strings, so new IDs like `'gpt-5.5'` can be used before upstream model unions are updated.
109
+
78
110
  ### Re-exported AI SDK Functions
79
111
 
80
112
  SmartAI re-exports the most commonly used functions from `ai` for convenience:
@@ -101,7 +133,7 @@ import type {
101
133
  | Provider | Package | Example Models |
102
134
  |----------|---------|----------------|
103
135
  | **Anthropic** | `@ai-sdk/anthropic` | `claude-sonnet-4-5-20250929`, `claude-opus-4-5-20250929` |
104
- | **OpenAI** | `@ai-sdk/openai` | `gpt-4o`, `gpt-4o-mini`, `o3-mini` |
136
+ | **OpenAI** | `@ai-sdk/openai` | `gpt-5.5`, `gpt-5`, `gpt-4o`, `o3-mini` |
105
137
  | **Google** | `@ai-sdk/google` | `gemini-2.0-flash`, `gemini-2.5-pro` |
106
138
  | **Groq** | `@ai-sdk/groq` | `llama-3.3-70b-versatile`, `mixtral-8x7b-32768` |
107
139
  | **Mistral** | `@ai-sdk/mistral` | `mistral-large-latest`, `mistral-small-latest` |
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartai',
6
- version: '2.0.0',
6
+ version: '2.2.0',
7
7
  description: 'Provider registry and capability utilities for ai-sdk (Vercel AI SDK). Core export returns LanguageModel; subpath exports provide vision, audio, image, document and research capabilities.'
8
8
  }
package/ts/index.ts CHANGED
@@ -1,5 +1,15 @@
1
- export { getModel } from './smartai.classes.smartai.js';
2
- export type { ISmartAiOptions, TProvider, IOllamaModelOptions, LanguageModelV3 } from './smartai.interfaces.js';
1
+ export { getModel, getModelSetup } from './smartai.classes.smartai.js';
2
+ export type {
3
+ IOpenAiProviderOptions,
4
+ ISmartAiModelSetup,
5
+ ISmartAiOptions,
6
+ TOpenAiReasoningEffort,
7
+ TOpenAiTextVerbosity,
8
+ TProvider,
9
+ TSmartAiProviderOptions,
10
+ IOllamaModelOptions,
11
+ LanguageModelV3,
12
+ } from './smartai.interfaces.js';
3
13
  export { createAnthropicCachingMiddleware } from './smartai.middleware.anthropic.js';
4
14
  export { createOllamaModel } from './smartai.provider.ollama.js';
5
15
 
@@ -1,5 +1,5 @@
1
1
  import * as plugins from './plugins.js';
2
- import type { ISmartAiOptions, LanguageModelV3 } from './smartai.interfaces.js';
2
+ import type { ISmartAiModelSetup, ISmartAiOptions, LanguageModelV3 } from './smartai.interfaces.js';
3
3
  import { createOllamaModel } from './smartai.provider.ollama.js';
4
4
  import { createAnthropicCachingMiddleware } from './smartai.middleware.anthropic.js';
5
5
 
@@ -49,3 +49,11 @@ export function getModel(options: ISmartAiOptions): LanguageModelV3 {
49
49
  throw new Error(`Unknown provider: ${(options as ISmartAiOptions).provider}`);
50
50
  }
51
51
  }
52
+
53
+ /**
54
+ * Returns the model plus request-time providerOptions for AI SDK calls.
55
+ */
56
+ export function getModelSetup(options: ISmartAiOptions): ISmartAiModelSetup {
57
+ const model = getModel(options);
58
+ return options.providerOptions ? { model, providerOptions: options.providerOptions } : { model };
59
+ }
@@ -1,4 +1,4 @@
1
- import type { LanguageModelV3 } from '@ai-sdk/provider';
1
+ import type { JSONObject, JSONValue, LanguageModelV3 } from '@ai-sdk/provider';
2
2
 
3
3
  export type TProvider =
4
4
  | 'anthropic'
@@ -10,10 +10,56 @@ export type TProvider =
10
10
  | 'perplexity'
11
11
  | 'ollama';
12
12
 
13
+ export type TOpenAiReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
14
+
15
+ export type TOpenAiTextVerbosity = 'low' | 'medium' | 'high';
16
+
17
+ export interface IOpenAiProviderOptions extends JSONObject {
18
+ conversation?: string | null;
19
+ include?: string[] | null;
20
+ instructions?: string | null;
21
+ logitBias?: Record<string, number>;
22
+ logprobs?: boolean | number | null;
23
+ maxCompletionTokens?: number;
24
+ maxToolCalls?: number | null;
25
+ metadata?: JSONObject | null;
26
+ parallelToolCalls?: boolean | null;
27
+ previousResponseId?: string | null;
28
+ prediction?: JSONObject;
29
+ promptCacheKey?: string | null;
30
+ promptCacheRetention?: 'in_memory' | '24h' | null;
31
+ reasoningEffort?: TOpenAiReasoningEffort | null;
32
+ reasoningSummary?: string | null;
33
+ safetyIdentifier?: string | null;
34
+ serviceTier?: 'auto' | 'flex' | 'priority' | 'default' | null;
35
+ store?: boolean | null;
36
+ strictJsonSchema?: boolean | null;
37
+ systemMessageMode?: 'remove' | 'system' | 'developer';
38
+ textVerbosity?: TOpenAiTextVerbosity | null;
39
+ truncation?: 'auto' | 'disabled' | null;
40
+ user?: string | null;
41
+ forceReasoning?: boolean;
42
+ [key: string]: JSONValue | undefined;
43
+ }
44
+
45
+ export type TSmartAiProviderOptions = Record<string, JSONObject> & {
46
+ openai?: IOpenAiProviderOptions;
47
+ };
48
+
49
+ export interface ISmartAiModelSetup {
50
+ model: LanguageModelV3;
51
+ providerOptions?: TSmartAiProviderOptions;
52
+ }
53
+
13
54
  export interface ISmartAiOptions {
14
55
  provider: TProvider;
15
56
  model: string;
16
57
  apiKey?: string;
58
+ /**
59
+ * Provider-specific AI SDK generation options.
60
+ * Pass this to generateText()/streamText() alongside the model.
61
+ */
62
+ providerOptions?: TSmartAiProviderOptions;
17
63
  /** For Ollama: base URL of the local server. Default: http://localhost:11434 */
18
64
  baseUrl?: string;
19
65
  /**