chat-recall 0.5.19 → 0.5.20

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 CHANGED
@@ -4,7 +4,7 @@
4
4
  [![npm](https://img.shields.io/npm/v/chat-recall?logo=npm&color=cb3837)](https://www.npmjs.com/package/chat-recall)
5
5
  [![npm downloads](https://img.shields.io/npm/dm/chat-recall?color=cb3837&label=downloads)](https://www.npmjs.com/package/chat-recall)
6
6
  [![MCP registry](https://img.shields.io/badge/MCP%20registry-io.github.munhq%2Fchat--recall-1f6feb)](https://registry.modelcontextprotocol.io/v0/servers?search=chat-recall)
7
- [![Smithery](https://img.shields.io/badge/Smithery-darkkraft%2Fchat--recall-7c3aed)](https://smithery.ai/server/darkkraft/chat-recall)
7
+ [![Smithery](https://img.shields.io/badge/Smithery-munhq%2Fchat--recall-7c3aed)](https://smithery.ai/server/munhq/chat-recall)
8
8
  [![Glama](https://img.shields.io/badge/Glama-munhq%2Fchat--recall-4f46e5)](https://glama.ai/mcp/servers/munhq/chat-recall)
9
9
 
10
10
  [![Install in Cursor](https://img.shields.io/badge/Install-Cursor-000?logo=cursor)](cursor://anysphere.cursor-deeplink/mcp/install?name=chat-recall&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIi1wIiwiY2hhdC1yZWNhbGwiLCJjaGF0LXJlY2FsbC1tY3AiXX0=)
package/dist/cli.js CHANGED
@@ -19727,7 +19727,7 @@ var init_http = __esm({
19727
19727
  CLI_VERSION = JSON.parse(readFileSync33(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
19728
19728
  } catch {
19729
19729
  try {
19730
- if (true) CLI_VERSION = "0.5.19";
19730
+ if (true) CLI_VERSION = "0.5.20";
19731
19731
  } catch {
19732
19732
  }
19733
19733
  }
@@ -20239,7 +20239,7 @@ var init_telemetry = __esm({
20239
20239
  init_sync_client();
20240
20240
  cliVersion2 = () => {
20241
20241
  try {
20242
- return true ? "0.5.19" : "dev";
20242
+ return true ? "0.5.20" : "dev";
20243
20243
  } catch {
20244
20244
  return "dev";
20245
20245
  }
@@ -22066,7 +22066,7 @@ var init_sync_client = __esm({
22066
22066
  ownVersion = JSON.parse(readFileSync37(join44(dir, "../package.json"), "utf-8")).version || ownVersion;
22067
22067
  } catch {
22068
22068
  try {
22069
- if (true) ownVersion = "0.5.19";
22069
+ if (true) ownVersion = "0.5.20";
22070
22070
  } catch {
22071
22071
  }
22072
22072
  }
@@ -25862,7 +25862,7 @@ var init_intent_drain = __esm({
25862
25862
  ownVersion2 = JSON.parse(readFileSync46(join55(dir, "../package.json"), "utf-8")).version || ownVersion2;
25863
25863
  } catch {
25864
25864
  try {
25865
- if (true) ownVersion2 = "0.5.19";
25865
+ if (true) ownVersion2 = "0.5.20";
25866
25866
  } catch {
25867
25867
  }
25868
25868
  }
package/dist/mcp.js CHANGED
@@ -20630,7 +20630,7 @@ var init_http = __esm({
20630
20630
  CLI_VERSION = JSON.parse(readFileSync37(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
20631
20631
  } catch {
20632
20632
  try {
20633
- if (true) CLI_VERSION = "0.5.19";
20633
+ if (true) CLI_VERSION = "0.5.20";
20634
20634
  } catch {
20635
20635
  }
20636
20636
  }
@@ -21142,7 +21142,7 @@ var init_telemetry = __esm({
21142
21142
  init_sync_client();
21143
21143
  cliVersion2 = () => {
21144
21144
  try {
21145
- return true ? "0.5.19" : "dev";
21145
+ return true ? "0.5.20" : "dev";
21146
21146
  } catch {
21147
21147
  return "dev";
21148
21148
  }
@@ -22802,7 +22802,7 @@ var init_sync_client = __esm({
22802
22802
  ownVersion = JSON.parse(readFileSync39(join49(dir, "../package.json"), "utf-8")).version || ownVersion;
22803
22803
  } catch {
22804
22804
  try {
22805
- if (true) ownVersion = "0.5.19";
22805
+ if (true) ownVersion = "0.5.20";
22806
22806
  } catch {
22807
22807
  }
22808
22808
  }
@@ -23549,7 +23549,7 @@ function isMultiTenant() {
23549
23549
 
23550
23550
  // ../engine/dist/mcp/tools.js
23551
23551
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
23552
- import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
23552
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ListPromptsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
23553
23553
  import { z } from "zod";
23554
23554
  import { existsSync as existsSync23, readFileSync as readFileSync18, statSync as statSync19 } from "fs";
23555
23555
  import { join as join26 } from "path";
@@ -24350,7 +24350,14 @@ function setServerVersion(version2) {
24350
24350
  serverVersion = version2;
24351
24351
  }
24352
24352
  function createMcpServer() {
24353
- const s = new Server({ name: "chat-recall", version: serverVersion }, { capabilities: { tools: {} } });
24353
+ const s = new Server(
24354
+ { name: "chat-recall", version: serverVersion },
24355
+ // resources and prompts are declared EMPTY rather than omitted: clients probe
24356
+ // them regardless of what is advertised, and an unregistered method answers
24357
+ // -32601, which every directory scan logs as a failure of a server that is
24358
+ // working correctly. See the handlers in attachHandlers.
24359
+ { capabilities: { tools: {}, resources: {}, prompts: {} } }
24360
+ );
24354
24361
  attachHandlers(s);
24355
24362
  return s;
24356
24363
  }
@@ -24474,6 +24481,8 @@ function annotate(t) {
24474
24481
  };
24475
24482
  }
24476
24483
  function attachHandlers(server) {
24484
+ server.setRequestHandler(ListResourcesRequestSchema, async () => ({ resources: [] }));
24485
+ server.setRequestHandler(ListPromptsRequestSchema, async () => ({ prompts: [] }));
24477
24486
  server.setRequestHandler(ListToolsRequestSchema, async () => {
24478
24487
  const all = [
24479
24488
  {
@@ -24789,7 +24798,7 @@ with recall_show (pass the plan id).`,
24789
24798
  description: "Filter by source types (default: all)"
24790
24799
  },
24791
24800
  project_filter: { type: "string", description: "Filter by project path" },
24792
- provider: { type: "string", enum: ["ollama", "gemini"], default: "ollama" },
24801
+ provider: { type: "string", enum: ["ollama", "gemini"], default: "ollama", description: "Embedding provider, when the server has vector search configured. Ignored on a keyword-only server." },
24793
24802
  scope: { type: "string", enum: ["local", "server"], default: "local", description: "server = synced cross-device history (needs chat-recall login)." },
24794
24803
  semantic: { type: "boolean", default: false, description: "Reserved and currently ignored: the semantic tier is switched off server-side, so every search runs keyword FTS." }
24795
24804
  },
@@ -24925,7 +24934,7 @@ lets the board verify the work actually shipped.`,
24925
24934
  type: "object",
24926
24935
  properties: {
24927
24936
  title: { type: "string", description: "Task title" },
24928
- description: { type: "string" },
24937
+ description: { type: "string", description: "What the work actually is. The title is the label; this is where the detail a future reader needs belongs." },
24929
24938
  project: { type: "string", description: "project_id this task belongs to" },
24930
24939
  assignee: { type: "string", description: "Teammate user id (sub) to assign" },
24931
24940
  due: { type: "number", description: "Due date, epoch milliseconds. Set one when the work is time-bound; omit otherwise." },
@@ -24951,7 +24960,7 @@ WORKFLOW \u2014 do this whenever the user asks you to work on a task from the bo
24951
24960
  id: { type: "string", description: "Task id (t_\u2026)" },
24952
24961
  status: { type: "string", enum: [...TASK_STATUS_SETTABLE], description: "Set the card's state. There is no 'rejected' here on purpose: rejecting is the user's verdict, not yours." },
24953
24962
  assignee: { type: "string", description: "Reassign to this user id (sub)" },
24954
- title: { type: "string" },
24963
+ title: { type: "string", description: "Rename the card. Omit to leave the title alone." },
24955
24964
  comment: { type: "string", description: "Add a comment" },
24956
24965
  linked_session_id: { type: "string", description: "Session id to attach \u2014 pass YOUR OWN current session id when you start working on this task, so the board can check whether the work shipped. Null detaches." }
24957
24966
  },
@@ -24985,7 +24994,7 @@ Use this to VERIFY facts before asserting them.`,
24985
24994
  properties: {
24986
24995
  entity: { type: "string", description: 'Entity to query (e.g., "Alice", "chat-recall")' },
24987
24996
  as_of: { type: "string", description: "Date filter (YYYY-MM-DD, optional)" },
24988
- direction: { type: "string", enum: ["outgoing", "incoming", "both"], default: "both" }
24997
+ direction: { type: "string", enum: ["outgoing", "incoming", "both"], default: "both", description: "Which edges to follow: facts where the entity is the subject (outgoing), the object (incoming), or both." }
24989
24998
  },
24990
24999
  required: ["entity"]
24991
25000
  }
@@ -25198,8 +25207,8 @@ I asking yesterday?" or "what did I tell the agent in this session?".`,
25198
25207
  type: "object",
25199
25208
  properties: {
25200
25209
  session_id: { type: "string", description: "If set, only that session's prompts" },
25201
- since_days: { type: "number", default: 7 },
25202
- limit: { type: "number", default: 50 }
25210
+ since_days: { type: "number", default: 7, description: "How far back to look, in days." },
25211
+ limit: { type: "number", default: 50, description: "Maximum prompts to return, newest first." }
25203
25212
  }
25204
25213
  }
25205
25214
  },
@@ -25214,9 +25223,9 @@ something non-obvious that future sessions should remember.`,
25214
25223
  subject: { type: "string", description: "What the decision is about" },
25215
25224
  decision: { type: "string", description: "The decision itself" },
25216
25225
  reason: { type: "string", description: "Why this was decided" },
25217
- importance: { type: "number", minimum: 1, maximum: 5, default: 4 },
25218
- session_id: { type: "string" },
25219
- agent_name: { type: "string", default: "agent" }
25226
+ importance: { type: "number", minimum: 1, maximum: 5, default: 4, description: "1-5. Only 4 and 5 surface in the wake-up bundle, so reserve those for decisions a future session must not miss." },
25227
+ session_id: { type: "string", description: "Session this decision came out of. Pass your own current session id so the decision can be traced back to the conversation that made it." },
25228
+ agent_name: { type: "string", default: "agent", description: "Which agent is recording this, so diary entries stay separable per agent." }
25220
25229
  },
25221
25230
  required: ["subject", "decision"]
25222
25231
  }
@@ -25245,9 +25254,9 @@ the start of a session to "remember who you are and what's true right now".`,
25245
25254
  inputSchema: {
25246
25255
  type: "object",
25247
25256
  properties: {
25248
- max_facts: { type: "number", default: 10 },
25249
- max_kg_facts: { type: "number", default: 15 },
25250
- identity: { type: "string" },
25257
+ max_facts: { type: "number", default: 10, description: "How many high-importance classifier facts to include." },
25258
+ max_kg_facts: { type: "number", default: 15, description: "How many current knowledge-graph facts to include." },
25259
+ identity: { type: "string", description: "Override the identity line at the top of the bundle. Defaults to ~/.chat-recall/identity.txt when present." },
25251
25260
  project_filter: { type: "string", description: "Scope facts, KG entities and the task count to a project (substring match). Without it, facts are global." },
25252
25261
  project: { type: "string", description: "Alias for project_filter \u2014 the name every sibling tool uses." }
25253
25262
  }
package/dist/watch.js CHANGED
@@ -19210,7 +19210,7 @@ var init_http = __esm({
19210
19210
  CLI_VERSION = JSON.parse(readFileSync33(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
19211
19211
  } catch {
19212
19212
  try {
19213
- if (true) CLI_VERSION = "0.5.19";
19213
+ if (true) CLI_VERSION = "0.5.20";
19214
19214
  } catch {
19215
19215
  }
19216
19216
  }
@@ -19718,7 +19718,7 @@ var init_telemetry = __esm({
19718
19718
  init_sync_client();
19719
19719
  cliVersion = () => {
19720
19720
  try {
19721
- return true ? "0.5.19" : "dev";
19721
+ return true ? "0.5.20" : "dev";
19722
19722
  } catch {
19723
19723
  return "dev";
19724
19724
  }
@@ -21414,7 +21414,7 @@ var init_sync_client = __esm({
21414
21414
  ownVersion = JSON.parse(readFileSync37(join44(dir, "../package.json"), "utf-8")).version || ownVersion;
21415
21415
  } catch {
21416
21416
  try {
21417
- if (true) ownVersion = "0.5.19";
21417
+ if (true) ownVersion = "0.5.20";
21418
21418
  } catch {
21419
21419
  }
21420
21420
  }
@@ -24207,7 +24207,7 @@ try {
24207
24207
  ownVersion2 = JSON.parse(readFileSync41(join49(dir, "../package.json"), "utf-8")).version || ownVersion2;
24208
24208
  } catch {
24209
24209
  try {
24210
- if (true) ownVersion2 = "0.5.19";
24210
+ if (true) ownVersion2 = "0.5.20";
24211
24211
  } catch {
24212
24212
  }
24213
24213
  }
@@ -24551,7 +24551,7 @@ async function runCollectorMigration(opts) {
24551
24551
  init_sync_ledger();
24552
24552
  init_collector_health();
24553
24553
  import { existsSync as existsSync50, readFileSync as readFileSync46 } from "fs";
24554
- var CLI_VERSION3 = true ? "0.5.19" : "0.0.0";
24554
+ var CLI_VERSION3 = true ? "0.5.20" : "0.0.0";
24555
24555
  var DEBOUNCE_MS = 5e3;
24556
24556
  var CLAUDE_DIR = claudeBackend.projectsDir();
24557
24557
  var PLANS_DIR = claudeBackend.plansDir();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chat-recall",
3
- "version": "0.5.19",
3
+ "version": "0.5.20",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/munhq/chat-recall.git"