@framers/agentos-extensions-registry 0.1.0 → 0.1.2
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/README.md +48 -9
- package/dist/channel-registry.d.ts +25 -0
- package/dist/channel-registry.d.ts.map +1 -0
- package/dist/channel-registry.js +375 -0
- package/dist/channel-registry.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.js} +4 -14
- package/dist/index.js.map +1 -0
- package/dist/manifest-builder.d.ts +48 -0
- package/dist/manifest-builder.d.ts.map +1 -0
- package/dist/manifest-builder.js +171 -0
- package/dist/manifest-builder.js.map +1 -0
- package/dist/provider-registry.d.ts +66 -0
- package/dist/provider-registry.d.ts.map +1 -0
- package/dist/provider-registry.js +386 -0
- package/dist/provider-registry.js.map +1 -0
- package/dist/tool-registry.d.ts +24 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +329 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/types.d.ts +106 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +35 -11
- package/src/channel-registry.ts +0 -197
- package/src/manifest-builder.ts +0 -263
- package/src/types.ts +0 -102
- package/test/manifest-builder.spec.ts +0 -96
- package/tsconfig.json +0 -19
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Manifest builder — creates pre-configured ExtensionManifest
|
|
3
|
+
* instances from the curated extension catalog.
|
|
4
|
+
*
|
|
5
|
+
* This is the primary API of the registry package. Instead of manually wiring
|
|
6
|
+
* each extension pack in the backend, consumers call `createCuratedManifest()`
|
|
7
|
+
* with their desired configuration.
|
|
8
|
+
*
|
|
9
|
+
* @module @framers/agentos-extensions-registry/manifest-builder
|
|
10
|
+
*/
|
|
11
|
+
import { CHANNEL_CATALOG, getChannelEntries } from './channel-registry.js';
|
|
12
|
+
import { PROVIDER_CATALOG } from './provider-registry.js';
|
|
13
|
+
import { TOOL_CATALOG } from './tool-registry.js';
|
|
14
|
+
function isPackageInstalled(packageName) {
|
|
15
|
+
if (!packageName)
|
|
16
|
+
return false;
|
|
17
|
+
// Use import.meta.resolve (sync in Node 20.6+) for ESM-native resolution.
|
|
18
|
+
// This correctly handles packages that only export "import" conditions.
|
|
19
|
+
try {
|
|
20
|
+
import.meta.resolve(packageName);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Not resolvable from this module's context (e.g. pnpm strict isolation).
|
|
25
|
+
// Defer to dynamic import at load time — tryImport() will catch actual failures.
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Attempt to dynamically import a package. Returns the module if available,
|
|
31
|
+
* or `null` if the package is not installed.
|
|
32
|
+
*/
|
|
33
|
+
async function tryImport(packageName) {
|
|
34
|
+
try {
|
|
35
|
+
return await import(packageName);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Check which extensions from the catalog are actually installed
|
|
43
|
+
* and mark them as available.
|
|
44
|
+
*/
|
|
45
|
+
export async function getAvailableExtensions() {
|
|
46
|
+
const allEntries = [...TOOL_CATALOG, ...CHANNEL_CATALOG, ...PROVIDER_CATALOG];
|
|
47
|
+
// Prefer pure resolution checks. Dynamic-importing every optional dependency
|
|
48
|
+
// can be very slow in bundler/test runtimes that shim `import.meta`.
|
|
49
|
+
return allEntries.map((entry) => ({ ...entry, available: isPackageInstalled(entry.packageName) }));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get available channel extensions.
|
|
53
|
+
*/
|
|
54
|
+
export async function getAvailableChannels() {
|
|
55
|
+
return CHANNEL_CATALOG.map((entry) => ({ ...entry, available: isPackageInstalled(entry.packageName) }));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Creates a pre-configured `ExtensionManifest` with all available curated
|
|
59
|
+
* extensions. Missing optional dependencies are silently skipped.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* import { createCuratedManifest } from '@framers/agentos-extensions-registry';
|
|
64
|
+
*
|
|
65
|
+
* // Enable all available extensions
|
|
66
|
+
* const manifest = await createCuratedManifest();
|
|
67
|
+
*
|
|
68
|
+
* // Selective: only Telegram + Discord channels, all tools
|
|
69
|
+
* const manifest = await createCuratedManifest({
|
|
70
|
+
* channels: ['telegram', 'discord'],
|
|
71
|
+
* tools: 'all',
|
|
72
|
+
* secrets: {
|
|
73
|
+
* 'telegram.botToken': process.env.TELEGRAM_BOT_TOKEN!,
|
|
74
|
+
* 'discord.botToken': process.env.DISCORD_BOT_TOKEN!,
|
|
75
|
+
* },
|
|
76
|
+
* });
|
|
77
|
+
*
|
|
78
|
+
* // Pass to AgentOS config
|
|
79
|
+
* const agentOS = new AgentOS({ extensionManifest: manifest });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export async function createCuratedManifest(options) {
|
|
83
|
+
const basePriority = options?.basePriority ?? 0;
|
|
84
|
+
const secrets = options?.secrets;
|
|
85
|
+
const logger = options?.logger ?? console;
|
|
86
|
+
const packs = [];
|
|
87
|
+
// Helper to load and push a catalog entry
|
|
88
|
+
const loadEntry = async (entry) => {
|
|
89
|
+
const override = options?.overrides?.[entry.name];
|
|
90
|
+
if (override?.enabled === false)
|
|
91
|
+
return;
|
|
92
|
+
const mod = await tryImport(entry.packageName);
|
|
93
|
+
if (!mod)
|
|
94
|
+
return;
|
|
95
|
+
const factory = mod.createExtensionPack ?? mod.default?.createExtensionPack ?? mod.default;
|
|
96
|
+
if (typeof factory !== 'function')
|
|
97
|
+
return;
|
|
98
|
+
const effectivePriority = override?.priority ?? basePriority + entry.defaultPriority;
|
|
99
|
+
const effectiveOptions = {
|
|
100
|
+
...override?.options,
|
|
101
|
+
secrets,
|
|
102
|
+
// Most curated packs accept `options.priority` and map it onto descriptor priorities.
|
|
103
|
+
priority: override?.options?.priority ?? effectivePriority,
|
|
104
|
+
};
|
|
105
|
+
packs.push({
|
|
106
|
+
factory: () => factory({
|
|
107
|
+
options: effectiveOptions,
|
|
108
|
+
getSecret: (secretId) => secrets?.[secretId],
|
|
109
|
+
logger,
|
|
110
|
+
}),
|
|
111
|
+
// Priority applied to descriptors unless they override it individually.
|
|
112
|
+
priority: effectivePriority,
|
|
113
|
+
enabled: true,
|
|
114
|
+
identifier: `registry:${entry.name}`,
|
|
115
|
+
// Populate manifest entry options so AgentOS can evaluate `requiredSecrets` gating.
|
|
116
|
+
options: effectiveOptions,
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
// Split TOOL_CATALOG by category
|
|
120
|
+
const toolOnlyEntries = TOOL_CATALOG.filter((t) => t.category === 'tool' || t.category === 'integration');
|
|
121
|
+
const voiceEntries = TOOL_CATALOG.filter((t) => t.category === 'voice');
|
|
122
|
+
const productivityEntries = TOOL_CATALOG.filter((t) => t.category === 'productivity');
|
|
123
|
+
// ── Tool Extensions ──
|
|
124
|
+
const toolFilter = options?.tools ?? 'all';
|
|
125
|
+
const filteredTools = toolFilter === 'none'
|
|
126
|
+
? []
|
|
127
|
+
: toolFilter === 'all'
|
|
128
|
+
? toolOnlyEntries
|
|
129
|
+
: toolOnlyEntries.filter((t) => toolFilter.includes(t.name));
|
|
130
|
+
for (const entry of filteredTools) {
|
|
131
|
+
await loadEntry(entry);
|
|
132
|
+
}
|
|
133
|
+
// ── Voice Provider Extensions ──
|
|
134
|
+
const voiceFilter = options?.voice ?? 'all';
|
|
135
|
+
const filteredVoice = voiceFilter === 'none'
|
|
136
|
+
? []
|
|
137
|
+
: voiceFilter === 'all'
|
|
138
|
+
? voiceEntries
|
|
139
|
+
: voiceEntries.filter((t) => voiceFilter.includes(t.name));
|
|
140
|
+
for (const entry of filteredVoice) {
|
|
141
|
+
await loadEntry(entry);
|
|
142
|
+
}
|
|
143
|
+
// ── Productivity Extensions ──
|
|
144
|
+
const prodFilter = options?.productivity ?? 'all';
|
|
145
|
+
const filteredProd = prodFilter === 'none'
|
|
146
|
+
? []
|
|
147
|
+
: prodFilter === 'all'
|
|
148
|
+
? productivityEntries
|
|
149
|
+
: productivityEntries.filter((t) => prodFilter.includes(t.name));
|
|
150
|
+
for (const entry of filteredProd) {
|
|
151
|
+
await loadEntry(entry);
|
|
152
|
+
}
|
|
153
|
+
// ── Channel Extensions ──
|
|
154
|
+
const channelEntries = getChannelEntries(options?.channels);
|
|
155
|
+
for (const entry of channelEntries) {
|
|
156
|
+
await loadEntry(entry);
|
|
157
|
+
}
|
|
158
|
+
// ── Build Overrides ──
|
|
159
|
+
const manifestOverrides = options?.overrides
|
|
160
|
+
? {
|
|
161
|
+
tools: Object.fromEntries(Object.entries(options.overrides)
|
|
162
|
+
.filter(([, v]) => v.enabled !== undefined || v.priority !== undefined)
|
|
163
|
+
.map(([k, v]) => [k, { enabled: v.enabled, priority: v.priority }])),
|
|
164
|
+
}
|
|
165
|
+
: undefined;
|
|
166
|
+
return {
|
|
167
|
+
packs,
|
|
168
|
+
overrides: manifestOverrides,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=manifest-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-builder.js","sourceRoot":"","sources":["../src/manifest-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Provider registry — metadata catalog for all supported
|
|
3
|
+
* LLM / model provider extensions.
|
|
4
|
+
*
|
|
5
|
+
* Each entry defines the provider's metadata, default models, API base URL,
|
|
6
|
+
* and secret requirements. This catalog enables OpenClaw feature parity by
|
|
7
|
+
* enumerating every supported model provider in one place.
|
|
8
|
+
*
|
|
9
|
+
* @module @framers/agentos-extensions-registry/provider-registry
|
|
10
|
+
*/
|
|
11
|
+
import type { ExtensionInfo } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Registry entry for a model provider extension.
|
|
14
|
+
* Extends the base ExtensionInfo with provider-specific fields.
|
|
15
|
+
*/
|
|
16
|
+
export interface ProviderRegistryEntry extends ExtensionInfo {
|
|
17
|
+
/** Unique provider identifier (e.g. 'openai', 'anthropic'). */
|
|
18
|
+
providerId: string;
|
|
19
|
+
/** Default model ID used for general-purpose completions. */
|
|
20
|
+
defaultModel: string;
|
|
21
|
+
/** Cheapest / fastest model for lightweight tasks like sentiment analysis. */
|
|
22
|
+
smallModel: string;
|
|
23
|
+
/** Optional default API base URL. Omitted for SDK-based providers or user-specific endpoints. */
|
|
24
|
+
apiBaseUrl?: string;
|
|
25
|
+
/** Whether this provider supports OAuth-based authentication (e.g. consumer subscription tokens). */
|
|
26
|
+
supportsOAuth?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Full catalog of model provider extensions.
|
|
30
|
+
* Ordered to match OpenClaw's models-config.providers layout.
|
|
31
|
+
*/
|
|
32
|
+
export declare const PROVIDER_CATALOG: ProviderRegistryEntry[];
|
|
33
|
+
/**
|
|
34
|
+
* Get provider entries filtered by provider IDs.
|
|
35
|
+
*
|
|
36
|
+
* @param providerIds - Array of provider IDs to include, `'all'` for every
|
|
37
|
+
* provider, or `'none'` for an empty list. Defaults to `'all'`.
|
|
38
|
+
* @returns Matching provider registry entries.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* // Get all providers
|
|
43
|
+
* const all = getProviderEntries();
|
|
44
|
+
*
|
|
45
|
+
* // Get specific providers
|
|
46
|
+
* const subset = getProviderEntries(['openai', 'anthropic', 'ollama']);
|
|
47
|
+
*
|
|
48
|
+
* // Disable providers
|
|
49
|
+
* const none = getProviderEntries('none');
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function getProviderEntries(providerIds?: string[] | 'all' | 'none'): ProviderRegistryEntry[];
|
|
53
|
+
/**
|
|
54
|
+
* Get a single provider entry by its provider ID.
|
|
55
|
+
*
|
|
56
|
+
* @param providerId - The provider identifier (e.g. 'openai', 'anthropic').
|
|
57
|
+
* @returns The matching entry, or `undefined` if not found.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const openai = getProviderEntry('openai');
|
|
62
|
+
* console.log(openai?.defaultModel); // 'gpt-4o'
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare function getProviderEntry(providerId: string): ProviderRegistryEntry | undefined;
|
|
66
|
+
//# sourceMappingURL=provider-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../src/provider-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qGAAqG;IACrG,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,qBAAqB,EAmVnD,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,MAAM,GACtC,qBAAqB,EAAE,CAIzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAEtF"}
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Provider registry — metadata catalog for all supported
|
|
3
|
+
* LLM / model provider extensions.
|
|
4
|
+
*
|
|
5
|
+
* Each entry defines the provider's metadata, default models, API base URL,
|
|
6
|
+
* and secret requirements. This catalog enables OpenClaw feature parity by
|
|
7
|
+
* enumerating every supported model provider in one place.
|
|
8
|
+
*
|
|
9
|
+
* @module @framers/agentos-extensions-registry/provider-registry
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Full catalog of model provider extensions.
|
|
13
|
+
* Ordered to match OpenClaw's models-config.providers layout.
|
|
14
|
+
*/
|
|
15
|
+
export const PROVIDER_CATALOG = [
|
|
16
|
+
// ── Major Cloud Providers ──
|
|
17
|
+
{
|
|
18
|
+
packageName: '@framers/agentos-ext-provider-openai',
|
|
19
|
+
name: 'provider-openai',
|
|
20
|
+
category: 'integration',
|
|
21
|
+
providerId: 'openai',
|
|
22
|
+
displayName: 'OpenAI',
|
|
23
|
+
description: 'OpenAI API — GPT-4o, GPT-4.1, o-series reasoning models.',
|
|
24
|
+
requiredSecrets: ['openai.apiKey'],
|
|
25
|
+
defaultPriority: 100,
|
|
26
|
+
available: false,
|
|
27
|
+
defaultModel: 'gpt-4o',
|
|
28
|
+
smallModel: 'gpt-4o-mini',
|
|
29
|
+
apiBaseUrl: 'https://api.openai.com/v1',
|
|
30
|
+
supportsOAuth: true,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
packageName: '@framers/agentos-ext-provider-anthropic',
|
|
34
|
+
name: 'provider-anthropic',
|
|
35
|
+
category: 'integration',
|
|
36
|
+
providerId: 'anthropic',
|
|
37
|
+
displayName: 'Anthropic',
|
|
38
|
+
description: 'Anthropic API — Claude Opus 4.6, Sonnet 4.6, Haiku 4.5, and legacy models.',
|
|
39
|
+
requiredSecrets: ['anthropic.apiKey'],
|
|
40
|
+
defaultPriority: 100,
|
|
41
|
+
available: false,
|
|
42
|
+
defaultModel: 'claude-sonnet-4-6-20250514',
|
|
43
|
+
smallModel: 'claude-haiku-4-5-20251001',
|
|
44
|
+
apiBaseUrl: 'https://api.anthropic.com',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
packageName: '@framers/agentos-ext-provider-ollama',
|
|
48
|
+
name: 'provider-ollama',
|
|
49
|
+
category: 'integration',
|
|
50
|
+
providerId: 'ollama',
|
|
51
|
+
displayName: 'Ollama',
|
|
52
|
+
description: 'Ollama local inference — run open-weight models (Llama, Mistral, etc.) on your own hardware.',
|
|
53
|
+
requiredSecrets: [],
|
|
54
|
+
defaultPriority: 90,
|
|
55
|
+
available: false,
|
|
56
|
+
defaultModel: 'llama3',
|
|
57
|
+
smallModel: 'llama3.2:3b',
|
|
58
|
+
apiBaseUrl: 'http://127.0.0.1:11434/v1',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
packageName: '@framers/agentos-ext-provider-bedrock',
|
|
62
|
+
name: 'provider-bedrock',
|
|
63
|
+
category: 'integration',
|
|
64
|
+
providerId: 'bedrock',
|
|
65
|
+
displayName: 'AWS Bedrock',
|
|
66
|
+
description: 'AWS Bedrock — managed access to Anthropic Claude, Meta Llama, and other foundation models via AWS SDK.',
|
|
67
|
+
requiredSecrets: ['aws.accessKeyId', 'aws.secretAccessKey', 'aws.region'],
|
|
68
|
+
defaultPriority: 80,
|
|
69
|
+
available: false,
|
|
70
|
+
defaultModel: 'anthropic.claude-sonnet',
|
|
71
|
+
smallModel: 'anthropic.claude-haiku',
|
|
72
|
+
// No apiBaseUrl — Bedrock uses the AWS SDK with regional endpoints.
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
packageName: '@framers/agentos-ext-provider-gemini',
|
|
76
|
+
name: 'provider-gemini',
|
|
77
|
+
category: 'integration',
|
|
78
|
+
providerId: 'gemini',
|
|
79
|
+
displayName: 'Google Gemini',
|
|
80
|
+
description: 'Google Gemini API — Gemini 2.0 Flash, Pro, and multimodal models.',
|
|
81
|
+
requiredSecrets: ['gemini.apiKey'],
|
|
82
|
+
defaultPriority: 90,
|
|
83
|
+
available: false,
|
|
84
|
+
defaultModel: 'gemini-2.0-flash',
|
|
85
|
+
smallModel: 'gemini-2.0-flash-lite',
|
|
86
|
+
apiBaseUrl: 'https://generativelanguage.googleapis.com',
|
|
87
|
+
},
|
|
88
|
+
// ── Platform-Integrated Providers ──
|
|
89
|
+
{
|
|
90
|
+
packageName: '@framers/agentos-ext-provider-github-copilot',
|
|
91
|
+
name: 'provider-github-copilot',
|
|
92
|
+
category: 'integration',
|
|
93
|
+
providerId: 'github-copilot',
|
|
94
|
+
displayName: 'GitHub Copilot',
|
|
95
|
+
description: 'GitHub Copilot Chat API — uses your existing Copilot subscription for model access.',
|
|
96
|
+
requiredSecrets: ['github.copilotToken'],
|
|
97
|
+
defaultPriority: 70,
|
|
98
|
+
available: false,
|
|
99
|
+
defaultModel: 'gpt-4o',
|
|
100
|
+
smallModel: 'gpt-4o-mini',
|
|
101
|
+
apiBaseUrl: 'https://api.githubcopilot.com',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
packageName: '@framers/agentos-ext-provider-cloudflare-ai',
|
|
105
|
+
name: 'provider-cloudflare-ai',
|
|
106
|
+
category: 'integration',
|
|
107
|
+
providerId: 'cloudflare-ai',
|
|
108
|
+
displayName: 'Cloudflare AI Gateway',
|
|
109
|
+
description: 'Cloudflare AI Gateway — proxy and observe requests to any upstream provider with caching and rate limiting.',
|
|
110
|
+
requiredSecrets: ['cloudflare.accountId', 'cloudflare.apiToken'],
|
|
111
|
+
defaultPriority: 60,
|
|
112
|
+
available: false,
|
|
113
|
+
defaultModel: '(configurable)',
|
|
114
|
+
smallModel: '(configurable)',
|
|
115
|
+
// No apiBaseUrl — user-specific Cloudflare gateway URL.
|
|
116
|
+
},
|
|
117
|
+
// ── Asian Market Providers ──
|
|
118
|
+
{
|
|
119
|
+
packageName: '@framers/agentos-ext-provider-minimax',
|
|
120
|
+
name: 'provider-minimax',
|
|
121
|
+
category: 'integration',
|
|
122
|
+
providerId: 'minimax',
|
|
123
|
+
displayName: 'Minimax',
|
|
124
|
+
description: 'Minimax API — MiniMax-M2.1 and VL-01 vision-language models.',
|
|
125
|
+
requiredSecrets: ['minimax.apiKey'],
|
|
126
|
+
defaultPriority: 60,
|
|
127
|
+
available: false,
|
|
128
|
+
defaultModel: 'MiniMax-M2.1',
|
|
129
|
+
smallModel: 'MiniMax-VL-01',
|
|
130
|
+
apiBaseUrl: 'https://api.minimax.chat/v1',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
packageName: '@framers/agentos-ext-provider-qwen',
|
|
134
|
+
name: 'provider-qwen',
|
|
135
|
+
category: 'integration',
|
|
136
|
+
providerId: 'qwen',
|
|
137
|
+
displayName: 'Qwen',
|
|
138
|
+
description: 'Alibaba Qwen API — Qwen-Max, Qwen-Turbo, and Qwen-VL models.',
|
|
139
|
+
requiredSecrets: ['qwen.apiKey'],
|
|
140
|
+
defaultPriority: 60,
|
|
141
|
+
available: false,
|
|
142
|
+
defaultModel: 'qwen-max',
|
|
143
|
+
smallModel: 'qwen-turbo',
|
|
144
|
+
apiBaseUrl: 'https://portal.qwen.ai/v1',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
packageName: '@framers/agentos-ext-provider-moonshot',
|
|
148
|
+
name: 'provider-moonshot',
|
|
149
|
+
category: 'integration',
|
|
150
|
+
providerId: 'moonshot',
|
|
151
|
+
displayName: 'Moonshot',
|
|
152
|
+
description: 'Moonshot AI (Kimi) API — long-context models with strong multilingual support.',
|
|
153
|
+
requiredSecrets: ['moonshot.apiKey'],
|
|
154
|
+
defaultPriority: 60,
|
|
155
|
+
available: false,
|
|
156
|
+
defaultModel: 'kimi-k2.5',
|
|
157
|
+
smallModel: 'kimi-k2-instant',
|
|
158
|
+
apiBaseUrl: 'https://api.moonshot.ai/v1',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
packageName: '@framers/agentos-ext-provider-xiaomi-mimo',
|
|
162
|
+
name: 'provider-xiaomi-mimo',
|
|
163
|
+
category: 'integration',
|
|
164
|
+
providerId: 'xiaomi-mimo',
|
|
165
|
+
displayName: 'Xiaomi Mimo',
|
|
166
|
+
description: 'Xiaomi Mimo API — Mimo-v2-Flash model with Anthropic-compatible endpoint.',
|
|
167
|
+
requiredSecrets: ['xiaomi.apiKey'],
|
|
168
|
+
defaultPriority: 50,
|
|
169
|
+
available: false,
|
|
170
|
+
defaultModel: 'mimo-v2-flash',
|
|
171
|
+
smallModel: 'mimo-v2-flash',
|
|
172
|
+
apiBaseUrl: 'https://api.xiaomimimo.com/anthropic',
|
|
173
|
+
},
|
|
174
|
+
// ── New Providers (OpenClaw Upstream Parity) ──
|
|
175
|
+
{
|
|
176
|
+
packageName: '@framers/agentos-ext-provider-nvidia',
|
|
177
|
+
name: 'provider-nvidia',
|
|
178
|
+
category: 'integration',
|
|
179
|
+
providerId: 'nvidia',
|
|
180
|
+
displayName: 'NVIDIA',
|
|
181
|
+
description: 'NVIDIA API — Nemotron, Llama, and other models via NVIDIA AI Foundation Endpoints.',
|
|
182
|
+
requiredSecrets: ['nvidia.apiKey'],
|
|
183
|
+
defaultPriority: 70,
|
|
184
|
+
available: false,
|
|
185
|
+
defaultModel: 'nvidia/llama-3.1-nemotron-70b-instruct',
|
|
186
|
+
smallModel: 'nvidia/llama-3.1-8b-instruct',
|
|
187
|
+
apiBaseUrl: 'https://integrate.api.nvidia.com/v1',
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
packageName: '@framers/agentos-ext-provider-glm',
|
|
191
|
+
name: 'provider-glm',
|
|
192
|
+
category: 'integration',
|
|
193
|
+
providerId: 'glm',
|
|
194
|
+
displayName: 'GLM / Z.AI',
|
|
195
|
+
description: 'Zhipu AI GLM API — GLM-5, GLM-4 series models with strong Chinese language support.',
|
|
196
|
+
requiredSecrets: ['glm.apiKey'],
|
|
197
|
+
defaultPriority: 60,
|
|
198
|
+
available: false,
|
|
199
|
+
defaultModel: 'glm-5',
|
|
200
|
+
smallModel: 'glm-4-flash',
|
|
201
|
+
apiBaseUrl: 'https://open.bigmodel.cn/api/paas/v4',
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
packageName: '@framers/agentos-ext-provider-xai',
|
|
205
|
+
name: 'provider-xai',
|
|
206
|
+
category: 'integration',
|
|
207
|
+
providerId: 'xai',
|
|
208
|
+
displayName: 'xAI',
|
|
209
|
+
description: 'xAI Grok API — Grok-3 and Grok-3-mini models.',
|
|
210
|
+
requiredSecrets: ['xai.apiKey'],
|
|
211
|
+
defaultPriority: 70,
|
|
212
|
+
available: false,
|
|
213
|
+
defaultModel: 'grok-3',
|
|
214
|
+
smallModel: 'grok-3-mini',
|
|
215
|
+
apiBaseUrl: 'https://api.x.ai/v1',
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
packageName: '@framers/agentos-ext-provider-deepseek',
|
|
219
|
+
name: 'provider-deepseek',
|
|
220
|
+
category: 'integration',
|
|
221
|
+
providerId: 'deepseek',
|
|
222
|
+
displayName: 'DeepSeek',
|
|
223
|
+
description: 'DeepSeek API — DeepSeek-Chat and DeepSeek-Coder models with strong reasoning.',
|
|
224
|
+
requiredSecrets: ['deepseek.apiKey'],
|
|
225
|
+
defaultPriority: 70,
|
|
226
|
+
available: false,
|
|
227
|
+
defaultModel: 'deepseek-chat',
|
|
228
|
+
smallModel: 'deepseek-chat',
|
|
229
|
+
apiBaseUrl: 'https://api.deepseek.com/v1',
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
packageName: '@framers/agentos-ext-provider-groq',
|
|
233
|
+
name: 'provider-groq',
|
|
234
|
+
category: 'integration',
|
|
235
|
+
providerId: 'groq',
|
|
236
|
+
displayName: 'Groq',
|
|
237
|
+
description: 'Groq API — ultra-fast inference on LPU hardware for Llama and Mixtral models.',
|
|
238
|
+
requiredSecrets: ['groq.apiKey'],
|
|
239
|
+
defaultPriority: 80,
|
|
240
|
+
available: false,
|
|
241
|
+
defaultModel: 'llama-3.3-70b-versatile',
|
|
242
|
+
smallModel: 'llama-3.1-8b-instant',
|
|
243
|
+
apiBaseUrl: 'https://api.groq.com/openai/v1',
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
packageName: '@framers/agentos-ext-provider-together',
|
|
247
|
+
name: 'provider-together',
|
|
248
|
+
category: 'integration',
|
|
249
|
+
providerId: 'together',
|
|
250
|
+
displayName: 'Together AI',
|
|
251
|
+
description: 'Together AI API — serverless inference for open-weight models at scale.',
|
|
252
|
+
requiredSecrets: ['together.apiKey'],
|
|
253
|
+
defaultPriority: 70,
|
|
254
|
+
available: false,
|
|
255
|
+
defaultModel: 'meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo',
|
|
256
|
+
smallModel: 'meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo',
|
|
257
|
+
apiBaseUrl: 'https://api.together.xyz/v1',
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
packageName: '@framers/agentos-ext-provider-fireworks',
|
|
261
|
+
name: 'provider-fireworks',
|
|
262
|
+
category: 'integration',
|
|
263
|
+
providerId: 'fireworks',
|
|
264
|
+
displayName: 'Fireworks AI',
|
|
265
|
+
description: 'Fireworks AI API — fast, cost-effective inference with function calling support.',
|
|
266
|
+
requiredSecrets: ['fireworks.apiKey'],
|
|
267
|
+
defaultPriority: 70,
|
|
268
|
+
available: false,
|
|
269
|
+
defaultModel: 'accounts/fireworks/models/llama-v3p1-70b-instruct',
|
|
270
|
+
smallModel: 'accounts/fireworks/models/llama-v3p1-8b-instruct',
|
|
271
|
+
apiBaseUrl: 'https://api.fireworks.ai/inference/v1',
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
packageName: '@framers/agentos-ext-provider-perplexity',
|
|
275
|
+
name: 'provider-perplexity',
|
|
276
|
+
category: 'integration',
|
|
277
|
+
providerId: 'perplexity',
|
|
278
|
+
displayName: 'Perplexity',
|
|
279
|
+
description: 'Perplexity AI API — Sonar models with built-in web search capabilities.',
|
|
280
|
+
requiredSecrets: ['perplexity.apiKey'],
|
|
281
|
+
defaultPriority: 70,
|
|
282
|
+
available: false,
|
|
283
|
+
defaultModel: 'llama-3.1-sonar-large-128k-online',
|
|
284
|
+
smallModel: 'llama-3.1-sonar-small-128k-online',
|
|
285
|
+
apiBaseUrl: 'https://api.perplexity.ai',
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
packageName: '@framers/agentos-ext-provider-mistral',
|
|
289
|
+
name: 'provider-mistral',
|
|
290
|
+
category: 'integration',
|
|
291
|
+
providerId: 'mistral',
|
|
292
|
+
displayName: 'Mistral AI',
|
|
293
|
+
description: 'Mistral AI API — Mistral Large, Small, and Codestral models.',
|
|
294
|
+
requiredSecrets: ['mistral.apiKey'],
|
|
295
|
+
defaultPriority: 70,
|
|
296
|
+
available: false,
|
|
297
|
+
defaultModel: 'mistral-large-latest',
|
|
298
|
+
smallModel: 'mistral-small-latest',
|
|
299
|
+
apiBaseUrl: 'https://api.mistral.ai/v1',
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
packageName: '@framers/agentos-ext-provider-cohere',
|
|
303
|
+
name: 'provider-cohere',
|
|
304
|
+
category: 'integration',
|
|
305
|
+
providerId: 'cohere',
|
|
306
|
+
displayName: 'Cohere',
|
|
307
|
+
description: 'Cohere API — Command-R series models with strong RAG and tool-use capabilities.',
|
|
308
|
+
requiredSecrets: ['cohere.apiKey'],
|
|
309
|
+
defaultPriority: 60,
|
|
310
|
+
available: false,
|
|
311
|
+
defaultModel: 'command-r-plus',
|
|
312
|
+
smallModel: 'command-r',
|
|
313
|
+
apiBaseUrl: 'https://api.cohere.com/v1',
|
|
314
|
+
},
|
|
315
|
+
// ── Aggregator / Router Providers ──
|
|
316
|
+
{
|
|
317
|
+
packageName: '@framers/agentos-ext-provider-venice',
|
|
318
|
+
name: 'provider-venice',
|
|
319
|
+
category: 'integration',
|
|
320
|
+
providerId: 'venice',
|
|
321
|
+
displayName: 'Venice',
|
|
322
|
+
description: 'Venice AI — privacy-focused inference with no data retention, supports open-weight models.',
|
|
323
|
+
requiredSecrets: ['venice.apiKey'],
|
|
324
|
+
defaultPriority: 50,
|
|
325
|
+
available: false,
|
|
326
|
+
defaultModel: 'venice-default',
|
|
327
|
+
smallModel: 'venice-fast',
|
|
328
|
+
apiBaseUrl: 'https://api.venice.ai/v1',
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
packageName: '@framers/agentos-ext-provider-openrouter',
|
|
332
|
+
name: 'provider-openrouter',
|
|
333
|
+
category: 'integration',
|
|
334
|
+
providerId: 'openrouter',
|
|
335
|
+
displayName: 'OpenRouter',
|
|
336
|
+
description: 'OpenRouter — unified API gateway to 200+ models from multiple providers with automatic fallback.',
|
|
337
|
+
requiredSecrets: ['openrouter.apiKey'],
|
|
338
|
+
defaultPriority: 80,
|
|
339
|
+
available: false,
|
|
340
|
+
defaultModel: 'auto',
|
|
341
|
+
smallModel: 'auto',
|
|
342
|
+
apiBaseUrl: 'https://openrouter.ai/api/v1',
|
|
343
|
+
},
|
|
344
|
+
];
|
|
345
|
+
/**
|
|
346
|
+
* Get provider entries filtered by provider IDs.
|
|
347
|
+
*
|
|
348
|
+
* @param providerIds - Array of provider IDs to include, `'all'` for every
|
|
349
|
+
* provider, or `'none'` for an empty list. Defaults to `'all'`.
|
|
350
|
+
* @returns Matching provider registry entries.
|
|
351
|
+
*
|
|
352
|
+
* @example
|
|
353
|
+
* ```typescript
|
|
354
|
+
* // Get all providers
|
|
355
|
+
* const all = getProviderEntries();
|
|
356
|
+
*
|
|
357
|
+
* // Get specific providers
|
|
358
|
+
* const subset = getProviderEntries(['openai', 'anthropic', 'ollama']);
|
|
359
|
+
*
|
|
360
|
+
* // Disable providers
|
|
361
|
+
* const none = getProviderEntries('none');
|
|
362
|
+
* ```
|
|
363
|
+
*/
|
|
364
|
+
export function getProviderEntries(providerIds) {
|
|
365
|
+
if (providerIds === 'none')
|
|
366
|
+
return [];
|
|
367
|
+
if (!providerIds || providerIds === 'all')
|
|
368
|
+
return [...PROVIDER_CATALOG];
|
|
369
|
+
return PROVIDER_CATALOG.filter((entry) => providerIds.includes(entry.providerId));
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Get a single provider entry by its provider ID.
|
|
373
|
+
*
|
|
374
|
+
* @param providerId - The provider identifier (e.g. 'openai', 'anthropic').
|
|
375
|
+
* @returns The matching entry, or `undefined` if not found.
|
|
376
|
+
*
|
|
377
|
+
* @example
|
|
378
|
+
* ```typescript
|
|
379
|
+
* const openai = getProviderEntry('openai');
|
|
380
|
+
* console.log(openai?.defaultModel); // 'gpt-4o'
|
|
381
|
+
* ```
|
|
382
|
+
*/
|
|
383
|
+
export function getProviderEntry(providerId) {
|
|
384
|
+
return PROVIDER_CATALOG.find((entry) => entry.providerId === providerId);
|
|
385
|
+
}
|
|
386
|
+
//# sourceMappingURL=provider-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../src/provider-registry.ts"],"names":[],"mappings":"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"}
|