bikky 0.3.2 → 0.3.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 (50) hide show
  1. package/README.md +68 -32
  2. package/dist/daemon/episode-summary.d.ts +1 -6
  3. package/dist/daemon/episode-summary.d.ts.map +1 -1
  4. package/dist/daemon/episode-summary.js +5 -36
  5. package/dist/daemon/episode-summary.js.map +1 -1
  6. package/dist/daemon/workstream-summary.d.ts +1 -8
  7. package/dist/daemon/workstream-summary.d.ts.map +1 -1
  8. package/dist/daemon/workstream-summary.js +4 -37
  9. package/dist/daemon/workstream-summary.js.map +1 -1
  10. package/dist/mcp/index.d.ts.map +1 -1
  11. package/dist/mcp/index.js +8 -1
  12. package/dist/mcp/index.js.map +1 -1
  13. package/dist/mcp/taxonomy.d.ts +14 -0
  14. package/dist/mcp/taxonomy.d.ts.map +1 -1
  15. package/dist/mcp/taxonomy.js +70 -0
  16. package/dist/mcp/taxonomy.js.map +1 -1
  17. package/dist/mcp/tools.d.ts.map +1 -1
  18. package/dist/mcp/tools.js +120 -91
  19. package/dist/mcp/tools.js.map +1 -1
  20. package/dist/prompts/distill.d.ts.map +1 -1
  21. package/dist/prompts/distill.js +35 -17
  22. package/dist/prompts/distill.js.map +1 -1
  23. package/dist/prompts/episode-summary.d.ts +15 -0
  24. package/dist/prompts/episode-summary.d.ts.map +1 -0
  25. package/dist/prompts/episode-summary.js +60 -0
  26. package/dist/prompts/episode-summary.js.map +1 -0
  27. package/dist/prompts/extraction.d.ts.map +1 -1
  28. package/dist/prompts/extraction.js +29 -6
  29. package/dist/prompts/extraction.js.map +1 -1
  30. package/dist/prompts/index.d.ts +2 -0
  31. package/dist/prompts/index.d.ts.map +1 -1
  32. package/dist/prompts/index.js +2 -0
  33. package/dist/prompts/index.js.map +1 -1
  34. package/dist/prompts/prompts.test.js +1 -1
  35. package/dist/prompts/prompts.test.js.map +1 -1
  36. package/dist/prompts/workstream-summary.d.ts +17 -0
  37. package/dist/prompts/workstream-summary.d.ts.map +1 -0
  38. package/dist/prompts/workstream-summary.js +72 -0
  39. package/dist/prompts/workstream-summary.js.map +1 -0
  40. package/dist/render.d.ts.map +1 -1
  41. package/dist/render.js +13 -1
  42. package/dist/render.js.map +1 -1
  43. package/dist/render.test.js +36 -5
  44. package/dist/render.test.js.map +1 -1
  45. package/docs/diagrams/architecture.svg +87 -0
  46. package/docs/diagrams/team-memory.svg +250 -0
  47. package/docs/screenshots/dashboard.png +0 -0
  48. package/docs/screenshots/graph.png +0 -0
  49. package/docs/screenshots/memory.png +0 -0
  50. package/package.json +4 -2
