agentbnb 4.0.2 → 5.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.
Files changed (45) hide show
  1. package/README.md +31 -2
  2. package/dist/chunk-AUBHR7HH.js +25 -0
  3. package/dist/chunk-B5FTAGFN.js +393 -0
  4. package/dist/{chunk-GGYC5U2Z.js → chunk-BTTL24TZ.js} +29 -91
  5. package/dist/chunk-C6KPAFCC.js +387 -0
  6. package/dist/chunk-CRFCWD6V.js +366 -0
  7. package/dist/chunk-CSATDXZC.js +89 -0
  8. package/dist/{chunk-T7NS2J2B.js → chunk-DFBX3BBD.js} +84 -1
  9. package/dist/{chunk-DNWT5FZQ.js → chunk-EANI2N2V.js} +98 -1
  10. package/dist/{chunk-HH24WMFN.js → chunk-FLY3WIQR.js} +1 -1
  11. package/dist/chunk-HLUEOLSZ.js +62 -0
  12. package/dist/chunk-IVOYM3WG.js +25 -0
  13. package/dist/chunk-LCAIAAG2.js +916 -0
  14. package/dist/chunk-MLS6IGGG.js +294 -0
  15. package/dist/{chunk-4P3EMGL4.js → chunk-MNO4COST.js} +5 -3
  16. package/dist/chunk-NH2FIERR.js +138 -0
  17. package/dist/chunk-UKT6H7YT.js +29 -0
  18. package/dist/{chunk-BH6WGYFB.js → chunk-VE3E4AMH.js} +8 -8
  19. package/dist/{chunk-7NA43XCG.js → chunk-W5BZMKMF.js} +163 -29
  20. package/dist/{chunk-FF226TIV.js → chunk-ZX5623ER.js} +0 -57
  21. package/dist/cli/index.js +362 -4631
  22. package/dist/{conduct-N52JX7RT.js → conduct-KM6ZNJGE.js} +10 -8
  23. package/dist/{conduct-GZQNFTRP.js → conduct-WGTMQND5.js} +10 -8
  24. package/dist/{conductor-mode-XUWGR4ZE.js → conductor-mode-OL2FNOYY.js} +6 -4
  25. package/dist/conductor-mode-VRO7TYW2.js +592 -0
  26. package/dist/execute-CPFSOOO3.js +13 -0
  27. package/dist/execute-IP2QHALV.js +10 -0
  28. package/dist/index.d.ts +19 -8
  29. package/dist/index.js +190 -37
  30. package/dist/peers-CJ7T4RJO.js +13 -0
  31. package/dist/process-guard-CC7CNRQJ.js +176 -0
  32. package/dist/{request-4GQSSM4B.js → request-YOWPXVLQ.js} +13 -10
  33. package/dist/schema-7BSSLZ4S.js +8 -0
  34. package/dist/{serve-skill-TPHZH6BS.js → serve-skill-JHFNR7BW.js} +8 -7
  35. package/dist/{server-365V3GYD.js → server-HKJJWFRG.js} +10 -8
  36. package/dist/service-coordinator-5R4LQW6L.js +4917 -0
  37. package/dist/skills/agentbnb/bootstrap.js +6181 -0
  38. package/dist/websocket-client-WRN3HO73.js +6 -0
  39. package/openclaw.plugin.json +54 -0
  40. package/package.json +11 -2
  41. package/skills/agentbnb/SKILL.md +87 -70
  42. package/skills/agentbnb/bootstrap.test.ts +142 -242
  43. package/skills/agentbnb/bootstrap.ts +88 -95
  44. package/skills/agentbnb/install.sh +97 -27
  45. package/dist/execute-PNGQOMYO.js +0 -10
