@jacobbd/relay-ai 0.6.3 → 0.7.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/dist/cli.js CHANGED
@@ -165,7 +165,7 @@ import {
165
165
  validateCustomEndpointUrl,
166
166
  writeSecureLogLine,
167
167
  zenRegistryStub
168
- } from "./chunk-WHEMJ7C3.js";
168
+ } from "./chunk-IYYLLN5T.js";
169
169
  import {
170
170
  filterTemplates,
171
171
  init_provider_templates,
@@ -13763,7 +13763,7 @@ Options:
13763
13763
  --trace Write debug logs under ~/.relay-ai/logs/`);
13764
13764
  return 0;
13765
13765
  }
13766
- const { runUiCommand } = await import("./ui-command-AMF7XGFD.js");
13766
+ const { runUiCommand } = await import("./ui-command-3CWMSARO.js");
13767
13767
  return runUiCommand({ trace: parsed.trace, serverMode: parsed.uiServerMode });
13768
13768
  }
13769
13769
  if (parsed.command === "models") {
@@ -0,0 +1,91 @@
1
+ import { LanguageModel } from 'ai';
2
+
3
+ /** Unconditionally-scoped route id: `${providerId}::${modelId}`. Never bare. */
4
+ type RelayRouteId = `${string}::${string}`;
5
+ type RelayCoreErrorCode = 'INVALID_ROUTE_ID' | 'ROUTE_NOT_FOUND' | 'PROVIDER_DISABLED' | 'CREDENTIAL_UNAVAILABLE' | 'OAUTH_REFRESH_FAILED' | 'UNSUPPORTED_MODEL' | 'UNSUPPORTED_REGISTRY_VERSION' | 'PROVIDER_LOAD_FAILED';
6
+ interface RelayModelDescriptor {
7
+ routeId: RelayRouteId;
8
+ providerId: string;
9
+ providerName: string;
10
+ modelId: string;
11
+ upstreamModelId: string;
12
+ displayName: string;
13
+ authType: 'api' | 'oauth' | 'none';
14
+ favorite: boolean;
15
+ contextWindow?: number;
16
+ pricing?: {
17
+ input: number;
18
+ output: number;
19
+ cacheRead?: number;
20
+ cacheWrite?: number;
21
+ };
22
+ capabilities: {
23
+ /**
24
+ * Always 'unknown' today — `CachedModel` carries no tools/vision metadata to
25
+ * report from, and this API deliberately never guesses from the model name.
26
+ * Will report a real boolean once that metadata exists upstream.
27
+ */
28
+ tools: boolean | 'unknown';
29
+ /** See `tools` — same permanent-placeholder caveat. */
30
+ vision: boolean | 'unknown';
31
+ reasoning: 'none' | 'fixed' | 'adjustable' | 'unknown';
32
+ reasoningLevels?: string[];
33
+ defaultReasoningLevel?: string;
34
+ };
35
+ }
36
+
37
+ /**
38
+ * List the credential-free model catalog: one descriptor per cached model of
39
+ * every enabled provider. Never resolves credentials, refreshes OAuth, hits a
40
+ * provider API, or writes to disk.
41
+ */
42
+ declare function listRelayModels(registryPath?: string): RelayModelDescriptor[];
43
+
44
+ /**
45
+ * Build a ready Vercel AI SDK `LanguageModel` for a `provider::model` route id.
46
+ *
47
+ * Re-reads the registry, credentials, and OAuth state on every call — nothing is
48
+ * cached across calls, so a provider disabled or re-authenticated after the last
49
+ * call takes effect without restarting the consumer process. Credentials are
50
+ * resolved (and OAuth tokens refreshed) by Relay's existing machinery; the
51
+ * credential and the intermediate spec never leave this function.
52
+ */
53
+ declare function createRelayModel(routeId: RelayRouteId): Promise<LanguageModel>;
54
+
55
+ /**
56
+ * Build a route id from a provider id and a model id. The provider id must pass
57
+ * the registry's `PROVIDER_ID_PATTERN`; the model id may contain `/` and `:`.
58
+ */
59
+ declare function toRelayRouteId(providerId: string, modelId: string): RelayRouteId;
60
+ /**
61
+ * Parse a route id back into its parts. Splits on the FIRST `::` only, so model
62
+ * ids containing `/` or `:` (e.g. `openrouter::vendor/model:free`) survive.
63
+ * A bare model id (no `::`) is rejected.
64
+ */
65
+ declare function parseRelayRouteId(routeId: string): {
66
+ providerId: string;
67
+ modelId: string;
68
+ };
69
+
70
+ interface RelayCoreErrorOptions {
71
+ retryable?: boolean;
72
+ providerId?: string;
73
+ routeId?: RelayRouteId;
74
+ cause?: unknown;
75
+ }
76
+ /**
77
+ * Error thrown by the embedded Core API. Carries only safe structured metadata —
78
+ * never credential material. `cause` is retained for internal debugging but is
79
+ * omitted from JSON serialization.
80
+ */
81
+ declare class RelayCoreError extends Error {
82
+ readonly code: RelayCoreErrorCode;
83
+ readonly retryable: boolean;
84
+ readonly providerId?: string;
85
+ readonly routeId?: RelayRouteId;
86
+ constructor(code: RelayCoreErrorCode, message: string, options?: RelayCoreErrorOptions);
87
+ toJSON(): Record<string, unknown>;
88
+ }
89
+ declare function isRelayCoreError(err: unknown): err is RelayCoreError;
90
+
91
+ export { RelayCoreError, type RelayCoreErrorCode, type RelayModelDescriptor, type RelayRouteId, createRelayModel, isRelayCoreError, listRelayModels, parseRelayRouteId, toRelayRouteId };