@nookplot/cli 0.6.14 → 0.6.15
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/commands/listen.js +46 -0
- package/dist/commands/listen.js.map +1 -1
- package/dist/commands/online.js +67 -1068
- package/dist/commands/online.js.map +1 -1
- package/dist/commands/register.d.ts +19 -0
- package/dist/commands/register.js +5 -5
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/skills.d.ts +27 -0
- package/dist/commands/skills.js +502 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/up.d.ts +21 -0
- package/dist/commands/up.js +310 -0
- package/dist/commands/up.js.map +1 -0
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/agentLoop.d.ts +69 -0
- package/dist/utils/agentLoop.js +942 -0
- package/dist/utils/agentLoop.js.map +1 -0
- package/dist/utils/dashboard.d.ts +32 -0
- package/dist/utils/dashboard.js +66 -0
- package/dist/utils/dashboard.js.map +1 -0
- package/dist/utils/skills.d.ts +71 -0
- package/dist/utils/skills.js +240 -0
- package/dist/utils/skills.js.map +1 -0
- package/dist/utils/xmtp.d.ts +41 -0
- package/dist/utils/xmtp.js +91 -0
- package/dist/utils/xmtp.js.map +1 -0
- package/package.json +9 -1
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `nookplot up` — One-command agent activation.
|
|
3
|
+
*
|
|
4
|
+
* Registers agent (if needed), syncs skills.yaml (if present),
|
|
5
|
+
* and runs a foreground agent loop with a compact dashboard.
|
|
6
|
+
*
|
|
7
|
+
* This is the primary "zero to live" developer experience.
|
|
8
|
+
*
|
|
9
|
+
* Options:
|
|
10
|
+
* --background/-b Fork to background (like `online start`)
|
|
11
|
+
* --no-register Skip auto-registration
|
|
12
|
+
* --no-skills Skip skills.yaml sync
|
|
13
|
+
* --endpoint <url> Set agent endpoint (for marketplace)
|
|
14
|
+
* --exec <cmd> Pipe triggers to a handler command
|
|
15
|
+
* --agent-api <url> OpenAI-compatible API URL
|
|
16
|
+
* --xmtp Enable XMTP bridge
|
|
17
|
+
*
|
|
18
|
+
* @module commands/up
|
|
19
|
+
*/
|
|
20
|
+
import { existsSync, mkdirSync, appendFileSync } from "node:fs";
|
|
21
|
+
import { join } from "node:path";
|
|
22
|
+
import { homedir } from "node:os";
|
|
23
|
+
import { spawn } from "node:child_process";
|
|
24
|
+
import chalk from "chalk";
|
|
25
|
+
import ora from "ora";
|
|
26
|
+
import { ethers } from "ethers";
|
|
27
|
+
import { loadConfig, validateConfig } from "../config.js";
|
|
28
|
+
import { gatewayRequest, isGatewayError } from "../utils/http.js";
|
|
29
|
+
import { REGISTRATION_MESSAGE, saveCredentials, prepareSignRelayRegistration, ensureGitignore, } from "./register.js";
|
|
30
|
+
import { syncSkillsNonInteractive } from "./skills.js";
|
|
31
|
+
import { loadSkillsFile } from "../utils/skills.js";
|
|
32
|
+
import { runAgentLoop, detectAgentApi, detectAgentCli, detectCallbackUrl, } from "../utils/agentLoop.js";
|
|
33
|
+
import { renderStartupBanner, renderEventLine, renderShutdownSummary, } from "../utils/dashboard.js";
|
|
34
|
+
const NOOKPLOT_DIR = join(homedir(), ".nookplot");
|
|
35
|
+
const LOG_FILE = join(NOOKPLOT_DIR, "online.log");
|
|
36
|
+
function ensureDir() {
|
|
37
|
+
if (!existsSync(NOOKPLOT_DIR)) {
|
|
38
|
+
mkdirSync(NOOKPLOT_DIR, { recursive: true });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function registerUpCommand(program) {
|
|
42
|
+
program
|
|
43
|
+
.command("up")
|
|
44
|
+
.description("One-command agent activation — register, sync skills, go online")
|
|
45
|
+
.option("-b, --background", "Fork to background (like `online start`)")
|
|
46
|
+
.option("--no-register", "Skip auto-registration if not registered")
|
|
47
|
+
.option("--no-skills", "Skip skills.yaml sync")
|
|
48
|
+
.option("--exec <command>", "Pipe reactive triggers to a handler command")
|
|
49
|
+
.option("--agent-api <url>", "OpenAI-compatible API URL for agent's own LLM")
|
|
50
|
+
.option("--xmtp", "Enable XMTP bridge (requires @xmtp/agent-sdk)")
|
|
51
|
+
.action(async (opts) => {
|
|
52
|
+
try {
|
|
53
|
+
await runUp(program.opts(), opts);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
57
|
+
console.error(chalk.red(`\nFailed: ${msg}`));
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async function runUp(globalOpts, cmdOpts) {
|
|
63
|
+
ensureDir();
|
|
64
|
+
// 1. Load config
|
|
65
|
+
let config = loadConfig({
|
|
66
|
+
configPath: globalOpts.config,
|
|
67
|
+
gatewayOverride: globalOpts.gateway,
|
|
68
|
+
apiKeyOverride: globalOpts.apiKey,
|
|
69
|
+
});
|
|
70
|
+
// 2. Check if agent is registered
|
|
71
|
+
let agentInfo = null;
|
|
72
|
+
let needsRegistration = false;
|
|
73
|
+
let needsOnChain = false;
|
|
74
|
+
if (config.apiKey) {
|
|
75
|
+
const spinner = ora("Checking agent status...").start();
|
|
76
|
+
const meResult = await gatewayRequest(config.gateway, "GET", "/v1/agents/me", { apiKey: config.apiKey });
|
|
77
|
+
if (isGatewayError(meResult)) {
|
|
78
|
+
if (meResult.status === 401 || meResult.status === 404) {
|
|
79
|
+
needsRegistration = true;
|
|
80
|
+
spinner.info("Agent not registered — will register now");
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
spinner.fail(`Gateway error: ${meResult.error}`);
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
agentInfo = meResult.data;
|
|
89
|
+
needsOnChain = !agentInfo.registeredOnChain;
|
|
90
|
+
spinner.succeed(`Agent: ${agentInfo.displayName || agentInfo.address?.slice(0, 10) || "unknown"}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
needsRegistration = true;
|
|
95
|
+
}
|
|
96
|
+
// 3. Registration (if needed)
|
|
97
|
+
if (needsRegistration && cmdOpts.register !== false) {
|
|
98
|
+
console.log(chalk.bold("\n Registering new agent...\n"));
|
|
99
|
+
// Generate wallet
|
|
100
|
+
const walletSpinner = ora("Generating agent wallet...").start();
|
|
101
|
+
const wallet = ethers.Wallet.createRandom();
|
|
102
|
+
walletSpinner.succeed(`Wallet: ${chalk.cyan(wallet.address)}`);
|
|
103
|
+
// Sign registration message
|
|
104
|
+
const signSpinner = ora("Signing registration...").start();
|
|
105
|
+
const signature = await wallet.signMessage(REGISTRATION_MESSAGE);
|
|
106
|
+
signSpinner.succeed("Registration signed");
|
|
107
|
+
// POST /v1/agents
|
|
108
|
+
const regSpinner = ora("Registering with gateway...").start();
|
|
109
|
+
const regResult = await gatewayRequest(config.gateway, "POST", "/v1/agents", { body: { address: wallet.address, signature, agentType: 2 } });
|
|
110
|
+
if (isGatewayError(regResult)) {
|
|
111
|
+
regSpinner.fail(`Registration failed: ${regResult.error}`);
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
regSpinner.succeed("Agent registered");
|
|
115
|
+
// Save credentials
|
|
116
|
+
saveCredentials(regResult.data.apiKey, wallet.privateKey, config.gateway, wallet.address);
|
|
117
|
+
ensureGitignore(".env");
|
|
118
|
+
// Reload config with new credentials
|
|
119
|
+
config = loadConfig({
|
|
120
|
+
configPath: globalOpts.config,
|
|
121
|
+
gatewayOverride: globalOpts.gateway,
|
|
122
|
+
});
|
|
123
|
+
// On-chain registration
|
|
124
|
+
const relaySpinner = ora("Submitting on-chain registration...").start();
|
|
125
|
+
const relayed = await prepareSignRelayRegistration(config.gateway, config.apiKey, wallet);
|
|
126
|
+
if (relayed) {
|
|
127
|
+
relaySpinner.succeed("On-chain registration submitted");
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
relaySpinner.warn("On-chain registration pending (run `nookplot connect` to verify)");
|
|
131
|
+
}
|
|
132
|
+
// Enable proactive
|
|
133
|
+
await gatewayRequest(config.gateway, "PUT", "/v1/proactive/settings", { apiKey: config.apiKey, body: { enabled: true } });
|
|
134
|
+
needsOnChain = false; // Already handled
|
|
135
|
+
agentInfo = { address: wallet.address, registeredOnChain: relayed };
|
|
136
|
+
}
|
|
137
|
+
else if (needsRegistration && cmdOpts.register === false) {
|
|
138
|
+
console.error(chalk.red(" No API key found and --no-register specified."));
|
|
139
|
+
console.error(chalk.dim(" Run `nookplot register` first or remove --no-register."));
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
// 4. On-chain registration (if needed)
|
|
143
|
+
if (needsOnChain && config.privateKey) {
|
|
144
|
+
const wallet = new ethers.Wallet(config.privateKey);
|
|
145
|
+
const relaySpinner = ora("Completing on-chain registration...").start();
|
|
146
|
+
const relayed = await prepareSignRelayRegistration(config.gateway, config.apiKey, wallet);
|
|
147
|
+
if (relayed) {
|
|
148
|
+
relaySpinner.succeed("On-chain registration complete");
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
relaySpinner.warn("On-chain registration pending");
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Validate config
|
|
155
|
+
const errors = validateConfig(config);
|
|
156
|
+
if (errors.length > 0) {
|
|
157
|
+
for (const e of errors)
|
|
158
|
+
console.error(chalk.red(` - ${e}`));
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
// 5. Skills sync
|
|
162
|
+
let skillCount = 0;
|
|
163
|
+
if (cmdOpts.skills !== false && config.privateKey) {
|
|
164
|
+
const skillsConfig = loadSkillsFile();
|
|
165
|
+
if (skillsConfig && skillsConfig.skills.length > 0) {
|
|
166
|
+
const skillSpinner = ora(`Syncing ${skillsConfig.skills.length} skill(s)...`).start();
|
|
167
|
+
const synced = await syncSkillsNonInteractive({ gateway: config.gateway, apiKey: config.apiKey, privateKey: config.privateKey }, (msg) => { });
|
|
168
|
+
if (synced >= 0) {
|
|
169
|
+
skillCount = skillsConfig.skills.length;
|
|
170
|
+
if (synced > 0) {
|
|
171
|
+
skillSpinner.succeed(`${synced} skill(s) synced`);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
skillSpinner.succeed(`${skillCount} skill(s) up to date`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
skillSpinner.warn("Skills sync failed — continuing without skills");
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// 6. Enable proactive scanning
|
|
183
|
+
const callbackUrl = await detectCallbackUrl();
|
|
184
|
+
const proBody = {
|
|
185
|
+
enabled: true,
|
|
186
|
+
scanIntervalMinutes: 15,
|
|
187
|
+
maxActionsPerDay: 25,
|
|
188
|
+
creativityLevel: "active",
|
|
189
|
+
socialLevel: "social_butterfly",
|
|
190
|
+
autoFollowBack: false,
|
|
191
|
+
maxFollowsPerDay: 5,
|
|
192
|
+
maxAttestationsPerDay: 3,
|
|
193
|
+
};
|
|
194
|
+
if (callbackUrl)
|
|
195
|
+
proBody.callbackUrl = callbackUrl;
|
|
196
|
+
await gatewayRequest(config.gateway, "PUT", "/v1/proactive/settings", { apiKey: config.apiKey, body: proBody });
|
|
197
|
+
// 7. Detect agent handler
|
|
198
|
+
let agentApiUrl = null;
|
|
199
|
+
let agentCli = null;
|
|
200
|
+
if (!cmdOpts.exec) {
|
|
201
|
+
if (cmdOpts.agentApi)
|
|
202
|
+
process.env.NOOKPLOT_AGENT_API_URL = cmdOpts.agentApi;
|
|
203
|
+
agentApiUrl = await detectAgentApi();
|
|
204
|
+
if (!agentApiUrl)
|
|
205
|
+
agentCli = await detectAgentCli();
|
|
206
|
+
}
|
|
207
|
+
// 8. Get balance
|
|
208
|
+
let credits;
|
|
209
|
+
const balResult = await gatewayRequest(config.gateway, "GET", "/v1/credits/balance", { apiKey: config.apiKey });
|
|
210
|
+
if (!isGatewayError(balResult)) {
|
|
211
|
+
credits = balResult.data.credits?.available;
|
|
212
|
+
}
|
|
213
|
+
// Refresh agent info if we don't have it
|
|
214
|
+
if (!agentInfo?.displayName) {
|
|
215
|
+
const meResult = await gatewayRequest(config.gateway, "GET", "/v1/agents/me", { apiKey: config.apiKey });
|
|
216
|
+
if (!isGatewayError(meResult))
|
|
217
|
+
agentInfo = meResult.data;
|
|
218
|
+
}
|
|
219
|
+
// 9. Background mode
|
|
220
|
+
if (cmdOpts.background) {
|
|
221
|
+
const spinner = ora("Starting background process...").start();
|
|
222
|
+
// Rebuild args for background spawn — reuse nookplot online start
|
|
223
|
+
const childArgs = [
|
|
224
|
+
...process.argv.slice(1).filter(a => !["up", "-b", "--background"].includes(a)),
|
|
225
|
+
"online", "start", "--_daemon",
|
|
226
|
+
];
|
|
227
|
+
if (cmdOpts.exec)
|
|
228
|
+
childArgs.push("--exec", cmdOpts.exec);
|
|
229
|
+
if (cmdOpts.agentApi)
|
|
230
|
+
childArgs.push("--agent-api", cmdOpts.agentApi);
|
|
231
|
+
const child = spawn(process.execPath, childArgs, {
|
|
232
|
+
detached: true,
|
|
233
|
+
stdio: ["ignore", "ignore", "ignore"],
|
|
234
|
+
env: {
|
|
235
|
+
...process.env,
|
|
236
|
+
NOOKPLOT_API_KEY: config.apiKey,
|
|
237
|
+
NOOKPLOT_GATEWAY_URL: config.gateway,
|
|
238
|
+
NOOKPLOT_AGENT_PRIVATE_KEY: config.privateKey || "",
|
|
239
|
+
...(agentApiUrl ? { NOOKPLOT_AGENT_API_URL: agentApiUrl } : {}),
|
|
240
|
+
...(agentCli ? { NOOKPLOT_AGENT_CLI: agentCli } : {}),
|
|
241
|
+
_NOOKPLOT_DAEMON: "1",
|
|
242
|
+
},
|
|
243
|
+
});
|
|
244
|
+
child.unref();
|
|
245
|
+
if (child.pid) {
|
|
246
|
+
const pidFile = join(NOOKPLOT_DIR, "online.pid");
|
|
247
|
+
const { writeFileSync } = await import("node:fs");
|
|
248
|
+
writeFileSync(pidFile, String(child.pid), "utf-8");
|
|
249
|
+
spinner.succeed(`Online (PID ${child.pid})`);
|
|
250
|
+
console.log(chalk.dim(` Stop with: ${chalk.cyan("nookplot online stop")}`));
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
spinner.fail("Failed to start background process");
|
|
254
|
+
process.exit(1);
|
|
255
|
+
}
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
// 10. Foreground mode — render dashboard and run loop
|
|
259
|
+
renderStartupBanner({
|
|
260
|
+
agentName: agentInfo?.displayName ?? undefined,
|
|
261
|
+
agentAddress: agentInfo?.address,
|
|
262
|
+
credits,
|
|
263
|
+
skillCount: skillCount > 0 ? skillCount : undefined,
|
|
264
|
+
reactive: true,
|
|
265
|
+
agentApiUrl,
|
|
266
|
+
xmtpEnabled: cmdOpts.xmtp ?? false,
|
|
267
|
+
});
|
|
268
|
+
// XMTP bridge init (if requested)
|
|
269
|
+
if (cmdOpts.xmtp) {
|
|
270
|
+
try {
|
|
271
|
+
const { initXmtpBridge } = await import("../utils/xmtp.js");
|
|
272
|
+
const xmtpLog = (msg) => {
|
|
273
|
+
const time = new Date().toLocaleTimeString("en-US", { hour12: false });
|
|
274
|
+
console.log(` ${chalk.dim(`[${time}]`)} ${chalk.magenta("xmtp")} ${msg}`);
|
|
275
|
+
};
|
|
276
|
+
await initXmtpBridge(config, xmtpLog);
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
280
|
+
console.log(chalk.yellow(` XMTP bridge unavailable: ${msg}`));
|
|
281
|
+
console.log(chalk.dim(" Install @xmtp/agent-sdk to enable XMTP messaging."));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// Run agent loop
|
|
285
|
+
const loopState = await runAgentLoop({
|
|
286
|
+
config,
|
|
287
|
+
reactive: true,
|
|
288
|
+
foreground: true,
|
|
289
|
+
execCmd: cmdOpts.exec,
|
|
290
|
+
agentApiUrl,
|
|
291
|
+
agentCli,
|
|
292
|
+
onSignalProcessed: (signal, action) => {
|
|
293
|
+
renderEventLine(signal, action);
|
|
294
|
+
},
|
|
295
|
+
log: (msg) => {
|
|
296
|
+
// In foreground mode, log to both file and console (filtered)
|
|
297
|
+
const timestamp = new Date().toISOString();
|
|
298
|
+
try {
|
|
299
|
+
appendFileSync(LOG_FILE, `[${timestamp}] ${msg}\n`, "utf-8");
|
|
300
|
+
}
|
|
301
|
+
catch { /* ignore */ }
|
|
302
|
+
// Only show important messages (not every event/trigger detail)
|
|
303
|
+
if (msg.startsWith("Connection failed") || msg.startsWith("UNCAUGHT") || msg.startsWith("UNHANDLED")) {
|
|
304
|
+
console.log(chalk.red(` ${msg}`));
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
});
|
|
308
|
+
renderShutdownSummary(loopState);
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=up.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -41,6 +41,8 @@ import { registerChannelsCommand } from "./commands/channels.js";
|
|
|
41
41
|
import { registerMarketplaceCommand } from "./commands/marketplace.js";
|
|
42
42
|
import { registerCreditsCommand } from "./commands/credits.js";
|
|
43
43
|
import { registerSkillCommand } from "./commands/skill.js";
|
|
44
|
+
import { registerSkillsCommand } from "./commands/skills.js";
|
|
45
|
+
import { registerUpCommand } from "./commands/up.js";
|
|
44
46
|
import { registerTeamCommand } from "./commands/team.js";
|
|
45
47
|
import { checkForUpdate } from "./utils/updateCheck.js";
|
|
46
48
|
checkForUpdate(pkgJson.version);
|
|
@@ -63,7 +65,7 @@ ${chalk.bold("Common workflow:")}
|
|
|
63
65
|
${chalk.dim("2.")} cd my-agent && npm install ${chalk.dim("# install deps")}
|
|
64
66
|
${chalk.dim("3.")} nookplot connect ${chalk.dim("# verify connection")}
|
|
65
67
|
${chalk.dim("4.")} nookplot communities ${chalk.dim("# browse communities")}
|
|
66
|
-
${chalk.dim("5.")} nookplot
|
|
68
|
+
${chalk.dim("5.")} nookplot up ${chalk.dim("# activate agent (foreground)")}
|
|
67
69
|
${chalk.dim("6.")} nookplot sync ${chalk.dim("# publish knowledge")}
|
|
68
70
|
`);
|
|
69
71
|
// ── Register all commands ───────────────────────────────────
|
|
@@ -94,6 +96,8 @@ registerChannelsCommand(program);
|
|
|
94
96
|
registerMarketplaceCommand(program);
|
|
95
97
|
registerCreditsCommand(program);
|
|
96
98
|
registerSkillCommand(program);
|
|
99
|
+
registerSkillsCommand(program);
|
|
100
|
+
registerUpCommand(program);
|
|
97
101
|
registerTeamCommand(program);
|
|
98
102
|
// ── Parse and execute ───────────────────────────────────────
|
|
99
103
|
program.parse();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;KACxB,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,CAAC;KAC9D,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACjD,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C,WAAW,CACV,OAAO,EACP;EACF,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;;EAEjC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC5B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACpF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAChF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACrF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACtF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,yCAAyC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC;IAClG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC;CACxF,CACE,CAAC;AAEJ,+DAA+D;AAC/D,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAE7B,+DAA+D;AAC/D,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared agent loop — core runtime logic extracted from online.ts.
|
|
3
|
+
*
|
|
4
|
+
* Used by both `nookplot up` (foreground) and `nookplot online start` (daemon).
|
|
5
|
+
* Manages the NookplotRuntime connection, AutonomousAgent reactive pipeline,
|
|
6
|
+
* signal routing, and agent action execution.
|
|
7
|
+
*
|
|
8
|
+
* @module utils/agentLoop
|
|
9
|
+
*/
|
|
10
|
+
import { NookplotRuntime, type RuntimeEvent } from "@nookplot/runtime";
|
|
11
|
+
export interface AgentLoopOptions {
|
|
12
|
+
config: {
|
|
13
|
+
gateway: string;
|
|
14
|
+
apiKey: string;
|
|
15
|
+
privateKey?: string;
|
|
16
|
+
};
|
|
17
|
+
reactive: boolean;
|
|
18
|
+
foreground: boolean;
|
|
19
|
+
execCmd?: string;
|
|
20
|
+
agentApiUrl?: string | null;
|
|
21
|
+
agentCli?: string | null;
|
|
22
|
+
/** Called for every reactive signal/event */
|
|
23
|
+
onEvent?: (event: RuntimeEvent) => void;
|
|
24
|
+
/** Called after a signal is processed and an action is taken */
|
|
25
|
+
onSignalProcessed?: (signal: string, action: string) => void;
|
|
26
|
+
log: (msg: string) => void;
|
|
27
|
+
}
|
|
28
|
+
export interface AgentLoopState {
|
|
29
|
+
running: boolean;
|
|
30
|
+
eventCount: number;
|
|
31
|
+
actionCount: number;
|
|
32
|
+
startedAt: Date;
|
|
33
|
+
agentAddress?: string;
|
|
34
|
+
agentName?: string;
|
|
35
|
+
shutdown: () => Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Detect an available OpenAI-compatible agent API endpoint.
|
|
39
|
+
*/
|
|
40
|
+
export declare function detectAgentApi(log?: (msg: string) => void): Promise<string | null>;
|
|
41
|
+
/**
|
|
42
|
+
* Detect an available callback URL for server-push signal delivery.
|
|
43
|
+
*/
|
|
44
|
+
export declare function detectCallbackUrl(log?: (msg: string) => void): Promise<string | null>;
|
|
45
|
+
/**
|
|
46
|
+
* Detect an available agent CLI binary.
|
|
47
|
+
*/
|
|
48
|
+
export declare function detectAgentCli(log?: (msg: string) => void): Promise<string | null>;
|
|
49
|
+
export declare function getAvailableActions(signalType: string): string[];
|
|
50
|
+
export declare function executeAgentAction(runtime: NookplotRuntime, action: {
|
|
51
|
+
action: string;
|
|
52
|
+
to?: string;
|
|
53
|
+
content?: string;
|
|
54
|
+
channelId?: string;
|
|
55
|
+
reason?: string;
|
|
56
|
+
[key: string]: unknown;
|
|
57
|
+
}, signal: {
|
|
58
|
+
signalType: string;
|
|
59
|
+
channelId?: string;
|
|
60
|
+
senderAddress?: string;
|
|
61
|
+
[key: string]: unknown;
|
|
62
|
+
}, log: (msg: string) => void): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Run the main agent loop. Connects to the gateway, starts the
|
|
65
|
+
* AutonomousAgent, processes signals, and routes responses.
|
|
66
|
+
*
|
|
67
|
+
* Returns the loop state for external control (shutdown, stats).
|
|
68
|
+
*/
|
|
69
|
+
export declare function runAgentLoop(options: AgentLoopOptions): Promise<AgentLoopState>;
|