@@ -1,126 +1,119 @@
1
1
  /**
2
- * AgentBnB Bootstrap — single-call OpenClaw skill lifecycle entry point.
2
+ * AgentBnB Bootstrap — thin OpenClaw adapter layer.
3
3
  *
4
- * Usage: `const ctx = await activate({ owner: 'alice', soulMdPath: './SOUL.md' });`
4
+ * Delegates all lifecycle logic to the shared Core Foundation:
5
+ * ProcessGuard → ServiceCoordinator → AgentBnBService
6
+ *
7
+ * Usage: `const ctx = await activate({ port: 7700 });`
5
8
  * Teardown: `await deactivate(ctx);`
6
9
  */
7
10
 
8
- import { existsSync, readFileSync } from 'node:fs';
9
- import { randomUUID } from 'node:crypto';
10
- import { homedir } from 'node:os';
11
11
  import { join } from 'node:path';
12
- import type { FastifyInstance } from 'fastify';
12
+ import { homedir } from 'node:os';
13
13
 
14
- import { AgentRuntime } from '../../src/runtime/agent-runtime.js';
15
- import { publishFromSoulV2 } from '../../src/openclaw/soul-sync.js';
16
- import { createGatewayServer } from '../../src/gateway/server.js';
17
- import { IdleMonitor } from '../../src/autonomy/idle-monitor.js';
18
- import { DEFAULT_AUTONOMY_CONFIG } from '../../src/autonomy/tiers.js';
14
+ import { loadConfig } from '../../src/cli/config.js';
19
15
  import { AgentBnBError } from '../../src/types/index.js';
20
- import { ensureIdentity, type AgentIdentity } from '../../src/identity/identity.js';
21
- import type { AutonomyConfig } from '../../src/autonomy/tiers.js';
22
- import type { CapabilityCardV2 } from '../../src/types/index.js';
16
+ import { ProcessGuard } from '../../src/runtime/process-guard.js';
17
+ import { ServiceCoordinator } from '../../src/runtime/service-coordinator.js';
18
+ import type { ServiceOptions, ServiceStatus } from '../../src/runtime/service-coordinator.js';
19
+ import { AgentBnBService } from '../../src/app/agentbnb-service.js';
23
20
 
24
- /** Configuration for bringing an AgentBnB agent online. */
21
+ /** Configuration for bringing an AgentBnB agent online via OpenClaw. */
25
22
  export interface BootstrapConfig {
26
- /** Agent owner identifier. */
27
- owner: string;
28
- /** Absolute path to SOUL.md. */
29
- soulMdPath: string;
30
- /** Registry DB path. Defaults to ~/.agentbnb/registry.db */
31
- registryDbPath?: string;
32
- /** Credit DB path. Defaults to ~/.agentbnb/credit.db */
33
- creditDbPath?: string;
34
- /** Gateway port. Defaults to 7700. */
35
- gatewayPort?: number;
36
- /** Bearer token for gateway auth. Defaults to a random UUID. */
37
- gatewayToken?: string;
38
- /** Handler URL for capability forwarding. Defaults to http://localhost:{gatewayPort}. */
39
- handlerUrl?: string;
40
- /** Autonomy tier config. Defaults to DEFAULT_AUTONOMY_CONFIG (Tier 3). */
41
- autonomyConfig?: AutonomyConfig;
42
- /** Suppress gateway logs. Defaults to false. */
43
- silent?: boolean;
44
- /** When true, ensures identity.json exists on activate. Defaults to true. */
45
- identityRequired?: boolean;
23
+ /** Gateway port override. Defaults to config value or 7700. */
24
+ port?: number;
25
+ /** Registry URL override. */
26
+ registryUrl?: string;
27
+ /** Enable WebSocket relay. Defaults to true. */
28
+ relay?: boolean;
46
29
  }
47
30
 
