@mono-agent/web 0.20.7 → 0.20.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.
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/store.js CHANGED
@@ -8,7 +8,117 @@ import { WEB_MAX_FILES_PER_TURN, WEB_MAX_LIVE_INPUTS_PER_THREAD, WEB_MAX_TURN_AT
8
8
  import { WebConsoleError } from "./errors.js";
9
9
  import { webPushPreview } from "./push-preview.js";
10
10
  import { prepareWebStatePaths } from "./state-paths.js";
11
- const WEB_STORAGE_SCHEMA_VERSION = 8;
11
+ /**
12
+ * The searchable text of one message row, derived in SQL so the index cannot
13
+ * drift from `parts_json`: every write path in this store goes through the
14
+ * triggers below rather than remembering to maintain a second copy.
15
+ *
16
+ * Only `text` parts are indexed. Reasoning is the agent's working-out and tool
17
+ * payloads are machine JSON; both would drown a search of what was actually
18
+ * said in a conversation.
19
+ *
20
+ * The two highlight sentinels are stripped here rather than trusted to be
21
+ * absent: a message that quotes one would otherwise come back in a snippet as
22
+ * an unbalanced marker and corrupt the client's highlighting.
23
+ */
24
+ const MESSAGE_SEARCH_BODY_SQL = `
25
+ SELECT replace(replace(group_concat(json_extract(value, '$.text'), ' '), char(2), ''), char(3), '')
26
+ FROM json_each(%SOURCE%.parts_json)
27
+ WHERE json_extract(value, '$.type') = 'text'
28
+ AND json_extract(value, '$.text') IS NOT NULL`;
29
+ const messageSearchBody = (source) => MESSAGE_SEARCH_BODY_SQL.replaceAll("%SOURCE%", source);
30
+ /**
31
+ * `unicode61 remove_diacritics 2` folds accents, so an unaccented query still
32
+ * finds accented prose. The write triggers are guarded on `json_valid` because
33
+ * an unindexed message is one missing search hit, while a failed insert would
34
+ * be a lost message.
35
+ */
36
+ const MESSAGE_SEARCH_REINDEX_SQL = `
37
+ DELETE FROM message_search WHERE rowid = old.rowid;
38
+ INSERT INTO message_search(rowid, body)
39
+ SELECT new.rowid, (${messageSearchBody("new")});`;
40
+ /**
41
+ * A streaming answer is rewritten every ~50 ms, and re-extracting a large
42
+ * message's text on each snapshot costs several times the row write itself
43
+ * (measured at ~6x, and ~23 ms per snapshot on the largest real messages). A
44
+ * running message is therefore left out of the index entirely — including at
45
+ * insert, because a cron run is inserted with real prose while still running,
46
+ * and indexing that body once would freeze it: the thread would keep matching
47
+ * narration it no longer contains. It is swept in when it settles, by either
48
+ * statement shape, since some paths write `parts_json` and `status` together and
49
+ * others write only one of them. `reindexUnsettledMessages` closes the remaining
50
+ * hole, a process that dies mid-turn.
51
+ */
52
+ const MESSAGE_SEARCH_SCHEMA_SQL = `
53
+ CREATE VIRTUAL TABLE IF NOT EXISTS message_search USING fts5(
54
+ body,
55
+ tokenize='unicode61 remove_diacritics 2'
56
+ );
57
+ CREATE TRIGGER IF NOT EXISTS message_search_insert
58
+ AFTER INSERT ON messages
59
+ WHEN json_valid(new.parts_json) AND new.status <> 'running' BEGIN
60
+ INSERT INTO message_search(rowid, body)
61
+ SELECT new.rowid, (${messageSearchBody("new")});
62
+ END;
63
+ CREATE TRIGGER IF NOT EXISTS message_search_update
64
+ AFTER UPDATE OF parts_json ON messages
65
+ WHEN json_valid(new.parts_json) AND new.status <> 'running' BEGIN
66
+ ${MESSAGE_SEARCH_REINDEX_SQL}
67
+ END;
68
+ CREATE TRIGGER IF NOT EXISTS message_search_settle
69
+ AFTER UPDATE OF status ON messages
70
+ WHEN json_valid(new.parts_json) AND old.status = 'running' AND new.status <> 'running' BEGIN
71
+ ${MESSAGE_SEARCH_REINDEX_SQL}
72
+ END;
73
+ CREATE TRIGGER IF NOT EXISTS message_search_delete
74
+ AFTER DELETE ON messages BEGIN
75
+ DELETE FROM message_search WHERE rowid = old.rowid;
76
+ END;`;
77
+ /**
78
+ * Messages still marked running carry whatever text the last snapshot left, and
79
+ * the triggers deliberately skipped them. Sweeping them at open means a turn
80
+ * killed by a crash is searchable rather than silently missing forever.
81
+ */
82
+ const MESSAGE_SEARCH_UNSETTLED_SQL = `
83
+ DELETE FROM message_search
84
+ WHERE rowid IN (SELECT rowid FROM messages WHERE status = 'running');
85
+ INSERT INTO message_search(rowid, body)
86
+ SELECT m.rowid, (${messageSearchBody("m")})
87
+ FROM messages m
88
+ WHERE m.status = 'running' AND json_valid(m.parts_json);`;
89
+ const MESSAGE_SEARCH_BACKFILL_SQL = `
90
+ DELETE FROM message_search;
91
+ INSERT INTO message_search(rowid, body)
92
+ SELECT m.rowid, (${messageSearchBody("m")})
93
+ FROM messages m
94
+ WHERE json_valid(m.parts_json);`;
95
+ /** Rows scanned before ranking cuts off; bounds the cost of a one-letter term. */
96
+ const MESSAGE_SEARCH_SCAN_LIMIT = 400;
97
+ export const WEB_THREAD_SEARCH_MAX = 50;
98
+ /** Below this a query matches almost everything, so it is not worth running. */
99
+ export const WEB_THREAD_SEARCH_MIN_QUERY = 2;
100
+ /**
101
+ * Wrap each match inside a returned snippet so the client can highlight it.
102
+ * Control characters, and stripped from the indexed body above, so a snippet's
103
+ * markers are always the ones `snippet()` added.
104
+ */
105
+ export const WEB_SEARCH_HIGHLIGHT_OPEN = "\u0002";
106
+ export const WEB_SEARCH_HIGHLIGHT_CLOSE = "\u0003";
107
+ /**
108
+ * An FTS5 MATCH expression for a typed query. Each token is quoted (so the
109
+ * user's punctuation can never be read as FTS operator syntax) and given a
110
+ * prefix `*` so typing narrows results as you go. Tokens are ANDed: adding a
111
+ * word should cut the result list, not grow it.
112
+ */
113
+ export function messageSearchMatchExpression(raw) {
114
+ const tokens = raw.toLowerCase().match(/[\p{L}\p{N}]+/gu) ?? [];
115
+ return tokens.length === 0 ? undefined : tokens.map((token) => `"${token}"*`).join(" ");
116
+ }
117
+ /** Escape the LIKE wildcards so a literal `%` in a title search stays literal. */
118
+ export function escapeLikeTerm(raw) {
119
+ return raw.replaceAll(/[\\%_]/gu, (character) => `\\${character}`);
120
+ }
121
+ const WEB_STORAGE_SCHEMA_VERSION = 9;
12
122
  const MAX_REVISIONS_PER_THREAD = 1_000;
13
123
  export const WEB_THREAD_PAGE_MAX = 200;
14
124
  export const WEB_MESSAGE_PAGE_MAX = 100;
@@ -53,6 +163,9 @@ export class WebStore {
53
163
  store.recoverInterruptedTurns();
54
164
  store.recoverLiveInputs();
55
165
  store.recoverWebPushDeliveries();
166
+ // After recovery, so anything the recovery settled is already indexed by
167
+ // its own trigger and this only sweeps what genuinely stayed running.
168
+ store.reindexUnsettledMessages();
56
169
  return store;
57
170
  }
58
171
  catch (error) {
@@ -919,6 +1032,108 @@ export class WebStore {
919
1032
  : {}),
920
1033
  };
921
1034
  }
