clisbot 0.1.45-beta.8 → 0.1.45-beta.9
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 +1 -1
- package/dist/main.js +26 -27
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -320,7 +320,7 @@ If the quick start does not work, check these in order:
|
|
|
320
320
|
trust_level = "trusted"
|
|
321
321
|
```
|
|
322
322
|
|
|
323
|
-
- If that trust screen is still blocking,
|
|
323
|
+
- If that trust screen is still blocking, inspect the live session name with `clisbot runner list`, then attach directly with `tmux -S ~/.clisbot/state/clisbot.sock attach -t <session-name>`.
|
|
324
324
|
- If Gemini startup says it is waiting for manual authorization, authenticate Gemini directly first or provide a headless auth path such as `GEMINI_API_KEY` or Vertex AI credentials; `clisbot` now treats that screen as a startup blocker instead of a healthy ready session.
|
|
325
325
|
- If Codex warns that `bubblewrap` is missing on Linux, install `bubblewrap` in the runtime environment.
|
|
326
326
|
- If the bot does not answer, check `clisbot status` first. Healthy channels should show `connection=active`; if a channel stays `starting`, inspect `clisbot logs`.
|
package/dist/main.js
CHANGED
|
@@ -32451,7 +32451,7 @@ var require_websocket = __commonJS((exports, module) => {
|
|
|
32451
32451
|
var http = __require("http");
|
|
32452
32452
|
var net = __require("net");
|
|
32453
32453
|
var tls = __require("tls");
|
|
32454
|
-
var { randomBytes, createHash } = __require("crypto");
|
|
32454
|
+
var { randomBytes, createHash: createHash2 } = __require("crypto");
|
|
32455
32455
|
var { Duplex, Readable } = __require("stream");
|
|
32456
32456
|
var { URL: URL2 } = __require("url");
|
|
32457
32457
|
var PerMessageDeflate = require_permessage_deflate();
|
|
@@ -32990,7 +32990,7 @@ var require_websocket = __commonJS((exports, module) => {
|
|
|
32990
32990
|
abortHandshake(websocket, socket, "Invalid Upgrade header");
|
|
32991
32991
|
return;
|
|
32992
32992
|
}
|
|
32993
|
-
const digest =
|
|
32993
|
+
const digest = createHash2("sha1").update(key + GUID).digest("base64");
|
|
32994
32994
|
if (res.headers["sec-websocket-accept"] !== digest) {
|
|
32995
32995
|
abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
|
|
32996
32996
|
return;
|
|
@@ -33363,7 +33363,7 @@ var require_websocket_server = __commonJS((exports, module) => {
|
|
|
33363
33363
|
var EventEmitter = __require("events");
|
|
33364
33364
|
var http = __require("http");
|
|
33365
33365
|
var { Duplex } = __require("stream");
|
|
33366
|
-
var { createHash } = __require("crypto");
|
|
33366
|
+
var { createHash: createHash2 } = __require("crypto");
|
|
33367
33367
|
var extension = require_extension();
|
|
33368
33368
|
var PerMessageDeflate = require_permessage_deflate();
|
|
33369
33369
|
var subprotocol = require_subprotocol();
|
|
@@ -33576,7 +33576,7 @@ var require_websocket_server = __commonJS((exports, module) => {
|
|
|
33576
33576
|
}
|
|
33577
33577
|
if (this._state > RUNNING)
|
|
33578
33578
|
return abortHandshake(socket, 503);
|
|
33579
|
-
const digest =
|
|
33579
|
+
const digest = createHash2("sha1").update(key + GUID).digest("base64");
|
|
33580
33580
|
const headers = [
|
|
33581
33581
|
"HTTP/1.1 101 Switching Protocols",
|
|
33582
33582
|
"Upgrade: websocket",
|
|
@@ -65267,14 +65267,20 @@ class TmuxClient {
|
|
|
65267
65267
|
}
|
|
65268
65268
|
return result.stdout;
|
|
65269
65269
|
}
|
|
65270
|
+
sessionTarget(sessionName) {
|
|
65271
|
+
return `=${sessionName}`;
|
|
65272
|
+
}
|
|
65270
65273
|
target(sessionName) {
|
|
65271
|
-
return `${sessionName}:${MAIN_WINDOW_NAME}`;
|
|
65274
|
+
return `${this.sessionTarget(sessionName)}:${MAIN_WINDOW_NAME}`;
|
|
65275
|
+
}
|
|
65276
|
+
windowTarget(sessionName, windowName) {
|
|
65277
|
+
return `${this.sessionTarget(sessionName)}:${windowName}`;
|
|
65272
65278
|
}
|
|
65273
65279
|
rawTarget(target) {
|
|
65274
65280
|
return target;
|
|
65275
65281
|
}
|
|
65276
65282
|
async hasSession(sessionName) {
|
|
65277
|
-
const result = await this.exec(["has-session", "-t", sessionName]);
|
|
65283
|
+
const result = await this.exec(["has-session", "-t", this.sessionTarget(sessionName)]);
|
|
65278
65284
|
return result.exitCode === 0;
|
|
65279
65285
|
}
|
|
65280
65286
|
async listSessions() {
|
|
@@ -65370,14 +65376,14 @@ ${result.stdout}`.trim();
|
|
|
65370
65376
|
"-F",
|
|
65371
65377
|
"#{pane_id}",
|
|
65372
65378
|
"-t",
|
|
65373
|
-
params.sessionName,
|
|
65379
|
+
this.sessionTarget(params.sessionName),
|
|
65374
65380
|
"-n",
|
|
65375
65381
|
params.name,
|
|
65376
65382
|
"-c",
|
|
65377
65383
|
params.cwd,
|
|
65378
65384
|
params.command
|
|
65379
65385
|
]);
|
|
65380
|
-
await this.freezeWindowName(
|
|
65386
|
+
await this.freezeWindowName(this.windowTarget(params.sessionName, params.name));
|
|
65381
65387
|
return paneId.trim();
|
|
65382
65388
|
}
|
|
65383
65389
|
async freezeWindowName(target) {
|
|
@@ -65388,7 +65394,7 @@ ${result.stdout}`.trim();
|
|
|
65388
65394
|
const output = await this.execOrThrow([
|
|
65389
65395
|
"list-windows",
|
|
65390
65396
|
"-t",
|
|
65391
|
-
sessionName,
|
|
65397
|
+
this.sessionTarget(sessionName),
|
|
65392
65398
|
"-F",
|
|
65393
65399
|
"#{window_name}\t#{pane_id}"
|
|
65394
65400
|
]);
|
|
@@ -65464,7 +65470,7 @@ ${result.stdout}`.trim();
|
|
|
65464
65470
|
};
|
|
65465
65471
|
}
|
|
65466
65472
|
async killSession(sessionName) {
|
|
65467
|
-
await this.exec(["kill-session", "-t", sessionName]);
|
|
65473
|
+
await this.exec(["kill-session", "-t", this.sessionTarget(sessionName)]);
|
|
65468
65474
|
}
|
|
65469
65475
|
async killPane(target) {
|
|
65470
65476
|
await this.exec(["kill-pane", "-t", this.rawTarget(target)]);
|
|
@@ -66884,6 +66890,7 @@ function getStoredQueues(entry) {
|
|
|
66884
66890
|
}
|
|
66885
66891
|
|
|
66886
66892
|
// src/agents/session-key.ts
|
|
66893
|
+
import { createHash } from "node:crypto";
|
|
66887
66894
|
var DEFAULT_MAIN_KEY = "main";
|
|
66888
66895
|
var DEFAULT_BOT_ID = "default";
|
|
66889
66896
|
var DEFAULT_ACCOUNT_ID = DEFAULT_BOT_ID;
|
|
@@ -66974,7 +66981,8 @@ function buildTmuxSessionName(params) {
|
|
|
66974
66981
|
mainKey: normalizeMainKey(params.mainKey)
|
|
66975
66982
|
});
|
|
66976
66983
|
const baseName = sanitizeSessionName(rendered);
|
|
66977
|
-
|
|
66984
|
+
const sessionHash = createHash("sha1").update(params.sessionKey).digest("hex").slice(0, 8);
|
|
66985
|
+
return `${baseName}-${sessionHash}`;
|
|
66978
66986
|
}
|
|
66979
66987
|
|
|
66980
66988
|
// src/agents/resolved-target.ts
|
|
@@ -67298,7 +67306,6 @@ function createStoredLoopBase(params) {
|
|
|
67298
67306
|
updatedAt: now,
|
|
67299
67307
|
nextRunAt: params.nextRunAt,
|
|
67300
67308
|
promptText: params.promptText,
|
|
67301
|
-
canonicalPromptText: params.canonicalPromptText,
|
|
67302
67309
|
protectedControlMutationRule: params.protectedControlMutationRule,
|
|
67303
67310
|
promptSummary: params.promptSummary,
|
|
67304
67311
|
promptSource: params.promptSource,
|
|
@@ -67329,7 +67336,6 @@ function createStoredIntervalLoop(params) {
|
|
|
67329
67336
|
...createStoredLoopBase({
|
|
67330
67337
|
nextRunAt: Date.now(),
|
|
67331
67338
|
promptText: params.promptText,
|
|
67332
|
-
canonicalPromptText: params.canonicalPromptText,
|
|
67333
67339
|
protectedControlMutationRule: params.protectedControlMutationRule,
|
|
67334
67340
|
promptSummary: params.promptSummary,
|
|
67335
67341
|
promptSource: params.promptSource,
|
|
@@ -67360,7 +67366,6 @@ function createStoredCalendarLoop(params) {
|
|
|
67360
67366
|
...createStoredLoopBase({
|
|
67361
67367
|
nextRunAt,
|
|
67362
67368
|
promptText: params.promptText,
|
|
67363
|
-
canonicalPromptText: params.canonicalPromptText,
|
|
67364
67369
|
protectedControlMutationRule: params.protectedControlMutationRule,
|
|
67365
67370
|
promptSummary: params.promptSummary,
|
|
67366
67371
|
promptSource: params.promptSource,
|
|
@@ -72197,7 +72202,7 @@ class SurfaceRuntime {
|
|
|
72197
72202
|
}
|
|
72198
72203
|
}
|
|
72199
72204
|
async buildManagedLoopPrompt(agentId, loop) {
|
|
72200
|
-
if (!loop.
|
|
72205
|
+
if (!loop.surfaceBinding) {
|
|
72201
72206
|
return loop.promptText;
|
|
72202
72207
|
}
|
|
72203
72208
|
const identity = this.buildLoopChannelIdentity(loop);
|
|
@@ -72212,7 +72217,7 @@ class SurfaceRuntime {
|
|
|
72212
72217
|
scheduledLoopId: loop.id
|
|
72213
72218
|
});
|
|
72214
72219
|
return buildAgentPromptText({
|
|
72215
|
-
text: loop.
|
|
72220
|
+
text: loop.promptText,
|
|
72216
72221
|
identity,
|
|
72217
72222
|
config: channelConfig.agentPrompt,
|
|
72218
72223
|
cliTool: getAgentEntry2(this.loadedConfig, agentId)?.cli,
|
|
@@ -72226,7 +72231,7 @@ class SurfaceRuntime {
|
|
|
72226
72231
|
});
|
|
72227
72232
|
}
|
|
72228
72233
|
async buildManagedQueuePrompt(agentId, item) {
|
|
72229
|
-
if (!item.
|
|
72234
|
+
if (!item.surfaceBinding) {
|
|
72230
72235
|
return item.promptText;
|
|
72231
72236
|
}
|
|
72232
72237
|
const identity = this.buildQueueChannelIdentity(item);
|
|
@@ -72240,7 +72245,7 @@ class SurfaceRuntime {
|
|
|
72240
72245
|
time: promptTime
|
|
72241
72246
|
});
|
|
72242
72247
|
return buildAgentPromptText({
|
|
72243
|
-
text: item.
|
|
72248
|
+
text: item.promptText,
|
|
72244
72249
|
identity,
|
|
72245
72250
|
config: channelConfig.agentPrompt,
|
|
72246
72251
|
cliTool: getAgentEntry2(this.loadedConfig, agentId)?.cli,
|
|
@@ -72719,9 +72724,8 @@ function createStoredQueueItem(params) {
|
|
|
72719
72724
|
createdAt: now,
|
|
72720
72725
|
updatedAt: now,
|
|
72721
72726
|
promptText: params.promptText,
|
|
72722
|
-
canonicalPromptText: params.canonicalPromptText,
|
|
72723
72727
|
protectedControlMutationRule: params.protectedControlMutationRule,
|
|
72724
|
-
promptSummary: params.promptSummary ?? summarizeQueuePrompt(params.
|
|
72728
|
+
promptSummary: params.promptSummary ?? summarizeQueuePrompt(params.promptText),
|
|
72725
72729
|
promptSource: "custom",
|
|
72726
72730
|
createdBy: params.createdBy,
|
|
72727
72731
|
sender: params.sender,
|
|
@@ -73786,7 +73790,6 @@ async function processChannelInteraction(params) {
|
|
|
73786
73790
|
};
|
|
73787
73791
|
const queueItem = forceQueuedDelivery ? createStoredQueueItem({
|
|
73788
73792
|
promptText: delayedPromptQueueText,
|
|
73789
|
-
canonicalPromptText: delayedPromptQueueText,
|
|
73790
73793
|
promptSummary: explicitQueueMessage ?? summarizeQueuePrompt(delayedPromptQueueText),
|
|
73791
73794
|
createdBy: params.senderId,
|
|
73792
73795
|
sender: buildLoopSender(params.identity),
|
|
@@ -74184,7 +74187,6 @@ ${renderLoopUsage()}`);
|
|
|
74184
74187
|
const createdLoop2 = await params.agentService.createCalendarLoop({
|
|
74185
74188
|
target: params.sessionTarget,
|
|
74186
74189
|
promptText: resolvedLoopPrompt.text,
|
|
74187
|
-
canonicalPromptText: resolvedLoopPrompt.text,
|
|
74188
74190
|
promptSummary: summarizeLoopPrompt(resolvedLoopPrompt.text, resolvedLoopPrompt.maintenancePrompt),
|
|
74189
74191
|
promptSource: resolvedLoopPrompt.maintenancePrompt ? "LOOP.md" : "custom",
|
|
74190
74192
|
loopStart: slashCommand.params.loopStart,
|
|
@@ -74224,7 +74226,6 @@ ${renderLoopUsage()}`);
|
|
|
74224
74226
|
const createdLoop = await params.agentService.createIntervalLoop({
|
|
74225
74227
|
target: params.sessionTarget,
|
|
74226
74228
|
promptText: resolvedLoopPrompt.text,
|
|
74227
|
-
canonicalPromptText: resolvedLoopPrompt.text,
|
|
74228
74229
|
promptSummary: summarizeLoopPrompt(resolvedLoopPrompt.text, resolvedLoopPrompt.maintenancePrompt),
|
|
74229
74230
|
promptSource: resolvedLoopPrompt.maintenancePrompt ? "LOOP.md" : "custom",
|
|
74230
74231
|
loopStart: slashCommand.params.loopStart,
|
|
@@ -75713,9 +75714,9 @@ function getSlackMaxChars(maxMessageChars) {
|
|
|
75713
75714
|
}
|
|
75714
75715
|
|
|
75715
75716
|
// src/channels/runtime-identity.ts
|
|
75716
|
-
import { createHash } from "node:crypto";
|
|
75717
|
+
import { createHash as createHash2 } from "node:crypto";
|
|
75717
75718
|
function buildTokenHint(token) {
|
|
75718
|
-
return
|
|
75719
|
+
return createHash2("sha256").update(token.trim()).digest("hex").slice(0, 8);
|
|
75719
75720
|
}
|
|
75720
75721
|
|
|
75721
75722
|
// src/channels/slack/service.ts
|
|
@@ -82114,7 +82115,6 @@ function buildRecurringLoopCreateBase(state, request) {
|
|
|
82114
82115
|
function buildRecurringLoopPromptMetadata(request) {
|
|
82115
82116
|
return {
|
|
82116
82117
|
promptText: request.resolvedPrompt.text,
|
|
82117
|
-
canonicalPromptText: request.resolvedPrompt.text,
|
|
82118
82118
|
promptSummary: summarizeLoopPrompt(request.resolvedPrompt.text, request.resolvedPrompt.maintenancePrompt),
|
|
82119
82119
|
promptSource: request.resolvedPrompt.maintenancePrompt ? "LOOP.md" : "custom",
|
|
82120
82120
|
loopStart: request.parsed.mode === "times" ? undefined : request.parsed.loopStart,
|
|
@@ -82785,7 +82785,6 @@ function resolveProtectedControlMutationRule(state, agentId, sender) {
|
|
|
82785
82785
|
function createQueueItemForContext(params) {
|
|
82786
82786
|
return createStoredQueueItem({
|
|
82787
82787
|
promptText: params.promptText,
|
|
82788
|
-
canonicalPromptText: params.promptText,
|
|
82789
82788
|
protectedControlMutationRule: resolveProtectedControlMutationRule(params.state, params.context.sessionTarget.agentId, params.sender),
|
|
82790
82789
|
promptSummary: params.promptText,
|
|
82791
82790
|
createdBy: params.sender.providerId,
|