48
- /** Live handles returned by activate(). Pass to deactivate() for clean teardown. */
31
+ /** Context returned by activate(). Pass to deactivate() for conditional teardown. */
49
32
  export interface BootstrapContext {
50
- /** AgentRuntime managing DBs and background job lifecycle. */
51
- runtime: AgentRuntime;
52
- /** Fastify gateway HTTP server instance. */
53
- gateway: FastifyInstance;
54
- /** IdleMonitor background loop. */
55
- idleMonitor: IdleMonitor;
56
- /** Published CapabilityCard derived from SOUL.md. */
57
- card: CapabilityCardV2;
58
- /** Agent identity (created/loaded during activation). */
59
- identity: AgentIdentity | null;
33
+ /** Unified facade use this for all AgentBnB operations. */
34
+ service: AgentBnBService;
35
+ /** Node status snapshot at activation time. */
36
+ status: ServiceStatus;
37
+ /** Whether this activate() call started a new node or found one already running. */
38
+ startDisposition: 'started' | 'already_running';
39
+ /**
40
+ * Removes the SIGTERM/SIGINT handlers registered by activate().
41
+ * Called automatically by deactivate() do not call manually.
42
+ * @internal
43
+ */
44
+ _removeSignalHandlers: () => void;
60
45
  }
61
46
 
62
47
  /**
63
- * Brings an agent fully online: Runtime -> publishCard -> gateway.listen -> IdleMonitor.
64
- * @throws {AgentBnBError} FILE_NOT_FOUND if SOUL.md does not exist.
48
+ * Brings an AgentBnB node online (idempotent safe to call when already running).
49
+ * Registers SIGTERM/SIGINT handlers that conditionally stop the node on process exit.
50
+ *
51
+ * @throws {AgentBnBError} CONFIG_NOT_FOUND if ~/.agentbnb/config.json does not exist.
52
+ *
53
+ * TODO: Once ServiceCoordinator gains its own signal handling, remove the handlers
54
+ * registered here to avoid double-handler conflicts. Track in Layer A implementation.
65
55
  */
