@independo/inderun-web 0.3.3 → 0.4.0-rc.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.
Files changed (47) hide show
  1. package/README.md +16 -7
  2. package/dist/core/engine.d.ts +26 -2
  3. package/dist/core/engine.d.ts.map +1 -1
  4. package/dist/core/engine.js +78 -34
  5. package/dist/core/errors.d.ts +13 -1
  6. package/dist/core/errors.d.ts.map +1 -1
  7. package/dist/core/errors.js +32 -0
  8. package/dist/core/model-profiles.d.ts +34 -0
  9. package/dist/core/model-profiles.d.ts.map +1 -0
  10. package/dist/core/model-profiles.js +49 -0
  11. package/dist/core/provenance.d.ts +32 -0
  12. package/dist/core/provenance.d.ts.map +1 -0
  13. package/dist/core/provenance.js +71 -0
  14. package/dist/core/provider.d.ts +13 -0
  15. package/dist/core/provider.d.ts.map +1 -1
  16. package/dist/core/route-planner.d.ts +1 -1
  17. package/dist/core/route-planner.d.ts.map +1 -1
  18. package/dist/core/route-planner.js +2 -1
  19. package/dist/core/router.d.ts +4 -3
  20. package/dist/core/router.d.ts.map +1 -1
  21. package/dist/core/router.js +4 -3
  22. package/dist/facade/text.d.ts +123 -0
  23. package/dist/facade/text.d.ts.map +1 -0
  24. package/dist/facade/text.js +234 -0
  25. package/dist/index.d.ts +12 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +10 -0
  28. package/dist/providers/onnx/provider.d.ts.map +1 -1
  29. package/dist/providers/onnx/provider.js +1 -0
  30. package/dist/providers/openai/provider.d.ts.map +1 -1
  31. package/dist/providers/openai/provider.js +18 -0
  32. package/dist/web-sdk.d.ts +19 -2
  33. package/dist/web-sdk.d.ts.map +1 -1
  34. package/dist/web-sdk.js +10 -2
  35. package/package.json +3 -3
  36. package/src/core/engine.ts +114 -35
  37. package/src/core/errors.ts +35 -1
  38. package/src/core/model-profiles.ts +70 -0
  39. package/src/core/provenance.ts +90 -0
  40. package/src/core/provider.ts +13 -0
  41. package/src/core/route-planner.ts +3 -1
  42. package/src/core/router.ts +12 -3
  43. package/src/facade/text.ts +349 -0
  44. package/src/index.ts +28 -2
  45. package/src/providers/onnx/provider.ts +1 -0
  46. package/src/providers/openai/provider.ts +21 -0
  47. package/src/web-sdk.ts +31 -5
package/src/web-sdk.ts CHANGED
@@ -3,6 +3,7 @@ import {
3
3
  type CreateBrowserHostServicesOptions
4
4
  } from "./core/browser-host.js";
5
5
  import { IndeRun } from "./core/engine.js";
6
+ import type { ModelProfiles } from "./core/model-profiles.js";
6
7
  import { OnnxRuntimeWebProvider, type OnnxProviderOptions } from "./providers/onnx/provider.js";
7
8
  import {
8
9
  DEFAULT_OPENAI_RESPONSES_ENDPOINT,
@@ -20,9 +21,11 @@ import {
20
21
  */
21
22
  export interface CreateIndeRunWebOptions {
22
23
  /**
23
- * OpenAI Responses provider configuration registered by the factory.
24
+ * OpenAI Responses provider configuration registered by the factory. One target is
25
+ * registered per entry in `models`, with id `<id>:<model>` (`id` defaults to
26
+ * `"openai"`), so model profiles can list each model separately.
24
27
  */
25
- openAI?: OpenAIProviderOptions;
28
+ openAI?: OpenAIFactoryOptions;
26
29
  /**
27
30
  * Web ONNX Runtime provider configuration registered by the factory, for developer-supplied
28
31
  * local models. Registering it is what makes `constraints.privacy = "local_required"` routable.
@@ -46,8 +49,23 @@ export interface CreateIndeRunWebOptions {
46
49
  * non-production environments.
47
50
  */
48
51
  allowDirectOpenAIEndpoint?: boolean;
52
+ /**
53
+ * Named model profiles requests can route within. Each maps a profile name to an
54
+ * ordered list of target ids, for example `{ smart: ["openai:gpt-5.2"] }`.
55
+ */
56
+ modelProfiles?: ModelProfiles;
49
57
  }
50
58
 
59
+ /**
60
+ * OpenAI options for {@link createIndeRunWeb}: the provider options with `models` in
61
+ * place of the single `model`. The first model is not special; every model becomes
62
+ * its own target.
63
+ */
64
+ export type OpenAIFactoryOptions = Omit<OpenAIProviderOptions, "model"> & {
65
+ /** OpenAI model ids to register, one target each. */
66
+ models: readonly string[];
67
+ };
68
+
51
69
  /**
52
70
  * Creates a Web SDK instance with the configured providers registered.
53
71
  *
@@ -72,7 +90,13 @@ export function createIndeRunWeb(options: CreateIndeRunWebOptions): IndeRun {
72
90
 
73
91
  if (options.openAI) {
74
92
  assertSafeOpenAIEndpoint(options.openAI, options.allowDirectOpenAIEndpoint);
75
- registry.register(new OpenAIResponsesProvider(options.openAI));
93
+ const { models, id = "openai", ...shared } = options.openAI;
94
+ if (models.length === 0) {
95
+ throw new Error("createIndeRunWeb requires openAI.models to list at least one model.");
96
+ }
97
+ for (const model of models) {
98
+ registry.register(new OpenAIResponsesProvider({ ...shared, id: `${id}:${model}`, model }));
99
+ }
76
100
  }
77
101
 
78
102
  if (options.onnx) {
@@ -83,11 +107,13 @@ export function createIndeRunWeb(options: CreateIndeRunWebOptions): IndeRun {
83
107
  registry.register(new SystemModelWebProvider(options.systemModel));
84
108
  }
85
109
 
86
- return new IndeRun(registry, createBrowserHostServices(options.hostServices));
110
+ return new IndeRun(registry, createBrowserHostServices(options.hostServices), {
111
+ ...(options.modelProfiles ? { modelProfiles: options.modelProfiles } : {})
112
+ });
87
113
  }
88
114
 
89
115
  function assertSafeOpenAIEndpoint(
90
- openAI: OpenAIProviderOptions,
116
+ openAI: OpenAIFactoryOptions,
91
117
  allowDirectOpenAIEndpoint?: boolean
92
118
  ): void {
93
119
  const endpointUrl = openAI.endpointUrl ?? DEFAULT_OPENAI_RESPONSES_ENDPOINT;