1035
+ /**
1036
+ * Conversations of one agent whose title or message prose matches `query`.
1037
+ *
1038
+ * The sidebar filter this replaces could only see the threads already loaded
1039
+ * into the browser, so anything past the first page was unfindable. This runs
1040
+ * against the whole store instead: the FTS index ranks message hits by bm25
1041
+ * and returns a highlighted snippet, and a separate title pass catches
1042
+ * conversations named after something never said inside them.
1043
+ */
1044
+ searchThreads(input) {
1045
+ if (this.getAgent(input.sourceId) === undefined) {
1046
+ throw new WebConsoleError("agent_not_found", "Agent not found.", 404);
1047
+ }
1048
+ const query = input.query.trim();
1049
+ const limit = boundedPageLimit(input.limit, WEB_THREAD_SEARCH_MAX);
1050
+ const match = query.length < WEB_THREAD_SEARCH_MIN_QUERY
1051
+ ? undefined
1052
+ : messageSearchMatchExpression(query);
1053
+ if (match === undefined)
1054
+ return { hits: [], truncated: false };
1055
+ const messageRows = this.database.prepare(`
1056
+ SELECT m.thread_id AS thread_id,
1057
+ snippet(message_search, 0, ?, ?, char(8230), 12) AS snippet,
1058
+ bm25(message_search) AS rank
1059
+ FROM message_search
1060
+ JOIN messages m ON m.rowid = message_search.rowid
1061
+ JOIN threads t ON t.id = m.thread_id
1062
+ WHERE message_search MATCH ? AND t.source_id = ?
1063
+ ORDER BY rank
1064
+ LIMIT ?
1065
+ `).all(WEB_SEARCH_HIGHLIGHT_OPEN, WEB_SEARCH_HIGHLIGHT_CLOSE, match, input.sourceId, MESSAGE_SEARCH_SCAN_LIMIT + 1);
1066
+ // Ranked rows arrive best-first, so the first row seen for a thread is that
1067
+ // thread's best snippet and its rank. The extra probe row exists only to
1068
+ // detect truncation and must not inflate a count or admit a thread.
1069
+ const byThread = new Map();
1070
+ for (const row of messageRows.slice(0, MESSAGE_SEARCH_SCAN_LIMIT)) {
1071
+ const existing = byThread.get(row.thread_id);
1072
+ if (existing === undefined) {
1073
+ byThread.set(row.thread_id, {
1074
+ ...(row.snippet === null || row.snippet.length === 0 ? {} : { snippet: row.snippet }),
1075
+ rank: row.rank,
1076
+ matches: 1,
1077
+ });
1078
+ continue;
1079
+ }
1080
+ byThread.set(row.thread_id, { ...existing, matches: existing.matches + 1 });
1081
+ }
1082
+ // A conversation the user renamed after what it is about may not repeat that
1083
+ // word in any message, so titles are matched separately — as a substring,
1084
+ // because a title is short enough to scan and short enough to type part of.
1085
+ const titleRows = this.database.prepare(`
1086
+ SELECT t.id AS id FROM threads t
1087
+ WHERE t.source_id = ? AND t.title LIKE '%' || ? || '%' ESCAPE '\\'
1088
+ ORDER BY t.updated_at DESC, t.id DESC
1089
+ LIMIT ?
1090
+ `).all(input.sourceId, escapeLikeTerm(query), limit + 1);
1091
+ const titleMatches = new Set(titleRows.slice(0, limit).map((row) => row.id));
1092
+ const rankedIds = [...byThread.entries()]
1093
+ .map(([threadId, hit]) => ({ threadId, ...hit }))
1094
+ .sort((left, right) => left.rank - right.rank)
1095
+ .map((hit) => hit.threadId)
1096
+ .filter((threadId) => !titleMatches.has(threadId));
1097
+ // Title hits lead, because naming a conversation is a deliberate act. But
1098
+ // titles are auto-derived from first prompts, so a common word can match
1099
+ // more of them than fit one page — and letting titles take every slot would
1100
+ // silently return this feature to the title-only search it replaces. Half
1101
+ // the page is therefore reserved for ranked message hits whenever there are
1102
+ // any, and each side takes the other's unused room.
1103
+ const titleIds = [...titleMatches];
1104
+ const titleBudget = rankedIds.length === 0
1105
+ ? limit
1106
+ : Math.max(limit - rankedIds.length, Math.ceil(limit / 2));
1107
+ const ordering = [
1108
+ ...titleIds.slice(0, titleBudget),
1109
+ ...rankedIds,
1110
+ ...titleIds.slice(titleBudget),
1111
+ ];
1112
+ const selectThread = this.database.prepare(threadSelectSql("WHERE t.id = ?"));
1113
+ const hits = [];
1114
+ for (const threadId of ordering) {
1115
+ if (hits.length >= limit)
1116
+ break;
1117
+ const row = selectThread.get(threadId);
1118
+ if (row === undefined)
1119
+ continue;
1120
+ const hit = byThread.get(threadId);
1121
+ hits.push({
1122
+ thread: this.mapThread(row),
1123
+ messageMatches: hit?.matches ?? 0,
1124
+ titleMatch: titleMatches.has(threadId),
1125
+ ...(hit?.snippet === undefined ? {} : { snippet: hit.snippet }),
1126
+ });
1127
+ }
1128
+ return {
1129
+ hits,
1130
+ // Both queries fetch one row past their cap, so this reports a real cut
1131
+ // rather than firing on an exact fill.
1132
+ truncated: messageRows.length > MESSAGE_SEARCH_SCAN_LIMIT
1133
+ || titleRows.length > limit
1134
+ || ordering.length > hits.length,
1135
+ };
1136
+ }
922
1137
  resolveThreadId(id) {
923
1138
  let resolved = id;
924
1139
  const seen = new Set();
@@ -1044,6 +1259,34 @@ export class WebStore {
1044
1259
  });
