@songsid/agend 2.3.3-beta.2 → 2.3.3-beta.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.
Files changed (42) hide show
  1. package/dist/backend/claude-code.js +3 -25
  2. package/dist/backend/claude-code.js.map +1 -1
  3. package/dist/backend/claude-transcript-errors.d.ts +18 -0
  4. package/dist/backend/claude-transcript-errors.js +19 -0
  5. package/dist/backend/claude-transcript-errors.js.map +1 -0
  6. package/dist/classic-channel-manager.d.ts +4 -1
  7. package/dist/classic-channel-manager.js +21 -7
  8. package/dist/classic-channel-manager.js.map +1 -1
  9. package/dist/cli.js +2 -2
  10. package/dist/cli.js.map +1 -1
  11. package/dist/config-history.d.ts +50 -0
  12. package/dist/config-history.js +263 -0
  13. package/dist/config-history.js.map +1 -0
  14. package/dist/config.d.ts +3 -0
  15. package/dist/config.js +7 -2
  16. package/dist/config.js.map +1 -1
  17. package/dist/daemon.d.ts +6 -0
  18. package/dist/daemon.js +22 -3
  19. package/dist/daemon.js.map +1 -1
  20. package/dist/fleet-manager.d.ts +8 -1
  21. package/dist/fleet-manager.js +47 -16
  22. package/dist/fleet-manager.js.map +1 -1
  23. package/dist/fleet-process-handlers.d.ts +5 -0
  24. package/dist/fleet-process-handlers.js +21 -0
  25. package/dist/fleet-process-handlers.js.map +1 -1
  26. package/dist/locale.js +20 -0
  27. package/dist/locale.js.map +1 -1
  28. package/dist/needs-you-hub.d.ts +1 -0
  29. package/dist/needs-you-hub.js +2 -2
  30. package/dist/needs-you-hub.js.map +1 -1
  31. package/dist/needs-you.d.ts +8 -2
  32. package/dist/needs-you.js +7 -1
  33. package/dist/needs-you.js.map +1 -1
  34. package/dist/transcript-monitor.d.ts +7 -0
  35. package/dist/transcript-monitor.js +32 -4
  36. package/dist/transcript-monitor.js.map +1 -1
  37. package/dist/ui/panel-needs.js +11 -9
  38. package/dist/ui/shared/app-i18n.js +2 -2
  39. package/dist/ui/shared/app-needs.js +5 -1
  40. package/dist/web-api.js +2 -0
  41. package/dist/web-api.js.map +1 -1
  42. package/package.json +1 -1
