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.
- package/README.md +31 -2
- package/dist/chunk-AUBHR7HH.js +25 -0
- package/dist/chunk-B5FTAGFN.js +393 -0
- package/dist/{chunk-GGYC5U2Z.js → chunk-BTTL24TZ.js} +29 -91
- package/dist/chunk-C6KPAFCC.js +387 -0
- package/dist/chunk-CRFCWD6V.js +366 -0
- package/dist/chunk-CSATDXZC.js +89 -0
- package/dist/{chunk-T7NS2J2B.js → chunk-DFBX3BBD.js} +84 -1
- package/dist/{chunk-DNWT5FZQ.js → chunk-EANI2N2V.js} +98 -1
- package/dist/{chunk-HH24WMFN.js → chunk-FLY3WIQR.js} +1 -1
- package/dist/chunk-HLUEOLSZ.js +62 -0
- package/dist/chunk-IVOYM3WG.js +25 -0
- package/dist/chunk-LCAIAAG2.js +916 -0
- package/dist/chunk-MLS6IGGG.js +294 -0
- package/dist/{chunk-4P3EMGL4.js → chunk-MNO4COST.js} +5 -3
- package/dist/chunk-NH2FIERR.js +138 -0
- package/dist/chunk-UKT6H7YT.js +29 -0
- package/dist/{chunk-BH6WGYFB.js → chunk-VE3E4AMH.js} +8 -8
- package/dist/{chunk-7NA43XCG.js → chunk-W5BZMKMF.js} +163 -29
- package/dist/{chunk-FF226TIV.js → chunk-ZX5623ER.js} +0 -57
- package/dist/cli/index.js +362 -4631
- package/dist/{conduct-N52JX7RT.js → conduct-KM6ZNJGE.js} +10 -8
- package/dist/{conduct-GZQNFTRP.js → conduct-WGTMQND5.js} +10 -8
- package/dist/{conductor-mode-XUWGR4ZE.js → conductor-mode-OL2FNOYY.js} +6 -4
- package/dist/conductor-mode-VRO7TYW2.js +592 -0
- package/dist/execute-CPFSOOO3.js +13 -0
- package/dist/execute-IP2QHALV.js +10 -0
- package/dist/index.d.ts +19 -8
- package/dist/index.js +190 -37
- package/dist/peers-CJ7T4RJO.js +13 -0
- package/dist/process-guard-CC7CNRQJ.js +176 -0
- package/dist/{request-4GQSSM4B.js → request-YOWPXVLQ.js} +13 -10
- package/dist/schema-7BSSLZ4S.js +8 -0
- package/dist/{serve-skill-TPHZH6BS.js → serve-skill-JHFNR7BW.js} +8 -7
- package/dist/{server-365V3GYD.js → server-HKJJWFRG.js} +10 -8
- package/dist/service-coordinator-5R4LQW6L.js +4917 -0
- package/dist/skills/agentbnb/bootstrap.js +6181 -0
- package/dist/websocket-client-WRN3HO73.js +6 -0
- package/openclaw.plugin.json +54 -0
- package/package.json +11 -2
- package/skills/agentbnb/SKILL.md +87 -70
- package/skills/agentbnb/bootstrap.test.ts +142 -242
- package/skills/agentbnb/bootstrap.ts +88 -95
- package/skills/agentbnb/install.sh +97 -27
- package/dist/execute-PNGQOMYO.js +0 -10
|
@@ -1,126 +1,119 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* AgentBnB Bootstrap —
|
|
2
|
+
* AgentBnB Bootstrap — thin OpenClaw adapter layer.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
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
|
|
12
|
+
import { homedir } from 'node:os';
|
|
13
13
|
|
|
14
|
-
import {
|
|
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 {
|
|
21
|
-
import
|
|
22
|
-
import type {
|
|
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
|
-
/**
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
|
|
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
|
-
/**
|
|
31
|
+
/** Context returned by activate(). Pass to deactivate() for conditional teardown. */
|
|
49
32
|
export interface BootstrapContext {
|
|
50
|
-
/**
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
|
64
|
-
*
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
|
87
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
69
|
+
const opts: ServiceOptions = {
|
|
70
|
+
port: config.port,
|
|
71
|
+
registryUrl: config.registryUrl,
|
|
72
|
+
relay: config.relay,
|
|
73
|
+
};
|
|
95
74
|
|
|
96
|
-
const
|
|
75
|
+
const startDisposition = await service.ensureRunning(opts);
|
|
76
|
+
const status = await service.getNodeStatus();
|
|
97
77
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
109
|
-
|
|
110
|
-
runtime.registerJob(idleJob);
|
|
93
|
+
process.once('SIGTERM', onSigterm);
|
|
94
|
+
process.once('SIGINT', onSigint);
|
|
111
95
|
|
|
112
|
-
|
|
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
|
|
117
|
-
*
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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.
|
|
12
|
+
# 1. Resolves canonical Node.js runtime and verifies >= 20
|
|
13
13
|
# 2. Installs the agentbnb CLI globally
|
|
14
|
-
# 3.
|
|
15
|
-
# 4.
|
|
16
|
-
# 5.
|
|
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:
|
|
44
|
+
# Step 1: Resolve canonical Node runtime + verify version
|
|
44
45
|
# ---------------------------------------------------------------------------
|
|
45
|
-
step "Step 1/
|
|
46
|
+
step "Step 1/6 — Checking prerequisites"
|
|
46
47
|
|
|
47
|
-
# Node
|
|
48
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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 $
|
|
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/
|
|
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:
|
|
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/
|
|
150
|
+
step "Step 3/6 — Verifying 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://
|
|
137
|
-
ok "Connected to public registry: https://
|
|
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://
|
|
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
|
|
207
|
+
# Step 5: Sync from SOUL.md
|
|
148
208
|
# ---------------------------------------------------------------------------
|
|
149
|
-
step "Step
|
|
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
|
|
233
|
+
# Step 6: Print success summary
|
|
174
234
|
# ---------------------------------------------------------------------------
|
|
175
|
-
step "Step
|
|
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 "
|
|
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 "
|
|
201
|
-
echo "
|
|
202
|
-
echo "
|
|
203
|
-
echo "
|
|
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"
|
package/dist/execute-PNGQOMYO.js
DELETED