1045
1260
  return { ...this.requireThread(id), sourceId: current.sourceId };
1046
1261
  }
1262
+ /** Whether the current interactive thread still accepts agent-proposed titles. */
1263
+ canApplyAgentTitle(id) {
1264
+ id = this.resolveThreadId(id);
1265
+ const row = this.database.prepare(`
1266
+ SELECT title_manual, trigger_kind, archived_at FROM threads WHERE id = ?
1267
+ `).get(id);
1268
+ return row?.title_manual === 0 && row.trigger_kind === null && row.archived_at === null;
1269
+ }
1270
+ /** Apply one agent title without weakening the permanent manual-title lock. */
1271
+ applyAgentTitle(id, value) {
1272
+ id = this.resolveThreadId(id);
1273
+ const title = normalizeTitle(value);
1274
+ const now = this.now();
1275
+ let changed = false;
1276
+ this.transaction(() => {
1277
+ const result = this.database.prepare(`
1278
+ UPDATE threads
1279
+ SET title = ?, updated_at = ?, revision = revision + 1
1280
+ WHERE id = ? AND title_manual = 0 AND trigger_kind IS NULL
1281
+ AND archived_at IS NULL AND title <> ?
1282
+ `).run(title, now, id, title);
1283
+ if (result.changes !== 1)
1284
+ return;
1285
+ changed = true;
1286
+ this.recordThreadRevision(id, "title_changed", now);
1287
+ });
1288
+ return changed ? this.requireThread(id) : undefined;
1289
+ }
1047
1290
  async deleteArchivedThread(id) {
1048
1291
  id = this.resolveThreadId(id);
1049
1292
  const thread = this.requireThread(id);
@@ -2172,6 +2415,7 @@ export class WebStore {
2172
2415
  );
2173
2416
  CREATE INDEX IF NOT EXISTS push_deliveries_due
2174
2417
  ON push_deliveries(status, next_attempt_at, created_at);
2418
+ ${MESSAGE_SEARCH_SCHEMA_SQL}
2175
2419
  `);
2176
2420
  if (versionRow.user_version === 1) {
2177
2421
  const columns = this.database.prepare("PRAGMA table_info(threads)").all();
@@ -2188,6 +2432,12 @@ export class WebStore {
2188
2432
  this.database.exec("ALTER TABLE cron_overviews ADD COLUMN jobs_truncated INTEGER NOT NULL DEFAULT 0 CHECK (jobs_truncated IN (0, 1))");
2189
2433
  }
2190
2434
  }
2435
+ // The search index derives from parts_json, so an existing database has
2436
+ // to be swept once. Migration writes no message, so the triggers above
2437
+ // cannot have fired yet; the clear-then-insert is a no-op on a fresh
2438
+ // database and idempotent if the sweep is ever re-run.
2439
+ if (versionRow.user_version < 9)
2440
+ this.database.exec(MESSAGE_SEARCH_BACKFILL_SQL);
2191
2441
  if (migrating)
2192
2442
  this.database.exec(`PRAGMA user_version = ${WEB_STORAGE_SCHEMA_VERSION}; COMMIT`);
2193
2443
  }
@@ -2363,6 +2613,7 @@ export class WebStore {
2363
2613
  "push_subscriptions",
2364
2614
  "push_events",
2365
2615
  "push_deliveries",
2616
+ "message_search",
2366
2617
  ]);
2367
2618
  const tables = this.database.prepare("SELECT name FROM sqlite_master WHERE type = 'table'").all();
2368
2619
  for (const table of tables)
@@ -2380,6 +2631,16 @@ export class WebStore {
2380
2631
  }
2381
2632
  }
2382
2633
  }
2634
+ /**
2635
+ * Index the messages the streaming gate skipped and nothing settled — the
2636
+ * residue of a process that died mid-turn. Bounded to whatever is still
2637
+ * marked running, which is at most one message per interrupted thread.
2638
+ */
2639
+ reindexUnsettledMessages() {
2640
+ this.transaction(() => {
2641
+ this.database.exec(MESSAGE_SEARCH_UNSETTLED_SQL);
2642
+ });
2643
+ }
2383
2644
  recoverInterruptedTurns() {
2384
2645
  const active = this.listActiveTurnIds();
2385
2646
  for (const turnId of active) {
@@ -2822,7 +3083,7 @@ function isValidVapidKeyPair(publicKey, privateKey) {
2822
3083
  }
2823
3084
  function threadSelectSql(suffix) {
2824
3085
  return `
2825
- SELECT t.id, t.source_id, t.title, t.trigger_kind, t.archived_at, t.created_at, t.updated_at, t.revision,
3086
+ SELECT t.id, t.source_id, t.title, t.title_manual, t.trigger_kind, t.archived_at, t.created_at, t.updated_at, t.revision,
2826
3087
  cc.job_id AS cron_job_id, cc.configured AS cron_configured,
2827
3088
  CASE WHEN t.trigger_kind = 'cron' THEN 0
2828
3089
  WHEN a.status = 'online' OR a.status = 'degraded' THEN 1 ELSE 0 END AS can_send,
@@ -3266,6 +3527,7 @@ function applyEvent(parts, event) {
3266
3527
  if (event.type === "tool_call_completed") {
3267
3528
  const status = event.isError === true ? "failed" : "complete";
3268
3529
  const historyUpdate = canonicalEventHistoryUpdate(event.history);
3530
+ const executionMs = canonicalExecutionMs(event.executionMs);
3269
3531
  const subagent = subagentOf(event);
3270
3532
  if (subagent !== undefined) {
3271
3533
  const group = ensureSubagentPart(parts, subagent);
@@ -3273,7 +3535,7 @@ function applyEvent(parts, event) {
3273
3535
  replaceSubagentPart(parts, withEventHistoryUpdate({
3274
3536
  ...group,
3275
3537
  status,
3276
- ...(event.executionMs === undefined ? {} : { executionMs: event.executionMs }),
3538
+ ...(executionMs === undefined ? {} : { executionMs }),
3277
3539
  ...(subagent.costUsd === undefined ? {} : { costUsd: subagent.costUsd }),
3278
3540
  }, historyUpdate));
3279
3541
  return;
@@ -3284,6 +3546,7 @@ function applyEvent(parts, event) {
3284
3546
  ...(event.arguments === undefined ? {} : { args: event.arguments }),
3285
3547
  ...(event.content === undefined ? {} : { result: event.content }),
3286
3548
  ...(event.structuredContent === undefined ? {} : { structuredResult: event.structuredContent }),
3549
+ ...(executionMs === undefined ? {} : { executionMs }),
3287
3550
  status,
3288
3551
  }, historyUpdate);
3289
3552
  return;
@@ -3296,7 +3559,7 @@ function applyEvent(parts, event) {
3296
3559
  ...group,
3297
3560
  status,
3298
3561
  ...(event.content === undefined ? {} : { result: event.content }),
3299
- ...(event.executionMs === undefined ? {} : { executionMs: event.executionMs }),
3562
+ ...(executionMs === undefined ? {} : { executionMs }),
3300
3563
  }, historyUpdate));
3301
3564
  return;
3302
3565
  }
@@ -3311,6 +3574,7 @@ function applyEvent(parts, event) {
3311
3574
  // re-render an answered question after a reload, so keep the structured
3312
3575
  // payload beside the prose rather than reparsing the sentence.
3313
3576
  ...(event.structuredContent === undefined ? {} : { structuredResult: event.structuredContent }),
3577
+ ...(executionMs === undefined ? {} : { executionMs }),
3314
3578
  status,
3315
3579
  }, historyUpdate);