@@ -0,0 +1,50 @@
1
+ export type ConfigFile = "fleet.yaml" | "classicBot.yaml";
2
+ export interface ConfigIssue {
3
+ file: ConfigFile;
4
+ line: number;
5
+ column: number;
6
+ reason: string;
7
+ mode: "edit" | "fallback";
8
+ time?: string;
9
+ since: number;
10
+ }
11
+ export interface ConfigSource {
12
+ source: string;
13
+ fallback: boolean;
14
+ canonicalPath?: string;
15
+ }
16
+ export declare class ConfigStartupError extends Error {
17
+ }
18
+ export declare class ConfigSyntaxError extends Error {
19
+ readonly file: ConfigFile;
20
+ readonly line: number;
21
+ readonly column: number;
22
+ readonly reason: string;
23
+ constructor(file: ConfigFile, line: number, column: number, reason: string);
24
+ }
25
+ /** Never include a YAML source excerpt (it can contain tokens). Both production parsers must accept the source. */
26
+ export declare function checkConfigSyntax(source: string, file: ConfigFile): unknown;
27
+ export declare function configIssueText(issue: ConfigIssue, translate: (key: string, ...args: Array<string | number>) => string): string;
28
+ /** One instance per running fleet. No global load hooks: CLI validate must always inspect disk, not a backup. */
29
+ export declare class ConfigHistory {
30
+ private home;
31
+ private changed;
32
+ private warn;
33
+ private issues;
34
+ private observed;
35
+ private paths;
36
+ private fallback;
37
+ readonly dbPath: string;
38
+ constructor(home: string, changed?: () => void, warn?: (message: string) => void);
39
+ track(file: ConfigFile, path: string): void;
40
+ isFallback(path: string): boolean;
41
+ currentIssues(): ConfigIssue[];
42
+ private database;
43
+ private newest;
44
+ private problem;
45
+ read(file: ConfigFile, path: string, startup?: boolean): ConfigSource;
46
+ /** Call only after the source's real loader accepted it; never timestamp a fallback as a fresh disk load. */
47
+ accepted(file: ConfigFile, path: string, selected: ConfigSource): void;
48
+ /** Passive: observe edits without applying Fleet settings. Stable state means no work and no repeated notice. */
49
+ check(): void;
50
+ }
@@ -0,0 +1,263 @@
1
+ /** #2829: private last-good source history; fallback is exclusively a startup YAML-syntax recovery. */
2
+ import Database from "better-sqlite3";
3
+ import { createHash } from "node:crypto";
4
+ import { closeSync, lstatSync, openSync, readFileSync, realpathSync, statSync } from "node:fs";
5
+ import { join, resolve } from "node:path";
6
+ import { LineCounter, parseDocument } from "yaml";
7
+ import yaml from "js-yaml";
8
+ import { ensureAgendHome } from "./agend-home.js";
9
+ import { validateClassicBotConfig, validateFleetConfig } from "./config-validator.js";
10
+ import { unshareParsed } from "./yaml-shared-nodes.js";
11
+ import { t } from "./locale.js";
12
+ const hash = (text) => createHash("sha256").update(text).digest("hex");
13
+ const pathKey = (path) => realpathSync(path);
14
+ export class ConfigStartupError extends Error {
15
+ }
16
+ export class ConfigSyntaxError extends Error {
17
+ file;
18
+ line;
19
+ column;
20
+ reason;
21
+ constructor(file, line, column, reason) {
22
+ super(`Invalid ${file}: ${reason} at line ${line}, column ${column}`);
23
+ this.file = file;
24
+ this.line = line;
25
+ this.column = column;
26
+ this.reason = reason;
27
+ this.name = "ConfigSyntaxError";
28
+ }
29
+ }
30
+ /** Parser messages may interpolate source-derived aliases, tags or directives, even without an excerpt. */
31
+ function safeYamlReason(code, reason = "") {
32
+ const categories = {
33
+ DUPLICATE_KEY: "Map keys must be unique",
34
+ BAD_ALIAS: "Invalid YAML alias", ALIAS_PROPS: "Invalid YAML alias properties",
35
+ BAD_DIRECTIVE: "Invalid YAML directive", BAD_DQ_ESCAPE: "Invalid YAML escape sequence",
36
+ BAD_INDENT: "Invalid YAML indentation", TAB_AS_INDENT: "Tabs cannot be used for YAML indentation",
37
+ BAD_PROP_ORDER: "Invalid YAML property order", BAD_SCALAR_START: "Invalid YAML scalar",
38
+ TAG_RESOLVE_FAILED: "Invalid YAML tag", MULTIPLE_TAGS: "Multiple YAML tags",
39
+ MULTIPLE_ANCHORS: "Multiple YAML anchors", MULTIPLE_DOCS: "Multiple YAML documents",
40
+ MISSING_CHAR: "Missing YAML punctuation", UNEXPECTED_TOKEN: "Unexpected YAML token",
41
+ NON_STRING_KEY: "Invalid YAML mapping key", KEY_OVER_1024_CHARS: "YAML mapping key is too long",
42
+ MULTILINE_IMPLICIT_KEY: "Invalid multiline YAML key", BLOCK_AS_IMPLICIT_KEY: "Invalid block YAML key",
43
+ BLOCK_IN_FLOW: "Invalid YAML collection", BAD_COLLECTION_TYPE: "Invalid YAML collection",
44
+ RESOURCE_EXHAUSTION: "YAML resource limit exceeded",
45
+ };
46
+ if (code)
47
+ return categories[code] ?? "Invalid YAML syntax";
48
+ if (reason.startsWith('unidentified alias ') || reason.startsWith('name of an alias '))
49
+ return "Invalid YAML alias";
50
+ if (reason.startsWith('unknown tag ') || reason.startsWith('undeclared tag handle ') || reason.startsWith('tag ') ||
51
+ reason.startsWith('cannot resolve a node with ') || reason.startsWith('unacceptable node kind for '))
52
+ return "Invalid YAML tag";
53
+ return "Invalid YAML syntax"; // Never forward an unclassified parser string.
54
+ }
55
+ /** Never include a YAML source excerpt (it can contain tokens). Both production parsers must accept the source. */
56
+ export function checkConfigSyntax(source, file) {
57
+ const counter = new LineCounter();
58
+ const doc = parseDocument(source, { prettyErrors: false, lineCounter: counter });
59
+ const error = doc.errors[0];
60
+ if (error) {
61
+ const where = counter.linePos(error.pos[0]);
62
+ throw new ConfigSyntaxError(file, where.line, where.col, safeYamlReason(error.code));
63
+ }
64
+ try {
65
+ const safe = file === "fleet.yaml" ? source.replace(/(?<=:\s+|[-]\s+)(\d{16,})(?=\s*$)/gm, (_, d) => `"${d}"`) : source;
66
+ return unshareParsed(yaml.load(safe), file);
67
+ }
68
+ catch (error) {
69
+ if (error instanceof yaml.YAMLException)
70
+ throw new ConfigSyntaxError(file, (error.mark?.line ?? 0) + 1, (error.mark?.column ?? 0) + 1, safeYamlReason(undefined, error.reason));
71
+ throw error; // alias-expansion/loader/security failures are not syntax fallback candidates
72
+ }
73
+ }
74
+ function valid(file, raw) {
75
+ return (file === "fleet.yaml" ? validateFleetConfig(raw) : validateClassicBotConfig(raw)).valid;
76
+ }
77
+ export function configIssueText(issue, translate) {
78
+ return translate(`config_history.${issue.mode === "fallback" ? "fallback" : issue.time ? "edit" : "no_history"}`, issue.file, issue.line, issue.column, issue.reason, issue.time ?? "");
79
+ }
80
+ /** One instance per running fleet. No global load hooks: CLI validate must always inspect disk, not a backup. */
81
+ export class ConfigHistory {
82
+ home;
83
+ changed;
84
+ warn;
85
+ issues = new Map();
86
+ observed = new Map();
87
+ paths = new Map();
88
+ fallback = new Set();
89
+ dbPath;
90
+ constructor(home, changed = () => { }, warn = () => { }) {
91
+ this.home = home;
92
+ this.changed = changed;
93
+ this.warn = warn;
94
+ this.dbPath = join(home, "config-history.db");
95
+ }
96
+ track(file, path) { this.paths.set(resolve(path), file); }
97
+ isFallback(path) { return this.fallback.has(resolve(path)); }
98
+ currentIssues() { return [...this.issues.values()]; }
99
+ database(create) {
100
+ if (create) {
101
+ ensureAgendHome(this.home);
102
+ try {
103
+ closeSync(openSync(this.dbPath, "wx", 0o600));
104
+ }
105
+ catch (err) {
106
+ if (err.code !== "EEXIST")
107
+ throw err;
108
+ }
109
+ }
110
+ for (const suffix of ["-journal", "-wal", "-shm"]) {
111
+ try {
112
+ const side = lstatSync(this.dbPath + suffix);
113
+ if (!side.isFile() || (process.getuid && side.uid !== process.getuid()) || (side.mode & 0o077) !== 0)
114
+ throw new Error("private history journal required");
115
+ }
116
+ catch (error) {
117
+ if (error.code !== "ENOENT")
118
+ throw error;
119
+ }
120
+ }
121
+ const st = lstatSync(this.dbPath);
122
+ if (!st.isFile() || (process.getuid && st.uid !== process.getuid()) || (st.mode & 0o077) !== 0)
123
+ throw new Error("private history database required");
124
+ const db = new Database(this.dbPath, { fileMustExist: true, readonly: !create, timeout: 250 });
125
+ try {
126
+ // DELETE journals inherit the private DB mode; FULL commits survive an abrupt fleet death.
127
+ if (create) {
128
+ db.pragma("journal_mode = DELETE");
129
+ db.pragma("synchronous = FULL");
130
+ db.exec(`CREATE TABLE IF NOT EXISTS config_versions (
131
+ id INTEGER PRIMARY KEY, file TEXT NOT NULL, path TEXT NOT NULL,
132
+ loaded_at TEXT NOT NULL, hash TEXT NOT NULL, content TEXT NOT NULL
133
+ ); CREATE INDEX IF NOT EXISTS config_versions_source ON config_versions(file,path,id);`);
134
+ }
135
+ return db;
136
+ }
137
+ catch (err) {
138
+ db.close();
139
+ throw err;
140
+ }
141
+ }
142
+ newest(file, path) {
143
+ try {
144
+ lstatSync(this.dbPath);
145
+ }
146
+ catch (error) {
147
+ return error.code === "ENOENT" ? "absent" : "unreadable";
148
+ }
149
+ let db;
150
+ try {
151
+ db = this.database(false);
152
+ const row = db.prepare("SELECT content,hash,loaded_at FROM config_versions WHERE file=? AND path=? ORDER BY id DESC LIMIT 1")
153
+ .get(file, path);
154
+ if (!row)
155
+ return "absent";
156
+ if (typeof row.content !== "string" || hash(row.content) !== row.hash)
157
+ return "checksum";
158
+ if (!Number.isFinite(Date.parse(row.loaded_at)))
159
+ return "invalid";
160
+ try {
161
+ if (!valid(file, checkConfigSyntax(row.content, file)))
162
+ return "invalid";
163
+ }
164
+ catch {
165
+ return "invalid";
166
+ }
167
+ return { source: row.content, time: row.loaded_at };
168
+ }
169
+ catch {
170
+ return "unreadable";
171
+ }
172
+ finally {
173
+ db?.close();
174
+ }
175
+ }
176
+ problem(path, error, stored, mode) {
177
+ const key = resolve(path), previous = this.issues.get(key);
178
+ const issue = { file: error.file, line: error.line, column: error.column, reason: error.reason,
179
+ mode: this.fallback.has(key) ? "fallback" : mode, since: previous?.since ?? Date.now(),
180
+ ...(typeof stored === "object" ? { time: stored.time } : previous?.mode === "fallback" ? { time: previous.time } : {}) };
181
+ if (JSON.stringify(previous) !== JSON.stringify(issue)) {
182
+ this.issues.set(key, issue);
183
+ this.changed();
184
+ }
185
+ }
186
+ read(file, path, startup = false) {
187
+ const key = resolve(path);
188
+ this.paths.set(key, file);
189
+ const canonicalPath = pathKey(path);
190
+ const source = readFileSync(canonicalPath, "utf8"); // IO/permission/missing files never select history
191
+ if (pathKey(path) !== canonicalPath)
192
+ throw new Error("Configuration path changed while being read");
193
+ try {
194
+ checkConfigSyntax(source, file);
195
+ return { source, fallback: false, canonicalPath };
196
+ }
197
+ catch (error) {
198
+ if (!(error instanceof ConfigSyntaxError))
199
+ throw error;
200
+ const stored = this.newest(file, canonicalPath);
201
+ if (pathKey(path) !== canonicalPath)
202
+ throw new Error("Configuration path changed while checking history");
203
+ if (startup && typeof stored === "object") {
204
+ this.fallback.add(key);
205
+ this.problem(path, error, stored, "fallback");
206
+ return { source: stored.source, fallback: true, canonicalPath };
207
+ }
208
+ this.problem(path, error, stored, "edit");
209
+ if (startup)
210
+ throw new ConfigStartupError(t("config_history.startup_failed", file, error.line, error.column, error.reason, t(`config_history.history_${stored}`)));
211
+ throw error;
212
+ }
213
+ }
214
+ /** Call only after the source's real loader accepted it; never timestamp a fallback as a fresh disk load. */
215
+ accepted(file, path, selected) {
216
+ const key = resolve(path);
217
+ this.paths.set(key, file);
218
+ if (selected.fallback)
219
+ return;
220
+ this.fallback.delete(key);
221
+ if (this.issues.delete(key))
222
+ this.changed();
223
+ let db;
224
+ try {
225
+ if (!valid(file, checkConfigSyntax(selected.source, file)))
226
+ return; // keep existing schema policy, not in history
227
+ const canonical = selected.canonicalPath ?? pathKey(path), digest = hash(selected.source);
228
+ db = this.database(true);
229
+ const store = db;
230
+ store.transaction(() => {
231
+ const newest = store.prepare("SELECT hash,content FROM config_versions WHERE file=? AND path=? ORDER BY id DESC LIMIT 1").get(file, canonical);
232
+ if (newest?.hash === digest && newest.content === selected.source)
233
+ return;
234
+ store.prepare("INSERT INTO config_versions(file,path,loaded_at,hash,content) VALUES (?,?,?,?,?)")
235
+ .run(file, canonical, new Date().toISOString(), digest, selected.source);
236
+ store.prepare("DELETE FROM config_versions WHERE file=? AND path=? AND id NOT IN (SELECT id FROM config_versions WHERE file=? AND path=? ORDER BY id DESC LIMIT 5)")
237
+ .run(file, canonical, file, canonical);
238
+ }).immediate();
239
+ }
240
+ catch {
241
+ this.warn("Could not store valid configuration history; the current disk settings remain usable");
242
+ }
243
+ finally {
244
+ db?.close();
245
+ }
246
+ }
247
+ /** Passive: observe edits without applying Fleet settings. Stable state means no work and no repeated notice. */
248
+ check() {
249
+ for (const [path, file] of this.paths) {
250
+ try {
251
+ const st = statSync(path), stamp = `${st.dev}:${st.ino}:${st.size}:${st.mtimeMs}:${st.ctimeMs}`;
252
+ if (this.observed.get(path) === stamp)
253
+ continue;
254
+ this.observed.set(path, stamp);
255
+ this.read(file, path);
256
+ if (!this.fallback.has(path) && this.issues.delete(path))
257
+ this.changed();
258
+ }
259
+ catch { /* parse errors are represented by read(); IO errors retain the existing load policy */ }
260
+ }
261
+ }
262
+ }
263
+ //# sourceMappingURL=config-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-history.js","sourceRoot":"","sources":["../src/config-history.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -48,5 +48,8 @@ export declare function channelWithDefaults<T extends {
48
48
  mode: NonNullable<T["mode"]> | "topic";