@@ -573,6 +573,76 @@ export function categoryPromptSection(category) {
573
573
  export function allCategoryPromptSections() {
574
574
  return Object.keys(CATEGORIES).map(categoryPromptSection).join("\n\n");
575
575
  }
576
+ // ---------------------------------------------------------------------------
577
+ // MCP enum descriptions — single source of truth shared with src/mcp/tools.ts
578
+ // ---------------------------------------------------------------------------
579
+ //
580
+ // These render the canonical CATEGORIES / DOMAINS / KINDS / MEMORY_SUBTYPES /
581
+ // SOURCES tables into the multiline strings agents see when they inspect a
582
+ // tool schema. Keeping them here means tool descriptions never drift from
583
+ // the ontology definitions above.
584
+ function shortenDescription(text) {
585
+ // Collapse any whitespace and clip to the first sentence so per-value
586
+ // blurbs stay readable inside a tool schema description.
587
+ const collapsed = text.replace(/\s+/g, " ").trim();
588
+ const firstPeriod = collapsed.indexOf(". ");
589
+ if (firstPeriod > 0)
590
+ return collapsed.slice(0, firstPeriod + 1);
591
+ return collapsed;
592
+ }
593
+ /** Render the `category` enum description for memory_store / memory_recall. */
594
+ export function categoryEnumDescription() {
595
+ const lines = Object.entries(CATEGORIES).map(([name, def]) => ` • ${name} — ${shortenDescription(def.description)}`);
596
+ return [
597
+ "Subject matter of the fact. One of:",
598
+ ...lines,
599
+ `Default when omitted: ${DEFAULT_CATEGORY}.`,
600
+ ].join("\n");
601
+ }
602
+ /** Render the `domain` enum description. */
603
+ export function domainEnumDescription() {
604
+ const lines = Object.entries(DOMAINS).map(([name, def]) => ` • ${name} — ${shortenDescription(def.description)}`);
605
+ return [
606
+ "Activity profile that controls vocabulary and ranking. One of:",
607
+ ...lines,
608
+ `Default when omitted: ${DEFAULT_DOMAIN}.`,
609
+ ].join("\n");
610
+ }
611
+ /** Render the `kind` enum description. Telemetry is daemon-only — excluded. */
612
+ export function kindEnumDescription() {
613
+ const lines = Object.entries(KINDS)
614
+ .filter(([name]) => name !== "telemetry")
615
+ .map(([name, def]) => ` • ${name} — ${shortenDescription(def.description)}`);
616
+ return [
617
+ "Knowledge form of the memory object. One of:",
618
+ ...lines,
619
+ `Default when omitted: ${DEFAULT_KIND}. (telemetry is reserved for the daemon.)`,
620
+ ].join("\n");
621
+ }
622
+ /**
623
+ * Render the `memory_subtype` enum description, grouped by kind so the agent
624
+ * knows which subtypes pair with which kind (the runtime enforces this via
625
+ * validateMemorySubtype).
626
+ */
627
+ export function memorySubtypeEnumDescription() {
628
+ const groups = Object.entries(MEMORY_SUBTYPES)
629
+ .filter(([, subtypes]) => subtypes.length > 0)
630
+ .map(([kind, subtypes]) => ` • kind=${kind}: ${subtypes.join(", ")}`);
631
+ return [
632
+ "Optional finer-grained type within the kind. Only set when one of these clearly applies — otherwise leave blank.",
633
+ "Subtype must match the kind (validated server-side):",
634
+ ...groups,
635
+ ].join("\n");
636
+ }
637
+ /** Render the `source` enum description for memory_store. */
638
+ export function sourceEnumDescription() {
639
+ const lines = Object.entries(SOURCES).map(([name, def]) => ` • ${name} — ${shortenDescription(def.description)}`);
640
+ return [
641
+ "Who created this memory. One of:",
642
+ ...lines,
643
+ `Default when omitted: ${DEFAULT_SOURCE}. Only override when the human explicitly asked you to remember this (use 'user').`,
644
+ ].join("\n");
645
+ }
576
646
  export function memorySubtypeValues() {
577
647
  return Object.values(MEMORY_SUBTYPES).flat();
578
648
  }
@@ -1 +1 @@
1
- {"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../../src/mcp/taxonomy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../../src/mcp/taxonomy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqPzE,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAi9BlD"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0PzE,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CA4iClD"}
package/dist/mcp/tools.js CHANGED
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import crypto from "node:crypto";
5
5
  import { z } from "zod";
6
- import { STALENESS_DAYS, THRESHOLD_DUPLICATE, THRESHOLD_RELATED, QDRANT_INDEXES, categoryValues, domainValues, kindValues, memorySubtypeValues, sourceValues, DEFAULT_CATEGORY, DEFAULT_DOMAIN, DEFAULT_KIND, DEFAULT_SOURCE, categoryForMemorySubtype, layerForMemorySubtype, normalizeCategory, normalizeDomain, normalizeKind, validateMemorySubtype, } from "./taxonomy.js";
6
+ import { STALENESS_DAYS, THRESHOLD_DUPLICATE, THRESHOLD_RELATED, QDRANT_INDEXES, categoryValues, categoryEnumDescription, domainValues, domainEnumDescription, kindValues, kindEnumDescription, memorySubtypeValues, memorySubtypeEnumDescription, sourceValues, sourceEnumDescription, DEFAULT_CATEGORY, DEFAULT_DOMAIN, DEFAULT_KIND, DEFAULT_SOURCE, categoryForMemorySubtype, layerForMemorySubtype, normalizeCategory, normalizeDomain, normalizeKind, validateMemorySubtype, } from "./taxonomy.js";
7
7
  import { contentHash, daysSince, lastActivityDate, computeCombinedScore, buildFilter, formatFact, MEMORY_RECALL_EXCLUDED_KINDS, } from "./helpers.js";
8
8
  import { ready, qdrantUrl, qdrantApiKey, setupError, setQdrantUrl, setQdrantApiKey, setReady, getCollection, log, embed, getEmbeddingConfig, qdrantReq, ensureCollection, qdrantUpsert, qdrantSearch, qdrantScroll, qdrantSetPayload, qdrantGetPoints, } from "./api.js";
9
9
  import { saveConfig, loadConfig } from "../config.js";
@@ -166,7 +166,11 @@ async function graphTraversal(primaryResults, limit, scope) {
166
166
  // ---------------------------------------------------------------------------
167
167
  export function registerTools(mcp) {
168
168
  // ── get_setup_status ────────────────────────────────────────────────────
169
- mcp.tool("get_setup_status", "Check memory system status. Returns which credentials are configured and whether Qdrant and embeddings are reachable.", {}, async () => {
169
+ mcp.tool("get_setup_status", [
170
+ "Check whether the memory system is configured and reachable.",
171
+ "Use this when memory tools return a 'setup_required' error, or once at session start if you're not sure bikky is wired up. Reports which credentials are missing and includes onboarding instructions if anything is incomplete.",
172
+ "Read-only — safe to call any time.",
173
+ ].join(" "), {}, async () => {
170
174
  const status = {
171
175
  ready,
172
176
  qdrant_url: !!qdrantUrl,
@@ -206,7 +210,10 @@ export function registerTools(mcp) {
206
210
  return { content: [{ type: "text", text: JSON.stringify(status, null, 2) }] };
207
211
  });
208
212
  // ── configure_credentials ───────────────────────────────────────────────
209
- mcp.tool("configure_credentials", "Store Qdrant + embedding credentials in ~/.bikky/config.json. Tests connectivity and creates the collection if needed.", {
213
+ mcp.tool("configure_credentials", [
214
+ "Persist Qdrant and embedding credentials to ~/.bikky/config.json and bring the memory system online.",
215
+ "Call this only during onboarding (or when rotating credentials). After it succeeds, the collection is created if missing and embeddings are tested. For day-to-day use, prefer get_setup_status.",
216
+ ].join(" "), {
210
217
  qdrant_url: z.string().optional().describe("Qdrant REST URL — Qdrant Cloud (https://xxx.cloud.qdrant.io:6333), local Docker (http://localhost:6333), or self-hosted"),
211
218
  qdrant_api_key: z.string().optional().describe("Qdrant API key — required for Qdrant Cloud; optional / leave blank for unauthenticated local or self-hosted instances"),
212
219
  openai_api_key: z.string().optional().describe("OpenAI API key (for OpenAI embedding/LLM provider)"),
@@ -252,7 +259,11 @@ export function registerTools(mcp) {
252
259
  return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
253
260
  });
254
261
  // ── verify_connection ───────────────────────────────────────────────────
255
- mcp.tool("verify_connection", "Test that Qdrant is reachable, embeddings work, and the collection exists.", {}, async () => {
262
+ mcp.tool("verify_connection", [
263
+ "Confirm Qdrant is reachable, embeddings work, and the collection exists.",
264
+ "Use this to debug a sudden 'setup_required' or empty-recall after a network blip or credential change. Lighter than configure_credentials — does not write to disk.",
265
+ "Read-only.",
266
+ ].join(" "), {}, async () => {
256
267
  const results = { qdrant: false, embedding: false, collection: false };
257
268
  if (qdrantUrl) {
258
269
  try {
@@ -281,39 +292,36 @@ export function registerTools(mcp) {
281
292
  return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
282
293
  });
283
294
  // ── memory_store ────────────────────────────────────────────────────────
284
- mcp.tool("memory_store", "Store a new fact in memory. Automatically deduplicates via content hash and vector similarity. " +
285
- "Returns the action taken (inserted/reinforced/duplicate) and any similar facts found.", {
286
- content: z.string().describe("The fact to store (atomic, single piece of knowledge)"),
287
- category: z.enum(categoryValues())
288
- .describe("Subject matter: codebase, infrastructure, operations, decisions, product_domain, projects, people, preferences, observations"),
289
- entities: z.array(z.string()).describe("Related entities (lowercase, e.g. ['qdrant', 'platform'])"),
290
- domain: z.enum(domainValues()).default(DEFAULT_DOMAIN)
291
- .describe("Activity profile e.g. software_engineering, product_strategy, business_operations, research, personal_productivity"),
292
- kind: z.enum(kindValues()).default(DEFAULT_KIND)
293
- .describe("Knowledge form fact, summary, distilled, relation"),
294
- memory_subtype: z.enum(memorySubtypeValues()).optional()
295
- .describe("Optional subtype within kind, such as codebase_map, episode, workstream, convention, or recall_event"),
296
- workspace_id: z.string().optional()
297
- .describe("Optional workspace namespace for team memory."),
298
- episode_id: z.string().optional().describe("Optional coherent episode identifier"),
299
- workstream_key: z.string().optional().describe("Optional durable workstream key"),
300
- task_key: z.string().optional().describe("Optional task or issue key"),
301
- repo: z.string().optional().describe("Optional repository or project surface"),
302
- branch: z.string().optional().describe("Optional branch or working surface"),
303
- review_status: z.enum(["candidate", "reviewed", "approved", "rejected"]).optional()
304
- .describe("Optional review lifecycle status"),
305
- source: z.enum(sourceValues()).default(DEFAULT_SOURCE)
306
- .describe("Creator agent, daemon, system, user"),
307
- confidence: z.number().min(0).max(1).default(0.9).describe("How certain (0.0-1.0)"),
308
- importance: z.number().min(0).max(1).optional().describe("How important (0.0-1.0). Omit to default to 0.5."),
309
- supersedes: z.string().optional().describe("ID of a fact this one replaces"),
295
+ mcp.tool("memory_store", [
296
+ "Persist one atomic fact to long-term memory.",
297
+ "Call this whenever you learn something a future session would need: a service detail, a decision rationale, a workaround, a user preference, an ownership fact, a task-resume pointer. One fact per call split compound observations into separate calls.",
298
+ "Dedup is automatic (content hash + vector similarity), so you do NOT need to recall first. The tool returns one of: inserted (new fact), reinforced (exact or near-duplicate found — counters bumped), or — if there are similar-but-different facts — a list of potential conflicts so you can decide whether to use 'supersedes'.",
299
+ "To create a typed edge between two entities at the same time, set the optional 'relation' field — no separate tool call needed.",
300
+ "Do NOT use for ephemeral state (current cursor, in-flight todo). Use the harness task folder instead.",
301
+ ].join(" "), {
302
+ content: z.string().describe("The fact to store. Should be one atomic, self-contained statement (no compound 'A and B') that makes sense out of context."),
303
+ category: z.enum(categoryValues()).describe(categoryEnumDescription()),
304
+ entities: z.array(z.string()).describe("Lowercase entity names mentioned by this fact (e.g. ['qdrant', 'workspace_id']). Used for entity-scoped recall and graph traversal — keep them short and canonical."),
305
+ domain: z.enum(domainValues()).default(DEFAULT_DOMAIN).describe(domainEnumDescription()),
306
+ kind: z.enum(kindValues()).default(DEFAULT_KIND).describe(kindEnumDescription()),
307
+ memory_subtype: z.enum(memorySubtypeValues()).optional().describe(memorySubtypeEnumDescription()),
308
+ workspace_id: z.string().optional().describe("Workspace namespace for team-shared memory. Omit to use the default workspace from config."),
309
+ episode_id: z.string().optional().describe("Coherent activity-segment ID. Group facts captured during the same coherent task or transcript."),
310
+ workstream_key: z.string().optional().describe("Durable continuity key for a long-running objective (survives across sessions)."),
311
+ task_key: z.string().optional().describe("Task or issue key (e.g. GitHub issue number, JIRA key)."),
312
+ repo: z.string().optional().describe("Repository or project surface this fact relates to (e.g. 'bikky-dev/bikky')."),
313
+ branch: z.string().optional().describe("Branch or working surface (e.g. 'main', 'feat/x')."),
314
+ review_status: z.enum(["candidate", "reviewed", "approved", "rejected"]).optional().describe("Review lifecycle status. candidate=auto-extracted (daemon), reviewed=human-checked, approved=human-confirmed, rejected=incorrect. Agents normally leave this unset."),
315
+ source: z.enum(sourceValues()).default(DEFAULT_SOURCE).describe(sourceEnumDescription()),
316
+ confidence: z.number().min(0).max(1).default(0.9).describe("How certain you are this fact is correct (0.0-1.0). Default 0.9. Lower (~0.6) for inferred or unverified facts."),
317
+ importance: z.number().min(0).max(1).optional().describe("How important this fact is for future recall (0.0-1.0). Defaults to 0.5 if omitted. ≥0.8 surfaces in session briefings."),
318
+ supersedes: z.string().optional().describe("ID of an existing fact that this one replaces. The old fact is marked superseded and excluded from recall. Use this when a fact is updated; use memory_forget when a fact was simply wrong."),
310
319
  relation: z.object({
311
- from: z.string().describe("Source entity"),
312
- type: z.string().describe("Relation type (owns, uses, decided, prefers, works-on, etc.)"),
313
- to: z.string().describe("Target entity"),
314
- }).optional().describe("Optional typed relation between two entities"),
315
- metadata: z.record(z.string(), z.string()).optional()
316
- .describe("Optional key-value metadata. Stored with the fact and filterable via memory_recall."),
320
+ from: z.string().describe("Source entity (lowercase)."),
321
+ type: z.string().describe("Relation type (e.g. 'owns', 'uses', 'decided', 'prefers', 'works-on')."),
322
+ to: z.string().describe("Target entity (lowercase)."),
323
+ }).optional().describe("Optional typed edge between two entities — created in the same call. Use this whenever the fact also expresses a relationship; no separate tool call needed."),
324
+ metadata: z.record(z.string(), z.string()).optional().describe("Arbitrary key-value metadata. Stored with the fact and exact-match filterable via memory_recall.metadata_filter (all key/value pairs must match — AND logic)."),
317
325
  }, async ({ content, category, entities, domain, kind, memory_subtype, workspace_id, episode_id, workstream_key, task_key, repo, branch, review_status, source, confidence, importance, supersedes, relation, metadata, }) => {
318
326
  const guard = requireReady();
319
327
  if (guard)
@@ -556,29 +564,34 @@ export function registerTools(mcp) {
556
564
  return { content: [{ type: "text", text: JSON.stringify(result) }] };
557
565
  });
558
566
  // ── memory_recall ───────────────────────────────────────────────────────
559
- mcp.tool("memory_recall", "Semantic search over memory. Returns facts ranked by relevance. " +
560
- "Use on session start with a broad query for context briefing.", {
561
- query: z.string().describe("What to search for (natural language)"),
562
- category: z.string().optional().describe("Filter by category"),
563
- domain: z.string().optional().describe("Filter by domain activity profile"),
564
- kind: z.string().optional().describe("Filter by kind (fact, summary, distilled, relation)"),
565
- memory_subtype: z.string().optional().describe("Filter by memory subtype"),
566
- workspace_id: z.string().optional().describe("Filter by optional workspace namespace."),
567
- include_legacy_workspace: z.boolean().optional()
568
- .describe("Include legacy facts without workspace_id in this workspace query."),
569
- entity: z.string().optional().describe("Filter by entity name"),
570
- episode_id: z.string().optional().describe("Filter by coherent episode ID"),
571
- workstream_key: z.string().optional().describe("Filter by durable workstream key"),
572
- task_key: z.string().optional().describe("Filter by task or issue key"),
573
- repo: z.string().optional().describe("Filter by repository or project surface"),
574
- branch: z.string().optional().describe("Filter by branch or working surface"),
575
- review_status: z.string().optional().describe("Filter by review lifecycle status"),
576
- since: z.string().optional().describe("Only facts created after this ISO date"),
577
- until: z.string().optional().describe("Only facts created before this ISO date"),
578
- limit: z.number().optional().default(10).describe("Max results (default 10)"),
579
- graph_depth: z.number().optional().default(0).describe("Entity graph traversal depth (0=none, 1=include 1-hop related entity facts)."),
580
- metadata_filter: z.record(z.string(), z.string()).optional()
581
- .describe("Filter by metadata key-value pairs. All pairs must match."),
567
+ mcp.tool("memory_recall", [
568
+ "Semantic + filtered search over memory. Returns facts ranked by relevance (vector similarity blended with recency, importance, and reinforcement).",
569
+ "Three main uses:",
570
+ " 1. Session-start briefing — broad query like 'session briefing: user preferences, active projects, recent decisions'.",
571
+ " 2. Per-prompt contextual recall — focused query derived from what the user just asked.",
572
+ " 3. Pre-store conflict check recall similar facts before storing, so you can use 'supersedes' if the new fact replaces an older one.",
573
+ "Combine the natural-language query with structured filters (category, domain, entity, date range, metadata) for tighter results.",
574
+ "If you have a known entity name and want everything about it, prefer memory_entity. For 'what does X own/use?' style questions, prefer memory_relations.",
575
+ ].join("\n"), {
576
+ query: z.string().describe("Natural-language description of what you're looking for. Embedded and matched semantically — full sentences work better than keyword lists."),
577
+ category: z.string().optional().describe("Filter by category (same vocabulary as memory_store.category). Optional."),
578
+ domain: z.string().optional().describe("Filter by domain activity profile (same vocabulary as memory_store.domain). Optional."),
579
+ kind: z.string().optional().describe("Filter by kind: fact, summary, distilled, relation. Optional. Telemetry is excluded by default."),
580
+ memory_subtype: z.string().optional().describe("Filter by memory subtype (must be valid for the chosen kind). Optional."),
581
+ workspace_id: z.string().optional().describe("Filter to facts in this workspace namespace. Omit to use the default workspace from config."),
582
+ include_legacy_workspace: z.boolean().optional().describe("Backwards-compatibility flag: also include legacy facts that have no workspace_id. Default false. Only set this if you suspect pre-migration data is missing from results."),
583
+ entity: z.string().optional().describe("Restrict to facts mentioning this entity (case-insensitive). For full entity context prefer memory_entity."),
584
+ episode_id: z.string().optional().describe("Filter by coherent episode ID."),
585
+ workstream_key: z.string().optional().describe("Filter by durable workstream key."),
586
+ task_key: z.string().optional().describe("Filter by task or issue key."),
587
+ repo: z.string().optional().describe("Filter by repository or project surface."),
588
+ branch: z.string().optional().describe("Filter by branch or working surface."),
589
+ review_status: z.string().optional().describe("Filter by review lifecycle status (candidate / reviewed / approved / rejected)."),
590
+ since: z.string().optional().describe("Only facts created on or after this ISO 8601 date or datetime."),
591
+ until: z.string().optional().describe("Only facts created on or before this ISO 8601 date or datetime."),
592
+ limit: z.number().optional().default(10).describe("Max results to return (default 10)."),
593
+ graph_depth: z.number().optional().default(0).describe("Entity-graph traversal depth. 0 = vector search only (fast, default). 1 = also surface 1-hop entity-related facts (slower; use when the user asks 'what's connected to X?')."),
594
+ metadata_filter: z.record(z.string(), z.string()).optional().describe("Exact-match filter on the metadata map stored with each fact. All key/value pairs must match (AND logic)."),
582
595
  }, async ({ query, category, domain, kind, memory_subtype, workspace_id, include_legacy_workspace, entity, episode_id, workstream_key, task_key, repo, branch, review_status, since, until, limit, graph_depth, metadata_filter, }) => {
583
596
  const guard = requireReady();
584
597
  if (guard)
@@ -641,12 +654,15 @@ export function registerTools(mcp) {
641
654
  return { content: [{ type: "text", text: lines.join("\n") }] };
642
655
  });
643
656
  // ── memory_entity ───────────────────────────────────────────────────────
644
- mcp.tool("memory_entity", "Get everything known about an entity — all facts mentioning it plus its relationships.", {
645
- name: z.string().describe("Entity name (e.g. 'qdrant', 'platform')"),
646
- limit: z.number().optional().default(20).describe("Max facts to return"),
647
- workspace_id: z.string().optional().describe("Filter by optional workspace namespace."),
648
- include_legacy_workspace: z.boolean().optional()
649
- .describe("Include legacy facts without workspace_id in this workspace query."),
657
+ mcp.tool("memory_entity", [
658
+ "Get everything bikky knows about a specific entity — facts mentioning it plus typed relations into and out of it.",
659
+ "Prefer this over memory_recall when the user asks 'tell me about X' or 'what do we know about X' and X is a known entity name (service, person, repo, concept). Faster and more complete than semantic search for entity-centric queries.",
660
+ "If you only have a fuzzy description, use memory_recall first to find the entity name.",
661
+ ].join(" "), {
662
+ name: z.string().describe("Entity name (case-insensitive, e.g. 'qdrant', 'workspace_id'). Should match the lowercase canonical form used when facts were stored."),
663
+ limit: z.number().optional().default(20).describe("Max facts to return (default 20). Relations are always returned in full, capped at 50 each direction."),
664
+ workspace_id: z.string().optional().describe("Workspace namespace. Omit to use the default from config."),
665
+ include_legacy_workspace: z.boolean().optional().describe("Backwards-compatibility: also include legacy facts with no workspace_id. Default false."),
650
666
  }, async ({ name, limit, workspace_id, include_legacy_workspace }) => {
651
667
  const guard = requireReady();
652
668
  if (guard)
@@ -696,14 +712,16 @@ export function registerTools(mcp) {
696
712
  return { content: [{ type: "text", text: output.join("\n") }] };
697
713
  });
698
714
  // ── memory_relations ────────────────────────────────────────────────────
699
- mcp.tool("memory_relations", "Query entity relationships. Returns typed edges between entities.", {
700
- entity: z.string().describe("Entity name to query"),
701
- relation_type: z.string().optional().describe("Filter by relation type (e.g. 'owns', 'uses', 'decided')"),
702
- direction: z.enum(["from", "to", "both"]).optional().default("both")
703
- .describe("Direction: 'from' (entity as source), 'to' (entity as target), 'both'"),
704
- workspace_id: z.string().optional().describe("Filter by optional workspace namespace."),
705
- include_legacy_workspace: z.boolean().optional()
706
- .describe("Include legacy facts without workspace_id in this workspace query."),
715
+ mcp.tool("memory_relations", [
716
+ "Query typed edges between entities. Returns 'A --[type]--> B' triples that semantic search alone wouldn't surface.",
717
+ "Use for 'what does X own / use / depend on?' and 'who owns Y?' style questions. Optionally filter by direction (from / to / both) and relation type.",
718
+ "To create relations, use memory_store with the 'relation' field — there is no separate create-relation tool.",
719
+ ].join(" "), {
720
+ entity: z.string().describe("Entity name to query (case-insensitive)."),
721
+ relation_type: z.string().optional().describe("Filter to a specific edge label (e.g. 'owns', 'uses', 'decided', 'prefers', 'works-on'). Optional."),
722
+ direction: z.enum(["from", "to", "both"]).optional().default("both").describe("Which side of the edge the entity is on. 'from' = entity is the source (X --[?]--> ?). 'to' = entity is the target (? --[?]--> X). 'both' = either (default)."),
723
+ workspace_id: z.string().optional().describe("Workspace namespace. Omit to use the default from config."),
724
+ include_legacy_workspace: z.boolean().optional().describe("Backwards-compatibility: also include legacy facts with no workspace_id. Default false."),
707
725
  }, async ({ entity, relation_type, direction, workspace_id, include_legacy_workspace }) => {
708
726
  const guard = requireReady();
709
727
  if (guard)
@@ -746,10 +764,13 @@ export function registerTools(mcp) {
746
764
  return { content: [{ type: "text", text: lines.join("\n") }] };
747
765
  });
748
766
  // ── memory_forget ───────────────────────────────────────────────────────
749
- mcp.tool("memory_forget", "Mark a fact as superseded/wrong. The fact remains but is excluded from recall results.", {
750
- fact_id: z.string().describe("ID of the fact to forget"),
751
- reason: z.string().describe("Why this fact is being superseded"),
752
- workspace_id: z.string().optional().describe("Optional workspace namespace."),
767
+ mcp.tool("memory_forget", [
768
+ "Mark a fact as superseded/wrong. The fact stays in storage (for audit) but is excluded from all recall results.",
769
+ "Use this when a fact was simply incorrect or no longer applies and there is no replacement. If you have a corrected version, use memory_store with 'supersedes: <fact_id>' instead — that way the new fact stays linked to the old one.",
770
+ ].join(" "), {
771
+ fact_id: z.string().describe("ID of the fact to forget (returned by memory_store / memory_recall as 'id')."),
772
+ reason: z.string().describe("Short human-readable reason this fact is being retired (stored in 'superseded_by' for future audit)."),
773
+ workspace_id: z.string().optional().describe("Workspace namespace. Omit to use the default from config."),
753
774
  }, async ({ fact_id, reason, workspace_id }) => {
754
775
  const guard = requireReady();
755
776
  if (guard)
@@ -779,9 +800,13 @@ export function registerTools(mcp) {
779
800
  }
780
801
  });
781
802
  // ── memory_verify ───────────────────────────────────────────────────────
782
- mcp.tool("memory_verify", "Confirm a fact is still accurate. Resets the staleness clock and bumps verification count.", {
783
- fact_id: z.string().describe("ID of the fact to verify"),
784
- workspace_id: z.string().optional().describe("Optional workspace namespace."),
803
+ mcp.tool("memory_verify", [
804
+ "Confirm an existing fact is still accurate, without re-storing it. Resets the staleness clock and bumps a verification counter.",
805
+ "Use this when memory_heartbeat surfaces a stale fact ID and you can confirm it's still true (e.g. you just observed the system in that state). Lighter than memory_store(supersedes:) same content, fresh timestamp.",
806
+ "If the fact is no longer true, use memory_forget or memory_store(supersedes:) instead.",
807
+ ].join(" "), {
808
+ fact_id: z.string().describe("ID of the fact to verify (from memory_recall or memory_heartbeat)."),
809
+ workspace_id: z.string().optional().describe("Workspace namespace. Omit to use the default from config."),
785
810
  }, async ({ fact_id, workspace_id }) => {
786
811
  const guard = requireReady();
787
812
  if (guard)
@@ -819,16 +844,17 @@ export function registerTools(mcp) {
819
844
  }
820
845
  });
821
846
  // ── memory_review ───────────────────────────────────────────────────────
822
- mcp.tool("memory_review", "Review recent daemon-extracted facts. Supports approve (verify), reject (forget), or correct (supersede with edited text).", {
823
- limit: z.number().optional().default(10).describe("Max facts to return (default 10)"),
824
- action: z.enum(["list", "approve", "reject", "correct"]).optional().default("list")
825
- .describe("Action: list, approve, reject, correct"),
826
- fact_id: z.string().optional().describe("Fact ID (required for approve/reject/correct)"),
827
- reason: z.string().optional().describe("Reason for rejection"),
828
- corrected_content: z.string().optional().describe("Corrected fact text (for correct action)"),
829
- workspace_id: z.string().optional().describe("Filter by optional workspace namespace."),
830
- include_legacy_workspace: z.boolean().optional()
831
- .describe("Include legacy facts without workspace_id in this workspace query."),
847
+ mcp.tool("memory_review", [
848
+ "Triage facts that were extracted automatically by the bikky daemon (source='daemon').",
849
+ "Only useful when the daemon is running and capturing memories from logs/transcripts; otherwise this returns an empty list. Supports four actions: list (default — show recent daemon facts), approve (mark verified), reject (mark superseded with reason), correct (replace with edited content as a new fact).",
850
+ ].join(" "), {
851
+ limit: z.number().optional().default(10).describe("Max facts to return when action=list (default 10)."),
852
+ action: z.enum(["list", "approve", "reject", "correct"]).optional().default("list").describe("What to do. list = show recent daemon-extracted facts (default). approve = confirm a fact is correct (bumps verification count). reject = mark a fact as wrong (requires 'reason'). correct = supersede with an edited version (requires 'corrected_content')."),
853
+ fact_id: z.string().optional().describe("Fact ID to act on. Required for approve / reject / correct."),
854
+ reason: z.string().optional().describe("Required for action=reject. Short reason the fact is wrong."),
855
+ corrected_content: z.string().optional().describe("Required for action=correct. The fixed fact text. Stored as a new fact that supersedes the original."),
856
+ workspace_id: z.string().optional().describe("Workspace namespace. Omit to use the default from config."),
857
+ include_legacy_workspace: z.boolean().optional().describe("Backwards-compatibility: also include legacy facts with no workspace_id. Default false."),
832
858
  }, async ({ limit, action, fact_id, reason, corrected_content, workspace_id, include_legacy_workspace }) => {
833
859
  const guard = requireReady();
834
860
  if (guard)
@@ -947,7 +973,10 @@ export function registerTools(mcp) {
947
973
  return { content: [{ type: "text", text: `Unknown action: ${String(action)}` }] };
948
974
  });
949
975
  // ── memory_heartbeat ────────────────────────────────────────────────────
950
- mcp.tool("memory_heartbeat", "Lightweight reflection check. Returns memory nudge (if no stores in 10+ min), staleness alerts (every 3rd call), and reflection prompt.", {}, async () => {
976
+ mcp.tool("memory_heartbeat", [
977
+ "Reflection check-in. Returns up to three things: a memory nudge if you haven't stored anything in 10+ minutes, stale-fact alerts every 3rd call (with IDs you can pass to memory_verify or memory_forget), and a reflection prompt asking whether the last few minutes of work produced anything worth storing.",
978
+ "Call periodically during interactive sessions — roughly every 10 minutes or every 3rd user prompt. No arguments. Cheap and read-only.",
979
+ ].join(" "), {}, async () => {
951
980
  heartbeatCount++;
952
981
  const sections = [];
953
982
  const nudge = buildMemoryNudge();