funolio-agent 0.3.8 → 0.5.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/agent-config.d.ts +39 -0
- package/dist/agent-config.d.ts.map +1 -0
- package/dist/agent-config.js +123 -0
- package/dist/agent-config.js.map +1 -0
- package/dist/approval.d.ts +26 -0
- package/dist/approval.d.ts.map +1 -0
- package/dist/approval.js +73 -0
- package/dist/approval.js.map +1 -0
- package/dist/bot-manager.d.ts +21 -14
- package/dist/bot-manager.d.ts.map +1 -1
- package/dist/bot-manager.js +75 -82
- package/dist/bot-manager.js.map +1 -1
- package/dist/cli.js +120 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +8 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +212 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/configure-provider.d.ts +14 -0
- package/dist/commands/configure-provider.d.ts.map +1 -0
- package/dist/commands/configure-provider.js +332 -0
- package/dist/commands/configure-provider.js.map +1 -0
- package/dist/commands/detect-tools.d.ts +7 -0
- package/dist/commands/detect-tools.d.ts.map +1 -0
- package/dist/commands/detect-tools.js +151 -0
- package/dist/commands/detect-tools.js.map +1 -0
- package/dist/commands/service.d.ts +6 -0
- package/dist/commands/service.d.ts.map +1 -0
- package/dist/commands/service.js +228 -0
- package/dist/commands/service.js.map +1 -0
- package/dist/commands/setup.d.ts +9 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +220 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/start.d.ts +2 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +142 -44
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +54 -22
- package/dist/commands/status.js.map +1 -1
- package/dist/config.d.ts +23 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/funolio-agent-linux-x64 +0 -0
- package/dist/message-loop.d.ts +6 -0
- package/dist/message-loop.d.ts.map +1 -1
- package/dist/message-loop.js +54 -15
- package/dist/message-loop.js.map +1 -1
- package/dist/mqtt-client.d.ts +19 -1
- package/dist/mqtt-client.d.ts.map +1 -1
- package/dist/mqtt-client.js +82 -1
- package/dist/mqtt-client.js.map +1 -1
- package/dist/providers/anthropic.d.ts +1 -0
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +58 -26
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/claude-cli.d.ts +1 -0
- package/dist/providers/claude-cli.d.ts.map +1 -1
- package/dist/providers/claude-cli.js +88 -14
- package/dist/providers/claude-cli.js.map +1 -1
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/google.js +31 -2
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/index.d.ts +8 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +42 -2
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openai.d.ts +3 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +23 -3
- package/dist/providers/openai.js.map +1 -1
- package/dist/service-mode.d.ts +24 -0
- package/dist/service-mode.d.ts.map +1 -0
- package/dist/service-mode.js +123 -0
- package/dist/service-mode.js.map +1 -0
- package/dist/tools/run-command.d.ts.map +1 -1
- package/dist/tools/run-command.js +4 -1
- package/dist/tools/run-command.js.map +1 -1
- package/package.json +21 -4
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
3
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
40
|
const commander_1 = require("commander");
|
|
5
41
|
const login_1 = require("./commands/login");
|
|
@@ -7,26 +43,104 @@ const init_1 = require("./commands/init");
|
|
|
7
43
|
const start_1 = require("./commands/start");
|
|
8
44
|
const status_1 = require("./commands/status");
|
|
9
45
|
const configure_1 = require("./commands/configure");
|
|
46
|
+
const setup_1 = require("./commands/setup");
|
|
47
|
+
const add_1 = require("./commands/add");
|
|
10
48
|
const update_check_1 = require("./update-check");
|
|
11
|
-
const
|
|
49
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
50
|
+
// Read version from package.json (single source of truth)
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
52
|
+
const CLI_VERSION = require('../package.json').version;
|
|
12
53
|
const program = new commander_1.Command();
|
|
13
54
|
program
|
|
14
55
|
.name('funolio-agent')
|
|
15
56
|
.description('Funolio AI agent - run AI tasks locally with your own API keys')
|
|
16
57
|
.version(CLI_VERSION)
|
|
17
|
-
.hook('preAction', async () => {
|
|
58
|
+
.hook('preAction', async (thisCmd, actionCmd) => {
|
|
59
|
+
// Skip update check in service mode — stdout must be JSON-only
|
|
60
|
+
const modeOpt = actionCmd.opts?.()?.mode;
|
|
61
|
+
if (modeOpt === 'service')
|
|
62
|
+
return;
|
|
18
63
|
await (0, update_check_1.checkForUpdates)(CLI_VERSION);
|
|
19
64
|
});
|
|
65
|
+
// === New commands (recommended flow) ===
|
|
66
|
+
program
|
|
67
|
+
.command('setup')
|
|
68
|
+
.description('Set up agent on a server (pairing code auth, no browser needed)')
|
|
69
|
+
.option('--code <code>', 'Pairing code from funolio.com')
|
|
70
|
+
.option('--name <name>', 'Agent name (defaults to hostname)')
|
|
71
|
+
.option('--provider <provider>', 'LLM provider (claude-cli, anthropic, openai, google)')
|
|
72
|
+
.option('--non-interactive', 'Skip all prompts (requires --code)')
|
|
73
|
+
.action(setup_1.setupCommand);
|
|
74
|
+
program
|
|
75
|
+
.command('add')
|
|
76
|
+
.description('Add another agent on this machine')
|
|
77
|
+
.option('--code <code>', 'Pairing code (optional if already authenticated)')
|
|
78
|
+
.option('--name <name>', 'Agent name')
|
|
79
|
+
.option('--provider <provider>', 'LLM provider (claude-cli, anthropic, openai, google)')
|
|
80
|
+
.action(add_1.addCommand);
|
|
81
|
+
// === Service management ===
|
|
82
|
+
const serviceCmd = program
|
|
83
|
+
.command('service')
|
|
84
|
+
.description('Manage systemd service for agent');
|
|
85
|
+
serviceCmd
|
|
86
|
+
.command('install')
|
|
87
|
+
.description('Install and start systemd service')
|
|
88
|
+
.option('--name <name>', 'Agent name')
|
|
89
|
+
.action(async (opts) => {
|
|
90
|
+
const { serviceInstallCommand } = await Promise.resolve().then(() => __importStar(require('./commands/service')));
|
|
91
|
+
await serviceInstallCommand(opts.name);
|
|
92
|
+
});
|
|
93
|
+
serviceCmd
|
|
94
|
+
.command('start')
|
|
95
|
+
.description('Start the systemd service')
|
|
96
|
+
.option('--name <name>', 'Agent name')
|
|
97
|
+
.action(async (opts) => {
|
|
98
|
+
const { serviceStartCommand } = await Promise.resolve().then(() => __importStar(require('./commands/service')));
|
|
99
|
+
await serviceStartCommand(opts.name);
|
|
100
|
+
});
|
|
101
|
+
serviceCmd
|
|
102
|
+
.command('stop')
|
|
103
|
+
.description('Stop the systemd service')
|
|
104
|
+
.option('--name <name>', 'Agent name')
|
|
105
|
+
.action(async (opts) => {
|
|
106
|
+
const { serviceStopCommand } = await Promise.resolve().then(() => __importStar(require('./commands/service')));
|
|
107
|
+
await serviceStopCommand(opts.name);
|
|
108
|
+
});
|
|
109
|
+
serviceCmd
|
|
110
|
+
.command('status')
|
|
111
|
+
.description('Show systemd service status')
|
|
112
|
+
.option('--name <name>', 'Agent name')
|
|
113
|
+
.action(async (opts) => {
|
|
114
|
+
const { serviceStatusCommand } = await Promise.resolve().then(() => __importStar(require('./commands/service')));
|
|
115
|
+
await serviceStatusCommand(opts.name);
|
|
116
|
+
});
|
|
117
|
+
serviceCmd
|
|
118
|
+
.command('uninstall')
|
|
119
|
+
.description('Remove systemd service')
|
|
120
|
+
.option('--name <name>', 'Agent name')
|
|
121
|
+
.action(async (opts) => {
|
|
122
|
+
const { serviceUninstallCommand } = await Promise.resolve().then(() => __importStar(require('./commands/service')));
|
|
123
|
+
await serviceUninstallCommand(opts.name);
|
|
124
|
+
});
|
|
125
|
+
// === Existing commands (backward compatible) ===
|
|
20
126
|
program
|
|
21
127
|
.command('init')
|
|
22
128
|
.description('Set up the agent: API key, connection test, tool installation')
|
|
23
129
|
.option('--lite', 'Skip heavy tools (Playwright, Docker) for constrained environments')
|
|
24
|
-
.action(
|
|
130
|
+
.action(async (options) => {
|
|
131
|
+
console.log(chalk_1.default.yellow('\n⚠ `funolio-agent init` is deprecated. Use `funolio-agent setup` instead.'));
|
|
132
|
+
console.log(chalk_1.default.gray(' The setup command supports headless pairing codes and multi-agent configs.\n'));
|
|
133
|
+
await (0, init_1.initCommand)(options);
|
|
134
|
+
});
|
|
25
135
|
program
|
|
26
136
|
.command('login')
|
|
27
137
|
.description('Authenticate with funolio.com')
|
|
28
138
|
.option('--token <token>', 'Use an API token directly instead of browser login')
|
|
29
|
-
.action(
|
|
139
|
+
.action(async (options) => {
|
|
140
|
+
console.log(chalk_1.default.yellow('\n⚠ `funolio-agent login` is deprecated. Use `funolio-agent setup` instead.'));
|
|
141
|
+
console.log(chalk_1.default.gray(' The setup command uses pairing codes that work on headless servers.\n'));
|
|
142
|
+
await (0, login_1.loginCommand)(options);
|
|
143
|
+
});
|
|
30
144
|
program
|
|
31
145
|
.command('start')
|
|
32
146
|
.description('Start the agent and connect to Funolio')
|
|
@@ -34,6 +148,8 @@ program
|
|
|
34
148
|
.option('--provider <provider>', 'LLM provider (anthropic, openai, google)')
|
|
35
149
|
.option('--model <model>', 'LLM model to use')
|
|
36
150
|
.option('--api-key <key>', 'LLM API key (or set via env: ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY)')
|
|
151
|
+
.option('--mode <mode>', 'Run mode: interactive (default) or service (headless, for Tauri sidecar)')
|
|
152
|
+
.option('--agent <name>', 'Agent name (for multi-agent setups)')
|
|
37
153
|
.action(start_1.startCommand);
|
|
38
154
|
program
|
|
39
155
|
.command('configure')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AASA,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAYD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA2KnE"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.addCommand = addCommand;
|
|
40
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
+
const readline = __importStar(require("readline"));
|
|
42
|
+
const os = __importStar(require("os"));
|
|
43
|
+
const config_1 = require("../config");
|
|
44
|
+
const agent_config_1 = require("../agent-config");
|
|
45
|
+
const configure_provider_1 = require("./configure-provider");
|
|
46
|
+
const detect_tools_1 = require("./detect-tools");
|
|
47
|
+
const service_1 = require("./service");
|
|
48
|
+
function prompt(question) {
|
|
49
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
50
|
+
return new Promise((resolve) => {
|
|
51
|
+
rl.question(question, (answer) => {
|
|
52
|
+
rl.close();
|
|
53
|
+
resolve(answer.trim());
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async function addCommand(options) {
|
|
58
|
+
console.log(chalk_1.default.blue.bold('\n➕ Add Another Funolio Agent\n'));
|
|
59
|
+
const config = (0, config_1.loadConfig)();
|
|
60
|
+
// Show existing agents
|
|
61
|
+
const existingAgents = (0, agent_config_1.listAgents)();
|
|
62
|
+
if (existingAgents.length > 0) {
|
|
63
|
+
console.log(chalk_1.default.white(' Existing agents on this machine:\n'));
|
|
64
|
+
for (const name of existingAgents) {
|
|
65
|
+
const agentCfg = (0, agent_config_1.loadAgentConfig)(name);
|
|
66
|
+
if (agentCfg) {
|
|
67
|
+
console.log(chalk_1.default.gray(` • ${name} — ${agentCfg.provider}/${agentCfg.model}`));
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.log(chalk_1.default.gray(` • ${name} (config missing)`));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
console.log('');
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.log(chalk_1.default.yellow(' No existing agents found. Consider using `funolio-agent setup` instead.\n'));
|
|
77
|
+
}
|
|
78
|
+
// Auth — reuse existing or pair new
|
|
79
|
+
if (!config.auth?.token) {
|
|
80
|
+
// Need to authenticate first
|
|
81
|
+
let code = options.code;
|
|
82
|
+
if (!code) {
|
|
83
|
+
code = await prompt(' Pairing code (from funolio.com): ');
|
|
84
|
+
}
|
|
85
|
+
if (!code || code.length < 4 || code.length > 8) {
|
|
86
|
+
console.error(chalk_1.default.red(' ✗ Invalid pairing code.'));
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
console.log(chalk_1.default.blue(' Connecting to Funolio...'));
|
|
90
|
+
try {
|
|
91
|
+
const res = await fetch(`${config_1.FUNOLIO_API_URL}/api/v1/agent/auth/pair`, {
|
|
92
|
+
method: 'POST',
|
|
93
|
+
headers: { 'Content-Type': 'application/json' },
|
|
94
|
+
body: JSON.stringify({ pairingCode: code.toUpperCase() }),
|
|
95
|
+
});
|
|
96
|
+
if (!res.ok) {
|
|
97
|
+
const err = await res.json().catch(() => ({ error: res.statusText }));
|
|
98
|
+
console.error(chalk_1.default.red(` ✗ ${err.error || 'Pairing failed'}`));
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
const data = await res.json();
|
|
102
|
+
config.auth = {
|
|
103
|
+
token: data.token,
|
|
104
|
+
userId: data.userId,
|
|
105
|
+
username: data.username,
|
|
106
|
+
mqttJwt: data.mqttJwt,
|
|
107
|
+
mqttJwtExpiresAt: data.mqttJwtExpiresAt,
|
|
108
|
+
expiresAt: Date.now() + 365 * 24 * 60 * 60 * 1000,
|
|
109
|
+
};
|
|
110
|
+
(0, config_1.saveConfig)(config);
|
|
111
|
+
console.log(chalk_1.default.green(` ✓ Authenticated as ${data.username}`));
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
console.error(chalk_1.default.red(` ✗ Could not reach Funolio: ${err.message}`));
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
console.log(chalk_1.default.green(` ✓ Using existing auth: ${config.auth.username}`));
|
|
120
|
+
// Optionally pair with a different code (different account)
|
|
121
|
+
if (options.code) {
|
|
122
|
+
console.log(chalk_1.default.blue(' Pairing with new code...'));
|
|
123
|
+
try {
|
|
124
|
+
const res = await fetch(`${config_1.FUNOLIO_API_URL}/api/v1/agent/auth/pair`, {
|
|
125
|
+
method: 'POST',
|
|
126
|
+
headers: { 'Content-Type': 'application/json' },
|
|
127
|
+
body: JSON.stringify({ pairingCode: options.code.toUpperCase() }),
|
|
128
|
+
});
|
|
129
|
+
if (res.ok) {
|
|
130
|
+
const data = await res.json();
|
|
131
|
+
config.auth = {
|
|
132
|
+
token: data.token,
|
|
133
|
+
userId: data.userId,
|
|
134
|
+
username: data.username,
|
|
135
|
+
mqttJwt: data.mqttJwt,
|
|
136
|
+
mqttJwtExpiresAt: data.mqttJwtExpiresAt,
|
|
137
|
+
expiresAt: Date.now() + 365 * 24 * 60 * 60 * 1000,
|
|
138
|
+
};
|
|
139
|
+
(0, config_1.saveConfig)(config);
|
|
140
|
+
console.log(chalk_1.default.green(` ✓ Re-authenticated as ${data.username}`));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch { /* use existing auth */ }
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Agent name
|
|
147
|
+
let agentName = options.name;
|
|
148
|
+
if (!agentName) {
|
|
149
|
+
const suggestion = `agent-${existingAgents.length + 1}`;
|
|
150
|
+
agentName = (await prompt(`\n Agent name [${suggestion}]: `)) || suggestion;
|
|
151
|
+
}
|
|
152
|
+
agentName = agentName.replace(/[^a-zA-Z0-9_-]/g, '-').toLowerCase();
|
|
153
|
+
// Check for duplicates
|
|
154
|
+
if (existingAgents.includes(agentName)) {
|
|
155
|
+
console.error(chalk_1.default.red(` ✗ Agent "${agentName}" already exists.`));
|
|
156
|
+
console.error(chalk_1.default.gray(' Choose a different name or remove the existing agent first.'));
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
// Register bot on server
|
|
160
|
+
let botId;
|
|
161
|
+
try {
|
|
162
|
+
const createRes = await fetch(`${config_1.FUNOLIO_API_URL}/api/v1/agent/bots`, {
|
|
163
|
+
method: 'POST',
|
|
164
|
+
headers: {
|
|
165
|
+
'Content-Type': 'application/json',
|
|
166
|
+
Authorization: `Bearer ${config.auth.token}`,
|
|
167
|
+
},
|
|
168
|
+
body: JSON.stringify({
|
|
169
|
+
name: agentName,
|
|
170
|
+
installMethod: 'server',
|
|
171
|
+
serverHost: os.hostname(),
|
|
172
|
+
}),
|
|
173
|
+
});
|
|
174
|
+
if (createRes.ok) {
|
|
175
|
+
const botData = await createRes.json();
|
|
176
|
+
botId = botData.id;
|
|
177
|
+
console.log(chalk_1.default.green(` ✓ Agent "${botData.name}" registered`));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
console.log(chalk_1.default.yellow(' ⚠ Could not register bot (non-fatal)'));
|
|
182
|
+
}
|
|
183
|
+
// LLM provider (can be different from other agents)
|
|
184
|
+
const providerConfig = await (0, configure_provider_1.configureProvider)({
|
|
185
|
+
provider: options.provider,
|
|
186
|
+
}, config);
|
|
187
|
+
// Save agent-specific config
|
|
188
|
+
const agentLocalConfig = (0, agent_config_1.createAgentLocalConfig)(agentName, botId, providerConfig);
|
|
189
|
+
(0, agent_config_1.saveAgentConfig)(agentName, agentLocalConfig);
|
|
190
|
+
(0, config_1.saveConfig)(config);
|
|
191
|
+
// Detect tools & report
|
|
192
|
+
await (0, detect_tools_1.detectAndReport)(config.auth.token);
|
|
193
|
+
// Systemd service
|
|
194
|
+
if (process.platform === 'linux') {
|
|
195
|
+
const installService = (await prompt('\n🔧 Install as system service? (Y/n): ')).toLowerCase() !== 'n';
|
|
196
|
+
if (installService) {
|
|
197
|
+
await (0, service_1.serviceInstallCommand)(agentName);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Summary
|
|
201
|
+
console.log(chalk_1.default.green.bold('\n✅ Agent added!\n'));
|
|
202
|
+
console.log(chalk_1.default.gray(` Name: ${agentName}`));
|
|
203
|
+
console.log(chalk_1.default.gray(` Provider: ${providerConfig.id} (${providerConfig.defaultModel})`));
|
|
204
|
+
console.log(chalk_1.default.gray(` Config: ~/.funolio/agents/${agentName}/config.json`));
|
|
205
|
+
console.log('');
|
|
206
|
+
const allAgents = (0, agent_config_1.listAgents)();
|
|
207
|
+
if (allAgents.length > 1) {
|
|
208
|
+
console.log(chalk_1.default.white(` All agents on this machine: ${allAgents.join(', ')}`));
|
|
209
|
+
}
|
|
210
|
+
console.log(chalk_1.default.cyan('\n Dashboard: https://funolio.com/mission-control\n'));
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ProviderConfig, type FunolioConfig } from '../config';
|
|
2
|
+
interface ProviderOptions {
|
|
3
|
+
provider?: string;
|
|
4
|
+
nonInteractive?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Interactive LLM provider configuration.
|
|
8
|
+
* Used by both `setup` and `add` commands.
|
|
9
|
+
* Saves the provider config to the provided config object (or global config).
|
|
10
|
+
* Returns the configured provider.
|
|
11
|
+
*/
|
|
12
|
+
export declare function configureProvider(options: ProviderOptions, config?: FunolioConfig): Promise<ProviderConfig>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=configure-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure-provider.d.ts","sourceRoot":"","sources":["../../src/commands/configure-provider.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2D,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAE7H,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAwLD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAsHjH"}
|