@agentbridgeai/cli 0.1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AgentBridge
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Interactive init command: guides API owners through making their API agent-ready.
3
+ *
4
+ * npx agentbridge init
5
+ *
6
+ * 1. Ask for OpenAPI spec (file path or URL)
7
+ * 2. Parse and preview actions
8
+ * 3. Generate .agentbridge.json manifest
9
+ * 4. Optionally generate MCP server config
10
+ */
11
+ export declare function runInit(): Promise<void>;
12
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AASA;;;;;;;;;GASG;AACH,wBAAsB,OAAO,kBAmG5B"}
@@ -0,0 +1,111 @@
1
+ import * as readline from 'readline';
2
+ import chalk from 'chalk';
3
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
4
+ import { convertOpenAPIToManifest } from '@agentbridgeai/openapi';
5
+ function ask(rl, question) {
6
+ return new Promise(resolve => rl.question(question, resolve));
7
+ }
8
+ /**
9
+ * Interactive init command: guides API owners through making their API agent-ready.
10
+ *
11
+ * npx agentbridge init
12
+ *
13
+ * 1. Ask for OpenAPI spec (file path or URL)
14
+ * 2. Parse and preview actions
15
+ * 3. Generate .agentbridge.json manifest
16
+ * 4. Optionally generate MCP server config
17
+ */
18
+ export async function runInit() {
19
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
20
+ console.log('');
21
+ console.log(chalk.bold.cyan(' AgentBridge Init'));
22
+ console.log(chalk.gray(' Make your API agent-ready in 30 seconds'));
23
+ console.log('');
24
+ // Step 1: Get the OpenAPI spec
25
+ const specSource = await ask(rl, chalk.white(' Path to your OpenAPI spec (or URL): '));
26
+ let specContent;
27
+ try {
28
+ if (specSource.startsWith('http')) {
29
+ console.log(chalk.gray(' Fetching...'));
30
+ const res = await fetch(specSource);
31
+ if (!res.ok)
32
+ throw new Error(`HTTP ${res.status}`);
33
+ specContent = await res.text();
34
+ }
35
+ else if (existsSync(specSource)) {
36
+ specContent = readFileSync(specSource, 'utf-8');
37
+ }
38
+ else {
39
+ console.error(chalk.red(` File not found: ${specSource}`));
40
+ rl.close();
41
+ return;
42
+ }
43
+ }
44
+ catch (err) {
45
+ console.error(chalk.red(` Failed to load spec: ${err.message}`));
46
+ rl.close();
47
+ return;
48
+ }
49
+ // Step 2: Convert and preview
50
+ let manifest;
51
+ try {
52
+ manifest = convertOpenAPIToManifest(specContent);
53
+ }
54
+ catch (err) {
55
+ console.error(chalk.red(` Failed to parse spec: ${err.message}`));
56
+ rl.close();
57
+ return;
58
+ }
59
+ console.log('');
60
+ console.log(chalk.green(' Detected API:'));
61
+ console.log(` Name: ${chalk.bold(manifest.name)}`);
62
+ console.log(` Description: ${manifest.description}`);
63
+ console.log(` Base URL: ${manifest.base_url}`);
64
+ console.log(` Auth: ${manifest.auth?.type ?? 'none'}`);
65
+ console.log(` Actions: ${manifest.actions.length}`);
66
+ for (const action of manifest.actions.slice(0, 10)) {
67
+ console.log(` ${chalk.cyan(action.id)} ${chalk.gray(`[${action.method}]`)} — ${action.description}`);
68
+ }
69
+ if (manifest.actions.length > 10) {
70
+ console.log(chalk.gray(` ... and ${manifest.actions.length - 10} more`));
71
+ }
72
+ console.log('');
73
+ // Step 3: Confirm and save
74
+ const confirm = await ask(rl, chalk.white(' Generate .agentbridge.json? (Y/n): '));
75
+ if (confirm.toLowerCase() === 'n') {
76
+ console.log(chalk.gray(' Cancelled.'));
77
+ rl.close();
78
+ return;
79
+ }
80
+ const manifestPath = '.agentbridge.json';
81
+ writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
82
+ console.log(chalk.green(` Created ${manifestPath}`));
83
+ // Step 4: MCP config
84
+ const mcpAnswer = await ask(rl, chalk.white(' Generate MCP server config for Claude/Cursor? (Y/n): '));
85
+ if (mcpAnswer.toLowerCase() !== 'n') {
86
+ const mcpConfig = {
87
+ mcpServers: {
88
+ [manifest.name]: {
89
+ command: 'npx',
90
+ args: ['@agentbridgeai/mcp', '--manifest', './.agentbridge.json'],
91
+ },
92
+ },
93
+ };
94
+ const mcpPath = 'mcp-config.json';
95
+ writeFileSync(mcpPath, JSON.stringify(mcpConfig, null, 2));
96
+ console.log(chalk.green(` Created ${mcpPath}`));
97
+ console.log('');
98
+ console.log(chalk.gray(' To use with Claude Desktop, add the config to:'));
99
+ console.log(chalk.gray(' ~/.claude/claude_desktop_config.json'));
100
+ }
101
+ console.log('');
102
+ console.log(chalk.bold.green(' Your API is now agent-ready!'));
103
+ console.log('');
104
+ console.log(chalk.gray(' Next steps:'));
105
+ console.log(chalk.gray(' 1. Host .agentbridge.json alongside your API'));
106
+ console.log(chalk.gray(' 2. Users can: agentbridge add https://your-api.com/.agentbridge.json'));
107
+ console.log(chalk.gray(' 3. Or use MCP: npx @agentbridgeai/mcp --manifest .agentbridge.json'));
108
+ console.log('');
109
+ rl.close();
110
+ }
111
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,347 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import chalk from 'chalk';
4
+ import { AgentBridgeEngine } from '@agentbridgeai/core';
5
+ import { ClaudeProvider, OpenAIProvider } from '@agentbridgeai/llm';
6
+ import { APIRegistry, convertOpenAPIToManifest, discoverFromDomain } from '@agentbridgeai/openapi';
7
+ import { startRepl } from './repl.js';
8
+ import { runInit } from './commands.js';
9
+ import { readFileSync } from 'fs';
10
+ const REGISTRY_URL = process.env.AGENTBRIDGE_REGISTRY || 'https://agentbridge.cc';
11
+ const program = new Command();
12
+ program
13
+ .name('agentbridge')
14
+ .description('Make any API agent-ready — interact with any service using natural language')
15
+ .version('0.1.0');
16
+ // ---- Main chat command (default) ----
17
+ // Supports: `agentbridge chat` (all installed APIs)
18
+ // `agentbridge chat spotify` (search + auto-install + chat)
19
+ program
20
+ .command('chat [api]', { isDefault: true })
21
+ .description('Start chatting — optionally specify an API name to auto-install from the directory')
22
+ .option('--token <token>', 'API auth token for the target API')
23
+ .action(async (apiName, opts) => {
24
+ const llm = createLLMProvider();
25
+ const registry = new APIRegistry();
26
+ // If user specified an API name, try to find and install it
27
+ if (apiName) {
28
+ const existing = registry.getManifest(apiName);
29
+ if (!existing) {
30
+ // Search the directory and auto-install
31
+ console.log(chalk.gray(` Searching for "${apiName}"...`));
32
+ try {
33
+ const res = await fetch(`${REGISTRY_URL}/api/discover?q=${encodeURIComponent(apiName)}`);
34
+ if (res.ok) {
35
+ const data = await res.json();
36
+ if (data.apis && data.apis.length > 0) {
37
+ const match = data.apis[0];
38
+ const manifestUrl = `${REGISTRY_URL}/api/${match.name}/manifest`;
39
+ const manifest = await registry.addFromURL(manifestUrl);
40
+ console.log(chalk.green(` Installed "${manifest.name}" (${manifest.actions.length} actions)`));
41
+ // Set auth if provided
42
+ if (opts?.token && manifest.auth) {
43
+ registry.setCredentials(manifest.name, { token: opts.token, api_key: opts.token });
44
+ console.log(chalk.green(` Auth configured for "${manifest.name}"`));
45
+ }
46
+ else if (manifest.auth) {
47
+ console.log(chalk.yellow(` This API requires auth (${manifest.auth.type}).`));
48
+ console.log(chalk.gray(` Run: agentbridge auth ${manifest.name} --token YOUR_TOKEN`));
49
+ console.log(chalk.gray(` Or: agentbridge chat ${manifest.name} --token YOUR_TOKEN`));
50
+ }
51
+ }
52
+ else {
53
+ console.log(chalk.yellow(` No API found for "${apiName}" — chatting with installed APIs only.`));
54
+ }
55
+ }
56
+ }
57
+ catch {
58
+ console.log(chalk.gray(` Could not reach directory — chatting with installed APIs only.`));
59
+ }
60
+ }
61
+ }
62
+ // Load all plugins
63
+ const registryPlugins = registry.toPlugins();
64
+ const allPlugins = [...registryPlugins];
65
+ if (allPlugins.length === 2) {
66
+ // Only built-in plugins
67
+ console.log(chalk.gray('\n No APIs installed. Using built-in weather & todo plugins.'));
68
+ console.log(chalk.gray(' Install an API: agentbridge chat <api-name>'));
69
+ console.log(chalk.gray(' Or browse: agentbridge search <query>\n'));
70
+ }
71
+ const engine = new AgentBridgeEngine({
72
+ llmProvider: llm,
73
+ plugins: allPlugins,
74
+ });
75
+ await startRepl(engine);
76
+ });
77
+ // ---- Add an API from manifest URL ----
78
+ program
79
+ .command('add <url>')
80
+ .description('Add an API from a manifest URL')
81
+ .action(async (url) => {
82
+ const registry = new APIRegistry();
83
+ try {
84
+ const manifest = await registry.addFromURL(url);
85
+ console.log(chalk.green(`Added "${manifest.name}" (${manifest.actions.length} actions)`));
86
+ if (manifest.auth) {
87
+ console.log(chalk.yellow(`This API requires auth (${manifest.auth.type}). Set credentials with:`));
88
+ console.log(chalk.gray(` agentbridge auth ${manifest.name} --token YOUR_TOKEN`));
89
+ }
90
+ }
91
+ catch (err) {
92
+ console.error(chalk.red(`Failed to add API: ${err.message}`));
93
+ }
94
+ });
95
+ // ---- Import from OpenAPI spec (local file) ----
96
+ program
97
+ .command('import <file>')
98
+ .description('Import an API from a local OpenAPI/Swagger spec file')
99
+ .option('--base-url <url>', 'Override the base URL')
100
+ .option('--max-actions <n>', 'Max number of actions to import', parseInt)
101
+ .option('--tags <tags>', 'Only include operations with these tags (comma-separated)')
102
+ .action(async (file, opts) => {
103
+ const registry = new APIRegistry();
104
+ try {
105
+ const specContent = readFileSync(file, 'utf-8');
106
+ const manifest = convertOpenAPIToManifest(specContent, {
107
+ baseUrl: opts.baseUrl,
108
+ maxActions: opts.maxActions,
109
+ includeTags: opts.tags?.split(','),
110
+ });
111
+ registry.addManifest(manifest);
112
+ console.log(chalk.green(`Imported "${manifest.name}" with ${manifest.actions.length} actions:`));
113
+ for (const action of manifest.actions) {
114
+ console.log(` ${chalk.cyan(action.id)} — ${action.description}`);
115
+ }
116
+ if (manifest.auth) {
117
+ console.log(chalk.yellow(`\nThis API requires auth (${manifest.auth.type}). Set credentials with:`));
118
+ console.log(chalk.gray(` agentbridge auth ${manifest.name} --token YOUR_TOKEN`));
119
+ }
120
+ }
121
+ catch (err) {
122
+ console.error(chalk.red(`Failed to import: ${err.message}`));
123
+ }
124
+ });
125
+ // ---- Publish: register your API on agentbridge.cc directly from CLI ----
126
+ program
127
+ .command('publish [file]')
128
+ .description('Publish your API to the AgentBridge directory (agentbridge.cc)')
129
+ .option('--url <url>', 'URL to your OpenAPI spec (instead of local file)')
130
+ .option('--registry <url>', 'Custom registry URL')
131
+ .action(async (file, opts) => {
132
+ const registryUrl = opts?.registry || REGISTRY_URL;
133
+ console.log('');
134
+ console.log(chalk.bold.cyan(' Publishing to AgentBridge'));
135
+ console.log('');
136
+ try {
137
+ let body;
138
+ if (opts?.url) {
139
+ console.log(chalk.gray(` Fetching spec from ${opts.url}...`));
140
+ body = { url: opts.url };
141
+ }
142
+ else if (file) {
143
+ console.log(chalk.gray(` Reading ${file}...`));
144
+ const specContent = readFileSync(file, 'utf-8');
145
+ body = { spec: specContent };
146
+ }
147
+ else {
148
+ // Try common file names
149
+ const candidates = ['openapi.json', 'openapi.yaml', 'openapi.yml', 'swagger.json', 'swagger.yaml', '.agentbridge.json'];
150
+ let found = '';
151
+ for (const c of candidates) {
152
+ try {
153
+ readFileSync(c, 'utf-8');
154
+ found = c;
155
+ break;
156
+ }
157
+ catch { }
158
+ }
159
+ if (!found) {
160
+ console.error(chalk.red(' No OpenAPI spec found. Provide a file path or --url:'));
161
+ console.error(chalk.gray(' agentbridge publish openapi.json'));
162
+ console.error(chalk.gray(' agentbridge publish --url https://api.example.com/openapi.json'));
163
+ return;
164
+ }
165
+ console.log(chalk.gray(` Found ${found}`));
166
+ body = { spec: readFileSync(found, 'utf-8') };
167
+ }
168
+ const res = await fetch(`${registryUrl}/api/import`, {
169
+ method: 'POST',
170
+ headers: { 'Content-Type': 'application/json' },
171
+ body: JSON.stringify(body),
172
+ });
173
+ const data = await res.json();
174
+ if (!res.ok) {
175
+ console.error(chalk.red(` Failed: ${data.error}`));
176
+ return;
177
+ }
178
+ console.log('');
179
+ console.log(chalk.green.bold(` Published: ${data.name}`));
180
+ console.log(chalk.gray(` ${data.description}`));
181
+ console.log(chalk.gray(` ${data.action_count} actions registered`));
182
+ console.log('');
183
+ console.log(chalk.white(' Your API is now live at:'));
184
+ console.log(chalk.cyan(` ${registryUrl}/api/${data.name}`));
185
+ console.log('');
186
+ console.log(chalk.white(' Anyone can now use it:'));
187
+ console.log(chalk.gray(` Web: ${registryUrl}/chat`));
188
+ console.log(chalk.gray(` CLI: agentbridge chat ${data.name}`));
189
+ console.log(chalk.gray(` SDK: fetch("${registryUrl}/api/${data.name}/manifest")`));
190
+ console.log('');
191
+ }
192
+ catch (err) {
193
+ console.error(chalk.red(` Publish failed: ${err.message}`));
194
+ }
195
+ });
196
+ // ---- Set auth credentials ----
197
+ program
198
+ .command('auth <name>')
199
+ .description('Set authentication credentials for a registered API')
200
+ .option('--token <token>', 'Bearer token or API key')
201
+ .option('--key <key>', 'API key value')
202
+ .action((name, opts) => {
203
+ const registry = new APIRegistry();
204
+ const creds = {};
205
+ if (opts.token)
206
+ creds.token = opts.token;
207
+ if (opts.key)
208
+ creds.api_key = opts.key;
209
+ if (Object.keys(creds).length === 0) {
210
+ console.error(chalk.red('Provide at least --token or --key'));
211
+ return;
212
+ }
213
+ try {
214
+ registry.setCredentials(name, creds);
215
+ console.log(chalk.green(`Credentials saved for "${name}"`));
216
+ }
217
+ catch (err) {
218
+ console.error(chalk.red(err.message));
219
+ }
220
+ });
221
+ // ---- List registered APIs ----
222
+ program
223
+ .command('list')
224
+ .description('List all registered APIs')
225
+ .action(() => {
226
+ const registry = new APIRegistry();
227
+ const apis = registry.list();
228
+ if (apis.length === 0) {
229
+ console.log(chalk.gray('No APIs registered. Try:'));
230
+ console.log(chalk.gray(' agentbridge chat <api-name> Search & install & chat'));
231
+ console.log(chalk.gray(' agentbridge search <query> Browse the directory'));
232
+ console.log(chalk.gray(' agentbridge import openapi.json Import a local spec'));
233
+ return;
234
+ }
235
+ console.log(chalk.bold('\nRegistered APIs:'));
236
+ for (const api of apis) {
237
+ console.log(` ${chalk.cyan(api.name)} v${api.version} — ${api.description} (${api.actionCount} actions)`);
238
+ }
239
+ console.log('');
240
+ });
241
+ // ---- Remove an API ----
242
+ program
243
+ .command('remove <name>')
244
+ .description('Remove a registered API')
245
+ .action((name) => {
246
+ const registry = new APIRegistry();
247
+ registry.remove(name);
248
+ console.log(chalk.green(`Removed "${name}"`));
249
+ });
250
+ // ---- Discover: auto-detect agent-ready APIs on any domain ----
251
+ program
252
+ .command('discover <domain>')
253
+ .description('Check if a domain has an agent-ready API (via /.well-known/agentbridge.json)')
254
+ .action(async (domain) => {
255
+ console.log(chalk.gray(` Checking ${domain}...`));
256
+ const manifest = await discoverFromDomain(domain);
257
+ if (!manifest) {
258
+ console.log(chalk.yellow(` No agent-ready API found at ${domain}`));
259
+ console.log(chalk.gray(' The domain needs to host /.well-known/agentbridge.json'));
260
+ return;
261
+ }
262
+ console.log(chalk.green(` Found: ${manifest.name} (${manifest.actions.length} actions)`));
263
+ console.log(` ${manifest.description}`);
264
+ for (const a of manifest.actions.slice(0, 5)) {
265
+ console.log(` ${chalk.cyan(a.id)} — ${a.description}`);
266
+ }
267
+ if (manifest.actions.length > 5) {
268
+ console.log(chalk.gray(` ... and ${manifest.actions.length - 5} more`));
269
+ }
270
+ const registry = new APIRegistry();
271
+ registry.addManifest(manifest, `https://${domain.replace(/^https?:\/\//, '')}/.well-known/agentbridge.json`);
272
+ console.log(chalk.green(`\n Auto-registered "${manifest.name}" to your local registry.`));
273
+ });
274
+ // ---- Search: find APIs on the AgentBridge directory ----
275
+ program
276
+ .command('search <query>')
277
+ .description('Search for APIs on the AgentBridge directory')
278
+ .option('--install', 'Auto-install the first result')
279
+ .option('--registry <url>', 'Custom registry URL')
280
+ .action(async (query, opts) => {
281
+ const registryUrl = opts?.registry || REGISTRY_URL;
282
+ console.log(chalk.gray(` Searching for "${query}"...`));
283
+ try {
284
+ const res = await fetch(`${registryUrl}/api/discover?q=${encodeURIComponent(query)}`);
285
+ if (!res.ok)
286
+ throw new Error(`HTTP ${res.status}`);
287
+ const data = await res.json();
288
+ if (!data.apis || data.apis.length === 0) {
289
+ console.log(chalk.yellow(` No APIs found for "${query}"`));
290
+ return;
291
+ }
292
+ console.log(chalk.bold(`\n Found ${data.apis.length} API(s):\n`));
293
+ for (const api of data.apis) {
294
+ const authBadge = api.auth_type && api.auth_type !== 'none'
295
+ ? chalk.yellow(` [${api.auth_type}]`)
296
+ : '';
297
+ console.log(` ${chalk.cyan(api.name)}${authBadge} — ${api.description}`);
298
+ console.log(chalk.gray(` ${api.actions.length} actions`));
299
+ console.log(chalk.gray(` Chat: agentbridge chat ${api.name}`));
300
+ console.log('');
301
+ }
302
+ if (opts?.install) {
303
+ const first = data.apis[0];
304
+ const manifestUrl = `${registryUrl}/api/${first.name}/manifest`;
305
+ console.log(chalk.gray(` Installing ${first.name}...`));
306
+ const registry = new APIRegistry();
307
+ const manifest = await registry.addFromURL(manifestUrl);
308
+ console.log(chalk.green(` Installed "${manifest.name}" (${manifest.actions.length} actions)`));
309
+ if (manifest.auth) {
310
+ console.log(chalk.yellow(` Requires auth. Run: agentbridge chat ${manifest.name} --token YOUR_TOKEN`));
311
+ }
312
+ }
313
+ }
314
+ catch (err) {
315
+ console.error(chalk.red(` Search failed: ${err.message}`));
316
+ }
317
+ });
318
+ // ---- Init: make your API agent-ready (local) ----
319
+ program
320
+ .command('init')
321
+ .description('Generate .agentbridge.json from your OpenAPI spec (local only, use "publish" for directory)')
322
+ .action(async () => {
323
+ await runInit();
324
+ });
325
+ // ---- Helper ----
326
+ function createLLMProvider() {
327
+ if (process.env.ANTHROPIC_API_KEY) {
328
+ return new ClaudeProvider({
329
+ apiKey: process.env.ANTHROPIC_API_KEY,
330
+ model: process.env.AGENTBRIDGE_MODEL || undefined,
331
+ });
332
+ }
333
+ if (process.env.OPENAI_API_KEY) {
334
+ return new OpenAIProvider({
335
+ apiKey: process.env.OPENAI_API_KEY,
336
+ model: process.env.AGENTBRIDGE_MODEL || undefined,
337
+ baseURL: process.env.OPENAI_BASE_URL || undefined,
338
+ });
339
+ }
340
+ console.error(chalk.red('No LLM API key found. Set one of:'));
341
+ console.error(' ANTHROPIC_API_KEY=sk-ant-...');
342
+ console.error(' OPENAI_API_KEY=sk-...');
343
+ console.error(' OPENAI_API_KEY=gsk_... OPENAI_BASE_URL=https://api.groq.com/openai/v1');
344
+ process.exit(1);
345
+ }
346
+ program.parse();
347
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/repl.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type { AgentBridgeEngine } from '@agentbridgeai/core';
2
+ export declare function startRepl(engine: AgentBridgeEngine): Promise<void>;
3
+ //# sourceMappingURL=repl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAA0B,MAAM,qBAAqB,CAAC;AAErF,wBAAsB,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuExE"}
package/dist/repl.js ADDED
@@ -0,0 +1,103 @@
1
+ import * as readline from 'readline';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ export async function startRepl(engine) {
5
+ const sessionId = engine.createSession();
6
+ const plugins = engine.getPlugins();
7
+ console.log('');
8
+ console.log(chalk.bold.cyan(' AgentBridge') + chalk.gray(' v0.1.0'));
9
+ console.log(chalk.gray(` Loaded plugins: ${plugins.map(p => p.name).join(', ') || 'none'}`));
10
+ console.log(chalk.gray(' Type naturally, or use /help, /plugins, /quit'));
11
+ console.log('');
12
+ const rl = readline.createInterface({
13
+ input: process.stdin,
14
+ output: process.stdout,
15
+ prompt: chalk.green('> '),
16
+ });
17
+ rl.prompt();
18
+ rl.on('line', async (line) => {
19
+ const input = line.trim();
20
+ if (!input) {
21
+ rl.prompt();
22
+ return;
23
+ }
24
+ // Handle slash commands
25
+ if (input.startsWith('/')) {
26
+ handleCommand(input, engine);
27
+ rl.prompt();
28
+ return;
29
+ }
30
+ const spinner = ora({ text: 'Thinking...', color: 'cyan' }).start();
31
+ try {
32
+ const response = await engine.chat(sessionId, input, {
33
+ onToolCall: (tc) => {
34
+ spinner.text = `Running ${tc.pluginName}.${tc.actionName}...`;
35
+ },
36
+ onToolResult: (name, result) => {
37
+ if (!result.success) {
38
+ spinner.warn(chalk.yellow(`${name} failed: ${result.message}`));
39
+ }
40
+ },
41
+ askUser: async (question) => {
42
+ spinner.stop();
43
+ return new Promise((resolve) => {
44
+ rl.question(chalk.yellow(` ${question} `), (answer) => {
45
+ resolve(answer);
46
+ spinner.start();
47
+ });
48
+ });
49
+ },
50
+ });
51
+ spinner.stop();
52
+ console.log('');
53
+ console.log(chalk.white(` ${response}`));
54
+ console.log('');
55
+ }
56
+ catch (error) {
57
+ spinner.fail(chalk.red(`Error: ${error.message}`));
58
+ console.log('');
59
+ }
60
+ rl.prompt();
61
+ });
62
+ rl.on('close', () => {
63
+ console.log(chalk.gray('\nGoodbye!'));
64
+ process.exit(0);
65
+ });
66
+ }
67
+ function handleCommand(input, engine) {
68
+ const cmd = input.toLowerCase();
69
+ if (cmd === '/quit' || cmd === '/exit' || cmd === '/q') {
70
+ console.log(chalk.gray('\nGoodbye!'));
71
+ process.exit(0);
72
+ }
73
+ if (cmd === '/plugins') {
74
+ const plugins = engine.getPlugins();
75
+ if (plugins.length === 0) {
76
+ console.log(chalk.gray(' No plugins installed.'));
77
+ return;
78
+ }
79
+ console.log('');
80
+ console.log(chalk.bold(' Installed Plugins:'));
81
+ for (const p of plugins) {
82
+ console.log(` ${chalk.cyan(p.name)} ${chalk.gray(`v${p.version}`)} — ${p.description}`);
83
+ for (const a of p.actions) {
84
+ console.log(` ${chalk.green(a.name)} — ${a.description}`);
85
+ }
86
+ }
87
+ console.log('');
88
+ return;
89
+ }
90
+ if (cmd === '/help') {
91
+ console.log('');
92
+ console.log(chalk.bold(' AgentBridge Commands:'));
93
+ console.log(` ${chalk.green('/plugins')} — List installed plugins and their actions`);
94
+ console.log(` ${chalk.green('/help')} — Show this help message`);
95
+ console.log(` ${chalk.green('/quit')} — Exit AgentBridge`);
96
+ console.log('');
97
+ console.log(chalk.gray(' Or just type naturally! e.g. "what\'s the weather in Tokyo?"'));
98
+ console.log('');
99
+ return;
100
+ }
101
+ console.log(chalk.yellow(` Unknown command: ${input}. Type /help for available commands.`));
102
+ }
103
+ //# sourceMappingURL=repl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@agentbridgeai/cli",
3
+ "version": "0.1.0",
4
+ "description": "CLI to chat with any API using natural language — powered by AgentBridge",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "bin": {
9
+ "agentbridge": "./dist/index.js"
10
+ },
11
+ "license": "MIT",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/ranausmanai/AgentBridge.git",
15
+ "directory": "packages/cli"
16
+ },
17
+ "homepage": "https://agentbridge.cc",
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "keywords": [
25
+ "cli",
26
+ "ai-agents",
27
+ "api",
28
+ "natural-language",
29
+ "agentbridge",
30
+ "chatbot"
31
+ ],
32
+ "dependencies": {
33
+ "chalk": "^5.3.0",
34
+ "ora": "^8.1.0",
35
+ "commander": "^12.1.0",
36
+ "conf": "^13.0.0",
37
+ "@agentbridgeai/core": "^0.1.0",
38
+ "@agentbridgeai/openapi": "^0.1.0",
39
+ "@agentbridgeai/llm": "^0.1.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/node": "^22.0.0",
43
+ "typescript": "^5.5.0"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc",
47
+ "dev": "tsc --watch",
48
+ "start": "node ./dist/index.js",
49
+ "clean": "rm -rf dist"
50
+ }
51
+ }