chat-recall 0.7.23 → 0.7.24

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/dist/mcp.js CHANGED
@@ -6412,6 +6412,130 @@ var init_sqlite_reader = __esm({
6412
6412
  }
6413
6413
  });
6414
6414
 
6415
+ // ../engine/dist/core/backends/opencode-v2.js
6416
+ function hasTable(db, name) {
6417
+ return !!db.prepare("SELECT 1 FROM main.sqlite_master WHERE type = 'table' AND name = ?").get(name);
6418
+ }
6419
+ function columnsOf(db, table) {
6420
+ return new Set(db.prepare(`SELECT name FROM pragma_table_info('${table}', 'main')`).all().map((r) => r.name));
6421
+ }
6422
+ function installOpencodeV2Views(db) {
6423
+ if (!hasTable(db, "session_v2") || !hasTable(db, "session_message"))
6424
+ return false;
6425
+ const v2Cols = columnsOf(db, "session_v2");
6426
+ const sessionCols = SESSION_COLUMNS.map((c) => v2Cols.has(c) ? c : `NULL AS ${c}`).join(", ");
6427
+ const hasV1 = hasTable(db, "message") && hasTable(db, "part");
6428
+ const v1Messages = hasV1 ? `SELECT id, session_id, time_created, time_updated, data FROM main.message WHERE session_id NOT IN (${V2_SESSIONS}) UNION ALL ` : "";
6429
+ const v1Parts = hasV1 ? `SELECT id, message_id, session_id, time_created, time_updated, data FROM main.part WHERE session_id NOT IN (${V2_SESSIONS}) UNION ALL ` : "";
6430
+ db.exec(`
6431
+ CREATE TEMP VIEW IF NOT EXISTS session AS SELECT ${sessionCols} FROM main.session_v2;
6432
+
6433
+ CREATE TEMP VIEW IF NOT EXISTS message AS
6434
+ ${v1Messages}
6435
+ SELECT m.id, m.session_id, m.time_created, m.time_updated,
6436
+ CASE m.type
6437
+ WHEN 'user' THEN json_object('role', 'user', 'time', ${j("$.time")})
6438
+ ELSE json_object(
6439
+ 'role', 'assistant',
6440
+ 'agent', json_extract(m.data, '$.agent'),
6441
+ 'modelID', json_extract(m.data, '$.model.id'),
6442
+ 'providerID', json_extract(m.data, '$.model.providerID'),
6443
+ 'cost', coalesce(json_extract(m.data, '$.cost'), 0),
6444
+ 'tokens', ${j("$.tokens")},
6445
+ 'time', ${j("$.time")})
6446
+ END AS data
6447
+ FROM main.session_message m WHERE m.type IN ('user', 'assistant');
6448
+
6449
+ CREATE TEMP VIEW IF NOT EXISTS part AS
6450
+ ${v1Parts}
6451
+ SELECT m.id || ':text', m.id, m.session_id, m.time_created, m.time_updated,
6452
+ json_object('type', 'text', 'text', json_extract(m.data, '$.text'))
6453
+ FROM main.session_message m
6454
+ WHERE m.type = 'user' AND json_extract(m.data, '$.text') IS NOT NULL
6455
+ UNION ALL
6456
+ SELECT m.id || ':' || c.key, m.id, m.session_id, m.time_created + c.key, m.time_updated,
6457
+ CASE json_extract(c.value, '$.type')
6458
+ WHEN 'tool' THEN json_object(
6459
+ 'type', 'tool',
6460
+ 'tool', json_extract(c.value, '$.name'),
6461
+ 'callID', json_extract(c.value, '$.id'),
6462
+ 'state', json_object(
6463
+ 'status', json_extract(c.value, '$.state.status'),
6464
+ 'input', json(coalesce(json_extract(c.value, '$.state.input'), '{}')),
6465
+ 'output', (SELECT group_concat(json_extract(o.value, '$.text'), char(10))
6466
+ FROM json_each(c.value, '$.state.content') o
6467
+ WHERE json_extract(o.value, '$.type') = 'text')))
6468
+ ELSE json_object('type', json_extract(c.value, '$.type'), 'text', json_extract(c.value, '$.text'))
6469
+ END
6470
+ FROM main.session_message m, json_each(m.data, '$.content') c
6471
+ WHERE m.type = 'assistant'
6472
+ UNION ALL
6473
+ SELECT m.id || ':step', m.id, m.session_id,
6474
+ coalesce(json_extract(m.data, '$.time.completed'), m.time_created), m.time_updated,
6475
+ json_object('type', 'step-finish', 'cost', coalesce(json_extract(m.data, '$.cost'), 0), 'tokens', ${j("$.tokens")})
6476
+ FROM main.session_message m WHERE m.type = 'assistant';
6477
+ `);
6478
+ return true;
6479
+ }
6480
+ function openOpencodeDb(path2) {
6481
+ const db = openSqliteReadonly(path2);
6482
+ if (!db)
6483
+ return null;
6484
+ try {
6485
+ installOpencodeV2Views(db);
6486
+ } catch {
6487
+ }
6488
+ return db;
6489
+ }
6490
+ function openOpencodeDbOrThrow(path2) {
6491
+ const db = openSqliteReadonlyOrThrow(path2);
6492
+ try {
6493
+ installOpencodeV2Views(db);
6494
+ } catch {
6495
+ }
6496
+ return db;
6497
+ }
6498
+ var SESSION_COLUMNS, j, V2_SESSIONS;
6499
+ var init_opencode_v2 = __esm({
6500
+ "../engine/dist/core/backends/opencode-v2.js"() {
6501
+ "use strict";
6502
+ init_sqlite_reader();
6503
+ SESSION_COLUMNS = [
6504
+ "id",
6505
+ "project_id",
6506
+ "parent_id",
6507
+ "slug",
6508
+ "directory",
6509
+ "title",
6510
+ "version",
6511
+ "share_url",
6512
+ "summary_additions",
6513
+ "summary_deletions",
6514
+ "summary_files",
6515
+ "summary_diffs",
6516
+ "revert",
6517
+ "permission",
6518
+ "time_created",
6519
+ "time_updated",
6520
+ "time_compacting",
6521
+ "time_archived",
6522
+ "workspace_id",
6523
+ "path",
6524
+ "agent",
6525
+ "model",
6526
+ "cost",
6527
+ "tokens_input",
6528
+ "tokens_output",
6529
+ "tokens_reasoning",
6530
+ "tokens_cache_read",
6531
+ "tokens_cache_write",
6532
+ "metadata"
6533
+ ];
6534
+ j = (path2, fallback = "'{}'") => `json(coalesce(json_extract(m.data, '${path2}'), ${fallback}))`;
6535
+ V2_SESSIONS = "SELECT session_id FROM main.session_message";
6536
+ }
6537
+ });
6538
+
6415
6539
  // ../engine/dist/core/generic-engine.js
