bajaclaw 0.19.14 → 0.20.1
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/agent.d.ts +3 -2
- package/dist/agent.js +97 -83
- package/dist/agent.js.map +1 -1
- package/dist/channels/gateway.d.ts +9 -0
- package/dist/channels/gateway.js +125 -0
- package/dist/channels/gateway.js.map +1 -1
- package/dist/claude.js +5 -1
- package/dist/claude.js.map +1 -1
- package/dist/commands/chat-ui.js +11 -0
- package/dist/commands/chat-ui.js.map +1 -1
- package/dist/commands/dashboard.js +6 -1
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/setup.js +28 -0
- package/dist/commands/setup.js.map +1 -1
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/dashboard.html +14 -0
- package/dist/progress-narrator.d.ts +48 -0
- package/dist/progress-narrator.js +307 -0
- package/dist/progress-narrator.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
██╔══██╗██╔══██║██ ██║██╔══██║ ██║ ██║ ██╔══██║██║███╗██║
|
|
8
8
|
██████╔╝██║ ██║╚█████╔╝██║ ██║ ╚██████╗███████╗██║ ██║╚███╔███╔╝
|
|
9
9
|
╚═════╝ ╚═╝ ╚═╝ ╚════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝
|
|
10
|
-
autonomous agents on your terms · MIT · v0.
|
|
10
|
+
autonomous agents on your terms · MIT · v0.20.1
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
## What BajaClaw is
|
package/dist/agent.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type NarrationUpdate } from "./progress-narrator.js";
|
|
1
2
|
import type { AgentConfig, ChatTurn } from "./types.js";
|
|
2
3
|
export interface CycleInput {
|
|
3
4
|
profile: string;
|
|
@@ -7,6 +8,7 @@ export interface CycleInput {
|
|
|
7
8
|
sessionHistory?: ChatTurn[];
|
|
8
9
|
attachments?: string[];
|
|
9
10
|
onPartialText?: (delta: string, accumulated: string) => void;
|
|
11
|
+
onNarration?: (u: NarrationUpdate) => void;
|
|
10
12
|
}
|
|
11
13
|
export interface CycleOutput {
|
|
12
14
|
cycleId: number;
|
|
@@ -24,6 +26,7 @@ export interface CycleOutput {
|
|
|
24
26
|
command?: string[];
|
|
25
27
|
error?: string;
|
|
26
28
|
source?: string;
|
|
29
|
+
narrationSummary?: string;
|
|
27
30
|
}
|
|
28
31
|
export declare function runCycle(input: CycleInput): Promise<CycleOutput>;
|
|
29
32
|
interface AssembleInput {
|
|
@@ -35,8 +38,6 @@ interface AssembleInput {
|
|
|
35
38
|
heartbeat: string;
|
|
36
39
|
skills: string;
|
|
37
40
|
recentChat?: string;
|
|
38
|
-
progressInstructions?: string;
|
|
39
41
|
}
|
|
40
|
-
export declare function buildProgressInstructions(): string;
|
|
41
42
|
export declare function assemblePrompt(input: AssembleInput): string;
|
|
42
43
|
export type { AgentConfig };
|
package/dist/agent.js
CHANGED
|
@@ -28,10 +28,11 @@ import { shouldCompact, compact as compactMemory } from "./memory/compact.js";
|
|
|
28
28
|
import { loadAllSkills } from "./skills/loader.js";
|
|
29
29
|
import { matchSkills } from "./skills/matcher.js";
|
|
30
30
|
import { synthesize as synthesizeSkill } from "./skills/auto-skiller.js";
|
|
31
|
-
import { broadcastToProfile } from "./channels/gateway.js";
|
|
31
|
+
import { broadcastToProfile, openProgressMessage, editProgressMessage, deleteProgressMessage, } from "./channels/gateway.js";
|
|
32
32
|
import { buildMcpConfig } from "./mcp/consumer.js";
|
|
33
33
|
import { pickModel, budgetFor } from "./model-picker.js";
|
|
34
34
|
import { serialize } from "./concurrency.js";
|
|
35
|
+
import { ProgressNarrator } from "./progress-narrator.js";
|
|
35
36
|
export async function runCycle(input) {
|
|
36
37
|
// Serialize cycles per-profile within this process. Prevents the HTTP
|
|
37
38
|
// API from spawning parallel `claude` subprocesses under load.
|
|
@@ -103,31 +104,22 @@ async function runCycleInner(input) {
|
|
|
103
104
|
// that takes precedence.
|
|
104
105
|
const sessionHistory = input.sessionHistory
|
|
105
106
|
?? (popped?.source ? loadSourceHistory(db, popped.source, popped.id, 8) : undefined);
|
|
106
|
-
//
|
|
107
|
-
// from a channel (telegram, discord), the agent gets a prompt
|
|
108
|
-
// block telling it to call `bajaclaw say "..."` for intake + mid-
|
|
109
|
-
// flight progress. Skipped for haiku (short+trivial tasks stay
|
|
110
|
-
// snappy) and heartbeat cycles. Also skipped on dry runs.
|
|
107
|
+
// Source routing.
|
|
111
108
|
const source = popped?.source;
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
// Instead, the progress-instructions block below tells the main
|
|
124
|
-
// agent (which HAS full session history) to emit its own plan
|
|
125
|
-
// ack via `bajaclaw say` as its first action on multi-part
|
|
126
|
-
// tasks. One cycle, one voice, one source of truth.
|
|
109
|
+
const editableSource = Boolean(source) && (source.startsWith("telegram:") || source.startsWith("discord:"));
|
|
110
|
+
const iMessageSource = Boolean(source) && source.startsWith("imessage:");
|
|
111
|
+
// Mid-cycle narration. Driven by cfg.verbosity ("off" | "medium" | "full"),
|
|
112
|
+
// runs entirely in BajaClaw (no extra prompt tokens, no agent output
|
|
113
|
+
// tokens). See progress-narrator.ts.
|
|
114
|
+
// - Telegram / Discord: open a single progress message, edit in place.
|
|
115
|
+
// - iMessage: no edit API - collect a summary and prepend to final reply.
|
|
116
|
+
// - In-process callers (chat REPL, dashboard): route to input.onNarration.
|
|
117
|
+
// - Dry runs and heartbeat cycles: no narration.
|
|
118
|
+
const verbosity = cfg.verbosity ?? "medium";
|
|
119
|
+
const narrateEnabled = verbosity !== "off" && !isHeartbeat && !input.dryRun;
|
|
127
120
|
const prompt = assemblePrompt({
|
|
128
121
|
task,
|
|
129
122
|
attachments,
|
|
130
|
-
progressInstructions: liveFeedback ? buildProgressInstructions() : "",
|
|
131
123
|
memories: memories
|
|
132
124
|
.map((m) => `- [${m.kind}] ${m.content.slice(0, budget.memoryCharsEach)}`)
|
|
133
125
|
.join("\n"),
|
|
@@ -155,16 +147,15 @@ async function runCycleInner(input) {
|
|
|
155
147
|
// claude's --effort level is the real knob for "how much runway
|
|
156
148
|
// does the agent get". No --max-turns flag exists in claude CLI;
|
|
157
149
|
// `effort: "max"` gives the biggest internal turn budget.
|
|
158
|
-
// Env vars injected into the spawned claude subprocess
|
|
159
|
-
//
|
|
160
|
-
//
|
|
161
|
-
//
|
|
162
|
-
// daemon, which forwards to the channel.
|
|
150
|
+
// Env vars injected into the spawned claude subprocess. BAJACLAW_SOURCE
|
|
151
|
+
// is still set for channel cycles so manual callers of `bajaclaw say`
|
|
152
|
+
// inside skills have somewhere to route; the main progress path is
|
|
153
|
+
// now orchestrator-driven (progress-narrator.ts) and doesn't need it.
|
|
163
154
|
const spawnEnv = {
|
|
164
155
|
BAJACLAW_PROFILE: input.profile,
|
|
165
156
|
BAJACLAW_DASHBOARD_PORT: String(cfg.dashboardPort ?? 7337),
|
|
166
157
|
};
|
|
167
|
-
if (
|
|
158
|
+
if (source && (editableSource || iMessageSource))
|
|
168
159
|
spawnEnv.BAJACLAW_SOURCE = source;
|
|
169
160
|
const opts = {
|
|
170
161
|
model: picked.model,
|
|
@@ -195,13 +186,65 @@ async function runCycleInner(input) {
|
|
|
195
186
|
else
|
|
196
187
|
log.warn("snapshot.pre.fail", { cycleId, error: r.error });
|
|
197
188
|
}
|
|
198
|
-
//
|
|
199
|
-
//
|
|
200
|
-
//
|
|
201
|
-
|
|
202
|
-
|
|
189
|
+
// Mid-cycle narrator. Built after the prompt is assembled so the
|
|
190
|
+
// initial skill list can be seeded. Passes events from runStream
|
|
191
|
+
// to the narrator; live updates route to the right sink.
|
|
192
|
+
let progressHandle = null;
|
|
193
|
+
let narrator = null;
|
|
194
|
+
if (narrateEnabled) {
|
|
195
|
+
// Pick the live sink based on the cycle's source.
|
|
196
|
+
let liveSink;
|
|
197
|
+
if (editableSource && source) {
|
|
198
|
+
// Open a single progress message on Telegram / Discord; we
|
|
199
|
+
// edit it in place as the narrator reports tool use. Null
|
|
200
|
+
// handle (adapter refused / not loaded) means the open failed
|
|
201
|
+
// and we degrade silently to no live narration.
|
|
202
|
+
// The opening line acts as a placeholder until the first
|
|
203
|
+
// real entry arrives, then entries append below it. Every
|
|
204
|
+
// subsequent edit is additive - we never drop or rewrite
|
|
205
|
+
// prior lines, so the user watches the running log grow.
|
|
206
|
+
progressHandle = await openProgressMessage(input.profile, source, "🔄 working…");
|
|
207
|
+
if (progressHandle) {
|
|
208
|
+
const srcRef = source;
|
|
209
|
+
const handleRef = progressHandle;
|
|
210
|
+
liveSink = (u) => {
|
|
211
|
+
void editProgressMessage(input.profile, srcRef, handleRef, formatLiveBody(u));
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else if (input.onNarration) {
|
|
216
|
+
// In-process caller (chat REPL, dashboard chat). Route to
|
|
217
|
+
// their callback verbatim - they pick the rendering.
|
|
218
|
+
liveSink = input.onNarration;
|
|
219
|
+
}
|
|
220
|
+
// iMessage and no-source cycles: no live sink. The summary is
|
|
221
|
+
// prepended to the final reply below.
|
|
222
|
+
narrator = new ProgressNarrator({ verbosity, onUpdate: liveSink });
|
|
223
|
+
for (const s of matched)
|
|
224
|
+
narrator.addSkill(s.name);
|
|
225
|
+
}
|
|
226
|
+
// Stream when the caller asked for partial-text callbacks OR when
|
|
227
|
+
// narration is enabled (narrator needs tool_use events). Falls
|
|
228
|
+
// back to the blocking JSON path for dry runs, heartbeats, and
|
|
229
|
+
// other non-interactive cycles to keep them lean.
|
|
230
|
+
const useStream = Boolean(input.onPartialText) || narrator !== null;
|
|
231
|
+
const result = useStream
|
|
232
|
+
? await runStream(prompt, opts, {
|
|
233
|
+
onPartialText: input.onPartialText,
|
|
234
|
+
onEvent: narrator ? (ev) => narrator.handleEvent(ev) : undefined,
|
|
235
|
+
})
|
|
203
236
|
: await runOnce(prompt, opts);
|
|
204
237
|
const finished = new Date().toISOString();
|
|
238
|
+
// Finalize the narrator: flush any debounced update and clean up
|
|
239
|
+
// the progress message so the final reply stands alone.
|
|
240
|
+
if (narrator)
|
|
241
|
+
narrator.finalize();
|
|
242
|
+
if (progressHandle && source) {
|
|
243
|
+
// Best-effort delete so the final reply doesn't trail a stale
|
|
244
|
+
// progress line. If the delete fails (rate limit, already gone),
|
|
245
|
+
// the user just sees both messages - not broken, just noisier.
|
|
246
|
+
await deleteProgressMessage(input.profile, source, progressHandle);
|
|
247
|
+
}
|
|
205
248
|
// Optional post-snapshot. Captures the diff for later inspection
|
|
206
249
|
// even when the user never rewinds.
|
|
207
250
|
let postSha = null;
|
|
@@ -217,6 +260,7 @@ async function runCycleInner(input) {
|
|
|
217
260
|
db.prepare("UPDATE cycles SET pre_sha=?, post_sha=?, snapshot_root=? WHERE id=?")
|
|
218
261
|
.run(preSha, postSha, snapshotRoot, cycleId);
|
|
219
262
|
}
|
|
263
|
+
const narrationSummary = narrator?.summary() ?? "";
|
|
220
264
|
if (!result.ok) {
|
|
221
265
|
recordFailure(db);
|
|
222
266
|
db.prepare("UPDATE cycles SET finished_at=?, status=?, error=?, response_preview=? WHERE id=?").run(finished, "error", result.error ?? "unknown", result.text.slice(0, 500), cycleId);
|
|
@@ -235,6 +279,7 @@ async function runCycleInner(input) {
|
|
|
235
279
|
command: result.command,
|
|
236
280
|
error: result.error,
|
|
237
281
|
source: popped?.source,
|
|
282
|
+
narrationSummary: narrationSummary || undefined,
|
|
238
283
|
};
|
|
239
284
|
}
|
|
240
285
|
recordSuccess(db);
|
|
@@ -276,10 +321,17 @@ async function runCycleInner(input) {
|
|
|
276
321
|
}
|
|
277
322
|
}
|
|
278
323
|
log.info("cycle.ok", { cycleId, costUsd: result.costUsd, turns: result.turns });
|
|
324
|
+
// iMessage cannot edit sent messages, so we prepend a short
|
|
325
|
+
// narration summary to the final reply instead. On other sources
|
|
326
|
+
// the live progress message already showed this; repeating it
|
|
327
|
+
// would be spammy.
|
|
328
|
+
const outText = (iMessageSource && narrationSummary)
|
|
329
|
+
? `${narrationSummary}\n\n${result.text}`
|
|
330
|
+
: result.text;
|
|
279
331
|
return {
|
|
280
332
|
cycleId,
|
|
281
333
|
ok: true,
|
|
282
|
-
text:
|
|
334
|
+
text: outText,
|
|
283
335
|
costUsd: result.costUsd,
|
|
284
336
|
inputTokens: result.inputTokens,
|
|
285
337
|
outputTokens: result.outputTokens,
|
|
@@ -291,12 +343,23 @@ async function runCycleInner(input) {
|
|
|
291
343
|
prompt,
|
|
292
344
|
command: result.command,
|
|
293
345
|
source: popped?.source,
|
|
346
|
+
narrationSummary: narrationSummary || undefined,
|
|
294
347
|
};
|
|
295
348
|
}
|
|
296
349
|
finally {
|
|
297
350
|
db.close();
|
|
298
351
|
}
|
|
299
352
|
}
|
|
353
|
+
/** Format a narrator update for an edit-in-place progress message.
|
|
354
|
+
* The body is already the full accumulating log - we just prefix a
|
|
355
|
+
* stable header so the user reads the message as "working + this
|
|
356
|
+
* log", and the header doesn't morph between edits. Additive by
|
|
357
|
+
* construction: snapshot() never drops entries. */
|
|
358
|
+
function formatLiveBody(u) {
|
|
359
|
+
if (!u.body)
|
|
360
|
+
return "🔄 working…";
|
|
361
|
+
return `🔄 working…\n${u.body}`;
|
|
362
|
+
}
|
|
300
363
|
function formatRecentChat(history) {
|
|
301
364
|
if (!history || history.length === 0)
|
|
302
365
|
return "";
|
|
@@ -366,53 +429,6 @@ function loadSystemDocs(profile) {
|
|
|
366
429
|
heartbeat: read("HEARTBEAT.md"),
|
|
367
430
|
};
|
|
368
431
|
}
|
|
369
|
-
export function buildProgressInstructions() {
|
|
370
|
-
return `# Side-channel chat tool (do not let this distract from the actual task)
|
|
371
|
-
|
|
372
|
-
CRITICAL: Your job is to fully complete the task in "# Current Task" below. If it has multiple parts (a AND b AND c), finish all of them before your final reply. Do not stop halfway and summarize, do not defer parts to a follow-up, do not treat the chat as a substitute for doing the work.
|
|
373
|
-
|
|
374
|
-
You have one extra tool: \`bajaclaw say "<short text>"\` via your Bash tool. It sends a line to the user's chat mid-flight without blocking or ending the typing indicator.
|
|
375
|
-
|
|
376
|
-
## When to send the first ping (plan ack)
|
|
377
|
-
|
|
378
|
-
ONLY if the task is genuinely multi-part or will take noticeable time to complete. Examples:
|
|
379
|
-
- "add X, then test Y, then ship Z"
|
|
380
|
-
- "investigate this bug, find the root cause, and fix it"
|
|
381
|
-
- "scaffold a new agent named Shirty, run the dev server, tell me when ready"
|
|
382
|
-
|
|
383
|
-
For multi-part tasks: before your first real tool call, send ONE short ping acknowledging the plan in your own voice. Natural, under 20 words. Look at Recent Chat to understand what the user means (e.g. if they say "that" or "the model", figure out what they're referring to from context).
|
|
384
|
-
|
|
385
|
-
For single-question tasks, do NOT ack. The typing indicator is enough; go straight to your final reply. Examples that need NO ack:
|
|
386
|
-
- "what model are you using?"
|
|
387
|
-
- "is the server up?"
|
|
388
|
-
- "summarize what you just did"
|
|
389
|
-
|
|
390
|
-
## When to send mid-flight pings
|
|
391
|
-
|
|
392
|
-
Only for genuine milestones on long tasks:
|
|
393
|
-
- You hit something unexpected the user should know ("heads up, migration is dirty, fixing first")
|
|
394
|
-
- A long step is about to start and silence would look like a hang ("running the full test suite")
|
|
395
|
-
- You crossed a real phase boundary ("scaffolding done, wiring up the handler")
|
|
396
|
-
|
|
397
|
-
## When to stay quiet
|
|
398
|
-
|
|
399
|
-
- Announcing what you're about to do ("on it!", "starting now", "let me take a look"). Just do it.
|
|
400
|
-
- Every tool call, file edit, or search.
|
|
401
|
-
- Thinking out loud.
|
|
402
|
-
- Short or simple tasks.
|
|
403
|
-
- Filling silence when you don't have something real to say.
|
|
404
|
-
|
|
405
|
-
Hard cap: at most 3 \`bajaclaw say\` calls per cycle (including the plan ack if you send one). Zero is fine. If you're tempted to ping a fourth time, you're chatting instead of working - stop and finish the task.
|
|
406
|
-
|
|
407
|
-
## Style for pings
|
|
408
|
-
|
|
409
|
-
- Under 20 words, one line of prose
|
|
410
|
-
- Same voice as your final reply
|
|
411
|
-
- No "Update:", "Status:", "Plan:" prefixes - just say the thing
|
|
412
|
-
- No em dashes, no emojis
|
|
413
|
-
|
|
414
|
-
Your final reply at cycle end is the deliverable. It must cover every part the user asked about: findings, results, file paths, errors, whatever they need. Pings are bonuses on top of that, never a replacement.`;
|
|
415
|
-
}
|
|
416
432
|
export function assemblePrompt(input) {
|
|
417
433
|
const sections = [];
|
|
418
434
|
if (input.soulMd.trim())
|
|
@@ -421,8 +437,6 @@ export function assemblePrompt(input) {
|
|
|
421
437
|
sections.push(`# Operating Guide\n${input.agentMd.trim()}`);
|
|
422
438
|
if (input.heartbeat.trim())
|
|
423
439
|
sections.push(`# Heartbeat Schedule\n${input.heartbeat.trim()}`);
|
|
424
|
-
if (input.progressInstructions?.trim())
|
|
425
|
-
sections.push(input.progressInstructions.trim());
|
|
426
440
|
if (input.memories.trim())
|
|
427
441
|
sections.push(`# Recalled Memories\n${input.memories.trim()}`);
|
|
428
442
|
if (input.skills.trim())
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export type ChannelKind = "telegram" | "discord" | "imessage";
|
|
2
|
+
export type ProgressHandle = {
|
|
3
|
+
messageId: string | number;
|
|
4
|
+
} | null;
|
|
2
5
|
/** Start all configured channel adapters for a profile. Returns once
|
|
3
6
|
* adapters are wired; they then run in the background for the lifetime
|
|
4
7
|
* of the process. Idempotent: re-running swaps adapters in place. */
|
|
@@ -40,6 +43,12 @@ export declare function endTyping(source: string): void;
|
|
|
40
43
|
* clears typing. No-ops if source is not a channel or no adapter is
|
|
41
44
|
* registered. */
|
|
42
45
|
export declare function sendProgressToSource(profile: string, source: string, text: string): Promise<void>;
|
|
46
|
+
/** Open an edit-in-place progress message for the narrator.
|
|
47
|
+
* Returns null when the adapter does not support edits (iMessage)
|
|
48
|
+
* or is not loaded; callers must fall back to the summary path. */
|
|
49
|
+
export declare function openProgressMessage(profile: string, source: string, initialText: string): Promise<ProgressHandle>;
|
|
50
|
+
export declare function editProgressMessage(profile: string, source: string, handle: ProgressHandle, text: string): Promise<void>;
|
|
51
|
+
export declare function deleteProgressMessage(profile: string, source: string, handle: ProgressHandle): Promise<void>;
|
|
43
52
|
/** Send a proactive notification to all active channels for a profile.
|
|
44
53
|
* Uses the last seen chat/channel ID per adapter. No-ops if no messages
|
|
45
54
|
* have arrived yet (no chatId to target). Fire-and-forget. */
|
package/dist/channels/gateway.js
CHANGED
|
@@ -262,6 +262,63 @@ export async function sendProgressToSource(profile, source, text) {
|
|
|
262
262
|
return;
|
|
263
263
|
await a.send(id, text);
|
|
264
264
|
}
|
|
265
|
+
/** Open an edit-in-place progress message for the narrator.
|
|
266
|
+
* Returns null when the adapter does not support edits (iMessage)
|
|
267
|
+
* or is not loaded; callers must fall back to the summary path. */
|
|
268
|
+
export async function openProgressMessage(profile, source, initialText) {
|
|
269
|
+
const colon = source.indexOf(":");
|
|
270
|
+
if (colon < 0)
|
|
271
|
+
return null;
|
|
272
|
+
const kind = source.slice(0, colon);
|
|
273
|
+
const id = source.slice(colon + 1);
|
|
274
|
+
if (kind !== "telegram" && kind !== "discord" && kind !== "imessage")
|
|
275
|
+
return null;
|
|
276
|
+
const a = adapters.get(key(profile, kind));
|
|
277
|
+
if (!a || !a.openProgressMessage)
|
|
278
|
+
return null;
|
|
279
|
+
try {
|
|
280
|
+
return await a.openProgressMessage(id, initialText);
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
export async function editProgressMessage(profile, source, handle, text) {
|
|
287
|
+
if (!handle)
|
|
288
|
+
return;
|
|
289
|
+
const colon = source.indexOf(":");
|
|
290
|
+
if (colon < 0)
|
|
291
|
+
return;
|
|
292
|
+
const kind = source.slice(0, colon);
|
|
293
|
+
const id = source.slice(colon + 1);
|
|
294
|
+
if (kind !== "telegram" && kind !== "discord" && kind !== "imessage")
|
|
295
|
+
return;
|
|
296
|
+
const a = adapters.get(key(profile, kind));
|
|
297
|
+
if (!a || !a.editProgressMessage)
|
|
298
|
+
return;
|
|
299
|
+
try {
|
|
300
|
+
await a.editProgressMessage(id, handle, text);
|
|
301
|
+
}
|
|
302
|
+
catch { /* swallow: edits are best-effort */ }
|
|
303
|
+
}
|
|
304
|
+
export async function deleteProgressMessage(profile, source, handle) {
|
|
305
|
+
if (!handle)
|
|
306
|
+
return;
|
|
307
|
+
const colon = source.indexOf(":");
|
|
308
|
+
if (colon < 0)
|
|
309
|
+
return;
|
|
310
|
+
const kind = source.slice(0, colon);
|
|
311
|
+
const id = source.slice(colon + 1);
|
|
312
|
+
if (kind !== "telegram" && kind !== "discord" && kind !== "imessage")
|
|
313
|
+
return;
|
|
314
|
+
const a = adapters.get(key(profile, kind));
|
|
315
|
+
if (!a || !a.deleteProgressMessage)
|
|
316
|
+
return;
|
|
317
|
+
try {
|
|
318
|
+
await a.deleteProgressMessage(id, handle);
|
|
319
|
+
}
|
|
320
|
+
catch { /* swallow */ }
|
|
321
|
+
}
|
|
265
322
|
/** Send a proactive notification to all active channels for a profile.
|
|
266
323
|
* Uses the last seen chat/channel ID per adapter. No-ops if no messages
|
|
267
324
|
* have arrived yet (no chatId to target). Fire-and-forget. */
|
|
@@ -453,6 +510,39 @@ async function startTelegram(profile, c, log) {
|
|
|
453
510
|
await bot.sendDocument(Number(chatId), path, caption ? { caption } : {});
|
|
454
511
|
}
|
|
455
512
|
},
|
|
513
|
+
openProgressMessage: async (chatId, initialText) => {
|
|
514
|
+
// Telegram rejects empty messages. Fall back to a thin marker so
|
|
515
|
+
// the handle is valid and editProgressMessage can replace it.
|
|
516
|
+
const body = initialText.trim().length > 0 ? initialText : "…";
|
|
517
|
+
const msg = await bot.sendMessage(Number(chatId), body);
|
|
518
|
+
return { messageId: msg.message_id };
|
|
519
|
+
},
|
|
520
|
+
editProgressMessage: async (chatId, handle, text) => {
|
|
521
|
+
if (!handle)
|
|
522
|
+
return;
|
|
523
|
+
const body = text.trim().length > 0 ? text : "…";
|
|
524
|
+
try {
|
|
525
|
+
await bot.editMessageText(body, {
|
|
526
|
+
chat_id: Number(chatId),
|
|
527
|
+
message_id: Number(handle.messageId),
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
catch (e) {
|
|
531
|
+
// Telegram throws on "message is not modified" (no-op edits)
|
|
532
|
+
// and on rate limit. Both are non-fatal for a progress UI.
|
|
533
|
+
const msg = e.message ?? "";
|
|
534
|
+
if (!/not modified|Too Many Requests/i.test(msg))
|
|
535
|
+
throw e;
|
|
536
|
+
}
|
|
537
|
+
},
|
|
538
|
+
deleteProgressMessage: async (chatId, handle) => {
|
|
539
|
+
if (!handle)
|
|
540
|
+
return;
|
|
541
|
+
try {
|
|
542
|
+
await bot.deleteMessage(Number(chatId), Number(handle.messageId));
|
|
543
|
+
}
|
|
544
|
+
catch { /* ignore */ }
|
|
545
|
+
},
|
|
456
546
|
startTyping: (chatId) => {
|
|
457
547
|
// Telegram's typing indicator auto-clears after 5s, so re-send
|
|
458
548
|
// every 4s until stopped. `sendChatAction` errors are swallowed
|
|
@@ -549,6 +639,41 @@ async function startDiscord(profile, c, log) {
|
|
|
549
639
|
await ch.send(text);
|
|
550
640
|
}
|
|
551
641
|
},
|
|
642
|
+
openProgressMessage: async (channelId, initialText) => {
|
|
643
|
+
const ch = await client.channels.fetch(String(channelId));
|
|
644
|
+
if (!ch || !("send" in ch) || typeof ch.send !== "function")
|
|
645
|
+
return null;
|
|
646
|
+
const body = initialText.trim().length > 0 ? initialText : "…";
|
|
647
|
+
const sent = await ch.send(body);
|
|
648
|
+
return { messageId: sent.id };
|
|
649
|
+
},
|
|
650
|
+
editProgressMessage: async (channelId, handle, text) => {
|
|
651
|
+
if (!handle)
|
|
652
|
+
return;
|
|
653
|
+
const ch = await client.channels.fetch(String(channelId));
|
|
654
|
+
if (!ch || !("messages" in ch))
|
|
655
|
+
return;
|
|
656
|
+
try {
|
|
657
|
+
const m = await ch
|
|
658
|
+
.messages.fetch(String(handle.messageId));
|
|
659
|
+
const body = text.trim().length > 0 ? text : "…";
|
|
660
|
+
await m.edit(body);
|
|
661
|
+
}
|
|
662
|
+
catch { /* rate-limited or gone - ignore */ }
|
|
663
|
+
},
|
|
664
|
+
deleteProgressMessage: async (channelId, handle) => {
|
|
665
|
+
if (!handle)
|
|
666
|
+
return;
|
|
667
|
+
const ch = await client.channels.fetch(String(channelId));
|
|
668
|
+
if (!ch || !("messages" in ch))
|
|
669
|
+
return;
|
|
670
|
+
try {
|
|
671
|
+
const m = await ch
|
|
672
|
+
.messages.fetch(String(handle.messageId));
|
|
673
|
+
await m.delete();
|
|
674
|
+
}
|
|
675
|
+
catch { /* ignore */ }
|
|
676
|
+
},
|
|
552
677
|
sendFile: async (channelId, path, caption) => {
|
|
553
678
|
const ch = await client.channels.fetch(String(channelId));
|
|
554
679
|
if (ch && "send" in ch && typeof ch.send === "function") {
|