@framers/agentos-extensions-registry 0.18.3 → 0.18.4
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/capability-catalog.json +1547 -1
- package/dist/manifest-builder.d.ts +4 -1
- package/dist/manifest-builder.d.ts.map +1 -1
- package/dist/manifest-builder.js +149 -31
- package/dist/manifest-builder.js.map +1 -1
- package/dist/secret-env-map.d.ts.map +1 -1
- package/dist/secret-env-map.js +9 -0
- package/dist/secret-env-map.js.map +1 -1
- package/dist/tool-registry.d.ts.map +1 -1
- package/dist/tool-registry.js +24 -10
- package/dist/tool-registry.js.map +1 -1
- package/dist/types.d.ts +13 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -45
|
@@ -38,7 +38,10 @@ export declare function getAvailableExtensions(): Promise<ExtensionInfo[]>;
|
|
|
38
38
|
export declare function getAvailableChannels(): Promise<ExtensionInfo[]>;
|
|
39
39
|
/**
|
|
40
40
|
* Creates a pre-configured `ExtensionManifest` with all available curated
|
|
41
|
-
* extensions.
|
|
41
|
+
* extensions. A pack that cannot load here (its npm package is not installed
|
|
42
|
+
* and no sibling source checkout provides it) is skipped. When the caller named
|
|
43
|
+
* that pack, a warning says which package to install; a pack swept in by
|
|
44
|
+
* `'all'` is skipped quietly.
|
|
42
45
|
*
|
|
43
46
|
* @example
|
|
44
47
|
* ```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-builder.d.ts","sourceRoot":"","sources":["../src/manifest-builder.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAkB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest-builder.d.ts","sourceRoot":"","sources":["../src/manifest-builder.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAkB,MAAM,YAAY,CAAC;AAQjF,UAAU,0BAA0B;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,0BAA0B,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAClE,CAAC;CACH;AAmID;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAQvE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAKrE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4KjG"}
|
package/dist/manifest-builder.js
CHANGED
|
@@ -12,21 +12,129 @@
|
|
|
12
12
|
import { CHANNEL_CATALOG, getChannelEntries } from './channel-registry.js';
|
|
13
13
|
import { PROVIDER_CATALOG } from './provider-registry.js';
|
|
14
14
|
import { TOOL_CATALOG } from './tool-registry.js';
|
|
15
|
+
import fs from 'node:fs';
|
|
16
|
+
import path from 'node:path';
|
|
17
|
+
import { fileURLToPath } from 'node:url';
|
|
18
|
+
/**
|
|
19
|
+
* Whether a package is installed and its entry file is on disk.
|
|
20
|
+
*
|
|
21
|
+
* Node defines `import.meta.resolve` (20.6+), which honours the package's
|
|
22
|
+
* `exports` map and handles packages that only export an "import" condition.
|
|
23
|
+
* It resolves without checking that the file exists, so the result is checked
|
|
24
|
+
* here: a package published without its build output is not installed in any
|
|
25
|
+
* useful sense. Test runners that transform modules (vitest's vite-node) do
|
|
26
|
+
* not define `import.meta.resolve`; there the lookup walks up the directory
|
|
27
|
+
* tree for `node_modules/<name>/package.json`, which is how Node locates a
|
|
28
|
+
* package, and applies the same entry-file check.
|
|
29
|
+
*/
|
|
15
30
|
function isPackageInstalled(packageName) {
|
|
16
31
|
if (!packageName)
|
|
17
32
|
return false;
|
|
18
|
-
|
|
19
|
-
|
|
33
|
+
if (typeof import.meta.resolve === 'function') {
|
|
34
|
+
try {
|
|
35
|
+
const resolved = import.meta.resolve(packageName);
|
|
36
|
+
// Node resolves a package's entry without checking that the file is on
|
|
37
|
+
// disk, so a package published without its build output still resolves.
|
|
38
|
+
return !resolved.startsWith('file:') || fs.existsSync(fileURLToPath(resolved));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return findInstalledPackageJson(packageName) !== null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Walks up from this module's directory looking for an installed package whose
|
|
48
|
+
* entry file exists.
|
|
49
|
+
*/
|
|
50
|
+
function findInstalledPackageJson(packageName) {
|
|
51
|
+
let dir = path.dirname(fileURLToPath(import.meta.url));
|
|
52
|
+
for (;;) {
|
|
53
|
+
const candidate = path.join(dir, 'node_modules', ...packageName.split('/'), 'package.json');
|
|
54
|
+
if (fs.existsSync(candidate)) {
|
|
55
|
+
const entry = entryFileOf(candidate);
|
|
56
|
+
return entry !== null && fs.existsSync(path.join(path.dirname(candidate), entry)) ? candidate : null;
|
|
57
|
+
}
|
|
58
|
+
const parent = path.dirname(dir);
|
|
59
|
+
if (parent === dir)
|
|
60
|
+
return null;
|
|
61
|
+
dir = parent;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/** The conditions Node applies when a package is loaded with `import`. */
|
|
65
|
+
const IMPORT_CONDITIONS = new Set(['import', 'node', 'module-sync', 'node-addons', 'default']);
|
|
66
|
+
/**
|
|
67
|
+
* Follows an `exports` target down to a file path the way Node does: a string
|
|
68
|
+
* is the path, an array is a list of fallbacks, and a conditions object yields
|
|
69
|
+
* the first key, in the package's own order, that is an active condition. A
|
|
70
|
+
* `null` target blocks the path (returned as null); undefined means nothing
|
|
71
|
+
* matched.
|
|
72
|
+
*/
|
|
73
|
+
function resolveExportTarget(target, depth) {
|
|
74
|
+
if (typeof target === 'string')
|
|
75
|
+
return target;
|
|
76
|
+
if (target === null)
|
|
77
|
+
return null;
|
|
78
|
+
if (depth === 0 || typeof target !== 'object')
|
|
79
|
+
return undefined;
|
|
80
|
+
if (Array.isArray(target)) {
|
|
81
|
+
for (const item of target) {
|
|
82
|
+
const resolved = resolveExportTarget(item, depth - 1);
|
|
83
|
+
if (resolved !== undefined)
|
|
84
|
+
return resolved;
|
|
85
|
+
}
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
for (const [condition, value] of Object.entries(target)) {
|
|
89
|
+
if (!IMPORT_CONDITIONS.has(condition))
|
|
90
|
+
continue;
|
|
91
|
+
const resolved = resolveExportTarget(value, depth - 1);
|
|
92
|
+
if (resolved !== undefined)
|
|
93
|
+
return resolved;
|
|
94
|
+
}
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The file `import` loads for an installed package, relative to its directory.
|
|
99
|
+
* A package with an `exports` field is resolved through it alone (Node does
|
|
100
|
+
* not fall back to `main`), so a map without a root entry for `import` gives
|
|
101
|
+
* null. Without `exports` the entry is `main`, then `index.js`.
|
|
102
|
+
*/
|
|
103
|
+
function entryFileOf(packageJsonPath) {
|
|
104
|
+
let manifest = {};
|
|
20
105
|
try {
|
|
21
|
-
|
|
22
|
-
return true;
|
|
106
|
+
manifest = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
23
107
|
}
|
|
24
108
|
catch {
|
|
25
|
-
return
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const exported = manifest.exports;
|
|
112
|
+
if (exported !== undefined && exported !== null) {
|
|
113
|
+
let target = exported;
|
|
114
|
+
if (typeof exported === 'object' && !Array.isArray(exported)) {
|
|
115
|
+
const hasSubpaths = Object.keys(exported).some((key) => key.startsWith('.'));
|
|
116
|
+
if (hasSubpaths)
|
|
117
|
+
target = exported['.'];
|
|
118
|
+
}
|
|
119
|
+
const resolved = resolveExportTarget(target, 4);
|
|
120
|
+
return typeof resolved === 'string' && resolved ? resolved : null;
|
|
26
121
|
}
|
|
122
|
+
return typeof manifest.main === 'string' && manifest.main ? manifest.main : 'index.js';
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Whether an entry carries a factory that can run in this installation.
|
|
126
|
+
*
|
|
127
|
+
* The built-in AgentOS packs ship their own `createPack` and always can. A
|
|
128
|
+
* factory backed by a sibling source checkout says so through `isAvailable()`;
|
|
129
|
+
* an npm install has no such checkout, and calling the factory there throws.
|
|
130
|
+
*/
|
|
131
|
+
function hasUsableLocalFactory(entry) {
|
|
132
|
+
if (typeof entry.createPack !== 'function')
|
|
133
|
+
return false;
|
|
134
|
+
return typeof entry.createPack.isAvailable === 'function' ? entry.createPack.isAvailable() : true;
|
|
27
135
|
}
|
|
28
136
|
function isEntryAvailable(entry) {
|
|
29
|
-
if (
|
|
137
|
+
if (hasUsableLocalFactory(entry))
|
|
30
138
|
return true;
|
|
31
139
|
return isPackageInstalled(entry.packageName);
|
|
32
140
|
}
|
|
@@ -66,7 +174,10 @@ export async function getAvailableChannels() {
|
|
|
66
174
|
}
|
|
67
175
|
/**
|
|
68
176
|
* Creates a pre-configured `ExtensionManifest` with all available curated
|
|
69
|
-
* extensions.
|
|
177
|
+
* extensions. A pack that cannot load here (its npm package is not installed
|
|
178
|
+
* and no sibling source checkout provides it) is skipped. When the caller named
|
|
179
|
+
* that pack, a warning says which package to install; a pack swept in by
|
|
180
|
+
* `'all'` is skipped quietly.
|
|
70
181
|
*
|
|
71
182
|
* @example
|
|
72
183
|
* ```typescript
|
|
@@ -94,8 +205,9 @@ export async function createCuratedManifest(options) {
|
|
|
94
205
|
const secrets = options?.secrets;
|
|
95
206
|
const logger = options?.logger ?? console;
|
|
96
207
|
const packs = [];
|
|
97
|
-
// Helper to load and push a catalog entry
|
|
98
|
-
|
|
208
|
+
// Helper to load and push a catalog entry. `named` is true when the caller
|
|
209
|
+
// listed the entry by name instead of asking for the whole category.
|
|
210
|
+
const loadEntry = async (entry, named = false) => {
|
|
99
211
|
const override = options?.overrides?.[entry.name];
|
|
100
212
|
if (override?.enabled === false)
|
|
101
213
|
return;
|
|
@@ -106,12 +218,24 @@ export async function createCuratedManifest(options) {
|
|
|
106
218
|
// Most curated packs accept `options.priority` and map it onto descriptor priorities.
|
|
107
219
|
priority: override?.options?.priority ?? effectivePriority,
|
|
108
220
|
};
|
|
109
|
-
// Prefer npm package
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
221
|
+
// Prefer the npm package when it is installed AND exports a pack factory;
|
|
222
|
+
// a package that is installed but is not an extension pack (the built-in
|
|
223
|
+
// AgentOS packs point at '@framers/agentos' and carry their own
|
|
224
|
+
// `createPack`) or whose entry cannot be loaded falls back to the local
|
|
225
|
+
// factory.
|
|
226
|
+
const mod = entry.packageName && isPackageInstalled(entry.packageName)
|
|
227
|
+
? await tryImport(entry.packageName)
|
|
228
|
+
: null;
|
|
229
|
+
const factory = mod?.createExtensionPack ?? mod?.default?.createExtensionPack ?? mod?.default;
|
|
230
|
+
if (typeof factory !== 'function') {
|
|
231
|
+
if (!hasUsableLocalFactory(entry)) {
|
|
232
|
+
// Registering the entry anyway would hand AgentOS a factory that
|
|
233
|
+
// throws when the pack is activated.
|
|
234
|
+
if (named) {
|
|
235
|
+
logger?.warn?.(`[agentos-extensions-registry] "${entry.name}" was requested but cannot load here: install ${entry.packageName} to enable it.`);
|
|
236
|
+
}
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
115
239
|
packs.push({
|
|
116
240
|
factory: () => entry.createPack?.({
|
|
117
241
|
options: effectiveOptions,
|
|
@@ -125,15 +249,6 @@ export async function createCuratedManifest(options) {
|
|
|
125
249
|
});
|
|
126
250
|
return;
|
|
127
251
|
}
|
|
128
|
-
else if (!isPackageInstalled(entry.packageName)) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
const mod = await tryImport(entry.packageName);
|
|
132
|
-
if (!mod)
|
|
133
|
-
return;
|
|
134
|
-
const factory = mod.createExtensionPack ?? mod.default?.createExtensionPack ?? mod.default;
|
|
135
|
-
if (typeof factory !== 'function')
|
|
136
|
-
return;
|
|
137
252
|
packs.push({
|
|
138
253
|
factory: () => factory({
|
|
139
254
|
options: effectiveOptions,
|
|
@@ -154,15 +269,18 @@ export async function createCuratedManifest(options) {
|
|
|
154
269
|
const productivityEntries = TOOL_CATALOG.filter((t) => t.category === 'productivity');
|
|
155
270
|
const cloudEntries = TOOL_CATALOG.filter((t) => t.category === 'cloud');
|
|
156
271
|
const domainEntries = TOOL_CATALOG.filter((t) => t.category === 'domain');
|
|
272
|
+
// Research-category packs (citation-verifier, trulia-search) are opt-in:
|
|
273
|
+
// they load when a caller names them in `tools`, and stay out of `'all'`.
|
|
274
|
+
const researchEntries = TOOL_CATALOG.filter((t) => t.category === 'research');
|
|
157
275
|
// ── Tool Extensions ──
|
|
158
276
|
const toolFilter = options?.tools ?? 'all';
|
|
159
277
|
const filteredTools = toolFilter === 'none'
|
|
160
278
|
? []
|
|
161
279
|
: toolFilter === 'all'
|
|
162
280
|
? toolOnlyEntries
|
|
163
|
-
: toolOnlyEntries.filter((t) => toolFilter.includes(t.name));
|
|
281
|
+
: [...toolOnlyEntries, ...researchEntries].filter((t) => toolFilter.includes(t.name));
|
|
164
282
|
for (const entry of filteredTools) {
|
|
165
|
-
await loadEntry(entry);
|
|
283
|
+
await loadEntry(entry, Array.isArray(toolFilter));
|
|
166
284
|
}
|
|
167
285
|
// ── Voice Provider Extensions ──
|
|
168
286
|
const voiceFilter = options?.voice ?? 'all';
|
|
@@ -172,7 +290,7 @@ export async function createCuratedManifest(options) {
|
|
|
172
290
|
? voiceEntries
|
|
173
291
|
: voiceEntries.filter((t) => voiceFilter.includes(t.name));
|
|
174
292
|
for (const entry of filteredVoice) {
|
|
175
|
-
await loadEntry(entry);
|
|
293
|
+
await loadEntry(entry, Array.isArray(voiceFilter));
|
|
176
294
|
}
|
|
177
295
|
// ── Productivity Extensions ──
|
|
178
296
|
const prodFilter = options?.productivity ?? 'all';
|
|
@@ -182,7 +300,7 @@ export async function createCuratedManifest(options) {
|
|
|
182
300
|
? productivityEntries
|
|
183
301
|
: productivityEntries.filter((t) => prodFilter.includes(t.name));
|
|
184
302
|
for (const entry of filteredProd) {
|
|
185
|
-
await loadEntry(entry);
|
|
303
|
+
await loadEntry(entry, Array.isArray(prodFilter));
|
|
186
304
|
}
|
|
187
305
|
// ── Cloud Provider Extensions ──
|
|
188
306
|
const cloudFilter = options?.cloud ?? 'all';
|
|
@@ -192,7 +310,7 @@ export async function createCuratedManifest(options) {
|
|
|
192
310
|
? cloudEntries
|
|
193
311
|
: cloudEntries.filter((t) => cloudFilter.includes(t.name));
|
|
194
312
|
for (const entry of filteredCloud) {
|
|
195
|
-
await loadEntry(entry);
|
|
313
|
+
await loadEntry(entry, Array.isArray(cloudFilter));
|
|
196
314
|
}
|
|
197
315
|
// ── Domain Registrar Extensions ──
|
|
198
316
|
const domainFilter = options?.domains ?? 'all';
|
|
@@ -202,12 +320,12 @@ export async function createCuratedManifest(options) {
|
|
|
202
320
|
? domainEntries
|
|
203
321
|
: domainEntries.filter((t) => domainFilter.includes(t.name));
|
|
204
322
|
for (const entry of filteredDomains) {
|
|
205
|
-
await loadEntry(entry);
|
|
323
|
+
await loadEntry(entry, Array.isArray(domainFilter));
|
|
206
324
|
}
|
|
207
325
|
// ── Channel Extensions ──
|
|
208
326
|
const channelEntries = getChannelEntries(options?.channels);
|
|
209
327
|
for (const entry of channelEntries) {
|
|
210
|
-
await loadEntry(entry);
|
|
328
|
+
await loadEntry(entry, Array.isArray(options?.channels));
|
|
211
329
|
}
|
|
212
330
|
// ── Build Overrides ──
|
|
213
331
|
const manifestOverrides = options?.overrides
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-builder.js","sourceRoot":"","sources":["../src/manifest-builder.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;;;;;;;;GASG;AAGH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAsB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest-builder.js","sourceRoot":"","sources":["../src/manifest-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-env-map.d.ts","sourceRoot":"","sources":["../src/secret-env-map.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"secret-env-map.d.ts","sourceRoot":"","sources":["../src/secret-env-map.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA2E3D,CAAC;AAeF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4DxF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE"}
|
package/dist/secret-env-map.js
CHANGED
|
@@ -17,6 +17,11 @@ export const SECRET_ENV_MAP = {
|
|
|
17
17
|
// Search
|
|
18
18
|
'serper.apiKey': { envVar: 'SERPER_API_KEY', signupUrl: 'https://serper.dev', freeTier: '2,500 queries free' },
|
|
19
19
|
'brave.apiKey': { envVar: 'BRAVE_API_KEY', signupUrl: 'https://brave.com/search/api/', freeTier: '2,000 queries/mo free' },
|
|
20
|
+
'tavily.apiKey': { envVar: 'TAVILY_API_KEY', signupUrl: 'https://app.tavily.com', freeTier: '1,000 credits/mo free' },
|
|
21
|
+
'firecrawl.apiKey': { envVar: 'FIRECRAWL_API_KEY', signupUrl: 'https://www.firecrawl.dev/app/api-keys', freeTier: '1,000 credits/mo free' },
|
|
22
|
+
'serpapi.apiKey': { envVar: 'SERPAPI_API_KEY', signupUrl: 'https://serpapi.com/manage-api-key', freeTier: '250 searches/mo free' },
|
|
23
|
+
// Rerank
|
|
24
|
+
'cohere.apiKey': { envVar: 'COHERE_API_KEY', signupUrl: 'https://dashboard.cohere.com/api-keys', freeTier: 'trial key free' },
|
|
20
25
|
// Core AI providers
|
|
21
26
|
'openai.apiKey': { envVar: 'OPENAI_API_KEY', signupUrl: 'https://platform.openai.com/api-keys' },
|
|
22
27
|
'stability.apiKey': { envVar: 'STABILITY_API_KEY', signupUrl: 'https://platform.stability.ai/account/keys' },
|
|
@@ -34,6 +39,7 @@ export const SECRET_ENV_MAP = {
|
|
|
34
39
|
'elevenlabs.apiKey': { envVar: 'ELEVENLABS_API_KEY', signupUrl: 'https://elevenlabs.io', freeTier: '10k chars/mo free' },
|
|
35
40
|
'twilio.accountSid': { envVar: 'TWILIO_ACCOUNT_SID', signupUrl: 'https://console.twilio.com' },
|
|
36
41
|
'twilio.authToken': { envVar: 'TWILIO_AUTH_TOKEN', signupUrl: 'https://console.twilio.com' },
|
|
42
|
+
'twilio.phoneNumber': { envVar: 'TWILIO_PHONE_NUMBER', signupUrl: 'https://console.twilio.com/us1/develop/phone-numbers/manage/incoming' },
|
|
37
43
|
'telnyx.apiKey': { envVar: 'TELNYX_API_KEY', signupUrl: 'https://portal.telnyx.com' },
|
|
38
44
|
'telnyx.connectionId': { envVar: 'TELNYX_CONNECTION_ID', signupUrl: 'https://portal.telnyx.com' },
|
|
39
45
|
'plivo.authId': { envVar: 'PLIVO_AUTH_ID', signupUrl: 'https://console.plivo.com' },
|
|
@@ -136,7 +142,10 @@ export function getApiKeyGuidance(errorMessage, toolName) {
|
|
|
136
142
|
if (n.includes('search') || n.includes('web')) {
|
|
137
143
|
lines.push('For web search, set one of:');
|
|
138
144
|
lines.push(' - SERPER_API_KEY (2,500 queries free) → https://serper.dev');
|
|
145
|
+
lines.push(' - TAVILY_API_KEY (1,000 credits/mo free) → https://app.tavily.com');
|
|
146
|
+
lines.push(' - FIRECRAWL_API_KEY (1,000 credits/mo free) → https://www.firecrawl.dev/app/api-keys');
|
|
139
147
|
lines.push(' - BRAVE_API_KEY (2,000 queries/mo free) → https://brave.com/search/api/');
|
|
148
|
+
lines.push(' - SERPAPI_API_KEY (250 searches/mo free) → https://serpapi.com/manage-api-key');
|
|
140
149
|
}
|
|
141
150
|
}
|
|
142
151
|
return lines.length > 1 ? lines.join('\n') : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-env-map.js","sourceRoot":"","sources":["../src/secret-env-map.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQlD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAqC;IAC9D,SAAS;IACT,eAAe,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB,EAAE;IAC9G,cAAc,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,+BAA+B,EAAE,QAAQ,EAAE,uBAAuB,EAAE;
|
|
1
|
+
{"version":3,"file":"secret-env-map.js","sourceRoot":"","sources":["../src/secret-env-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,YAAY,CAAC;AAySrE;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,aAAa,EAqvCvC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,MAAM,GAAG,aAAa,EAAE,CAIjF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEpE"}
|
package/dist/tool-registry.js
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @module @framers/agentos-extensions-registry/tools
|
|
11
11
|
*/
|
|
12
|
+
import fs from 'node:fs';
|
|
13
|
+
import { fileURLToPath } from 'node:url';
|
|
12
14
|
import { BuiltInAdaptiveVadProvider, ElevenLabsTextToSpeechProvider, OpenAITextToSpeechProvider, OpenAIWhisperSpeechToTextProvider, } from '@framers/agentos';
|
|
13
15
|
const NEUTRAL_PAD = {
|
|
14
16
|
valence: 0,
|
|
@@ -197,15 +199,25 @@ function createBuiltInSpeechRuntimePack(context) {
|
|
|
197
199
|
],
|
|
198
200
|
};
|
|
199
201
|
}
|
|
202
|
+
/** The files a local pack proxy tries, in order: the build output, then the source. */
|
|
203
|
+
function localPackCandidates(relativePath) {
|
|
204
|
+
const distRelativePath = relativePath.replace(/\/src\/index\.(?:ts|js)$/, '/dist/index.js');
|
|
205
|
+
const sourceTsRelativePath = relativePath.replace(/\.js$/, '.ts');
|
|
206
|
+
return [
|
|
207
|
+
new URL(distRelativePath, import.meta.url),
|
|
208
|
+
new URL(relativePath, import.meta.url),
|
|
209
|
+
...(sourceTsRelativePath !== relativePath ? [new URL(sourceTsRelativePath, import.meta.url)] : []),
|
|
210
|
+
];
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Builds a pack factory that imports the pack from a sibling
|
|
214
|
+
* `agentos-extensions` source checkout. That checkout exists in the monorepo
|
|
215
|
+
* and not in an npm install, so the factory carries `isAvailable()`; the
|
|
216
|
+
* manifest builder registers the factory only where it can run.
|
|
217
|
+
*/
|
|
200
218
|
function createLocalPackProxy(relativePath) {
|
|
201
|
-
|
|
202
|
-
const
|
|
203
|
-
const sourceTsRelativePath = relativePath.replace(/\.js$/, '.ts');
|
|
204
|
-
const candidateUrls = [
|
|
205
|
-
new URL(distRelativePath, import.meta.url),
|
|
206
|
-
new URL(relativePath, import.meta.url),
|
|
207
|
-
...(sourceTsRelativePath !== relativePath ? [new URL(sourceTsRelativePath, import.meta.url)] : []),
|
|
208
|
-
];
|
|
219
|
+
const proxy = async (context) => {
|
|
220
|
+
const candidateUrls = localPackCandidates(relativePath);
|
|
209
221
|
let mod;
|
|
210
222
|
let lastError;
|
|
211
223
|
for (const moduleUrl of candidateUrls) {
|
|
@@ -230,6 +242,8 @@ function createLocalPackProxy(relativePath) {
|
|
|
230
242
|
logger: context.logger,
|
|
231
243
|
});
|
|
232
244
|
};
|
|
245
|
+
proxy.isAvailable = () => localPackCandidates(relativePath).some((url) => fs.existsSync(fileURLToPath(url)));
|
|
246
|
+
return proxy;
|
|
233
247
|
}
|
|
234
248
|
/**
|
|
235
249
|
* Full catalog of tool, voice, and productivity extensions.
|
|
@@ -251,11 +265,11 @@ export const TOOL_CATALOG = [
|
|
|
251
265
|
name: 'web-search',
|
|
252
266
|
category: 'tool',
|
|
253
267
|
displayName: 'Web Search',
|
|
254
|
-
description: 'Web search using SearXNG or DuckDuckGo by default; optional Serper
|
|
268
|
+
description: 'Web search using SearXNG or DuckDuckGo by default; optional Serper, Tavily, Firecrawl, Brave or SerpAPI key for better results.',
|
|
255
269
|
requiredSecrets: [],
|
|
256
270
|
defaultPriority: 20,
|
|
257
271
|
available: false,
|
|
258
|
-
envVars: ['SERPER_API_KEY', 'BRAVE_API_KEY'],
|
|
272
|
+
envVars: ['SERPER_API_KEY', 'TAVILY_API_KEY', 'FIRECRAWL_API_KEY', 'BRAVE_API_KEY', 'SERPAPI_API_KEY'],
|
|
259
273
|
docsUrl: 'https://serper.dev/api-key',
|
|
260
274
|
},
|
|
261
275
|
{
|