6416
6540
  import { basename as basename5 } from "path";
6417
6541
  import { createPatch } from "diff";
@@ -6709,13 +6833,13 @@ import { existsSync as existsSync7 } from "fs";
6709
6833
  import { homedir as homedir5 } from "os";
6710
6834
  import { dirname as dirname8, join as join9 } from "path";
6711
6835
  function openReadonly(path2) {
6712
- return openSqliteReadonly(path2);
6836
+ return openOpencodeDb(path2);
6713
6837
  }
6714
6838
  var PREFIX, OpencodeBackend, opencodeBackend;
6715
6839
  var init_opencode = __esm({
6716
6840
  "../engine/dist/core/backends/opencode.js"() {
6717
6841
  "use strict";
6718
- init_sqlite_reader();
6842
+ init_opencode_v2();
6719
6843
  init_tool_paths();
6720
6844
  init_session_outcome();
6721
6845
  init_session_git();
@@ -7006,9 +7130,9 @@ var init_opencode = __esm({
7006
7130
  return [];
7007
7131
  const parts = db.prepare(`
7008
7132
  SELECT p.id, p.message_id, p.time_created, p.data, m.data AS msg_data
7009
- FROM part p JOIN message m ON m.id = p.message_id
7133
+ FROM part p JOIN (SELECT id, data FROM message WHERE session_id = ?) m ON m.id = p.message_id
7010
7134
  WHERE p.session_id = ? ORDER BY p.time_created ASC
7011
- `).all(ocId);
7135
+ `).all(ocId, ocId);
7012
7136
  const events = [];
7013
7137
  let lineNum = 0;
7014
7138
  for (const p of parts) {
@@ -7224,17 +7348,17 @@ var init_opencode = __esm({
7224
7348
  if (!existsSync7(dbPath))
7225
7349
  return null;
7226
7350
  const realId = this.toRawId(id);
7227
- const db = openSqliteReadonlyOrThrow(dbPath);
7351
+ const db = openOpencodeDbOrThrow(dbPath);
7228
7352
  try {
7229
7353
  const session = db.prepare(`SELECT * FROM session WHERE id = ?`).get(realId);
7230
7354
  if (!session)
7231
7355
  return null;
7232
7356
  const rows = db.prepare(`
7233
7357
  SELECT m.id AS message_id, m.data AS message_data, p.id AS part_id, p.data AS part_data, p.time_created
7234
- FROM part p JOIN message m ON p.message_id = m.id
7358
+ FROM part p JOIN (SELECT id, data FROM message WHERE session_id = ?) m ON p.message_id = m.id
7235
7359
  WHERE p.session_id = ?
7236
7360
  ORDER BY p.time_created ASC, p.id ASC
7237
- `).all(realId);
7361
+ `).all(realId, realId);
7238
7362
  const lines = [JSON.stringify({ kind: "session", row: session })];
7239
7363
  for (const r of rows)
7240
7364
  lines.push(JSON.stringify({ kind: "part", row: r }));
@@ -13207,19 +13331,19 @@ function mapJsonStrings(line, fn, escapedOnly) {
13207
13331
  const q = line.indexOf('"', i);
13208
13332
  if (q < 0)
13209
13333
  return out + line.slice(i);
13210
- let j = q + 1;
13211
- while (j < line.length) {
13212
- const c = line.charCodeAt(j);
13334
+ let j2 = q + 1;
13335
+ while (j2 < line.length) {
13336
+ const c = line.charCodeAt(j2);
13213
13337
  if (c === 92)
13214
- j += 2;
13338
+ j2 += 2;
13215
13339
  else if (c === 34)
13216
13340
  break;
13217
13341
  else
13218
- j++;
13342
+ j2++;
13219
13343
  }
13220
- const token = line.slice(q, j + 1);
13344
+ const token = line.slice(q, j2 + 1);
13221
13345
  out += line.slice(i, q);
13222
- i = j + 1;
13346
+ i = j2 + 1;
13223
13347
  const body2 = token.slice(1, -1);
13224
13348
  const escaped = body2.includes("\\");
13225
13349
  if (escapedOnly && !escaped) {
@@ -13961,7 +14085,7 @@ async function parseOpenCodeSubagents(parentSessionId) {
13961
14085
  if (!existsSync52(dbPath))
13962
14086
  return [];
13963
14087
  const realParent = parentSessionId.replace("opencode_", "");
13964
- const db = openSqliteReadonlyOrThrow(dbPath);
14088
+ const db = openOpencodeDbOrThrow(dbPath);
13965
14089
  try {
13966
14090
  const children = db.prepare(`
13967
14091
  SELECT id, title, time_created
@@ -14005,16 +14129,16 @@ async function parseOpenCodeTranscript(sessionId) {
14005
14129
  if (!existsSync52(dbPath))
14006
14130
  return [];
14007
14131
  const realId = sessionId.replace("opencode_", "");
14008
- const db = openSqliteReadonlyOrThrow(dbPath);
14132
+ const db = openOpencodeDbOrThrow(dbPath);
14009
14133
  const messages = [];
14010
14134
  try {
14011
14135
  const parts = db.prepare(`
14012
14136
  SELECT p.data, p.time_created, m.data as msg_data
14013
14137
  FROM part p
14014
- JOIN message m ON p.message_id = m.id
14138
+ JOIN (SELECT id, data FROM message WHERE session_id = ?) m ON p.message_id = m.id
14015
14139
  WHERE p.session_id = ?
14016
14140
  ORDER BY p.time_created ASC
14017
- `).all(realId);
14141
+ `).all(realId, realId);
14018
14142
  let lineNum = 0;
14019
14143
  for (const part of parts) {
14020
14144
  try {
@@ -14045,7 +14169,7 @@ var log4;
14045
14169
  var init_opencode2 = __esm({
14046
14170
  "../engine/dist/transcript/opencode.js"() {
14047
14171
  "use strict";
14048
- init_sqlite_reader();
14172
+ init_opencode_v2();
14049
14173
  init_logger();
14050
14174
  log4 = createLogger("transcript-opencode");
14051
14175
  }
@@ -15229,19 +15353,19 @@ function runTrufflehog(binary, filePath, opts = {}) {
15229
15353
  if (!line.trim())
15230
15354
  continue;
15231
15355
  try {
15232
- const j = JSON.parse(line);
15233
- const raw = j.Raw || "";
15356
+ const j2 = JSON.parse(line);
15357
+ const raw = j2.Raw || "";
15234
15358
  if (looksLikeUuid(raw))
15235
15359
  continue;
15236
15360
  out.push({
15237
- rule: j.DetectorName || "unknown",
15238
- line: j.SourceMetadata?.Data?.Filesystem?.line || 0,
15361
+ rule: j2.DetectorName || "unknown",
15362
+ line: j2.SourceMetadata?.Data?.Filesystem?.line || 0,
15239
15363
  preview: mask(raw),
15240
15364
  // trufflehog reports `Verified: true` only when --verification
15241
15365
  // ran AND the call succeeded. With --only-verified set, every
15242
15366
  // returned finding is verified live by definition, so we tag
15243
15367
  // them all true; with --no-verification, leave undefined.
15244
- verified: opts.verifyOnly ? true : j.Verified === true ? true : void 0
15368
+ verified: opts.verifyOnly ? true : j2.Verified === true ? true : void 0
15245
15369
  });
15246
15370
  } catch {
15247
15371
  }
@@ -15294,16 +15418,16 @@ function runTrufflehogDir(binary, dir, opts = {}) {
15294
15418
  if (!line.trim())
15295
15419
  continue;
15296
15420
  try {
15297
- const j = JSON.parse(line);
15298
- const raw = j.Raw || "";
15421
+ const j2 = JSON.parse(line);
15422
+ const raw = j2.Raw || "";
15299
15423
  if (looksLikeUuid(raw))
15300
15424
  continue;
15301
15425
  out.push({
15302
- rule: j.DetectorName || "unknown",
15303
- line: j.SourceMetadata?.Data?.Filesystem?.line || 0,
15426
+ rule: j2.DetectorName || "unknown",
15427
+ line: j2.SourceMetadata?.Data?.Filesystem?.line || 0,
15304
15428
  preview: mask(raw),
15305
- verified: opts.verifyOnly ? true : j.Verified === true ? true : void 0,
15306
- file: j.SourceMetadata?.Data?.Filesystem?.file || ""
15429
+ verified: opts.verifyOnly ? true : j2.Verified === true ? true : void 0,
15430
+ file: j2.SourceMetadata?.Data?.Filesystem?.file || ""
15307
15431
  });
15308
15432
  } catch {
15309
15433
  }
@@ -16107,16 +16231,16 @@ async function collectCode(opts) {
16107
16231
  ...blastTargets.map((f, i) => call(2e3 + i, "plan_change", { file: f, format: "json" }))
16108
16232
  ]);
16109
16233
  blastTargets.forEach((f, i) => {
16110
- const j = parseJson(pc, 2e3 + i, null);
16111
- if (j && typeof j === "object" && typeof j.fan_in === "number") {
16234
+ const j2 = parseJson(pc, 2e3 + i, null);
16235
+ if (j2 && typeof j2 === "object" && typeof j2.fan_in === "number") {
16112
16236
  blast[f] = {
16113
- fileRole: j.file_role ?? "regular",
16114
- fanIn: j.fan_in ?? 0,
16115
- fanOut: j.fan_out ?? 0,
16116
- direct: j.direct ?? 0,
16117
- transitive: j.transitive ?? 0,
16118
- maxDepth: j.max_depth ?? 0,
16119
- directFiles: Array.isArray(j.direct_files) ? j.direct_files.map(rel).slice(0, 20) : void 0
16237
+ fileRole: j2.file_role ?? "regular",
16238
+ fanIn: j2.fan_in ?? 0,
16239
+ fanOut: j2.fan_out ?? 0,
16240
+ direct: j2.direct ?? 0,
16241
+ transitive: j2.transitive ?? 0,
16242
+ maxDepth: j2.max_depth ?? 0,
16243
+ directFiles: Array.isArray(j2.direct_files) ? j2.direct_files.map(rel).slice(0, 20) : void 0
16120
16244
  };
16121
16245
  }
16122
16246
  });
@@ -19081,7 +19205,7 @@ var MAX_CHUNK_CHARS8, OpenCodeSource;
19081
19205
  var init_opencode_source = __esm({
19082
19206
  "../engine/dist/parsers/opencode-source.js"() {
19083
19207
  "use strict";
19084
- init_sqlite_reader();
19208
+ init_opencode_v2();
19085
19209
  init_opencode();
19086
19210
  init_settings();
19087
19211
  MAX_CHUNK_CHARS8 = 2e3;
@@ -19098,7 +19222,7 @@ var init_opencode_source = __esm({
19098
19222
  return;
19099
19223
  let db;
19100
19224
  try {
19101
- db = openSqliteReadonlyOrThrow(this.dbPath);
19225
+ db = openOpencodeDbOrThrow(this.dbPath);
19102
19226
  } catch {
19103
19227
  return;
19104
19228
  }
@@ -19195,17 +19319,17 @@ var init_opencode_source = __esm({
19195
19319
  if (!existsSync34(this.dbPath))
19196
19320
  return [];
19197
19321
  const sessionId = item.id.replace("opencode_", "");
19198
- const db = openSqliteReadonlyOrThrow(this.dbPath);
19322
+ const db = openOpencodeDbOrThrow(this.dbPath);
19199
19323
  const chunks = [];
19200
19324
  try {
19201
19325
  const parts = db.prepare(`
19202
19326
  SELECT p.data, m.data as msg_data
19203
19327
  FROM part p
19204
- JOIN message m ON p.message_id = m.id
19328
+ JOIN (SELECT id, data FROM message WHERE session_id = ?) m ON p.message_id = m.id
19205
19329
  WHERE p.session_id = ?
19206
19330
  AND (p.data LIKE '%"type":"text"%' OR p.data LIKE '%"type":"reasoning"%')
19207
19331
  ORDER BY p.time_created ASC
19208
- `).all(sessionId);
19332
+ `).all(sessionId, sessionId);
19209
19333
  const userTexts = [];
19210
19334
  const assistantTexts = [];
19211
19335
  for (const part of parts) {
@@ -19269,7 +19393,7 @@ var OpenCodeTodoSource;
19269
19393
  var init_opencode_todo_source = __esm({
19270
19394
  "../engine/dist/parsers/opencode-todo-source.js"() {
19271
19395
  "use strict";
19272
- init_sqlite_reader();
19396
+ init_opencode_v2();
19273
19397
  init_opencode();
19274
19398
  init_settings();
19275
19399
  OpenCodeTodoSource = class {
@@ -19285,7 +19409,7 @@ var init_opencode_todo_source = __esm({
19285
19409
  return;
19286
19410
  let db;
19287
19411
  try {
19288
- db = openSqliteReadonlyOrThrow(this.dbPath);
19412
+ db = openOpencodeDbOrThrow(this.dbPath);
19289
19413
  } catch {
19290
19414
  return;
19291
19415
  }
@@ -19333,7 +19457,7 @@ var init_opencode_todo_source = __esm({
19333
19457
  if (!existsSync35(this.dbPath))
19334
19458
  return [];
19335
19459
  const sessionId = item.extra?.sessionId || item.id.replace(`${opencodeBackend.idPrefix}todo_`, "");
19336
- const db = openSqliteReadonlyOrThrow(this.dbPath);
19460
+ const db = openOpencodeDbOrThrow(this.dbPath);
19337
19461
  const chunks = [];
19338
19462
  try {
19339
19463
  const todos = db.prepare(`
@@ -21017,12 +21141,12 @@ var require_foldFlowLines = __commonJS({
21017
21141
  ch = text[i += 1];
21018
21142
  overflow = true;
21019
21143
  }
21020
- const j = i > escEnd + 1 ? i - 2 : escStart - 1;
21021
- if (escapedFolds[j])
21144
+ const j2 = i > escEnd + 1 ? i - 2 : escStart - 1;
21145
+ if (escapedFolds[j2])
21022
21146
  return text;
21023
- folds.push(j);
21024
- escapedFolds[j] = true;
21025
- end = j + endStep;
21147
+ folds.push(j2);
21148
+ escapedFolds[j2] = true;
21149
+ end = j2 + endStep;
21026
21150
  split = void 0;
21027
21151
  } else {
21028
21152
  overflow = true;
@@ -28852,7 +28976,7 @@ var init_http = __esm({
28852
28976
  CLI_VERSION = JSON.parse(readFileSync41(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
28853
28977
  } catch {
28854
28978
  try {
28855
- if (true) CLI_VERSION = "0.7.23";
28979
+ if (true) CLI_VERSION = "0.7.24";
28856
28980
  } catch {
28857
28981
  }
28858
28982
  }
@@ -29350,7 +29474,7 @@ var init_telemetry = __esm({
29350
29474
  init_sync_client();
29351
29475
  cliVersion2 = () => {
29352
29476
  try {
29353
- return true ? "0.7.23" : "dev";
29477
+ return true ? "0.7.24" : "dev";
29354
29478
  } catch {
29355
29479
  return "dev";
29356
29480
  }
@@ -31745,7 +31869,7 @@ var init_sync_client = __esm({
31745
31869
  ownVersion = JSON.parse(readFileSync44(join55(dir, "../package.json"), "utf-8")).version || ownVersion;
31746
31870
  } catch {
31747
31871
  try {
31748
- if (true) ownVersion = "0.7.23";
31872
+ if (true) ownVersion = "0.7.24";
31749
31873
  } catch {
31750
31874
  }
31751
31875
  }
@@ -32980,6 +33104,40 @@ function runHook(sessionId, event, cwd) {
32980
33104
  child.stdin.end(JSON.stringify({ session_id: sessionId, hook_event_name: event, cwd }));
32981
33105
  });
32982
33106
  }
33107
+
33108
+ /**
33109
+ * Wait for a message to an idle session. The hook long-polls the server and
33110
+ * prints the messages when one arrives; onText gets them. One waiter per
33111
+ * session; stopWaiter ends it when the session gets a prompt.
33112
+ */
33113
+ const waiters = new Map();
33114
+
33115
+ function startWaiter(sessionId, cwd, onText) {
33116
+ if (waiters.has(sessionId)) return;
33117
+ let out = "";
33118
+ let child;
33119
+ try {
33120
+ child = spawn(HOOK, ["--wait"], { stdio: ["pipe", "pipe", "ignore"] });
33121
+ } catch {
33122
+ return;
33123
+ }
33124
+ waiters.set(sessionId, child);
33125
+ child.stdout.on("data", (c) => { out += c; });
33126
+ child.on("error", () => { waiters.delete(sessionId); });
33127
+ child.on("close", () => {
33128
+ if (waiters.get(sessionId) === child) waiters.delete(sessionId);
33129
+ const text = out.trim();
33130
+ if (text) Promise.resolve().then(() => onText(text)).catch(() => {});
33131
+ });
33132
+ child.stdin.end(JSON.stringify({ session_id: sessionId, hook_event_name: "Stop", cwd }));
33133
+ }
33134
+
33135
+ function stopWaiter(sessionId) {
33136
+ const child = waiters.get(sessionId);
33137
+ if (!child) return;
33138
+ waiters.delete(sessionId);
33139
+ try { child.kill(); } catch { /* gone */ }
33140
+ }
32983
33141
  `;
32984
33142
  }
32985
33143
  function opencodeMessagesSource(wrapperPath) {
@@ -33005,6 +33163,7 @@ async function setup(ctx) {
33005
33163
  await ctx.session.hook("prompt", async (event) => {
33006
33164
  const id = event?.sessionID;
33007
33165
  if (!id || !event.prompt || (await isChild(id))) return;
33166
+ stopWaiter("opencode_" + id);
33008
33167
  const parts = [];
33009
33168
  if (!started.has(id)) {
33010
33169
  started.add(id);
@@ -33020,15 +33179,23 @@ async function setup(ctx) {
33020
33179
  for await (const ev of ctx.event.subscribe({ signal: controller.signal })) {
33021
33180
  const id = ev?.data?.sessionID ?? ev?.properties?.sessionID;
33022
33181
  if (!id || !started.has(id)) continue;
33023
- if (RUN_END.has(ev.type)) await runHook("opencode_" + id, "Stop", dir);
33024
- else if (ev.type === "session.deleted") {
33182
+ if (RUN_END.has(ev.type)) {
33183
+ await runHook("opencode_" + id, "Stop", dir);
33184
+ // An idle session acts on a message from another session by itself:
33185
+ // the text becomes its next prompt.
33186
+ startWaiter("opencode_" + id, dir, (text) => ctx.session.prompt({ sessionID: id, text }));
33187
+ } else if (ev.type === "session.deleted") {
33025
33188
  started.delete(id);
33189
+ stopWaiter("opencode_" + id);
33026
33190
  await runHook("opencode_" + id, "SessionEnd", dir);
33027
33191
  }
33028
33192
  }
33029
33193
  } catch { /* the subscription ends with the plugin */ }
33030
33194
  })();
33031
- return () => controller.abort();
33195
+ return () => {
33196
+ controller.abort();
33197
+ for (const id of [...waiters.keys()]) stopWaiter(id);
33198
+ };
33032
33199
  }
33033
33200
 
33034
33201
  const pending = new Map();
@@ -33087,6 +33254,7 @@ export default function (pi) {
33087
33254
  pending = await runHook(idOf(ctx), "SessionStart", cwdOf(ctx));
33088
33255
  });
33089
33256
  pi.on("before_agent_start", async (event, ctx) => {
33257
+ stopWaiter(idOf(ctx));
33090
33258
  if (event.messageType !== "user") return;
33091
33259
  const now = await runHook(idOf(ctx), "UserPromptSubmit", cwdOf(ctx));
33092
33260
  const text = [pending, now].filter(Boolean).join("\\n\\n");
@@ -33096,8 +33264,11 @@ export default function (pi) {
33096
33264
  });
33097
33265
  pi.on("agent_end", async (_event, ctx) => {
33098
33266
  await runHook(idOf(ctx), "Stop", cwdOf(ctx));
33267
+ // An idle session acts on a message from another session by itself.
33268
+ startWaiter(idOf(ctx), cwdOf(ctx), (text) => pi.sendUserMessage(text));
33099
33269
  });
33100
33270
  pi.on("session_shutdown", async (_event, ctx) => {
33271
+ stopWaiter(idOf(ctx));
33101
33272
  await runHook(idOf(ctx), "SessionEnd", cwdOf(ctx));
33102
33273
  });
33103
33274
  }
@@ -36081,7 +36252,11 @@ line to pass as \`expand_line\` to get it whole.`,
36081
36252
  Shows your most recent conversations across all projects or filtered by project.
36082
36253
  Use this when the user says "continue our last conversation" or wants to see recent work.
36083
36254
 
36084
- Pass \`since_hours: N\` to restrict to sessions modified in the last N hours.`,
36255
+ Pass \`since_hours: N\` to restrict to sessions modified in the last N hours.
36256
+
36257
+ It lists synced transcripts, which reach the server some time after they change. To find a
36258
+ session that runs NOW, or to send one a message, use recall_session_status: it lists the live
36259
+ sessions of every AI tool, with their ids and names.`,
36085
36260
  inputSchema: {
36086
36261
  type: "object",
36087
36262
  properties: {
@@ -40164,7 +40339,7 @@ function installCrashGuards() {
40164
40339
  reportClientEvent2("mcp_crash", { message: err.stack || err.message });
40165
40340
  });
40166
40341
  }
40167
- var RELAY_VERSION = true ? "0.7.23" : "0.0.0";
40342
+ var RELAY_VERSION = true ? "0.7.24" : "0.0.0";
40168
40343
  function daemonIdleSecs() {
40169
40344
  const raw = process.env.CHAT_RECALL_DAEMON_IDLE_SECS;
40170
40345
  if (raw === void 0) return 900;
@@ -65,7 +65,7 @@ try {
65
65
  CLI_VERSION = JSON.parse(readFileSync2(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
66
66
  } catch {
67
67
  try {
68
- if (true) CLI_VERSION = "0.7.23";
68
+ if (true) CLI_VERSION = "0.7.24";
69
69
  } catch {
70
70
  }
71
71
  }
@@ -409,7 +409,8 @@ function releaseWaiter(sessionId) {
409
409
  } catch {
410
410
  }
411
411
  }
412
- async function wait(payload, target) {
412
+ var PLUGIN_WAITERS = /* @__PURE__ */ new Set(["opencode", "pi"]);
413
+ async function wait(payload, target, tool = "claude") {
413
414
  const sessionId = sessionIdOf(payload);
414
415
  if (!sessionId) {
415
416
  debug("waiter: no session id");
@@ -458,9 +459,15 @@ async function wait(payload, target) {
458
459
  }
459
460
  const messages = r.body.messages ?? [];
460
461
  if (!messages.length) continue;
461
- await writeOut(process.stderr, renderWake(sessionId, messages, Date.now(), new Map(Object.entries(r.body.labels ?? {}))) + "\n");
462
+ const text = renderWake(sessionId, messages, Date.now(), new Map(Object.entries(r.body.labels ?? {}))) + "\n";
463
+ if (tool === "claude") {
464
+ await writeOut(process.stderr, text);
465
+ await ack(target, sessionId, messages);
466
+ return 2;
467
+ }
468
+ await writeOut(process.stdout, text);
462
469
  await ack(target, sessionId, messages);
463
- return 2;
470
+ return 0;
464
471
  }
465
472
  } finally {
466
473
  releaseWaiter(sessionId);
@@ -495,7 +502,9 @@ async function main() {
495
502
  debug("no login: run `chat-recall login`");
496
503
  return 0;
497
504
  }
498
- if (process.argv.includes("--wait")) return toolArg === "claude" ? wait(payload, target) : 0;
505
+ if (process.argv.includes("--wait")) {
506
+ return toolArg === "claude" || PLUGIN_WAITERS.has(toolArg) ? wait(payload, target, toolArg) : 0;
507
+ }
499
508
  await turn(payload, target, toolArg);
500
509
  return 0;
501
510
  }
@@ -1 +1 @@
1
- {"version":3,"file":"message-hook.js","sourceRoot":"","sources":["../src/message-hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-hook.js","sourceRoot":"","sources":["../src/message-hook.ts"],"names":[],"mappings":"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"}