3316
3580
  return;
@@ -3350,6 +3614,16 @@ function existingToolName(parts, id) {
3350
3614
  const existing = parts.find((part) => part.type === "tool-call" && part.toolCallId === id);
3351
3615
  return existing?.type === "tool-call" ? existing.toolName : undefined;
3352
3616
  }
3617
+ /**
3618
+ * A duration is only worth persisting when it is a finite, non-negative number.
3619
+ * The stream wire validates `type` and nothing else, and providers derive this
3620
+ * from raw wall-clock subtraction, so a backward clock step or a provider that
3621
+ * reports `NaN` would otherwise be written verbatim and then rejected by the
3622
+ * read-back validator — permanently refusing to open the store.
3623
+ */
3624
+ function canonicalExecutionMs(value) {
3625
+ return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
3626
+ }
3353
3627
  function canonicalEventHistoryUpdate(value) {
3354
3628
  return value === undefined
3355
3629
  ? undefined
@@ -3974,6 +4248,12 @@ function isWebToolCall(value) {
3974
4248
  return typeof call.toolCallId === "string"
3975
4249
  && typeof call.toolName === "string"
3976
4250
  && isWebToolCallStatus(call.status)
4251
+ // Nullish is accepted, not just absent: `JSON.stringify` writes NaN and
4252
+ // Infinity as `null`, so a database written before durations were
4253
+ // canonicalized can hold one. `validateStorage()` re-parses every message at
4254
+ // open, so being strict here would refuse the whole store over a
4255
+ // display-only value the renderers already drop.
4256
+ && (call.executionMs == null || typeof call.executionMs === "number")
3977
4257
  && (call.history === undefined || isSessionToolHistoryMetadata(call.history));
3978
4258
  }
3979
4259
  const SESSION_TOOL_HISTORY_TERMINAL_STATES = new Set([
@@ -4112,7 +4392,7 @@ function isWebMessagePart(value) {
4112
4392
  return typeof part.toolCallId === "string"
4113
4393
  && typeof part.name === "string"
4114
4394
  && (part.label === undefined || typeof part.label === "string")
4115
- && (part.executionMs === undefined || typeof part.executionMs === "number")
4395
+ && (part.executionMs == null || typeof part.executionMs === "number")
4116
4396
  && (part.costUsd === undefined || typeof part.costUsd === "number")
4117
4397
  && (part.history === undefined || isSessionToolHistoryMetadata(part.history))
4118
4398
  && isWebToolCallStatus(part.status)