@poolzin/pool-bot 2026.2.1 → 2026.2.3
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/CHANGELOG.md +118 -0
- package/README-header.png +0 -0
- package/dist/acp/server.js +2 -0
- package/dist/agents/agent-paths.js +3 -1
- package/dist/agents/anthropic-payload-log.js +2 -2
- package/dist/agents/bash-tools.exec.js +1 -1
- package/dist/agents/bash-tools.shared.js +2 -1
- package/dist/agents/cache-trace.js +5 -5
- package/dist/agents/cli-runner.js +1 -1
- package/dist/agents/context.js +1 -1
- package/dist/agents/live-auth-keys.js +2 -2
- package/dist/agents/model-catalog.js +1 -1
- package/dist/agents/pi-embedded-runner/compact.js +7 -10
- package/dist/agents/pi-embedded-runner/model.js +1 -1
- package/dist/agents/pi-embedded-runner/session-manager-cache.js +1 -1
- package/dist/agents/pi-embedded-subscribe.raw-stream.js +2 -2
- package/dist/agents/sandbox/browser.js +5 -0
- package/dist/agents/shell-utils.js +1 -1
- package/dist/agents/skills/bundled-dir.js +1 -1
- package/dist/agents/synthetic-models.js +8 -0
- package/dist/agents/tools/image-tool.js +1 -1
- package/dist/agents/workspace.js +1 -1
- package/dist/auto-reply/envelope.js +52 -38
- package/dist/auto-reply/reply/get-reply.js +1 -1
- package/dist/auto-reply/reply/mentions.js +1 -1
- package/dist/build-info.json +2 -2
- package/dist/canvas-host/a2ui/index.html +28 -28
- package/dist/canvas-host/server.js +1 -1
- package/dist/channels/plugins/catalog.js +1 -1
- package/dist/cli/banner.js +12 -12
- package/dist/cli/browser-cli-manage.js +10 -10
- package/dist/cli/browser-cli.js +1 -1
- package/dist/cli/channel-options.js +1 -1
- package/dist/cli/cli-name.js +1 -1
- package/dist/cli/command-format.js +1 -1
- package/dist/cli/daemon-cli/install.js +1 -1
- package/dist/cli/daemon-cli/shared.js +8 -3
- package/dist/cli/daemon-cli/status.gather.js +2 -2
- package/dist/cli/daemon-cli/status.print.js +3 -3
- package/dist/cli/gateway-cli/dev.js +1 -1
- package/dist/cli/gateway-cli/run.js +11 -6
- package/dist/cli/gateway-cli/shared.js +1 -1
- package/dist/cli/node-cli/daemon.js +2 -1
- package/dist/cli/profile.js +10 -4
- package/dist/cli/program/help.js +1 -1
- package/dist/cli/program/preaction.js +1 -1
- package/dist/cli/program/register.agent.js +4 -4
- package/dist/cli/program/register.onboard.js +1 -1
- package/dist/cli/program/register.setup.js +1 -1
- package/dist/cli/program/register.subclis.js +2 -2
- package/dist/cli/route.js +1 -1
- package/dist/cli/tagline.js +8 -8
- package/dist/cli/update-cli.js +12 -10
- package/dist/commands/auth-choice-options.js +104 -33
- package/dist/commands/auth-choice.apply.oauth.js +1 -1
- package/dist/commands/configure.wizard.js +10 -10
- package/dist/commands/daemon-install-helpers.js +1 -1
- package/dist/commands/dashboard.js +1 -1
- package/dist/commands/doctor-format.js +3 -3
- package/dist/commands/doctor-gateway-daemon-flow.js +3 -3
- package/dist/commands/doctor-gateway-services.js +2 -2
- package/dist/commands/doctor-platform-notes.js +23 -8
- package/dist/commands/doctor-update.js +1 -1
- package/dist/commands/gateway-status/helpers.js +2 -2
- package/dist/commands/health.js +2 -2
- package/dist/commands/models/list.registry.js +1 -1
- package/dist/commands/node-daemon-install-helpers.js +1 -1
- package/dist/commands/onboard-helpers.js +6 -6
- package/dist/commands/status-all.js +2 -2
- package/dist/commands/status.gateway-probe.js +2 -2
- package/dist/commands/status.scan.js +2 -2
- package/dist/compat/legacy-names.js +2 -0
- package/dist/config/io.js +5 -3
- package/dist/config/paths.js +15 -14
- package/dist/config/schema.field-metadata.js +1 -1
- package/dist/config/schema.js +1 -1
- package/dist/config/sessions/store.js +1 -1
- package/dist/control-ui/assets/{index-CIRDm-Lu.css → index-CSfXd2LO.css} +1 -1
- package/dist/control-ui/assets/{index-CmNMuoem.js → index-HRr1grwl.js} +446 -413
- package/dist/control-ui/assets/index-HRr1grwl.js.map +1 -0
- package/dist/control-ui/index.html +4 -4
- package/dist/cron/isolated-agent/run.js +1 -0
- package/dist/daemon/inspect.js +1 -1
- package/dist/daemon/launchd.js +5 -5
- package/dist/daemon/node-service.js +14 -0
- package/dist/daemon/paths.js +2 -2
- package/dist/daemon/schtasks.js +6 -6
- package/dist/daemon/service-env.js +25 -5
- package/dist/daemon/systemd.js +6 -6
- package/dist/entry.js +3 -2
- package/dist/gateway/auth.js +3 -3
- package/dist/gateway/call.js +2 -2
- package/dist/gateway/server/ws-connection/message-handler.js +1 -1
- package/dist/gateway/server-browser.js +2 -2
- package/dist/gateway/server-constants.js +2 -2
- package/dist/gateway/server-cron.js +1 -1
- package/dist/gateway/server-discovery-runtime.js +2 -2
- package/dist/gateway/server-discovery.js +2 -2
- package/dist/gateway/server-reload-handlers.js +4 -4
- package/dist/gateway/server-runtime-config.js +2 -2
- package/dist/gateway/server-startup.js +4 -4
- package/dist/gateway/server.impl.js +3 -2
- package/dist/gateway/test-helpers.mocks.js +14 -7
- package/dist/gateway/test-helpers.server.js +60 -22
- package/dist/hooks/bundled-dir.js +1 -1
- package/dist/hooks/gmail-watcher.js +1 -1
- package/dist/infra/bonjour.js +1 -1
- package/dist/infra/diagnostic-flags.js +3 -2
- package/dist/infra/dotenv.js +1 -1
- package/dist/infra/format-time/format-datetime.js +1 -1
- package/dist/infra/gateway-lock.js +1 -1
- package/dist/infra/home-dir.js +1 -1
- package/dist/infra/path-env.js +2 -1
- package/dist/infra/restart.js +3 -3
- package/dist/infra/shell-env.js +3 -3
- package/dist/infra/state-migrations.js +3 -3
- package/dist/infra/system-presence.js +1 -1
- package/dist/infra/update-runner.js +1 -1
- package/dist/infra/widearea-dns.js +1 -1
- package/dist/macos/gateway-daemon.js +6 -4
- package/dist/macos/relay-smoke.js +1 -1
- package/dist/macos/relay.js +1 -1
- package/dist/media/image-ops.js +2 -2
- package/dist/media/store.js +2 -0
- package/dist/media-understanding/providers/image.js +1 -1
- package/dist/memory/batch-gemini.js +1 -1
- package/dist/memory/embeddings-gemini.js +1 -1
- package/dist/node-host/runner.js +3 -2
- package/dist/plugins/bundled-dir.js +1 -1
- package/dist/plugins/manifest-registry.js +2 -2
- package/dist/security/audit-extra.sync.js +1 -1
- package/dist/security/audit.js +3 -2
- package/dist/telegram/accounts.js +1 -1
- package/dist/telegram/bot-message-dispatch.js +6 -2
- package/dist/telegram/network-config.js +6 -4
- package/dist/test-helpers/state-dir-env.js +8 -0
- package/dist/tts/tts.js +1 -1
- package/dist/tui/gateway-chat.js +2 -1
- package/dist/utils.js +2 -2
- package/dist/version.js +1 -1
- package/dist/wizard/clack-prompter.js +9 -6
- package/dist/wizard/onboarding.finalize.js +1 -1
- package/dist/wizard/onboarding.js +2 -2
- package/extensions/googlechat/node_modules/.bin/poolbot +21 -0
- package/extensions/googlechat/package.json +2 -2
- package/extensions/line/node_modules/.bin/poolbot +21 -0
- package/extensions/line/package.json +1 -1
- package/extensions/matrix/node_modules/.bin/poolbot +21 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/memory-core/node_modules/.bin/poolbot +21 -0
- package/extensions/memory-core/package.json +4 -1
- package/extensions/twitch/node_modules/.bin/poolbot +21 -0
- package/extensions/twitch/package.json +1 -1
- package/package.json +183 -24
- package/dist/control-ui/assets/index-CmNMuoem.js.map +0 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
-
<title>
|
|
6
|
+
<title>Poolbot Canvas</title>
|
|
7
7
|
<script>
|
|
8
8
|
(() => {
|
|
9
9
|
try {
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
backface-visibility: hidden;
|
|
82
82
|
opacity: 0.45;
|
|
83
83
|
pointer-events: none;
|
|
84
|
-
animation:
|
|
84
|
+
animation: poolbot-grid-drift 140s ease-in-out infinite alternate;
|
|
85
85
|
}
|
|
86
86
|
:root[data-platform="android"] body::before {
|
|
87
87
|
opacity: 0.8;
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
backface-visibility: hidden;
|
|
102
102
|
transform: translate3d(0, 0, 0);
|
|
103
103
|
pointer-events: none;
|
|
104
|
-
animation:
|
|
104
|
+
animation: poolbot-glow-drift 110s ease-in-out infinite alternate;
|
|
105
105
|
}
|
|
106
106
|
:root[data-platform="android"] body::after {
|
|
107
107
|
opacity: 0.85;
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
opacity: 0.7;
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
@keyframes
|
|
119
|
+
@keyframes poolbot-grid-drift {
|
|
120
120
|
0% {
|
|
121
121
|
transform: translate3d(-12px, 8px, 0) rotate(-7deg);
|
|
122
122
|
opacity: 0.4;
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
opacity: 0.42;
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
|
-
@keyframes
|
|
133
|
+
@keyframes poolbot-glow-drift {
|
|
134
134
|
0% {
|
|
135
135
|
transform: translate3d(-18px, 12px, 0) scale(1.02);
|
|
136
136
|
opacity: 0.4;
|
|
@@ -153,14 +153,14 @@
|
|
|
153
153
|
touch-action: none;
|
|
154
154
|
z-index: 1;
|
|
155
155
|
}
|
|
156
|
-
:root[data-platform="android"] #
|
|
156
|
+
:root[data-platform="android"] #poolbot-canvas {
|
|
157
157
|
background:
|
|
158
158
|
radial-gradient(1100px 800px at 20% 15%, rgba(42, 113, 255, 0.78), rgba(0, 0, 0, 0) 58%),
|
|
159
159
|
radial-gradient(900px 650px at 82% 28%, rgba(255, 0, 138, 0.66), rgba(0, 0, 0, 0) 62%),
|
|
160
160
|
radial-gradient(1000px 900px at 60% 88%, rgba(0, 209, 255, 0.58), rgba(0, 0, 0, 0) 62%),
|
|
161
161
|
#141c33;
|
|
162
162
|
}
|
|
163
|
-
#
|
|
163
|
+
#poolbot-status {
|
|
164
164
|
position: fixed;
|
|
165
165
|
inset: 0;
|
|
166
166
|
display: none;
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
pointer-events: none;
|
|
173
173
|
z-index: 3;
|
|
174
174
|
}
|
|
175
|
-
#
|
|
175
|
+
#poolbot-status .card {
|
|
176
176
|
width: min(560px, 88vw);
|
|
177
177
|
text-align: left;
|
|
178
178
|
padding: 14px 16px 12px;
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
-webkit-backdrop-filter: blur(18px) saturate(140%);
|
|
186
186
|
backdrop-filter: blur(18px) saturate(140%);
|
|
187
187
|
}
|
|
188
|
-
#
|
|
188
|
+
#poolbot-status .title {
|
|
189
189
|
font:
|
|
190
190
|
600 12px/1.2 -apple-system,
|
|
191
191
|
BlinkMacSystemFont,
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
text-transform: uppercase;
|
|
197
197
|
color: rgba(255, 255, 255, 0.7);
|
|
198
198
|
}
|
|
199
|
-
#
|
|
199
|
+
#poolbot-status .subtitle {
|
|
200
200
|
margin-top: 8px;
|
|
201
201
|
font:
|
|
202
202
|
500 13px/1.45 -apple-system,
|
|
@@ -208,39 +208,39 @@
|
|
|
208
208
|
white-space: pre-wrap;
|
|
209
209
|
overflow-wrap: anywhere;
|
|
210
210
|
}
|
|
211
|
-
|
|
211
|
+
poolbot-a2ui-host {
|
|
212
212
|
display: block;
|
|
213
213
|
height: 100%;
|
|
214
214
|
position: fixed;
|
|
215
215
|
inset: 0;
|
|
216
216
|
z-index: 4;
|
|
217
|
-
--
|
|
218
|
-
--
|
|
219
|
-
--
|
|
220
|
-
--
|
|
221
|
-
--
|
|
222
|
-
--
|
|
223
|
-
--
|
|
217
|
+
--poolbot-a2ui-inset-top: 28px;
|
|
218
|
+
--poolbot-a2ui-inset-right: 0px;
|
|
219
|
+
--poolbot-a2ui-inset-bottom: 0px;
|
|
220
|
+
--poolbot-a2ui-inset-left: 0px;
|
|
221
|
+
--poolbot-a2ui-scroll-pad-bottom: 0px;
|
|
222
|
+
--poolbot-a2ui-status-top: calc(50% - 18px);
|
|
223
|
+
--poolbot-a2ui-empty-top: 18px;
|
|
224
224
|
}
|
|
225
225
|
</style>
|
|
226
226
|
</head>
|
|
227
227
|
<body>
|
|
228
|
-
<canvas id="
|
|
229
|
-
<div id="
|
|
228
|
+
<canvas id="poolbot-canvas"></canvas>
|
|
229
|
+
<div id="poolbot-status">
|
|
230
230
|
<div class="card">
|
|
231
|
-
<div class="title" id="
|
|
232
|
-
<div class="subtitle" id="
|
|
231
|
+
<div class="title" id="poolbot-status-title">Ready</div>
|
|
232
|
+
<div class="subtitle" id="poolbot-status-subtitle">Waiting for agent</div>
|
|
233
233
|
</div>
|
|
234
234
|
</div>
|
|
235
|
-
<
|
|
235
|
+
<poolbot-a2ui-host></poolbot-a2ui-host>
|
|
236
236
|
<script src="a2ui.bundle.js"></script>
|
|
237
237
|
<script>
|
|
238
238
|
(() => {
|
|
239
|
-
const canvas = document.getElementById("
|
|
239
|
+
const canvas = document.getElementById("poolbot-canvas");
|
|
240
240
|
const ctx = canvas.getContext("2d");
|
|
241
|
-
const statusEl = document.getElementById("
|
|
242
|
-
const titleEl = document.getElementById("
|
|
243
|
-
const subtitleEl = document.getElementById("
|
|
241
|
+
const statusEl = document.getElementById("poolbot-status");
|
|
242
|
+
const titleEl = document.getElementById("poolbot-status-title");
|
|
243
|
+
const subtitleEl = document.getElementById("poolbot-status-subtitle");
|
|
244
244
|
const debugStatusEnabledByQuery = (() => {
|
|
245
245
|
try {
|
|
246
246
|
const params = new URLSearchParams(window.location.search);
|
|
@@ -278,7 +278,7 @@
|
|
|
278
278
|
statusEl.style.display = "none";
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
-
window.
|
|
281
|
+
window.__poolbot = {
|
|
282
282
|
canvas,
|
|
283
283
|
ctx,
|
|
284
284
|
setDebugStatusEnabled,
|
|
@@ -151,7 +151,7 @@ async function resolveFilePath(rootReal, urlPath) {
|
|
|
151
151
|
return await tryOpen(rel);
|
|
152
152
|
}
|
|
153
153
|
function isDisabledByEnv() {
|
|
154
|
-
if (isTruthyEnvValue(process.env.CLAWDBOT_SKIP_CANVAS_HOST))
|
|
154
|
+
if (isTruthyEnvValue(process.env.POOLBOT_SKIP_CANVAS_HOST || process.env.CLAWDBOT_SKIP_CANVAS_HOST))
|
|
155
155
|
return true;
|
|
156
156
|
if (process.env.NODE_ENV === "test")
|
|
157
157
|
return true;
|
|
@@ -14,7 +14,7 @@ const DEFAULT_CATALOG_PATHS = [
|
|
|
14
14
|
path.join(CONFIG_DIR, "mpm", "catalog.json"),
|
|
15
15
|
path.join(CONFIG_DIR, "plugins", "catalog.json"),
|
|
16
16
|
];
|
|
17
|
-
const ENV_CATALOG_PATHS = ["CLAWDBOT_PLUGIN_CATALOG_PATHS", "CLAWDBOT_MPM_CATALOG_PATHS"];
|
|
17
|
+
const ENV_CATALOG_PATHS = ["POOLBOT_PLUGIN_CATALOG_PATHS", "POOLBOT_MPM_CATALOG_PATHS", "CLAWDBOT_PLUGIN_CATALOG_PATHS", "CLAWDBOT_MPM_CATALOG_PATHS"];
|
|
18
18
|
function isRecord(value) {
|
|
19
19
|
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
20
20
|
}
|
package/dist/cli/banner.js
CHANGED
|
@@ -26,7 +26,7 @@ export function formatCliBannerLine(version, options = {}) {
|
|
|
26
26
|
const rich = options.richTty ?? isRich();
|
|
27
27
|
const cliName = resolveCliName(options.argv ?? process.argv, options.env);
|
|
28
28
|
const title = cliName === "poolbot" ? "🎱 Pool Bot" : "🎱 Pool Bot";
|
|
29
|
-
const prefix = "
|
|
29
|
+
const prefix = "🎱 ";
|
|
30
30
|
const columns = options.columns ?? process.stdout.columns ?? 120;
|
|
31
31
|
const plainFullLine = `${title} ${version} (${commitLabel}) — ${tagline}`;
|
|
32
32
|
const fitsOnOneLine = visibleWidth(plainFullLine) <= columns;
|
|
@@ -46,12 +46,12 @@ export function formatCliBannerLine(version, options = {}) {
|
|
|
46
46
|
return `${line1}\n${line2}`;
|
|
47
47
|
}
|
|
48
48
|
const LOBSTER_ASCII = [
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
49
|
+
"████░░░███░░░███░░█░░░░████░░░███░░▀█▀",
|
|
50
|
+
"█░░░█░█░░░█░█░░░█░█░░░░█░░░█░█░░░█░░█░",
|
|
51
|
+
"████░░█░░░█░█░░░█░█░░░░████░░█░░░█░░█░",
|
|
52
|
+
"█░░░░░█░░░█░█░░░█░█░░░░█░░░█░█░░░█░░█░",
|
|
53
|
+
"█░░░░░░███░░░███░░█████░████░░░███░░░█░",
|
|
54
|
+
" 🎱 RACK 'EM UP 🎱",
|
|
55
55
|
];
|
|
56
56
|
export function formatCliBannerArt(options = {}) {
|
|
57
57
|
const rich = options.richTty ?? isRich();
|
|
@@ -67,11 +67,11 @@ export function formatCliBannerArt(options = {}) {
|
|
|
67
67
|
return theme.muted(ch);
|
|
68
68
|
};
|
|
69
69
|
const colored = LOBSTER_ASCII.map((line) => {
|
|
70
|
-
if (line.includes("
|
|
71
|
-
return (theme.muted("
|
|
72
|
-
theme.accent("
|
|
73
|
-
theme.info("
|
|
74
|
-
theme.accent("
|
|
70
|
+
if (line.includes("RACK 'EM UP")) {
|
|
71
|
+
return (theme.muted(" ") +
|
|
72
|
+
theme.accent("🎱") +
|
|
73
|
+
theme.info(" RACK 'EM UP ") +
|
|
74
|
+
theme.accent("🎱"));
|
|
75
75
|
}
|
|
76
76
|
return splitGraphemes(line).map(colorChar).join("");
|
|
77
77
|
});
|
|
@@ -30,7 +30,7 @@ export function registerBrowserManageCommands(browser, parentOpts) {
|
|
|
30
30
|
const detectedPath = status.detectedExecutablePath ?? status.executablePath;
|
|
31
31
|
const detectedDisplay = detectedPath ? shortenHomePath(detectedPath) : "auto";
|
|
32
32
|
defaultRuntime.log([
|
|
33
|
-
`profile: ${status.profile ?? "
|
|
33
|
+
`profile: ${status.profile ?? "poolbot"}`,
|
|
34
34
|
`enabled: ${status.enabled}`,
|
|
35
35
|
`running: ${status.running}`,
|
|
36
36
|
`cdpPort: ${status.cdpPort}`,
|
|
@@ -64,8 +64,8 @@ export function registerBrowserManageCommands(browser, parentOpts) {
|
|
|
64
64
|
defaultRuntime.log(JSON.stringify(status, null, 2));
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
67
|
-
const name = status.profile ?? "
|
|
68
|
-
defaultRuntime.log(info(
|
|
67
|
+
const name = status.profile ?? "poolbot";
|
|
68
|
+
defaultRuntime.log(info(`🎱 browser [${name}] running: ${status.running}`));
|
|
69
69
|
});
|
|
70
70
|
});
|
|
71
71
|
browser
|
|
@@ -89,8 +89,8 @@ export function registerBrowserManageCommands(browser, parentOpts) {
|
|
|
89
89
|
defaultRuntime.log(JSON.stringify(status, null, 2));
|
|
90
90
|
return;
|
|
91
91
|
}
|
|
92
|
-
const name = status.profile ?? "
|
|
93
|
-
defaultRuntime.log(info(
|
|
92
|
+
const name = status.profile ?? "poolbot";
|
|
93
|
+
defaultRuntime.log(info(`🎱 browser [${name}] running: ${status.running}`));
|
|
94
94
|
});
|
|
95
95
|
});
|
|
96
96
|
browser
|
|
@@ -110,11 +110,11 @@ export function registerBrowserManageCommands(browser, parentOpts) {
|
|
|
110
110
|
return;
|
|
111
111
|
}
|
|
112
112
|
if (!result.moved) {
|
|
113
|
-
defaultRuntime.log(info(
|
|
113
|
+
defaultRuntime.log(info(`🎱 browser profile already missing.`));
|
|
114
114
|
return;
|
|
115
115
|
}
|
|
116
116
|
const dest = result.to ?? result.from;
|
|
117
|
-
defaultRuntime.log(info(
|
|
117
|
+
defaultRuntime.log(info(`🎱 browser profile moved to Trash (${dest})`));
|
|
118
118
|
});
|
|
119
119
|
});
|
|
120
120
|
browser
|
|
@@ -374,7 +374,7 @@ export function registerBrowserManageCommands(browser, parentOpts) {
|
|
|
374
374
|
return;
|
|
375
375
|
}
|
|
376
376
|
const loc = result.isRemote ? ` cdpUrl: ${result.cdpUrl}` : ` port: ${result.cdpPort}`;
|
|
377
|
-
defaultRuntime.log(info(
|
|
377
|
+
defaultRuntime.log(info(`🎱 Created profile "${result.profile}"\n${loc}\n color: ${result.color}${opts.driver === "extension" ? "\n driver: extension" : ""}`));
|
|
378
378
|
});
|
|
379
379
|
});
|
|
380
380
|
browser
|
|
@@ -393,8 +393,8 @@ export function registerBrowserManageCommands(browser, parentOpts) {
|
|
|
393
393
|
return;
|
|
394
394
|
}
|
|
395
395
|
const msg = result.deleted
|
|
396
|
-
?
|
|
397
|
-
:
|
|
396
|
+
? `🎱 Deleted profile "${result.profile}" (user data removed)`
|
|
397
|
+
: `🎱 Deleted profile "${result.profile}" (no user data found)`;
|
|
398
398
|
defaultRuntime.log(info(msg));
|
|
399
399
|
});
|
|
400
400
|
});
|
package/dist/cli/browser-cli.js
CHANGED
|
@@ -16,7 +16,7 @@ import { addGatewayClientOptions } from "./gateway-rpc.js";
|
|
|
16
16
|
export function registerBrowserCli(program) {
|
|
17
17
|
const browser = program
|
|
18
18
|
.command("browser")
|
|
19
|
-
.description("Manage
|
|
19
|
+
.description("Manage poolbot's dedicated browser (Chrome/Chromium)")
|
|
20
20
|
.option("--browser-profile <name>", "Browser profile name (default from config)")
|
|
21
21
|
.option("--json", "Output machine-readable JSON", false)
|
|
22
22
|
.addHelpText("after", () => `\n${theme.heading("Examples:")}\n${formatHelpExamples([...browserCoreExamples, ...browserActionExamples].map((cmd) => [cmd, ""]), true)}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/browser", "docs.molt.bot/cli/browser")}\n`)
|
|
@@ -17,7 +17,7 @@ function dedupe(values) {
|
|
|
17
17
|
export function resolveCliChannelOptions() {
|
|
18
18
|
const catalog = listChannelPluginCatalogEntries().map((entry) => entry.id);
|
|
19
19
|
const base = dedupe([...CHAT_CHANNEL_ORDER, ...catalog]);
|
|
20
|
-
if (isTruthyEnvValue(process.env.CLAWDBOT_EAGER_CHANNEL_OPTIONS)) {
|
|
20
|
+
if (isTruthyEnvValue(process.env.POOLBOT_EAGER_CHANNEL_OPTIONS || process.env.CLAWDBOT_EAGER_CHANNEL_OPTIONS)) {
|
|
21
21
|
ensurePluginRegistryLoaded();
|
|
22
22
|
const pluginIds = listChannelPlugins().map((plugin) => plugin.id);
|
|
23
23
|
return dedupe([...base, ...pluginIds]);
|
package/dist/cli/cli-name.js
CHANGED
|
@@ -4,7 +4,7 @@ export const LEGACY_CLI_NAME = "poolbot";
|
|
|
4
4
|
const KNOWN_CLI_NAMES = new Set([DEFAULT_CLI_NAME, LEGACY_CLI_NAME]);
|
|
5
5
|
const CLI_PREFIX_RE = /^(?:((?:pnpm|npm|bunx|npx)\s+))?(poolbot|poolbot)\b/;
|
|
6
6
|
export function resolveCliName(argv = process.argv, env = process.env) {
|
|
7
|
-
const override = env.MOLTBOT_CLI_NAME?.trim() || env.CLAWDBOT_CLI_NAME?.trim();
|
|
7
|
+
const override = env.POOLBOT_CLI_NAME?.trim() || env.MOLTBOT_CLI_NAME?.trim() || env.CLAWDBOT_CLI_NAME?.trim();
|
|
8
8
|
if (override)
|
|
9
9
|
return override;
|
|
10
10
|
const argv1 = argv[1];
|
|
@@ -6,7 +6,7 @@ const DEV_FLAG_RE = /(?:^|\s)--dev(?:\s|$)/;
|
|
|
6
6
|
export function formatCliCommand(command, env = process.env) {
|
|
7
7
|
const cliName = resolveCliName(undefined, env);
|
|
8
8
|
const normalizedCommand = replaceCliName(command, cliName);
|
|
9
|
-
const profile = normalizeProfileName(env.CLAWDBOT_PROFILE);
|
|
9
|
+
const profile = normalizeProfileName(env.POOLBOT_PROFILE || env.CLAWDBOT_PROFILE);
|
|
10
10
|
if (!profile)
|
|
11
11
|
return normalizedCommand;
|
|
12
12
|
if (!CLI_PREFIX_RE.test(normalizedCommand))
|
|
@@ -73,7 +73,7 @@ export async function runDaemonInstall(opts) {
|
|
|
73
73
|
const { programArguments, workingDirectory, environment } = await buildGatewayInstallPlan({
|
|
74
74
|
env: process.env,
|
|
75
75
|
port,
|
|
76
|
-
token: opts.token || cfg.gateway?.auth?.token || process.env.CLAWDBOT_GATEWAY_TOKEN,
|
|
76
|
+
token: opts.token || cfg.gateway?.auth?.token || process.env.POOLBOT_GATEWAY_TOKEN || process.env.CLAWDBOT_GATEWAY_TOKEN,
|
|
77
77
|
runtime: runtimeRaw,
|
|
78
78
|
warn: (message) => {
|
|
79
79
|
if (json)
|
|
@@ -45,6 +45,11 @@ export function pickProbeHostForBind(bindMode, tailnetIPv4, customBindHost) {
|
|
|
45
45
|
return "127.0.0.1";
|
|
46
46
|
}
|
|
47
47
|
const SAFE_DAEMON_ENV_KEYS = [
|
|
48
|
+
"POOLBOT_STATE_DIR",
|
|
49
|
+
"POOLBOT_CONFIG_PATH",
|
|
50
|
+
"POOLBOT_PROFILE",
|
|
51
|
+
"POOLBOT_GATEWAY_PORT",
|
|
52
|
+
"POOLBOT_NIX_MODE",
|
|
48
53
|
"MOLTBOT_STATE_DIR",
|
|
49
54
|
"MOLTBOT_CONFIG_PATH",
|
|
50
55
|
"CLAWDBOT_PROFILE",
|
|
@@ -129,11 +134,11 @@ export function renderRuntimeHints(runtime, env = process.env) {
|
|
|
129
134
|
hints.push(`Launchd stderr (if installed): ${logs.stderrPath}`);
|
|
130
135
|
}
|
|
131
136
|
else if (process.platform === "linux") {
|
|
132
|
-
const unit = resolveGatewaySystemdServiceName(env.CLAWDBOT_PROFILE);
|
|
137
|
+
const unit = resolveGatewaySystemdServiceName(env.POOLBOT_PROFILE ?? env.CLAWDBOT_PROFILE);
|
|
133
138
|
hints.push(`Logs: journalctl --user -u ${unit}.service -n 200 --no-pager`);
|
|
134
139
|
}
|
|
135
140
|
else if (process.platform === "win32") {
|
|
136
|
-
const task = resolveGatewayWindowsTaskName(env.CLAWDBOT_PROFILE);
|
|
141
|
+
const task = resolveGatewayWindowsTaskName(env.POOLBOT_PROFILE ?? env.CLAWDBOT_PROFILE);
|
|
137
142
|
hints.push(`Logs: schtasks /Query /TN "${task}" /V /FO LIST`);
|
|
138
143
|
}
|
|
139
144
|
}
|
|
@@ -144,7 +149,7 @@ export function renderGatewayServiceStartHints(env = process.env) {
|
|
|
144
149
|
formatCliCommand("poolbot gateway install", env),
|
|
145
150
|
formatCliCommand("poolbot gateway", env),
|
|
146
151
|
];
|
|
147
|
-
const profile = env.CLAWDBOT_PROFILE;
|
|
152
|
+
const profile = env.POOLBOT_PROFILE ?? env.CLAWDBOT_PROFILE;
|
|
148
153
|
switch (process.platform) {
|
|
149
154
|
case "darwin": {
|
|
150
155
|
const label = resolveGatewayLaunchAgentLabel(profile);
|
|
@@ -106,10 +106,10 @@ export async function gatherDaemonStatus(opts) {
|
|
|
106
106
|
? await probeGatewayStatus({
|
|
107
107
|
url: probeUrl,
|
|
108
108
|
token: opts.rpc.token ||
|
|
109
|
-
mergedDaemonEnv.CLAWDBOT_GATEWAY_TOKEN ||
|
|
109
|
+
mergedDaemonEnv.POOLBOT_GATEWAY_TOKEN || mergedDaemonEnv.CLAWDBOT_GATEWAY_TOKEN ||
|
|
110
110
|
daemonCfg.gateway?.auth?.token,
|
|
111
111
|
password: opts.rpc.password ||
|
|
112
|
-
mergedDaemonEnv.CLAWDBOT_GATEWAY_PASSWORD ||
|
|
112
|
+
mergedDaemonEnv.POOLBOT_GATEWAY_PASSWORD || mergedDaemonEnv.CLAWDBOT_GATEWAY_PASSWORD ||
|
|
113
113
|
daemonCfg.gateway?.auth?.password,
|
|
114
114
|
timeoutMs,
|
|
115
115
|
json: opts.rpc.json,
|
|
@@ -95,7 +95,7 @@ export function printDaemonStatus(status, opts) {
|
|
|
95
95
|
}
|
|
96
96
|
if (status.config.mismatch) {
|
|
97
97
|
defaultRuntime.error(errorText("Root cause: CLI and service are using different config paths (likely a profile/state-dir mismatch)."));
|
|
98
|
-
defaultRuntime.error(errorText(`Fix: rerun \`${formatCliCommand("poolbot gateway install --force")}\` from the same --profile /
|
|
98
|
+
defaultRuntime.error(errorText(`Fix: rerun \`${formatCliCommand("poolbot gateway install --force")}\` from the same --profile / POOLBOT_STATE_DIR you expect.`));
|
|
99
99
|
}
|
|
100
100
|
spacer();
|
|
101
101
|
}
|
|
@@ -176,7 +176,7 @@ export function printDaemonStatus(status, opts) {
|
|
|
176
176
|
}
|
|
177
177
|
if (service.runtime?.cachedLabel) {
|
|
178
178
|
const env = (service.command?.environment ?? process.env);
|
|
179
|
-
const labelValue = resolveGatewayLaunchAgentLabel(env.CLAWDBOT_PROFILE);
|
|
179
|
+
const labelValue = resolveGatewayLaunchAgentLabel(env.POOLBOT_PROFILE || env.CLAWDBOT_PROFILE);
|
|
180
180
|
defaultRuntime.error(errorText(`LaunchAgent label cached but plist missing. Clear with: launchctl bootout gui/$UID/${labelValue}`));
|
|
181
181
|
defaultRuntime.error(errorText(`Then reinstall: ${formatCliCommand("poolbot gateway install")}`));
|
|
182
182
|
spacer();
|
|
@@ -203,7 +203,7 @@ export function printDaemonStatus(status, opts) {
|
|
|
203
203
|
}
|
|
204
204
|
if (process.platform === "linux") {
|
|
205
205
|
const env = (service.command?.environment ?? process.env);
|
|
206
|
-
const unit = resolveGatewaySystemdServiceName(env.CLAWDBOT_PROFILE);
|
|
206
|
+
const unit = resolveGatewaySystemdServiceName(env.POOLBOT_PROFILE || env.CLAWDBOT_PROFILE);
|
|
207
207
|
defaultRuntime.error(errorText(`Logs: journalctl --user -u ${unit}.service -n 200 --no-pager`));
|
|
208
208
|
}
|
|
209
209
|
else if (process.platform === "darwin") {
|
|
@@ -27,7 +27,7 @@ async function loadDevTemplate(name, fallback) {
|
|
|
27
27
|
}
|
|
28
28
|
const resolveDevWorkspaceDir = (env = process.env) => {
|
|
29
29
|
const baseDir = resolveDefaultAgentWorkspaceDir(env, os.homedir);
|
|
30
|
-
const profile = env.CLAWDBOT_PROFILE?.trim().toLowerCase();
|
|
30
|
+
const profile = (env.POOLBOT_PROFILE || env.CLAWDBOT_PROFILE)?.trim().toLowerCase();
|
|
31
31
|
if (profile === "dev")
|
|
32
32
|
return baseDir;
|
|
33
33
|
return `${baseDir}-${DEV_AGENT_WORKSPACE_SUFFIX}`;
|
|
@@ -16,7 +16,7 @@ import { runGatewayLoop } from "./run-loop.js";
|
|
|
16
16
|
import { describeUnknownError, extractGatewayMiskeys, maybeExplainGatewayServiceStop, parsePort, toOptionString, } from "./shared.js";
|
|
17
17
|
const gatewayLog = createSubsystemLogger("gateway");
|
|
18
18
|
async function runGatewayCommand(opts) {
|
|
19
|
-
const isDevProfile = process.env.CLAWDBOT_PROFILE?.trim().toLowerCase() === "dev";
|
|
19
|
+
const isDevProfile = (process.env.POOLBOT_PROFILE || process.env.CLAWDBOT_PROFILE)?.trim().toLowerCase() === "dev";
|
|
20
20
|
const devMode = Boolean(opts.dev) || isDevProfile;
|
|
21
21
|
if (opts.reset && !devMode) {
|
|
22
22
|
defaultRuntime.error("Use --reset with --dev.");
|
|
@@ -27,6 +27,7 @@ async function runGatewayCommand(opts) {
|
|
|
27
27
|
setVerbose(Boolean(opts.verbose));
|
|
28
28
|
if (opts.claudeCliLogs) {
|
|
29
29
|
setConsoleSubsystemFilter(["agent/claude-cli"]);
|
|
30
|
+
process.env.POOLBOT_CLAUDE_CLI_LOG_OUTPUT = "1";
|
|
30
31
|
process.env.CLAWDBOT_CLAUDE_CLI_LOG_OUTPUT = "1";
|
|
31
32
|
}
|
|
32
33
|
const wsLogRaw = (opts.compact ? "compact" : opts.wsLog);
|
|
@@ -40,10 +41,12 @@ async function runGatewayCommand(opts) {
|
|
|
40
41
|
}
|
|
41
42
|
setGatewayWsLogStyle(wsLogStyle);
|
|
42
43
|
if (opts.rawStream) {
|
|
44
|
+
process.env.POOLBOT_RAW_STREAM = "1";
|
|
43
45
|
process.env.CLAWDBOT_RAW_STREAM = "1";
|
|
44
46
|
}
|
|
45
47
|
const rawStreamPath = toOptionString(opts.rawStreamPath);
|
|
46
48
|
if (rawStreamPath) {
|
|
49
|
+
process.env.POOLBOT_RAW_STREAM_PATH = rawStreamPath;
|
|
47
50
|
process.env.CLAWDBOT_RAW_STREAM_PATH = rawStreamPath;
|
|
48
51
|
}
|
|
49
52
|
if (devMode) {
|
|
@@ -90,8 +93,10 @@ async function runGatewayCommand(opts) {
|
|
|
90
93
|
}
|
|
91
94
|
if (opts.token) {
|
|
92
95
|
const token = toOptionString(opts.token);
|
|
93
|
-
if (token)
|
|
96
|
+
if (token) {
|
|
97
|
+
process.env.POOLBOT_GATEWAY_TOKEN = token;
|
|
94
98
|
process.env.CLAWDBOT_GATEWAY_TOKEN = token;
|
|
99
|
+
}
|
|
95
100
|
}
|
|
96
101
|
const authModeRaw = toOptionString(opts.auth);
|
|
97
102
|
const authMode = authModeRaw === "token" || authModeRaw === "password" ? authModeRaw : null;
|
|
@@ -165,7 +170,7 @@ async function runGatewayCommand(opts) {
|
|
|
165
170
|
if (resolvedAuthMode === "token" && !hasToken && !resolvedAuth.allowTailscale) {
|
|
166
171
|
defaultRuntime.error([
|
|
167
172
|
"Gateway auth is set to token, but no token is configured.",
|
|
168
|
-
"Set gateway.auth.token (or
|
|
173
|
+
"Set gateway.auth.token (or POOLBOT_GATEWAY_TOKEN), or pass --token.",
|
|
169
174
|
...authHints,
|
|
170
175
|
]
|
|
171
176
|
.filter(Boolean)
|
|
@@ -176,7 +181,7 @@ async function runGatewayCommand(opts) {
|
|
|
176
181
|
if (resolvedAuthMode === "password" && !hasPassword) {
|
|
177
182
|
defaultRuntime.error([
|
|
178
183
|
"Gateway auth is set to password, but no password is configured.",
|
|
179
|
-
"Set gateway.auth.password (or
|
|
184
|
+
"Set gateway.auth.password (or POOLBOT_GATEWAY_PASSWORD), or pass --password.",
|
|
180
185
|
...authHints,
|
|
181
186
|
]
|
|
182
187
|
.filter(Boolean)
|
|
@@ -187,7 +192,7 @@ async function runGatewayCommand(opts) {
|
|
|
187
192
|
if (bind !== "loopback" && !hasSharedSecret) {
|
|
188
193
|
defaultRuntime.error([
|
|
189
194
|
`Refusing to bind gateway to ${bind} without auth.`,
|
|
190
|
-
"Set gateway.auth.token/password (or
|
|
195
|
+
"Set gateway.auth.token/password (or POOLBOT_GATEWAY_TOKEN/POOLBOT_GATEWAY_PASSWORD) or pass --token/--password.",
|
|
191
196
|
...authHints,
|
|
192
197
|
]
|
|
193
198
|
.filter(Boolean)
|
|
@@ -244,7 +249,7 @@ export function addGatewayRunCommand(cmd) {
|
|
|
244
249
|
return cmd
|
|
245
250
|
.option("--port <port>", "Port for the gateway WebSocket")
|
|
246
251
|
.option("--bind <mode>", 'Bind mode ("loopback"|"lan"|"tailnet"|"auto"|"custom"). Defaults to config gateway.bind (or loopback).')
|
|
247
|
-
.option("--token <token>", "Shared token required in connect.params.auth.token (default:
|
|
252
|
+
.option("--token <token>", "Shared token required in connect.params.auth.token (default: POOLBOT_GATEWAY_TOKEN env if set)")
|
|
248
253
|
.option("--auth <mode>", 'Gateway auth mode ("token"|"password")')
|
|
249
254
|
.option("--password <password>", "Password for auth mode=password")
|
|
250
255
|
.option("--tailscale <mode>", 'Tailscale exposure mode ("off"|"serve"|"funnel")')
|
|
@@ -60,7 +60,7 @@ export function extractGatewayMiskeys(parsed) {
|
|
|
60
60
|
return { hasGatewayToken, hasRemoteToken };
|
|
61
61
|
}
|
|
62
62
|
export function renderGatewayServiceStopHints(env = process.env) {
|
|
63
|
-
const profile = env.CLAWDBOT_PROFILE;
|
|
63
|
+
const profile = env.POOLBOT_PROFILE || env.CLAWDBOT_PROFILE;
|
|
64
64
|
switch (process.platform) {
|
|
65
65
|
case "darwin":
|
|
66
66
|
return [
|
|
@@ -463,7 +463,8 @@ export async function runNodeDaemonStatus(opts = {}) {
|
|
|
463
463
|
};
|
|
464
464
|
const hintEnv = {
|
|
465
465
|
...baseEnv,
|
|
466
|
-
|
|
466
|
+
POOLBOT_LOG_PREFIX: baseEnv.POOLBOT_LOG_PREFIX || baseEnv.CLAWDBOT_LOG_PREFIX || "node",
|
|
467
|
+
CLAWDBOT_LOG_PREFIX: baseEnv.POOLBOT_LOG_PREFIX || baseEnv.CLAWDBOT_LOG_PREFIX || "node",
|
|
467
468
|
};
|
|
468
469
|
if (runtime?.missingUnit) {
|
|
469
470
|
defaultRuntime.error(errorText("Service unit not found."));
|
package/dist/cli/profile.js
CHANGED
|
@@ -73,14 +73,20 @@ export function applyCliProfileEnv(params) {
|
|
|
73
73
|
if (!profile)
|
|
74
74
|
return;
|
|
75
75
|
// Convenience only: fill defaults, never override explicit env values.
|
|
76
|
+
env.POOLBOT_PROFILE = profile;
|
|
76
77
|
env.CLAWDBOT_PROFILE = profile;
|
|
77
|
-
const stateDir = env.CLAWDBOT_STATE_DIR?.trim() || resolveProfileStateDir(profile, homedir);
|
|
78
|
+
const stateDir = env.POOLBOT_STATE_DIR?.trim() || env.CLAWDBOT_STATE_DIR?.trim() || resolveProfileStateDir(profile, homedir);
|
|
79
|
+
if (!env.POOLBOT_STATE_DIR?.trim())
|
|
80
|
+
env.POOLBOT_STATE_DIR = stateDir;
|
|
78
81
|
if (!env.CLAWDBOT_STATE_DIR?.trim())
|
|
79
82
|
env.CLAWDBOT_STATE_DIR = stateDir;
|
|
80
|
-
if (!env.CLAWDBOT_CONFIG_PATH?.trim()) {
|
|
81
|
-
|
|
83
|
+
if (!env.POOLBOT_CONFIG_PATH?.trim() && !env.CLAWDBOT_CONFIG_PATH?.trim()) {
|
|
84
|
+
const configPath = path.join(stateDir, "poolbot.json");
|
|
85
|
+
env.POOLBOT_CONFIG_PATH = configPath;
|
|
86
|
+
env.CLAWDBOT_CONFIG_PATH = configPath;
|
|
82
87
|
}
|
|
83
|
-
if (profile === "dev" && !env.CLAWDBOT_GATEWAY_PORT?.trim()) {
|
|
88
|
+
if (profile === "dev" && !env.POOLBOT_GATEWAY_PORT?.trim() && !env.CLAWDBOT_GATEWAY_PORT?.trim()) {
|
|
89
|
+
env.POOLBOT_GATEWAY_PORT = "19001";
|
|
84
90
|
env.CLAWDBOT_GATEWAY_PORT = "19001";
|
|
85
91
|
}
|
|
86
92
|
}
|
package/dist/cli/program/help.js
CHANGED
|
@@ -28,7 +28,7 @@ export function configureProgramHelp(program, ctx) {
|
|
|
28
28
|
.description("")
|
|
29
29
|
.version(ctx.programVersion)
|
|
30
30
|
.option("--dev", "Dev profile: isolate state under ~/.poolbot-dev, default gateway port 19001, and shift derived ports (browser/canvas)")
|
|
31
|
-
.option("--profile <name>", "Use a named profile (isolates
|
|
31
|
+
.option("--profile <name>", "Use a named profile (isolates POOLBOT_STATE_DIR/POOLBOT_CONFIG_PATH under ~/.poolbot-<name>)");
|
|
32
32
|
program.option("--no-color", "Disable ANSI colors", false);
|
|
33
33
|
program.configureHelp({
|
|
34
34
|
optionTerm: (option) => theme.option(option.flags),
|
|
@@ -26,7 +26,7 @@ export function registerPreActionHooks(program, programVersion) {
|
|
|
26
26
|
if (hasHelpOrVersion(argv))
|
|
27
27
|
return;
|
|
28
28
|
const commandPath = getCommandPath(argv, 2);
|
|
29
|
-
const hideBanner = isTruthyEnvValue(process.env.CLAWDBOT_HIDE_BANNER) ||
|
|
29
|
+
const hideBanner = isTruthyEnvValue(process.env.POOLBOT_HIDE_BANNER || process.env.CLAWDBOT_HIDE_BANNER) ||
|
|
30
30
|
commandPath[0] === "update" ||
|
|
31
31
|
(commandPath[0] === "plugins" && commandPath[1] === "update");
|
|
32
32
|
if (!hideBanner) {
|
|
@@ -116,11 +116,11 @@ ${theme.muted("Docs:")} ${formatDocsLink("/cli/agent", "docs.molt.bot/cli/agent"
|
|
|
116
116
|
.addHelpText("after", () => `
|
|
117
117
|
${theme.heading("Examples:")}
|
|
118
118
|
${formatHelpExamples([
|
|
119
|
-
['poolbot agents set-identity --agent main --name "
|
|
120
|
-
["poolbot agents set-identity --agent main --avatar avatars/
|
|
121
|
-
["poolbot agents set-identity --workspace ~/
|
|
119
|
+
['poolbot agents set-identity --agent main --name "Pool" --emoji "🎱"', "Set name + emoji."],
|
|
120
|
+
["poolbot agents set-identity --agent main --avatar avatars/pool.png", "Set avatar path."],
|
|
121
|
+
["poolbot agents set-identity --workspace ~/poolbot --from-identity", "Load from IDENTITY.md."],
|
|
122
122
|
[
|
|
123
|
-
"poolbot agents set-identity --identity-file ~/
|
|
123
|
+
"poolbot agents set-identity --identity-file ~/poolbot/IDENTITY.md --agent main",
|
|
124
124
|
"Use a specific IDENTITY.md.",
|
|
125
125
|
],
|
|
126
126
|
])}
|
|
@@ -23,7 +23,7 @@ export function registerOnboardCommand(program) {
|
|
|
23
23
|
.command("onboard")
|
|
24
24
|
.description("Interactive wizard to set up the gateway, workspace, and skills")
|
|
25
25
|
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/onboard", "docs.molt.bot/cli/onboard")}\n`)
|
|
26
|
-
.option("--workspace <dir>", "Agent workspace directory (default: ~/
|
|
26
|
+
.option("--workspace <dir>", "Agent workspace directory (default: ~/poolbot)")
|
|
27
27
|
.option("--reset", "Reset config + credentials + sessions + workspace before running wizard")
|
|
28
28
|
.option("--non-interactive", "Run without prompts", false)
|
|
29
29
|
.option("--accept-risk", "Acknowledge that agents are powerful and full system access is risky (required for --non-interactive)", false)
|
|
@@ -10,7 +10,7 @@ export function registerSetupCommand(program) {
|
|
|
10
10
|
.command("setup")
|
|
11
11
|
.description("Initialize ~/.poolbot/poolbot.json and the agent workspace")
|
|
12
12
|
.addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/setup", "docs.molt.bot/cli/setup")}\n`)
|
|
13
|
-
.option("--workspace <dir>", "Agent workspace directory (default: ~/
|
|
13
|
+
.option("--workspace <dir>", "Agent workspace directory (default: ~/poolbot; stored as agents.defaults.workspace)")
|
|
14
14
|
.option("--wizard", "Run the interactive onboarding wizard", false)
|
|
15
15
|
.option("--non-interactive", "Run the wizard without prompts", false)
|
|
16
16
|
.option("--mode <mode>", "Wizard mode: local|remote")
|
|
@@ -2,14 +2,14 @@ import { isTruthyEnvValue } from "../../infra/env.js";
|
|
|
2
2
|
import { buildParseArgv, getPrimaryCommand, hasHelpOrVersion } from "../argv.js";
|
|
3
3
|
import { resolveActionArgs } from "./helpers.js";
|
|
4
4
|
const shouldRegisterPrimaryOnly = (argv) => {
|
|
5
|
-
if (isTruthyEnvValue(process.env.CLAWDBOT_DISABLE_LAZY_SUBCOMMANDS))
|
|
5
|
+
if (isTruthyEnvValue(process.env.POOLBOT_DISABLE_LAZY_SUBCOMMANDS || process.env.CLAWDBOT_DISABLE_LAZY_SUBCOMMANDS))
|
|
6
6
|
return false;
|
|
7
7
|
if (hasHelpOrVersion(argv))
|
|
8
8
|
return false;
|
|
9
9
|
return true;
|
|
10
10
|
};
|
|
11
11
|
const shouldEagerRegisterSubcommands = (_argv) => {
|
|
12
|
-
return isTruthyEnvValue(process.env.CLAWDBOT_DISABLE_LAZY_SUBCOMMANDS);
|
|
12
|
+
return isTruthyEnvValue(process.env.POOLBOT_DISABLE_LAZY_SUBCOMMANDS || process.env.CLAWDBOT_DISABLE_LAZY_SUBCOMMANDS);
|
|
13
13
|
};
|
|
14
14
|
const loadConfig = async () => {
|
|
15
15
|
const mod = await import("../../config/config.js");
|
package/dist/cli/route.js
CHANGED
|
@@ -14,7 +14,7 @@ async function prepareRoutedCommand(params) {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
export async function tryRouteCli(argv) {
|
|
17
|
-
if (isTruthyEnvValue(process.env.CLAWDBOT_DISABLE_ROUTE_FIRST))
|
|
17
|
+
if (isTruthyEnvValue(process.env.POOLBOT_DISABLE_ROUTE_FIRST || process.env.CLAWDBOT_DISABLE_ROUTE_FIRST))
|
|
18
18
|
return false;
|
|
19
19
|
if (hasHelpOrVersion(argv))
|
|
20
20
|
return false;
|