49
49
  };
50
50
  export declare function loadFleetConfig(configPath: string): FleetConfig;
51
+ /** Parse an already selected source without rewriting the on-disk file. */
52
+ export declare function loadFleetConfigSource(raw: string): FleetConfig;
51
53
  /** Read the user-authored config without applying defaults or normalization. */
52
54
  export declare function loadRawFleetConfig(configPath: string): RawFleetConfig;
55
+ export declare function loadRawFleetConfigSource(raw: string): RawFleetConfig;
package/dist/config.js CHANGED
@@ -145,7 +145,10 @@ export function loadFleetConfig(configPath) {
145
145
  if (!existsSync(configPath)) {
146
146
  return { defaults: {}, instances: {} };
147
147
  }
148
- const raw = readFileSync(configPath, "utf-8");
148
+ return loadFleetConfigSource(readFileSync(configPath, "utf-8"));
149
+ }
150
+ /** Parse an already selected source without rewriting the on-disk file. */
151
+ export function loadFleetConfigSource(raw) {
149
152
  // Quote bare 16+ digit integers before parsing to prevent precision loss.
150
153
  // Discord snowflakes and Telegram group IDs are 64-bit and exceed JS MAX_SAFE_INTEGER.
151
154
  const safeRaw = raw.replace(/(?<=:\s+|[-]\s+)(\d{16,})(?=\s*$)/gm, (_, d) => `"${d}"`);
@@ -292,7 +295,9 @@ function validateWebTerminalTunnelConfig(raw) {
292
295
  export function loadRawFleetConfig(configPath) {
293
296
  if (!existsSync(configPath))
294
297
  return {};
295
- const raw = readFileSync(configPath, "utf-8");
298
+ return loadRawFleetConfigSource(readFileSync(configPath, "utf-8"));
299
+ }
300
+ export function loadRawFleetConfigSource(raw) {
296
301
  // Match loadFleetConfig(): preserve platform IDs that exceed MAX_SAFE_INTEGER.
297
302
  const safeRaw = raw.replace(/(?<=:\s+|[-]\s+)(\d{16,})(?=\s*$)/gm, (_, d) => `"${d}"`);
298
303
  const parsed = unshareParsed(yaml.load(safeRaw), "fleet.yaml"); // #2208, as loadFleetConfig
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/daemon.d.ts CHANGED
@@ -948,6 +948,12 @@ export declare class Daemon extends EventEmitter {
948
948
  model: string;
949
949
  since: number;
950
950
  } | null;
951
+ /** #2834: Claude's account is out of API credits — its own record; the same pause as the pane pattern it replaces. */
952
+ static readonly CREDIT_BALANCE_LOW: RegExp;
953
+ /** #2834 (#816): Claude's usage-limit auto-continue note, as it records it (`system` / `informational`). */
954
+ static readonly USAGE_LIMIT_PAUSE: RegExp;
955
+ /** #2834 (#816): Claude paused itself until its usage window opens — the same notice the screen pattern gave. */
956
+ private noteClaudeInformational;
951
957
  /** #2822: Claude recorded a failed API call. */
952
958
  private noteClaudeApiError;
953
959
  /** #2822: Claude produced output (text or a tool call): the model answers again, so a hold ends. */
package/dist/daemon.js CHANGED
@@ -53,6 +53,7 @@ import { formatHumanInboundMessage, prepareDeliveryWire, steerInboundEnvelope, B
53
53
  import { formatCrossInstanceInboundMessage, renderCrossInstanceHandoffMetadata, } from "./cross-instance-envelope.js";
54
54
  import { agendMessageInInput, bottomRowIsReady, inputAreaText, inputShowsPastedText, pastedTextSignature, pasteLeftInInput, strandedAgendMessageInInput } from "./pane-input-residue.js";
55
55
  import { TurnReplyGuard, formatReplyDropDetection, turnExpectsPersonReply } from "./turn-reply-guard.js";
56
+ import { CLAUDE_CREDIT_BALANCE_LOW, CLAUDE_MODEL_USAGE_LIMIT, CLAUDE_USAGE_LIMIT_PAUSE } from "./backend/claude-transcript-errors.js";
56
57
  import { t } from "./locale.js";
57
58
  import { MuseUsageRelay, clearMuseUsageSnapshot } from "./muse-usage-relay.js";
58
59
  import { deliveryContentDigest } from "./delivery-outbox.js";
@@ -1778,14 +1779,31 @@ export class Daemon extends EventEmitter {
1778
1779
  /** Transcript events in Claude's order (prompts, output, every API error): the newest, and the latest limit error. */
1779
1780
  transcriptEventSeq = 0;
1780
1781
  usageLimitErrorSeq = 0;
1781
- static MODEL_USAGE_LIMIT = /^You['’]ve reached your ([A-Za-z0-9][A-Za-z0-9 .-]{0,40}?) limit\./;
1782
+ static MODEL_USAGE_LIMIT = CLAUDE_MODEL_USAGE_LIMIT;
1782
1783
  /** #2822: the usage-limit hold, while it lasts — Needs you lists it. */
1783
1784
  usageHold() {
1784
1785
  return this.usageLimitHold ? { ...this.usageLimitHold } : null;
1785
1786
  }
1787
+ /** #2834: Claude's account is out of API credits — its own record; the same pause as the pane pattern it replaces. */
1788
+ static CREDIT_BALANCE_LOW = CLAUDE_CREDIT_BALANCE_LOW;
1789
+ /** #2834 (#816): Claude's usage-limit auto-continue note, as it records it (`system` / `informational`). */
1790
+ static USAGE_LIMIT_PAUSE = CLAUDE_USAGE_LIMIT_PAUSE;
1791
+ /** #2834 (#816): Claude paused itself until its usage window opens — the same notice the screen pattern gave. */
1792
+ noteClaudeInformational(text) {
1793
+ const match = Daemon.USAGE_LIMIT_PAUSE.exec(text.trim());
1794
+ if (!match)
1795
+ return;
1796
+ const when = match[1].trim();
1797
+ this.emit("pty_error", { name: this.name, type: "quota", action: "notify", verifyQuota: true, skipCooldown: true, skipRecoveryWait: true,
1798
+ message: `Claude Code usage limit reached — paused; continuing automatically ${when}` });
1799
+ }
1786
1800
  /** #2822: Claude recorded a failed API call. */
1787
- noteClaudeApiError(text, status) {
1801
+ noteClaudeApiError(text, status, errorKind = null) {
1788
1802
  const seq = ++this.transcriptEventSeq;
1803
+ if (errorKind === "billing_error" || (status === 400 && Daemon.CREDIT_BALANCE_LOW.test(text))) {
1804
+ this.emit("pty_error", { name: this.name, type: "quota", action: "pause", message: "Insufficient API credits" });
1805
+ return;
1806
+ }
1789
1807
  const match = status === 429 ? Daemon.MODEL_USAGE_LIMIT.exec(text.trim()) : null;
1790
1808
  if (!match)
1791
1809
  return;
@@ -2555,7 +2573,8 @@ export class Daemon extends EventEmitter {
2555
2573
  // show only elapsed time than to leave a stale "Bash: npm test" on screen.
2556
2574
  this.publishActivity(null);
2557
2575
  });
2558
- this.transcriptMonitor.on("api_error", (text, status) => this.noteClaudeApiError(text, status));
2576
+ this.transcriptMonitor.on("api_error", (text, status, _at, errorKind) => this.noteClaudeApiError(text, status, errorKind));
2577
+ this.transcriptMonitor.on("system_informational", (text) => this.noteClaudeInformational(text));
2559
2578
  this.transcriptMonitor.on("user_prompt", () => this.noteClaudePrompt());
2560
2579
  this.transcriptMonitor.on("assistant_text", (text) => {
2561
2580
  this.noteClaudeOutput();