imsg-mcp 1.16.0 → 1.18.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,20 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and follows [Semantic Versioning](https://semver.org/).
5
5
 
6
+ # [1.18.0](https://github.com/george43g/imsg-mcp/compare/v1.17.0...v1.18.0) (2026-07-25)
7
+
8
+
9
+ ### Features
10
+
11
+ * **tools:** uniform completeness metadata across list responses ([d8fd930](https://github.com/george43g/imsg-mcp/commit/d8fd930dfd28f28ac677ec4ffefd1addb39afbf5))
12
+
13
+ # [1.17.0](https://github.com/george43g/imsg-mcp/compare/v1.16.0...v1.17.0) (2026-07-25)
14
+
15
+
16
+ ### Features
17
+
18
+ * **get_messages:** signal global vs conversation scope; tighten identifier over-match ([784361b](https://github.com/george43g/imsg-mcp/commit/784361b3f351c8b214bcfa592f425f711dfcb0ed))
19
+
6
20
  # [1.16.0](https://github.com/george43g/imsg-mcp/compare/v1.15.1...v1.16.0) (2026-07-25)
7
21
 
8
22
 
package/dist/cli.js CHANGED
@@ -4,7 +4,7 @@ import { createInterface } from "node:readline";
4
4
  import { fileURLToPath, pathToFileURL } from "node:url";
5
5
  import { Command } from "commander";
6
6
  import { d as checkLocalAccess, f as formatAccessReport, I as IMPLEMENTED_TYPES, A as ANALYTIC_INFO, i as installShutdownHandlers, r as registerCleanup, l as looksLikeThreadSlug } from "./shutdown-0TCv4XJB.js";
7
- import { A as APP_VERSION, t as toYaml } from "./meta-DcLrk46N.js";
7
+ import { A as APP_VERSION, t as toYaml } from "./meta-CZmUZHTh.js";
8
8
  import { spawn } from "node:child_process";
9
9
  import { join, dirname } from "node:path";
10
10
  function distRoot() {
@@ -447,7 +447,7 @@ async function runExportCommand(target, opts) {
447
447
  const { homedir } = await import("node:os");
448
448
  const { dirname: dirname2, join: join2, isAbsolute, resolve } = await import("node:path");
449
449
  const { getContactsDbPaths, getImsgDbPath, getSlugsDbPath } = await import("./shutdown-0TCv4XJB.js").then((n) => n.a2);
450
- const { IMessageDB } = await import("./imessage-db-DXFIm7is.js").then((n) => n.i);
450
+ const { IMessageDB } = await import("./imessage-db-CHbdUXk3.js").then((n) => n.i);
451
451
  const { streamExport } = await import("./exportStream-BFxilSlL.js");
452
452
  const { parseUserDate } = await import("./date-parse-DJXMfq3a.js");
453
453
  const format = normalizeFormat(opts.format ?? "md");
@@ -719,7 +719,7 @@ program.command("interpret <rowId>").description("Interpret one attachment (tran
719
719
  return;
720
720
  }
721
721
  const { getContactsDbPaths, getImsgDbPath, getSlugsDbPath } = await import("./shutdown-0TCv4XJB.js").then((n) => n.a2);
722
- const { IMessageDB } = await import("./imessage-db-DXFIm7is.js").then((n) => n.i);
722
+ const { IMessageDB } = await import("./imessage-db-CHbdUXk3.js").then((n) => n.i);
723
723
  const { getInterpretRuntime, refForAttachment } = await import("./media-intel-runtime-BkxG4bmW.js").then((n) => n.c);
724
724
  const { deleteMediaIntel } = await import("./media-intel-cache-mCgH4z9P.js");
725
725
  const db = new IMessageDB(getImsgDbPath(), getContactsDbPaths(), getSlugsDbPath());
@@ -2351,9 +2351,17 @@ class IMessageDB {
2351
2351
  resolveChatsForConversation(identifier) {
2352
2352
  const chats = this.getAllChatsWithLastDate();
2353
2353
  const normalized = identifier.replace(/[\s\-()]/g, "").toLowerCase();
2354
- const directMatches = chats.filter(
2355
- (chat) => chat.chat_identifier === identifier || chat.guid === identifier || chat.chat_identifier != null && (chat.chat_identifier.replace(/[\s\-()]/g, "").toLowerCase().includes(normalized) || normalized.includes(chat.chat_identifier.replace(/[\s\-()]/g, "").toLowerCase()))
2354
+ const chatNorm = (chat) => (chat.chat_identifier ?? "").replace(/[\s\-()]/g, "").toLowerCase();
2355
+ const exactMatches = chats.filter(
2356
+ (chat) => chat.chat_identifier === identifier || chat.guid === identifier || chat.chat_identifier != null && chatNorm(chat) === normalized
2356
2357
  );
2358
+ const MIN_FUZZY_PHONE_LEN = 7;
2359
+ const directMatches = exactMatches.length > 0 ? exactMatches : normalized.includes("@") || normalized.length < MIN_FUZZY_PHONE_LEN ? [] : chats.filter((chat) => {
2360
+ if (chat.chat_identifier == null) return false;
2361
+ const cn = chatNorm(chat);
2362
+ if (cn.length < MIN_FUZZY_PHONE_LEN || cn.includes("@")) return false;
2363
+ return cn.endsWith(normalized) || normalized.endsWith(cn);
2364
+ });
2357
2365
  if (directMatches.length === 0) return [];
2358
2366
  const representative = this.pickMostRecentChat(directMatches);
2359
2367
  const isGroup = isGroupGuid(representative.guid) || isGroupChatIdentifier(representative.chat_identifier);
@@ -3296,4 +3304,4 @@ export {
3296
3304
  normalizedPhoneVariants as n,
3297
3305
  rankFuzzy as r
3298
3306
  };
3299
- //# sourceMappingURL=imessage-db-DXFIm7is.js.map
3307
+ //# sourceMappingURL=imessage-db-CHbdUXk3.js.map