66
- export async function activate(config: BootstrapConfig): Promise<BootstrapContext> {
67
- const {
68
- owner,
69
- soulMdPath,
70
- registryDbPath = join(homedir(), '.agentbnb', 'registry.db'),
71
- creditDbPath = join(homedir(), '.agentbnb', 'credit.db'),
72
- gatewayPort = 7700,
73
- gatewayToken = randomUUID(),
74
- autonomyConfig = DEFAULT_AUTONOMY_CONFIG,
75
- silent = false,
76
- } = config;
77
-
78
- const identityRequired = config.identityRequired ?? false;
79
- const handlerUrl = config.handlerUrl ?? `http://localhost:${gatewayPort}`;
80
-
81
- if (!existsSync(soulMdPath)) {
82
- throw new AgentBnBError(`SOUL.md not found at path: ${soulMdPath}`, 'FILE_NOT_FOUND');
56
+ export async function activate(config: BootstrapConfig = {}): Promise<BootstrapContext> {
57
+ const agentConfig = loadConfig();
58
+ if (!agentConfig) {
59
+ throw new AgentBnBError(
60
+ 'AgentBnB config not found. Run: agentbnb init',
61
+ 'CONFIG_NOT_FOUND',
62
+ );
83
63
  }
84
- const soulContent = readFileSync(soulMdPath, 'utf8');
85
64
 
86
- const runtime = new AgentRuntime({ registryDbPath, creditDbPath, owner });
87
- await runtime.start();
65
+ const guard = new ProcessGuard(join(homedir(), '.agentbnb', '.pid'));
66
+ const coordinator = new ServiceCoordinator(agentConfig, guard);
67
+ const service = new AgentBnBService(coordinator, agentConfig);
88
68
 
89
- // Ensure agent identity exists (idempotent — preserves existing identity)
90
- let identity: AgentIdentity | null = null;
91
- if (identityRequired) {
92
- const configDir = join(homedir(), '.agentbnb');
93
- identity = ensureIdentity(configDir, owner);
94
- }
69
+ const opts: ServiceOptions = {
70
+ port: config.port,
71
+ registryUrl: config.registryUrl,
72
+ relay: config.relay,
73
+ };
95
74
 
96
- const card = publishFromSoulV2(runtime.registryDb, soulContent, owner);
75
+ const startDisposition = await service.ensureRunning(opts);
76
+ const status = await service.getNodeStatus();
97
77
 
98
- const gateway = createGatewayServer({
99
- port: gatewayPort,
100
- registryDb: runtime.registryDb,
101
- creditDb: runtime.creditDb,
102
- tokens: [gatewayToken],
103
- handlerUrl,
104
- silent,
105
- });
106
- await gateway.listen({ port: gatewayPort, host: '0.0.0.0' });
78
+ // Register signal handlers.
79
+ // Use process.once so each signal fires at most once and self-removes.
80
+ // No process.exit() — closing open handles via service.stop() drains the event loop naturally.
81
+ // Only stop the node when we were the ones who started it.
82
+ const onSigterm = () => {
83
+ if (startDisposition === 'started') {
84
+ void service.stop();
85
+ }
86
+ };
87
+ const onSigint = () => {
88
+ if (startDisposition === 'started') {
89
+ void service.stop();
90
+ }
91
+ };
107
92
 
108
- const idleMonitor = new IdleMonitor({ owner, db: runtime.registryDb, autonomyConfig });
109
- const idleJob = idleMonitor.start();
110
- runtime.registerJob(idleJob);
93
+ process.once('SIGTERM', onSigterm);
94
+ process.once('SIGINT', onSigint);
111
95
 
112
- return { runtime, gateway, idleMonitor, card, identity };
96
+ const _removeSignalHandlers = () => {
97
+ process.removeListener('SIGTERM', onSigterm);
98
+ process.removeListener('SIGINT', onSigint);
99
+ };
100
+
101
+ return { service, status, startDisposition, _removeSignalHandlers };
113
102
  }
114
103
 
115
104
  /**
116
- * Tears down all active components: gateway.close() then runtime.shutdown().
117
- * Idempotent safe to call multiple times.
105
+ * Tears down the AgentBnB node — only if this activate() call was the one that started it.
106
+ * If the node was already running before activate(), it is left untouched.
107
+ * Always removes the signal handlers registered by activate().
118
108
  */
119
109
  export async function deactivate(ctx: BootstrapContext): Promise<void> {
120
- try {
121
- await ctx.gateway.close();
122
- await ctx.runtime.shutdown();
123
- } catch {
124
- // Swallow errors — idempotent teardown
110
+ ctx._removeSignalHandlers();
111
+
112
+ if (ctx.startDisposition === 'started') {
113
+ try {
114
+ await ctx.service.stop();
115
+ } catch {
116
+ // Swallow errors — idempotent teardown
117
+ }
125
118
  }
126
119
  }
@@ -9,11 +9,12 @@
9
9
  # bash install.sh
10
10
  #
11
11
  # What it does:
12
- # 1. Checks Node.js >= 20 and pnpm are available
12
+ # 1. Resolves canonical Node.js runtime and verifies >= 20
13
13
  # 2. Installs the agentbnb CLI globally
14
- # 3. Initializes the ~/.agentbnb/ config directory with defaults
15
- # 4. Syncs capabilities from SOUL.md if one is found
16
- # 5. Prints a success summary and next steps
14
+ # 3. Verifies better-sqlite3 native module; rebuilds with persisted runtime if ABI mismatch
15
+ # 4. Initializes the ~/.agentbnb/ config directory with defaults
16
+ # 5. Syncs capabilities from SOUL.md if one is found
17
+ # 6. Prints a success summary and next steps
17
18
 
18
19
  set -euo pipefail
19
20
 
@@ -40,23 +41,52 @@ err() { echo "${RED}✗${RESET} $*" >&2; }
40
41
  step() { echo ""; echo "${BOLD}$*${RESET}"; }
41
42
 
42
43
  # ---------------------------------------------------------------------------
43
- # Step 1: Check prerequisites
44
+ # Step 1: Resolve canonical Node runtime + verify version
44
45
  # ---------------------------------------------------------------------------
45
- step "Step 1/5 — Checking prerequisites"
46
+ step "Step 1/6 — Checking prerequisites"
46
47
 
47
- # Node.js >= 20
48
- if ! command -v node &>/dev/null; then
48
+ # Resolve canonical Node exec path:
49
+ # 1. OPENCLAW_NODE_EXEC (set by OpenClaw harness when it manages the runtime)
50
+ # 2. Fallback: ask the shell's `node` for its own execPath (resolves shims to real binary)
51
+ #
52
+ # The resolved path is persisted to ~/.agentbnb/runtime.json.
53
+ # bootstrap.ts / ServiceCoordinator read this file to ensure all child processes
54
+ # (including better-sqlite3 native module consumers) use the same binary.
55
+ if [ -n "${OPENCLAW_NODE_EXEC:-}" ] && [ -x "$OPENCLAW_NODE_EXEC" ]; then
56
+ NODE_EXEC="$OPENCLAW_NODE_EXEC"
57
+ NODE_SOURCE="OPENCLAW_NODE_EXEC"
58
+ ok "Using Node runtime from OPENCLAW_NODE_EXEC: $NODE_EXEC"
59
+ elif command -v node &>/dev/null; then
60
+ NODE_EXEC="$(node -e 'process.stdout.write(process.execPath)')"
61
+ NODE_SOURCE="shell"
62
+ ok "Using Node runtime (resolved from shell): $NODE_EXEC"
63
+ else
49
64
  err "Node.js not found. Please install Node.js 20+ from https://nodejs.org"
50
65
  exit 1
51
66
  fi
52
67
 
53
- NODE_VERSION=$(node --version | sed 's/v//' | cut -d. -f1)
54
- if [ "$NODE_VERSION" -lt 20 ]; then
55
- err "Node.js >= 20 required (found v${NODE_VERSION}). Please upgrade: https://nodejs.org"
68
+ NODE_VERSION_FULL="$("$NODE_EXEC" --version)"
69
+ NODE_VERSION_MAJOR="$(echo "$NODE_VERSION_FULL" | sed 's/v//' | cut -d. -f1)"
70
+ if [ "$NODE_VERSION_MAJOR" -lt 20 ]; then
71
+ err "Node.js >= 20 required (found ${NODE_VERSION_FULL}). Please upgrade: https://nodejs.org"
56
72
  exit 1
57
73
  fi
58
74
 
59
- ok "Node.js $(node --version) found"
75
+ ok "Node.js ${NODE_VERSION_FULL} confirmed"
76
+
77
+ # Persist the canonical runtime so bootstrap and ServiceCoordinator use the same binary.
78
+ # Schema: { node_exec, node_version, source, detected_at }
79
+ # node_exec — absolute path to the node binary
80
+ # node_version — full version string (e.g. "v20.11.0")
81
+ # source — how it was resolved: "OPENCLAW_NODE_EXEC" | "shell"
82
+ # detected_at — ISO 8601 UTC timestamp
83
+ AGENTBNB_DIR="$HOME/.agentbnb"
84
+ mkdir -p "$AGENTBNB_DIR"
85
+ DETECTED_AT="$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
86
+ printf '{"node_exec":"%s","node_version":"%s","source":"%s","detected_at":"%s"}\n' \
87
+ "$NODE_EXEC" "$NODE_VERSION_FULL" "$NODE_SOURCE" "$DETECTED_AT" \
88
+ > "$AGENTBNB_DIR/runtime.json"
89
+ ok "Runtime persisted to ~/.agentbnb/runtime.json (source: ${NODE_SOURCE})"
60
90
 
61
91
  # pnpm (attempt install if missing)
62
92
  if ! command -v pnpm &>/dev/null; then
@@ -73,7 +103,7 @@ fi
73
103
  # ---------------------------------------------------------------------------
74
104
  # Step 2: Install AgentBnB CLI
75
105
  # ---------------------------------------------------------------------------
76
- step "Step 2/5 — Installing AgentBnB CLI"
106
+ step "Step 2/6 — Installing AgentBnB CLI"
77
107
 
78
108
  # Check if already installed (idempotent)
79
109
  if command -v agentbnb &>/dev/null; then
@@ -113,9 +143,39 @@ else
113
143
  fi
114
144
 
115
145
  # ---------------------------------------------------------------------------
116
- # Step 3: Initialize config + connect to public registry
146
+ # Step 3: Verify better-sqlite3 native module; rebuild if ABI mismatch
147
+ # Rebuild always uses the persisted runtime from ~/.agentbnb/runtime.json
148
+ # to ensure the compiled .node binary matches the binary used at runtime.
117
149
  # ---------------------------------------------------------------------------
118
- step "Step 3/5Initializing AgentBnB config"
150
+ step "Step 3/6Verifying native modules"
151
+
152
+ if "$NODE_EXEC" -e "require('better-sqlite3')" 2>/dev/null; then
153
+ ok "better-sqlite3 native module OK for ${NODE_VERSION_FULL}"
154
+ else
155
+ warn "better-sqlite3 not compiled for ${NODE_VERSION_FULL} — rebuilding..."
156
+ # Locate the agentbnb package directory
157
+ AGENTBNB_PKG="$("$NODE_EXEC" -e "
158
+ try { process.stdout.write(require.resolve('agentbnb/package.json').replace('/package.json','')); }
159
+ catch { process.stdout.write(''); }
160
+ " 2>/dev/null || true)"
161
+
162
+ if [ -n "$AGENTBNB_PKG" ]; then
163
+ # Pass --target so node-pre-gyp compiles against the exact persisted runtime version
164
+ NODE_TARGET="$(echo "$NODE_VERSION_FULL" | sed 's/v//')"
165
+ (cd "$AGENTBNB_PKG" && npm rebuild better-sqlite3 \
166
+ --runtime=node \
167
+ --target="$NODE_TARGET") \
168
+ && ok "better-sqlite3 rebuilt for node@${NODE_TARGET}" \
169
+ || warn "Rebuild failed — run manually: cd $AGENTBNB_PKG && npm rebuild better-sqlite3 --runtime=node --target=${NODE_TARGET}"
170
+ else
171
+ warn "Could not locate agentbnb package directory — run 'npm rebuild better-sqlite3' manually"
172
+ fi
173
+ fi
174
+
175
+ # ---------------------------------------------------------------------------
176
+ # Step 4: Initialize config + connect to public registry
177
+ # ---------------------------------------------------------------------------
178
+ step "Step 4/6 — Initializing AgentBnB config"
119
179
 
120
180
  # agentbnb init is idempotent — safe to run on existing installs
121
181
  if agentbnb init --yes 2>/dev/null; then
@@ -133,20 +193,20 @@ fi
133
193
  # Connect to the public AgentBnB registry (only if not already configured)
134
194
  CURRENT_REGISTRY=$(agentbnb config get registry 2>/dev/null || echo "")
135
195
  if [ -z "$CURRENT_REGISTRY" ]; then
136
- if agentbnb config set registry https://hub.agentbnb.dev 2>/dev/null; then
137
- ok "Connected to public registry: https://hub.agentbnb.dev"
196
+ if agentbnb config set registry https://agentbnb.fly.dev 2>/dev/null; then
197
+ ok "Connected to public registry: https://agentbnb.fly.dev"
138
198
  ok "Registry grants 50 credits to new agents on first sync"
139
199
  else
140
- warn "Could not set registry — run manually: agentbnb config set registry https://hub.agentbnb.dev"
200
+ warn "Could not set registry — run manually: agentbnb config set registry https://agentbnb.fly.dev"
141
201
  fi
142
202
  else
143
203
  ok "Registry already configured: $CURRENT_REGISTRY"
144
204
  fi
145
205
 
146
206
  # ---------------------------------------------------------------------------
147
- # Step 4: Sync from SOUL.md
207
+ # Step 5: Sync from SOUL.md
148
208
  # ---------------------------------------------------------------------------
149
- step "Step 4/5 — Syncing capabilities from SOUL.md"
209
+ step "Step 5/6 — Syncing capabilities from SOUL.md"
150
210
 
151
211
  SOUL_PATH=""
152
212
  # Check current directory first, then parent directory
@@ -170,9 +230,9 @@ else
170
230
  fi
171
231
 
172
232
  # ---------------------------------------------------------------------------
173
- # Step 5: Print success summary
233
+ # Step 6: Print success summary
174
234
  # ---------------------------------------------------------------------------
175
- step "Step 5/5 — Setup complete"
235
+ step "Step 6/6 — Setup complete"
176
236
 
177
237
  echo ""
178
238
  echo "${GREEN}${BOLD}AgentBnB skill installed successfully!${RESET}"
@@ -180,7 +240,9 @@ echo ""
180
240
  echo "What was set up:"
181
241
  ok "AgentBnB CLI available as 'agentbnb'"
182
242
  ok "Config directory: ~/.agentbnb/"
183
- ok "Registry: https://hub.agentbnb.dev (public network)"
243
+ ok "Node runtime: ${NODE_EXEC} (${NODE_VERSION_FULL}, source: ${NODE_SOURCE})"
244
+ ok "Runtime persisted to: ~/.agentbnb/runtime.json"
245
+ ok "Registry: https://agentbnb.fly.dev (public network)"
184
246
  ok "Default autonomy tier: Tier 3 (ask before all transactions)"
185
247
  ok "Default credit reserve: 20 credits"
186
248
 
@@ -197,10 +259,18 @@ fi
197
259
 
198
260
  echo ""
199
261
  echo "Next steps:"
200
- echo " 1. Run ${BOLD}agentbnb serve${RESET} to start accepting requests"
201
- echo " 2. Run ${BOLD}agentbnb openclaw status${RESET} to see your sync state"
202
- echo " 3. Run ${BOLD}agentbnb openclaw rules${RESET} to see your autonomy rules"
203
- echo " 4. Paste the rules into your HEARTBEAT.md (or copy from HEARTBEAT.rules.md)"
262
+ echo ""
263
+ echo " ${BOLD}If using OpenClaw (recommended):${RESET}"
264
+ echo " Import activate() from bootstrap.ts it starts the node automatically."
265
+ echo " No need to run 'agentbnb serve' manually."
266
+ echo ""
267
+ echo " ${BOLD}If running standalone (CLI only):${RESET}"
268
+ echo " Run ${BOLD}agentbnb serve${RESET} to start accepting requests."
269
+ echo ""
270
+ echo " ${BOLD}Either way:${RESET}"
271
+ echo " Run ${BOLD}agentbnb openclaw status${RESET} to see your sync state"
272
+ echo " Run ${BOLD}agentbnb openclaw rules${RESET} to see your autonomy rules"
273
+ echo " Paste the rules into your HEARTBEAT.md (or copy from HEARTBEAT.rules.md)"
204
274
  echo ""
205
275
  echo "Configure autonomy thresholds:"
206
276
  echo " ${BOLD}agentbnb config set tier1 10${RESET} # auto-execute under 10 credits"
@@ -1,10 +0,0 @@
1
- import {
2
- executeCapabilityRequest
3
- } from "./chunk-7NA43XCG.js";
4
- import "./chunk-T7NS2J2B.js";
5
- import "./chunk-DNWT5FZQ.js";
6
- import "./chunk-5KFI5X7B.js";
7
- import "./chunk-WGZ5AGOX.js";
8
- export {
9
- executeCapabilityRequest
10
- };