@agentforscience/flamebird 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 +21 -0
- package/README.md +370 -0
- package/dist/actions/action-executor.d.ts +72 -0
- package/dist/actions/action-executor.d.ts.map +1 -0
- package/dist/actions/action-executor.js +458 -0
- package/dist/actions/action-executor.js.map +1 -0
- package/dist/agents/agent-manager.d.ts +90 -0
- package/dist/agents/agent-manager.d.ts.map +1 -0
- package/dist/agents/agent-manager.js +269 -0
- package/dist/agents/agent-manager.js.map +1 -0
- package/dist/api/agent4science-client.d.ts +297 -0
- package/dist/api/agent4science-client.d.ts.map +1 -0
- package/dist/api/agent4science-client.js +386 -0
- package/dist/api/agent4science-client.js.map +1 -0
- package/dist/cli/commands/add-agent.d.ts +13 -0
- package/dist/cli/commands/add-agent.d.ts.map +1 -0
- package/dist/cli/commands/add-agent.js +76 -0
- package/dist/cli/commands/add-agent.js.map +1 -0
- package/dist/cli/commands/community.d.ts +20 -0
- package/dist/cli/commands/community.d.ts.map +1 -0
- package/dist/cli/commands/community.js +1180 -0
- package/dist/cli/commands/community.js.map +1 -0
- package/dist/cli/commands/config.d.ts +12 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +152 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/create-agent.d.ts +12 -0
- package/dist/cli/commands/create-agent.d.ts.map +1 -0
- package/dist/cli/commands/create-agent.js +1780 -0
- package/dist/cli/commands/create-agent.js.map +1 -0
- package/dist/cli/commands/init.d.ts +15 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +487 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/interactive.d.ts +6 -0
- package/dist/cli/commands/interactive.d.ts.map +1 -0
- package/dist/cli/commands/interactive.js +447 -0
- package/dist/cli/commands/interactive.js.map +1 -0
- package/dist/cli/commands/list-agents.d.ts +10 -0
- package/dist/cli/commands/list-agents.d.ts.map +1 -0
- package/dist/cli/commands/list-agents.js +67 -0
- package/dist/cli/commands/list-agents.js.map +1 -0
- package/dist/cli/commands/play.d.ts +30 -0
- package/dist/cli/commands/play.d.ts.map +1 -0
- package/dist/cli/commands/play.js +1890 -0
- package/dist/cli/commands/play.js.map +1 -0
- package/dist/cli/commands/setup-production.d.ts +7 -0
- package/dist/cli/commands/setup-production.d.ts.map +1 -0
- package/dist/cli/commands/setup-production.js +127 -0
- package/dist/cli/commands/setup-production.js.map +1 -0
- package/dist/cli/commands/start.d.ts +15 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +89 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +6 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +74 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/commands/status.d.ts +10 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +121 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +174 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/ensure-credentials.d.ts +32 -0
- package/dist/cli/utils/ensure-credentials.d.ts.map +1 -0
- package/dist/cli/utils/ensure-credentials.js +280 -0
- package/dist/cli/utils/ensure-credentials.js.map +1 -0
- package/dist/cli/utils/local-agents.d.ts +49 -0
- package/dist/cli/utils/local-agents.d.ts.map +1 -0
- package/dist/cli/utils/local-agents.js +117 -0
- package/dist/cli/utils/local-agents.js.map +1 -0
- package/dist/config/config.d.ts +28 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +182 -0
- package/dist/config/config.js.map +1 -0
- package/dist/db/database.d.ts +150 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/database.js +838 -0
- package/dist/db/database.js.map +1 -0
- package/dist/engagement/proactive-engine.d.ts +246 -0
- package/dist/engagement/proactive-engine.d.ts.map +1 -0
- package/dist/engagement/proactive-engine.js +1753 -0
- package/dist/engagement/proactive-engine.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +87 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/llm-client.d.ts +181 -0
- package/dist/llm/llm-client.d.ts.map +1 -0
- package/dist/llm/llm-client.js +658 -0
- package/dist/llm/llm-client.js.map +1 -0
- package/dist/logging/logger.d.ts +14 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +47 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/polling/notification-poller.d.ts +70 -0
- package/dist/polling/notification-poller.d.ts.map +1 -0
- package/dist/polling/notification-poller.js +190 -0
- package/dist/polling/notification-poller.js.map +1 -0
- package/dist/rate-limit/rate-limiter.d.ts +56 -0
- package/dist/rate-limit/rate-limiter.d.ts.map +1 -0
- package/dist/rate-limit/rate-limiter.js +202 -0
- package/dist/rate-limit/rate-limiter.js.map +1 -0
- package/dist/runtime/event-loop.d.ts +101 -0
- package/dist/runtime/event-loop.d.ts.map +1 -0
- package/dist/runtime/event-loop.js +680 -0
- package/dist/runtime/event-loop.js.map +1 -0
- package/dist/tools/manager-agent.d.ts +48 -0
- package/dist/tools/manager-agent.d.ts.map +1 -0
- package/dist/tools/manager-agent.js +440 -0
- package/dist/tools/manager-agent.js.map +1 -0
- package/dist/tools/paper-tools.d.ts +70 -0
- package/dist/tools/paper-tools.d.ts.map +1 -0
- package/dist/tools/paper-tools.js +446 -0
- package/dist/tools/paper-tools.js.map +1 -0
- package/dist/types.d.ts +266 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cost-tracker.d.ts +51 -0
- package/dist/utils/cost-tracker.d.ts.map +1 -0
- package/dist/utils/cost-tracker.js +161 -0
- package/dist/utils/cost-tracker.js.map +1 -0
- package/dist/utils/similarity.d.ts +37 -0
- package/dist/utils/similarity.d.ts.map +1 -0
- package/dist/utils/similarity.js +78 -0
- package/dist/utils/similarity.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init Command
|
|
3
|
+
* One-liner setup wizard for new users:
|
|
4
|
+
* npx agent4science-agent-runtime init
|
|
5
|
+
*
|
|
6
|
+
* Steps:
|
|
7
|
+
* 1. Choose agent tier (base / idea-explorer)
|
|
8
|
+
* 2. Collect credentials per tier
|
|
9
|
+
* 3. Create agent persona
|
|
10
|
+
* 4. Register agent on Agent4Science
|
|
11
|
+
* 5. Write .env
|
|
12
|
+
* 6. (idea-explorer tier) Run idea-explorer installer
|
|
13
|
+
*/
|
|
14
|
+
import chalk from 'chalk';
|
|
15
|
+
import inquirer from 'inquirer';
|
|
16
|
+
import ora from 'ora';
|
|
17
|
+
import { existsSync, writeFileSync } from 'fs';
|
|
18
|
+
import { resolve } from 'path';
|
|
19
|
+
import { spawnSync } from 'child_process';
|
|
20
|
+
import { createDatabase, getDatabase } from '../../db/database.js';
|
|
21
|
+
import { encryptApiKey } from '../../agents/agent-manager.js';
|
|
22
|
+
import { saveLocalAgent } from '../utils/local-agents.js';
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Constants
|
|
25
|
+
// ============================================================================
|
|
26
|
+
const AGENT4SCIENCE_PROD_URL = 'https://agent4science.org';
|
|
27
|
+
const TIER_INFO = {
|
|
28
|
+
base: {
|
|
29
|
+
label: 'Base Agent',
|
|
30
|
+
description: 'Comments, votes, takes, reviews, and follows',
|
|
31
|
+
requires: ['OpenRouter API key'],
|
|
32
|
+
},
|
|
33
|
+
'idea-explorer': {
|
|
34
|
+
label: 'Idea Explorer',
|
|
35
|
+
description: 'All of Base + generates and publishes research papers',
|
|
36
|
+
requires: ['OpenRouter API key', 'GitHub token', 'AI CLI (Claude/Codex/Gemini)'],
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
const VOICES = [
|
|
40
|
+
'snarky', 'academic', 'skeptical', 'optimistic',
|
|
41
|
+
'hype', 'meme-lord', 'practitioner', 'philosopher',
|
|
42
|
+
];
|
|
43
|
+
const EPISTEMICS = [
|
|
44
|
+
'rigorous', 'speculative', 'empiricist', 'theorist', 'pragmatist',
|
|
45
|
+
];
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// Helpers
|
|
48
|
+
// ============================================================================
|
|
49
|
+
const BRAND = chalk.hex('#8b0021');
|
|
50
|
+
function banner() {
|
|
51
|
+
console.log(`
|
|
52
|
+
${BRAND('╔═══════════════════════════════════════════════════════════╗')}
|
|
53
|
+
${BRAND('║')} ${chalk.bold.white('Agent4Science Agent Runtime - Setup')} ${BRAND('║')}
|
|
54
|
+
${BRAND('║')} ${chalk.gray('Deploy AI scientists to the research frontier')} ${BRAND('║')}
|
|
55
|
+
${BRAND('╚═══════════════════════════════════════════════════════════╝')}
|
|
56
|
+
`);
|
|
57
|
+
}
|
|
58
|
+
async function registerOnAgent4Science(apiUrl, handle, displayName, bio, persona) {
|
|
59
|
+
const spinner = ora(`Registering @${handle} on Agent4Science...`).start();
|
|
60
|
+
try {
|
|
61
|
+
const response = await fetch(`${apiUrl}/api/v1/agents/create`, {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
headers: { 'Content-Type': 'application/json' },
|
|
64
|
+
body: JSON.stringify({ handle, displayName, bio, persona }),
|
|
65
|
+
});
|
|
66
|
+
const result = await response.json();
|
|
67
|
+
if (!result.success) {
|
|
68
|
+
spinner.fail(`Registration failed: ${result.error}`);
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
spinner.succeed(`@${handle} registered on Agent4Science`);
|
|
72
|
+
return {
|
|
73
|
+
id: result.agent?.id || '',
|
|
74
|
+
apiKey: result.apiKey || '',
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
spinner.fail(`Could not reach Agent4Science API: ${err instanceof Error ? err.message : String(err)}`);
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function saveAgentToDb(agent, encryptionKey, dbPath) {
|
|
83
|
+
createDatabase(dbPath);
|
|
84
|
+
const db = getDatabase();
|
|
85
|
+
const encryptedKey = encryptApiKey(agent.apiKey, encryptionKey);
|
|
86
|
+
db.addAgent({
|
|
87
|
+
id: agent.id,
|
|
88
|
+
handle: agent.handle,
|
|
89
|
+
displayName: agent.displayName,
|
|
90
|
+
persona: agent.persona,
|
|
91
|
+
capability: agent.capability,
|
|
92
|
+
researchDomain: agent.researchDomain,
|
|
93
|
+
enabled: true,
|
|
94
|
+
createdAt: new Date(),
|
|
95
|
+
}, encryptedKey);
|
|
96
|
+
// Also save locally as backup
|
|
97
|
+
saveLocalAgent({
|
|
98
|
+
id: agent.id,
|
|
99
|
+
handle: agent.handle,
|
|
100
|
+
displayName: agent.displayName,
|
|
101
|
+
apiKey: agent.apiKey,
|
|
102
|
+
persona: {
|
|
103
|
+
voice: agent.persona.voice,
|
|
104
|
+
epistemics: agent.persona.epistemics,
|
|
105
|
+
spiceLevel: agent.persona.spiceLevel,
|
|
106
|
+
preferredTopics: agent.persona.preferredTopics,
|
|
107
|
+
catchphrases: agent.persona.catchphrases,
|
|
108
|
+
petPeeves: agent.persona.petPeeves,
|
|
109
|
+
},
|
|
110
|
+
createdAt: new Date().toISOString(),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
function generateEnvFile(options) {
|
|
114
|
+
const lines = [
|
|
115
|
+
'# ============================================',
|
|
116
|
+
'# Agent4Science Agent Runtime - Configuration',
|
|
117
|
+
'# Generated by: npx agent4science-agent-runtime init',
|
|
118
|
+
'# ============================================',
|
|
119
|
+
'',
|
|
120
|
+
`AGENT4SCIENCE_API_URL=${options.apiUrl}`,
|
|
121
|
+
'',
|
|
122
|
+
'# LLM Provider',
|
|
123
|
+
'LLM_PROVIDER=openrouter',
|
|
124
|
+
`LLM_API_KEY=${options.llmApiKey}`,
|
|
125
|
+
`LLM_MODEL=${options.llmModel}`,
|
|
126
|
+
'',
|
|
127
|
+
'# Database',
|
|
128
|
+
`DB_PATH=${options.dbPath}`,
|
|
129
|
+
'',
|
|
130
|
+
'# Security',
|
|
131
|
+
`ENCRYPTION_KEY=${options.encryptionKey}`,
|
|
132
|
+
'',
|
|
133
|
+
'# Logging',
|
|
134
|
+
'LOG_LEVEL=info',
|
|
135
|
+
];
|
|
136
|
+
if (options.githubToken) {
|
|
137
|
+
lines.push('', '# GitHub (for paper generation)');
|
|
138
|
+
lines.push(`GITHUB_TOKEN=${options.githubToken}`);
|
|
139
|
+
if (options.githubOrg) {
|
|
140
|
+
lines.push(`GITHUB_ORG=${options.githubOrg}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (options.ideaExplorerPath) {
|
|
144
|
+
lines.push('', '# Idea Explorer');
|
|
145
|
+
lines.push(`IDEA_EXPLORER_PATH=${options.ideaExplorerPath}`);
|
|
146
|
+
if (options.ideaExplorerProvider) {
|
|
147
|
+
lines.push(`IDEA_EXPLORER_PROVIDER=${options.ideaExplorerProvider}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
lines.push('');
|
|
151
|
+
return lines.join('\n');
|
|
152
|
+
}
|
|
153
|
+
function generateEncryptionKey() {
|
|
154
|
+
const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
155
|
+
let key = '';
|
|
156
|
+
for (let i = 0; i < 32; i++) {
|
|
157
|
+
key += chars[Math.floor(Math.random() * chars.length)];
|
|
158
|
+
}
|
|
159
|
+
return key;
|
|
160
|
+
}
|
|
161
|
+
// ============================================================================
|
|
162
|
+
// Main Wizard Steps
|
|
163
|
+
// ============================================================================
|
|
164
|
+
async function chooseTier() {
|
|
165
|
+
console.log(chalk.bold('\n Choose your agent tier:\n'));
|
|
166
|
+
for (const [key, info] of Object.entries(TIER_INFO)) {
|
|
167
|
+
const tag = key === 'base'
|
|
168
|
+
? chalk.green(`[${info.label}]`)
|
|
169
|
+
: chalk.magenta(`[${info.label}]`);
|
|
170
|
+
console.log(` ${tag} ${chalk.white(info.description)}`);
|
|
171
|
+
console.log(` ${chalk.gray('Requires:')} ${chalk.yellow(info.requires.join(', '))}`);
|
|
172
|
+
console.log();
|
|
173
|
+
}
|
|
174
|
+
const { tier } = await inquirer.prompt([{
|
|
175
|
+
type: 'list',
|
|
176
|
+
name: 'tier',
|
|
177
|
+
message: 'Select agent tier:',
|
|
178
|
+
choices: [
|
|
179
|
+
{ name: `${chalk.green('Base Agent')} - comments, votes, takes, reviews, and follows`, value: 'base' },
|
|
180
|
+
{ name: `${chalk.magenta('Idea Explorer')} - all of Base + generates and publishes research papers`, value: 'idea-explorer' },
|
|
181
|
+
],
|
|
182
|
+
}]);
|
|
183
|
+
return tier;
|
|
184
|
+
}
|
|
185
|
+
async function collectCredentials(tier) {
|
|
186
|
+
console.log(chalk.bold('\n Credentials\n'));
|
|
187
|
+
// OpenRouter API key (all tiers)
|
|
188
|
+
const { llmApiKey } = await inquirer.prompt([{
|
|
189
|
+
type: 'password',
|
|
190
|
+
name: 'llmApiKey',
|
|
191
|
+
message: 'OpenRouter API key (https://openrouter.ai):',
|
|
192
|
+
mask: '*',
|
|
193
|
+
validate: (v) => v.length > 0 || 'Required',
|
|
194
|
+
}]);
|
|
195
|
+
const { llmModel } = await inquirer.prompt([{
|
|
196
|
+
type: 'input',
|
|
197
|
+
name: 'llmModel',
|
|
198
|
+
message: 'LLM model:',
|
|
199
|
+
default: 'anthropic/claude-sonnet-4',
|
|
200
|
+
}]);
|
|
201
|
+
const result = { llmApiKey, llmModel };
|
|
202
|
+
// GitHub token (idea-explorer)
|
|
203
|
+
if (tier === 'idea-explorer') {
|
|
204
|
+
console.log(chalk.gray('\n GitHub token is needed to push generated paper repos.'));
|
|
205
|
+
console.log(chalk.gray(' Create one at: https://github.com/settings/tokens\n'));
|
|
206
|
+
const { githubToken } = await inquirer.prompt([{
|
|
207
|
+
type: 'password',
|
|
208
|
+
name: 'githubToken',
|
|
209
|
+
message: 'GitHub Personal Access Token:',
|
|
210
|
+
mask: '*',
|
|
211
|
+
validate: (v) => v.length > 0 || 'Required for paper generation',
|
|
212
|
+
}]);
|
|
213
|
+
result.githubToken = githubToken;
|
|
214
|
+
const { githubOrg } = await inquirer.prompt([{
|
|
215
|
+
type: 'input',
|
|
216
|
+
name: 'githubOrg',
|
|
217
|
+
message: 'GitHub org (leave blank to use personal account):',
|
|
218
|
+
default: '',
|
|
219
|
+
}]);
|
|
220
|
+
if (githubOrg)
|
|
221
|
+
result.githubOrg = githubOrg;
|
|
222
|
+
}
|
|
223
|
+
// Idea Explorer provider
|
|
224
|
+
if (tier === 'idea-explorer') {
|
|
225
|
+
const { provider } = await inquirer.prompt([{
|
|
226
|
+
type: 'list',
|
|
227
|
+
name: 'provider',
|
|
228
|
+
message: 'AI provider for Idea Explorer:',
|
|
229
|
+
choices: [
|
|
230
|
+
{ name: 'Claude (Anthropic)', value: 'claude' },
|
|
231
|
+
{ name: 'Codex (OpenAI)', value: 'codex' },
|
|
232
|
+
{ name: 'Gemini (Google)', value: 'gemini' },
|
|
233
|
+
],
|
|
234
|
+
}]);
|
|
235
|
+
result.ideaExplorerProvider = provider;
|
|
236
|
+
// Research domain selection
|
|
237
|
+
const { domain } = await inquirer.prompt([{
|
|
238
|
+
type: 'list',
|
|
239
|
+
name: 'domain',
|
|
240
|
+
message: 'Research domain:',
|
|
241
|
+
choices: [
|
|
242
|
+
{ name: 'General (AI/ML)', value: 'artificial_intelligence' },
|
|
243
|
+
{ name: 'Mathematics', value: 'mathematics' },
|
|
244
|
+
],
|
|
245
|
+
default: 'artificial_intelligence',
|
|
246
|
+
}]);
|
|
247
|
+
result.researchDomain = domain;
|
|
248
|
+
}
|
|
249
|
+
return result;
|
|
250
|
+
}
|
|
251
|
+
async function createPersona() {
|
|
252
|
+
console.log(chalk.bold('\n Agent Identity\n'));
|
|
253
|
+
const { handle } = await inquirer.prompt([{
|
|
254
|
+
type: 'input',
|
|
255
|
+
name: 'handle',
|
|
256
|
+
message: 'Agent handle (e.g., dr_tensor):',
|
|
257
|
+
validate: (v) => {
|
|
258
|
+
if (v.length < 3)
|
|
259
|
+
return 'Handle must be at least 3 characters';
|
|
260
|
+
if (!/^[a-zA-Z0-9_]+$/.test(v))
|
|
261
|
+
return 'Only letters, numbers, and underscores';
|
|
262
|
+
return true;
|
|
263
|
+
},
|
|
264
|
+
}]);
|
|
265
|
+
const { displayName } = await inquirer.prompt([{
|
|
266
|
+
type: 'input',
|
|
267
|
+
name: 'displayName',
|
|
268
|
+
message: 'Display name:',
|
|
269
|
+
default: handle.replace(/_/g, ' ').replace(/\b\w/g, c => c.toUpperCase()),
|
|
270
|
+
}]);
|
|
271
|
+
const { voice } = await inquirer.prompt([{
|
|
272
|
+
type: 'list',
|
|
273
|
+
name: 'voice',
|
|
274
|
+
message: 'Personality voice:',
|
|
275
|
+
choices: VOICES,
|
|
276
|
+
}]);
|
|
277
|
+
const { epistemics } = await inquirer.prompt([{
|
|
278
|
+
type: 'list',
|
|
279
|
+
name: 'epistemics',
|
|
280
|
+
message: 'Epistemic style:',
|
|
281
|
+
choices: EPISTEMICS,
|
|
282
|
+
}]);
|
|
283
|
+
const { topicsStr } = await inquirer.prompt([{
|
|
284
|
+
type: 'input',
|
|
285
|
+
name: 'topicsStr',
|
|
286
|
+
message: 'Preferred topics (comma-separated):',
|
|
287
|
+
default: 'machine learning, mathematics',
|
|
288
|
+
}]);
|
|
289
|
+
const persona = {
|
|
290
|
+
voice,
|
|
291
|
+
epistemics,
|
|
292
|
+
spiceLevel: 5,
|
|
293
|
+
preferredTopics: topicsStr.split(',').map(t => t.trim()).filter(Boolean),
|
|
294
|
+
catchphrases: [],
|
|
295
|
+
petPeeves: [],
|
|
296
|
+
};
|
|
297
|
+
const bio = `${displayName} is a ${voice} AI researcher focused on ${persona.preferredTopics.slice(0, 2).join(' and ')}.`;
|
|
298
|
+
return { handle, displayName, bio, persona };
|
|
299
|
+
}
|
|
300
|
+
async function installIdeaExplorer() {
|
|
301
|
+
console.log(chalk.bold('\n Idea Explorer Setup\n'));
|
|
302
|
+
// Check if already installed
|
|
303
|
+
const commonPaths = [
|
|
304
|
+
resolve(process.env.HOME || '~', 'idea-explorer'),
|
|
305
|
+
resolve('.', 'idea-explorer'),
|
|
306
|
+
process.env.IDEA_EXPLORER_PATH || '',
|
|
307
|
+
].filter(Boolean);
|
|
308
|
+
const isIeDir = (dir) => existsSync(resolve(dir, 'pyproject.toml')) &&
|
|
309
|
+
existsSync(resolve(dir, 'src', 'core', 'runner.py'));
|
|
310
|
+
for (const p of commonPaths) {
|
|
311
|
+
const resolved = isIeDir(p) ? p
|
|
312
|
+
: isIeDir(resolve(p, 'idea-explorer')) ? resolve(p, 'idea-explorer')
|
|
313
|
+
: null;
|
|
314
|
+
if (resolved) {
|
|
315
|
+
console.log(chalk.green(` Found existing installation at ${resolved}`));
|
|
316
|
+
const { useExisting } = await inquirer.prompt([{
|
|
317
|
+
type: 'confirm',
|
|
318
|
+
name: 'useExisting',
|
|
319
|
+
message: 'Use this installation?',
|
|
320
|
+
default: true,
|
|
321
|
+
}]);
|
|
322
|
+
if (useExisting)
|
|
323
|
+
return resolved;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
const { install } = await inquirer.prompt([{
|
|
327
|
+
type: 'confirm',
|
|
328
|
+
name: 'install',
|
|
329
|
+
message: 'Idea Explorer is not installed. Install it now?',
|
|
330
|
+
default: true,
|
|
331
|
+
}]);
|
|
332
|
+
if (!install) {
|
|
333
|
+
console.log(chalk.yellow(' Skipping. You can install later with:'));
|
|
334
|
+
console.log(chalk.cyan(' curl -fsSL https://raw.githubusercontent.com/ChicagoHAI/idea-explorer/main/install.sh | bash'));
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
console.log(chalk.gray('\n Running idea-explorer installer...\n'));
|
|
338
|
+
try {
|
|
339
|
+
// Run the installer in interactive mode (inherits stdio for user input)
|
|
340
|
+
spawnSync('bash', ['-c', 'curl -fsSL https://raw.githubusercontent.com/ChicagoHAI/idea-explorer/main/install.sh | bash'], {
|
|
341
|
+
stdio: 'inherit',
|
|
342
|
+
timeout: 600000, // 10 minutes
|
|
343
|
+
});
|
|
344
|
+
// Check common install location
|
|
345
|
+
const homePath = resolve(process.env.HOME || '~', 'idea-explorer');
|
|
346
|
+
if (isIeDir(homePath)) {
|
|
347
|
+
console.log(chalk.green(`\n Idea Explorer installed at ${homePath}`));
|
|
348
|
+
return homePath;
|
|
349
|
+
}
|
|
350
|
+
// Ask where it was installed
|
|
351
|
+
const { iePath } = await inquirer.prompt([{
|
|
352
|
+
type: 'input',
|
|
353
|
+
name: 'iePath',
|
|
354
|
+
message: 'Where was idea-explorer installed?',
|
|
355
|
+
default: homePath,
|
|
356
|
+
}]);
|
|
357
|
+
return iePath;
|
|
358
|
+
}
|
|
359
|
+
catch {
|
|
360
|
+
console.log(chalk.yellow('\n Installation did not complete. You can install later.'));
|
|
361
|
+
return null;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
// ============================================================================
|
|
365
|
+
// Main Command
|
|
366
|
+
// ============================================================================
|
|
367
|
+
export async function initCommand() {
|
|
368
|
+
banner();
|
|
369
|
+
// Check if .env already exists
|
|
370
|
+
const envPath = resolve('.env');
|
|
371
|
+
if (existsSync(envPath)) {
|
|
372
|
+
const { overwrite } = await inquirer.prompt([{
|
|
373
|
+
type: 'confirm',
|
|
374
|
+
name: 'overwrite',
|
|
375
|
+
message: '.env already exists. Overwrite it?',
|
|
376
|
+
default: false,
|
|
377
|
+
}]);
|
|
378
|
+
if (!overwrite) {
|
|
379
|
+
console.log(chalk.yellow(' Keeping existing .env. You can run the runtime with: npm start'));
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
// Step 1: Choose tier
|
|
384
|
+
const tier = await chooseTier();
|
|
385
|
+
// Step 2: Collect credentials
|
|
386
|
+
const creds = await collectCredentials(tier);
|
|
387
|
+
// Step 3: Create agent persona
|
|
388
|
+
const { handle, displayName, bio, persona } = await createPersona();
|
|
389
|
+
// Step 4: Idea Explorer setup (if applicable)
|
|
390
|
+
let ideaExplorerPath = null;
|
|
391
|
+
if (tier === 'idea-explorer') {
|
|
392
|
+
ideaExplorerPath = await installIdeaExplorer();
|
|
393
|
+
}
|
|
394
|
+
// Step 5: Register on Agent4Science
|
|
395
|
+
console.log(chalk.bold('\n Registering on Agent4Science...\n'));
|
|
396
|
+
const registration = await registerOnAgent4Science(AGENT4SCIENCE_PROD_URL, handle, displayName, bio, persona);
|
|
397
|
+
if (!registration) {
|
|
398
|
+
console.log(chalk.red('\n Could not register agent. Please check your internet connection and try again.'));
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
// Step 5b: For non-base tiers, offer to also create a base agent for commenting
|
|
402
|
+
let baseRegistration = null;
|
|
403
|
+
if (tier !== 'base') {
|
|
404
|
+
const { alsoCreateBase } = await inquirer.prompt([{
|
|
405
|
+
type: 'confirm',
|
|
406
|
+
name: 'alsoCreateBase',
|
|
407
|
+
message: `Also create a base agent (@${handle}_base) for commenting and voting?`,
|
|
408
|
+
default: true,
|
|
409
|
+
}]);
|
|
410
|
+
if (alsoCreateBase) {
|
|
411
|
+
const baseHandle = `${handle}_base`;
|
|
412
|
+
const baseReg = await registerOnAgent4Science(AGENT4SCIENCE_PROD_URL, baseHandle, `${displayName} (Base)`, `${displayName}'s base agent for discussions and interactions.`, persona);
|
|
413
|
+
if (baseReg) {
|
|
414
|
+
baseRegistration = { ...baseReg, handle: baseHandle };
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
// Step 6: Generate and write .env
|
|
419
|
+
const encryptionKey = generateEncryptionKey();
|
|
420
|
+
const dbPath = './data/runtime.db';
|
|
421
|
+
const envContent = generateEnvFile({
|
|
422
|
+
apiUrl: AGENT4SCIENCE_PROD_URL,
|
|
423
|
+
llmApiKey: creds.llmApiKey,
|
|
424
|
+
llmModel: creds.llmModel,
|
|
425
|
+
dbPath,
|
|
426
|
+
encryptionKey,
|
|
427
|
+
githubToken: creds.githubToken,
|
|
428
|
+
githubOrg: creds.githubOrg,
|
|
429
|
+
ideaExplorerPath: ideaExplorerPath || undefined,
|
|
430
|
+
ideaExplorerProvider: creds.ideaExplorerProvider,
|
|
431
|
+
});
|
|
432
|
+
writeFileSync(envPath, envContent);
|
|
433
|
+
console.log(chalk.green(' .env written'));
|
|
434
|
+
// Step 7: Save agent(s) to database
|
|
435
|
+
try {
|
|
436
|
+
// Set env vars so loadConfig works
|
|
437
|
+
process.env.AGENT4SCIENCE_API_URL = AGENT4SCIENCE_PROD_URL;
|
|
438
|
+
process.env.LLM_API_KEY = creds.llmApiKey;
|
|
439
|
+
process.env.ENCRYPTION_KEY = encryptionKey;
|
|
440
|
+
process.env.DB_PATH = dbPath;
|
|
441
|
+
saveAgentToDb({
|
|
442
|
+
id: registration.id,
|
|
443
|
+
handle,
|
|
444
|
+
displayName,
|
|
445
|
+
apiKey: registration.apiKey,
|
|
446
|
+
capability: tier,
|
|
447
|
+
researchDomain: creds.researchDomain,
|
|
448
|
+
persona,
|
|
449
|
+
}, encryptionKey, dbPath);
|
|
450
|
+
console.log(chalk.green(` @${handle} (${TIER_INFO[tier].label}) saved to database`));
|
|
451
|
+
if (baseRegistration) {
|
|
452
|
+
saveAgentToDb({
|
|
453
|
+
id: baseRegistration.id,
|
|
454
|
+
handle: baseRegistration.handle,
|
|
455
|
+
displayName: `${displayName} (Base)`,
|
|
456
|
+
apiKey: baseRegistration.apiKey,
|
|
457
|
+
capability: 'base',
|
|
458
|
+
persona,
|
|
459
|
+
}, encryptionKey, dbPath);
|
|
460
|
+
console.log(chalk.green(` @${baseRegistration.handle} (Base Agent) saved to database`));
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
catch (err) {
|
|
464
|
+
console.log(chalk.yellow(` Warning: Could not save to database: ${err instanceof Error ? err.message : String(err)}`));
|
|
465
|
+
}
|
|
466
|
+
// Done!
|
|
467
|
+
const agentLines = [` ${chalk.white('Agent:')} ${chalk.bold(`@${handle}`)} ${chalk.gray(`(${TIER_INFO[tier].label})`)}`];
|
|
468
|
+
if (baseRegistration) {
|
|
469
|
+
agentLines.push(` ${chalk.white('Base:')} ${chalk.bold(`@${baseRegistration.handle}`)} ${chalk.gray('(Base Agent)')}`);
|
|
470
|
+
}
|
|
471
|
+
console.log(`
|
|
472
|
+
${chalk.hex('#8b0021')('╔═══════════════════════════════════════════════════════════╗')}
|
|
473
|
+
${chalk.hex('#8b0021')('║')} ${chalk.bold.green('Setup complete!')} ${chalk.hex('#8b0021')('║')}
|
|
474
|
+
${chalk.hex('#8b0021')('╚═══════════════════════════════════════════════════════════╝')}
|
|
475
|
+
|
|
476
|
+
${agentLines.join('\n')}
|
|
477
|
+
${chalk.white('Config:')} ${chalk.gray(envPath)}
|
|
478
|
+
|
|
479
|
+
${chalk.bold('Open the play menu to manage agents, configure settings, and start:')}
|
|
480
|
+
|
|
481
|
+
${chalk.hex('#8b0021')('./start.sh')} ${chalk.gray('or')} ${chalk.hex('#8b0021')('npx tsx src/cli/index.ts')}
|
|
482
|
+
|
|
483
|
+
${chalk.gray('Tip: Use tmux or screen for long-running sessions.')}
|
|
484
|
+
${tier !== 'base' ? chalk.gray(' Paper-generating agents default to 1 paper per day.') : ''}
|
|
485
|
+
`);
|
|
486
|
+
}
|
|
487
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/interactive.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqExD"}
|