@goondocks/myco 0.3.2 → 0.3.4

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 (68) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/dist/{chunk-5BGQJOJN.js → chunk-4RJ3IEPW.js} +4 -4
  4. package/dist/{chunk-Q7BEFSOV.js → chunk-7VPJK56U.js} +10 -4
  5. package/dist/chunk-7VPJK56U.js.map +1 -0
  6. package/dist/{chunk-N6IAW33G.js → chunk-7WNE22W7.js} +3 -3
  7. package/dist/{chunk-72OAG4SF.js → chunk-AWF3M57N.js} +11 -6
  8. package/dist/{chunk-72OAG4SF.js.map → chunk-AWF3M57N.js.map} +1 -1
  9. package/dist/{chunk-XW3OL55U.js → chunk-BA23DROX.js} +2 -2
  10. package/dist/{chunk-TJJRIVZ7.js → chunk-C72VNYA4.js} +2 -2
  11. package/dist/{chunk-PAUPHPOC.js → chunk-DBSG4V6Y.js} +3 -3
  12. package/dist/{chunk-P2Q77C5F.js → chunk-QWU7QLZI.js} +6 -2
  13. package/dist/chunk-QWU7QLZI.js.map +1 -0
  14. package/dist/{chunk-2UEJVXXE.js → chunk-R2R243GC.js} +2 -2
  15. package/dist/{chunk-JIQISBPI.js → chunk-UHMMKLK3.js} +5 -5
  16. package/dist/{chunk-2QEJKG7R.js → chunk-Y3OYD4CX.js} +2 -2
  17. package/dist/{chunk-2TKJPRZL.js → chunk-ZBNT6E22.js} +2 -2
  18. package/dist/{cli-4RR3QBYK.js → cli-YTICB2DH.js} +15 -15
  19. package/dist/{client-43ML4EHJ.js → client-YI6RXFJD.js} +5 -5
  20. package/dist/{detect-providers-6RQCQZOI.js → detect-providers-LNOLBICR.js} +3 -3
  21. package/dist/{init-HTKEL3YT.js → init-TQ7Q4WEI.js} +5 -5
  22. package/dist/{main-DTWU4OAH.js → main-3BL45UM3.js} +10 -9
  23. package/dist/{main-DTWU4OAH.js.map → main-3BL45UM3.js.map} +1 -1
  24. package/dist/{rebuild-TXMFYBOU.js → rebuild-JW6BCHHZ.js} +5 -5
  25. package/dist/{reprocess-ARKHGDWF.js → reprocess-5XX3EOAV.js} +9 -9
  26. package/dist/{restart-C5BCVG3A.js → restart-UGE2Y327.js} +6 -6
  27. package/dist/{search-YCKNX2WS.js → search-2HMG3ON7.js} +4 -4
  28. package/dist/{server-EBKMQISL.js → server-YYCYIH5Z.js} +102 -81
  29. package/dist/server-YYCYIH5Z.js.map +1 -0
  30. package/dist/{session-start-ADZLL2YI.js → session-start-4MNXDOYK.js} +6 -6
  31. package/dist/src/cli.js +4 -4
  32. package/dist/src/daemon/main.js +4 -4
  33. package/dist/src/hooks/post-tool-use.js +5 -5
  34. package/dist/src/hooks/session-end.js +5 -5
  35. package/dist/src/hooks/session-start.js +4 -4
  36. package/dist/src/hooks/stop.js +5 -5
  37. package/dist/src/hooks/user-prompt-submit.js +9 -8
  38. package/dist/src/hooks/user-prompt-submit.js.map +1 -1
  39. package/dist/src/mcp/server.js +4 -4
  40. package/dist/{stats-7VEZN2WF.js → stats-7T44NZQN.js} +5 -5
  41. package/dist/{verify-HN5DWV2H.js → verify-7MWOV72E.js} +4 -4
  42. package/dist/{version-N55WTRG5.js → version-3MSC7E3V.js} +4 -4
  43. package/package.json +1 -1
  44. package/skills/myco/SKILL.md +15 -14
  45. package/dist/chunk-P2Q77C5F.js.map +0 -1
  46. package/dist/chunk-Q7BEFSOV.js.map +0 -1
  47. package/dist/server-EBKMQISL.js.map +0 -1
  48. /package/dist/{chunk-5BGQJOJN.js.map → chunk-4RJ3IEPW.js.map} +0 -0
  49. /package/dist/{chunk-N6IAW33G.js.map → chunk-7WNE22W7.js.map} +0 -0
  50. /package/dist/{chunk-XW3OL55U.js.map → chunk-BA23DROX.js.map} +0 -0
  51. /package/dist/{chunk-TJJRIVZ7.js.map → chunk-C72VNYA4.js.map} +0 -0
  52. /package/dist/{chunk-PAUPHPOC.js.map → chunk-DBSG4V6Y.js.map} +0 -0
  53. /package/dist/{chunk-2UEJVXXE.js.map → chunk-R2R243GC.js.map} +0 -0
  54. /package/dist/{chunk-JIQISBPI.js.map → chunk-UHMMKLK3.js.map} +0 -0
  55. /package/dist/{chunk-2QEJKG7R.js.map → chunk-Y3OYD4CX.js.map} +0 -0
  56. /package/dist/{chunk-2TKJPRZL.js.map → chunk-ZBNT6E22.js.map} +0 -0
  57. /package/dist/{cli-4RR3QBYK.js.map → cli-YTICB2DH.js.map} +0 -0
  58. /package/dist/{client-43ML4EHJ.js.map → client-YI6RXFJD.js.map} +0 -0
  59. /package/dist/{detect-providers-6RQCQZOI.js.map → detect-providers-LNOLBICR.js.map} +0 -0
  60. /package/dist/{init-HTKEL3YT.js.map → init-TQ7Q4WEI.js.map} +0 -0
  61. /package/dist/{rebuild-TXMFYBOU.js.map → rebuild-JW6BCHHZ.js.map} +0 -0
  62. /package/dist/{reprocess-ARKHGDWF.js.map → reprocess-5XX3EOAV.js.map} +0 -0
  63. /package/dist/{restart-C5BCVG3A.js.map → restart-UGE2Y327.js.map} +0 -0
  64. /package/dist/{search-YCKNX2WS.js.map → search-2HMG3ON7.js.map} +0 -0
  65. /package/dist/{session-start-ADZLL2YI.js.map → session-start-4MNXDOYK.js.map} +0 -0
  66. /package/dist/{stats-7VEZN2WF.js.map → stats-7T44NZQN.js.map} +0 -0
  67. /package/dist/{verify-HN5DWV2H.js.map → verify-7MWOV72E.js.map} +0 -0
  68. /package/dist/{version-N55WTRG5.js.map → version-3MSC7E3V.js.map} +0 -0
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-3JCXYLHD.js";
6
6
  import {
7
7
  rebuildIndex
8
- } from "./chunk-72OAG4SF.js";
8
+ } from "./chunk-AWF3M57N.js";
9
9
  import {
10
10
  generateEmbedding
11
11
  } from "./chunk-RGVBGTD6.js";
@@ -20,15 +20,15 @@ import {
20
20
  } from "./chunk-PA3VMINE.js";
21
21
  import {
22
22
  createEmbeddingProvider
23
- } from "./chunk-N6IAW33G.js";
24
- import "./chunk-XW3OL55U.js";
23
+ } from "./chunk-7WNE22W7.js";
24
+ import "./chunk-BA23DROX.js";
25
25
  import {
26
26
  loadConfig
27
27
  } from "./chunk-ISCT2SI6.js";
28
28
  import "./chunk-EF4JVH24.js";
29
29
  import {
30
30
  EMBEDDING_INPUT_LIMIT
31
- } from "./chunk-Q7BEFSOV.js";
31
+ } from "./chunk-7VPJK56U.js";
32
32
  import "./chunk-PZUWP5VK.js";
33
33
 
34
34
  // src/cli/rebuild.ts
@@ -82,4 +82,4 @@ Embedded ${result.succeeded} notes (vectors)`);
82
82
  export {
83
83
  run
84
84
  };
85
- //# sourceMappingURL=rebuild-TXMFYBOU.js.map
85
+ //# sourceMappingURL=rebuild-JW6BCHHZ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  BufferProcessor,
4
4
  TranscriptMiner,
5
5
  writeObservationNotes
6
- } from "./chunk-JIQISBPI.js";
6
+ } from "./chunk-UHMMKLK3.js";
7
7
  import {
8
8
  EMBEDDING_BATCH_CONCURRENCY,
9
9
  LLM_BATCH_CONCURRENCY,
@@ -13,18 +13,18 @@ import {
13
13
  VaultWriter,
14
14
  bareSessionId,
15
15
  sessionNoteId
16
- } from "./chunk-P2Q77C5F.js";
16
+ } from "./chunk-QWU7QLZI.js";
17
17
  import {
18
18
  indexNote,
19
19
  require_gray_matter
20
- } from "./chunk-72OAG4SF.js";
20
+ } from "./chunk-AWF3M57N.js";
21
21
  import {
22
22
  generateEmbedding
23
23
  } from "./chunk-RGVBGTD6.js";
24
24
  import {
25
25
  VectorIndex
26
26
  } from "./chunk-XQXXF6MU.js";
27
- import "./chunk-PAUPHPOC.js";
27
+ import "./chunk-DBSG4V6Y.js";
28
28
  import {
29
29
  parseStringFlag
30
30
  } from "./chunk-SAKJMNSR.js";
@@ -37,8 +37,8 @@ import {
37
37
  import {
38
38
  createEmbeddingProvider,
39
39
  createLlmProvider
40
- } from "./chunk-N6IAW33G.js";
41
- import "./chunk-XW3OL55U.js";
40
+ } from "./chunk-7WNE22W7.js";
41
+ import "./chunk-BA23DROX.js";
42
42
  import {
43
43
  loadConfig
44
44
  } from "./chunk-ISCT2SI6.js";
@@ -46,10 +46,10 @@ import "./chunk-EF4JVH24.js";
46
46
  import {
47
47
  claudeCodeAdapter,
48
48
  createPerProjectAdapter
49
- } from "./chunk-2QEJKG7R.js";
49
+ } from "./chunk-Y3OYD4CX.js";
50
50
  import {
51
51
  EMBEDDING_INPUT_LIMIT
52
- } from "./chunk-Q7BEFSOV.js";
52
+ } from "./chunk-7VPJK56U.js";
53
53
  import {
54
54
  __toESM
55
55
  } from "./chunk-PZUWP5VK.js";
@@ -196,4 +196,4 @@ Done: ${tasks.length} sessions reprocessed, ${totalObservations} observations ex
196
196
  export {
197
197
  run
198
198
  };
199
- //# sourceMappingURL=reprocess-ARKHGDWF.js.map
199
+ //# sourceMappingURL=reprocess-5XX3EOAV.js.map
@@ -1,11 +1,11 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  isProcessAlive
4
- } from "./chunk-PAUPHPOC.js";
4
+ } from "./chunk-DBSG4V6Y.js";
5
5
  import "./chunk-SAKJMNSR.js";
6
- import "./chunk-XW3OL55U.js";
7
- import "./chunk-2QEJKG7R.js";
8
- import "./chunk-Q7BEFSOV.js";
6
+ import "./chunk-BA23DROX.js";
7
+ import "./chunk-Y3OYD4CX.js";
8
+ import "./chunk-7VPJK56U.js";
9
9
  import "./chunk-PZUWP5VK.js";
10
10
 
11
11
  // src/cli/restart.ts
@@ -29,7 +29,7 @@ async function run(_args, vaultDir) {
29
29
  } catch {
30
30
  }
31
31
  }
32
- const { DaemonClient } = await import("./client-43ML4EHJ.js");
32
+ const { DaemonClient } = await import("./client-YI6RXFJD.js");
33
33
  const client = new DaemonClient(vaultDir);
34
34
  console.log("Waiting for health check...");
35
35
  const healthy = await client.ensureRunning();
@@ -47,4 +47,4 @@ async function run(_args, vaultDir) {
47
47
  export {
48
48
  run
49
49
  };
50
- //# sourceMappingURL=restart-C5BCVG3A.js.map
50
+ //# sourceMappingURL=restart-UGE2Y327.js.map
@@ -13,13 +13,13 @@ import {
13
13
  } from "./chunk-PA3VMINE.js";
14
14
  import {
15
15
  createEmbeddingProvider
16
- } from "./chunk-N6IAW33G.js";
17
- import "./chunk-XW3OL55U.js";
16
+ } from "./chunk-7WNE22W7.js";
17
+ import "./chunk-BA23DROX.js";
18
18
  import {
19
19
  loadConfig
20
20
  } from "./chunk-ISCT2SI6.js";
21
21
  import "./chunk-EF4JVH24.js";
22
- import "./chunk-Q7BEFSOV.js";
22
+ import "./chunk-7VPJK56U.js";
23
23
  import "./chunk-PZUWP5VK.js";
24
24
 
25
25
  // src/cli/search.ts
@@ -117,4 +117,4 @@ export {
117
117
  run,
118
118
  runVectors
119
119
  };
120
- //# sourceMappingURL=search-YCKNX2WS.js.map
120
+ //# sourceMappingURL=search-2HMG3ON7.js.map
@@ -1,11 +1,12 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  VaultWriter
4
- } from "./chunk-P2Q77C5F.js";
4
+ } from "./chunk-QWU7QLZI.js";
5
5
  import {
6
- PlanFrontmatterSchema,
6
+ OBSERVATION_TYPES,
7
+ PLAN_STATUSES,
7
8
  indexNote
8
- } from "./chunk-72OAG4SF.js";
9
+ } from "./chunk-AWF3M57N.js";
9
10
  import {
10
11
  generateEmbedding
11
12
  } from "./chunk-RGVBGTD6.js";
@@ -30,8 +31,8 @@ import {
30
31
  } from "./chunk-PA3VMINE.js";
31
32
  import {
32
33
  createEmbeddingProvider
33
- } from "./chunk-N6IAW33G.js";
34
- import "./chunk-XW3OL55U.js";
34
+ } from "./chunk-7WNE22W7.js";
35
+ import "./chunk-BA23DROX.js";
35
36
  import {
36
37
  _enum,
37
38
  _null,
@@ -57,17 +58,20 @@ import {
57
58
  import "./chunk-EF4JVH24.js";
58
59
  import {
59
60
  getPluginVersion
60
- } from "./chunk-2UEJVXXE.js";
61
+ } from "./chunk-R2R243GC.js";
61
62
  import {
62
63
  resolveVaultDir
63
64
  } from "./chunk-N33KUCFP.js";
64
- import "./chunk-2QEJKG7R.js";
65
+ import "./chunk-Y3OYD4CX.js";
65
66
  import {
66
67
  CONTENT_SNIPPET_CHARS,
67
68
  EMBEDDING_INPUT_LIMIT,
69
+ MCP_LOGS_DEFAULT_LIMIT,
70
+ MCP_SEARCH_DEFAULT_LIMIT,
71
+ MCP_SESSIONS_DEFAULT_LIMIT,
68
72
  RECALL_SUMMARY_PREVIEW_CHARS,
69
73
  SESSION_SUMMARY_PREVIEW_CHARS
70
- } from "./chunk-Q7BEFSOV.js";
74
+ } from "./chunk-7VPJK56U.js";
71
75
  import {
72
76
  __commonJS,
73
77
  __toESM
@@ -14146,6 +14150,7 @@ async function handleMycoRemember(vaultDir, index, input) {
14146
14150
  const notePath = writer.writeMemory({
14147
14151
  id,
14148
14152
  observation_type: input.type,
14153
+ session: input.session,
14149
14154
  plan: input.related_plan ?? void 0,
14150
14155
  tags: input.tags,
14151
14156
  content: input.content
@@ -14461,148 +14466,164 @@ Superseded by:: [[${wisdomId}]]`;
14461
14466
  return { wisdom_id: wisdomId, wisdom_path: wisdomPath, sources_archived: archived };
14462
14467
  }
14463
14468
 
14464
- // src/mcp/server.ts
14465
- var OBSERVATION_TYPES = ["gotcha", "bug_fix", "decision", "discovery", "trade_off", "cross-cutting"];
14466
- var PLAN_STATUSES = [...PlanFrontmatterSchema.shape.status._def.innerType.options, "all"];
14469
+ // src/mcp/tool-definitions.ts
14470
+ var PLAN_STATUS_FILTER = [...PLAN_STATUSES, "all"];
14471
+ var TOOL_SEARCH = "myco_search";
14472
+ var TOOL_RECALL = "myco_recall";
14473
+ var TOOL_REMEMBER = "myco_remember";
14474
+ var TOOL_PLANS = "myco_plans";
14475
+ var TOOL_SESSIONS = "myco_sessions";
14476
+ var TOOL_TEAM = "myco_team";
14477
+ var TOOL_GRAPH = "myco_graph";
14478
+ var TOOL_ORPHANS = "myco_orphans";
14479
+ var TOOL_LOGS = "myco_logs";
14480
+ var TOOL_SUPERSEDE = "myco_supersede";
14481
+ var TOOL_CONSOLIDATE = "myco_consolidate";
14482
+ var PROP_BRANCH = "Git branch name to find related sessions and plans";
14483
+ var PROP_SINCE = "ISO timestamp \u2014 entries after this date";
14484
+ var PROP_TAGS = "Tags for discoverability \u2014 component names, technologies, concepts";
14467
14485
  var TOOL_DEFINITIONS = [
14468
14486
  {
14469
- name: "myco_search",
14470
- description: "Combined semantic + full-text search across the vault",
14487
+ name: TOOL_SEARCH,
14488
+ description: "Search the vault for prior decisions, gotchas, bug fixes, and session history. Use before making design decisions, when debugging non-obvious issues, or when wondering why code is structured a certain way.",
14471
14489
  inputSchema: {
14472
14490
  type: "object",
14473
14491
  properties: {
14474
- query: { type: "string", description: "Search query" },
14475
- type: { type: "string", enum: ["session", "plan", "memory", "all"] },
14476
- limit: { type: "number", default: 10 }
14492
+ query: { type: "string", description: "Natural language search query \u2014 describe what you are looking for" },
14493
+ type: { type: "string", enum: ["session", "plan", "memory", "all"], description: "Filter by note type (default: all)" },
14494
+ limit: { type: "number", description: `Max results (default: ${MCP_SEARCH_DEFAULT_LIMIT})` }
14477
14495
  },
14478
14496
  required: ["query"]
14479
14497
  }
14480
14498
  },
14481
14499
  {
14482
- name: "myco_recall",
14483
- description: "Automatic context retrieval based on current work",
14500
+ name: TOOL_RECALL,
14501
+ description: "Get context relevant to your current work \u2014 memories, sessions, and plans related to the branch and files you are working on. Use at the start of a task or when you need background on a component.",
14484
14502
  inputSchema: {
14485
14503
  type: "object",
14486
14504
  properties: {
14487
- branch: { type: "string" },
14488
- files: { type: "array", items: { type: "string" } }
14505
+ branch: { type: "string", description: PROP_BRANCH },
14506
+ files: { type: "array", items: { type: "string" }, description: "File paths you are working on \u2014 finds memories tagged with these files" }
14489
14507
  }
14490
14508
  }
14491
14509
  },
14492
14510
  {
14493
- name: "myco_remember",
14494
- description: "Store an observation as a memory note",
14511
+ name: TOOL_REMEMBER,
14512
+ description: "Save a decision, gotcha, bug fix, discovery, or trade-off as a permanent memory. Use after making a key decision, fixing a tricky bug, discovering something non-obvious, or encountering a gotcha. Always include the session ID from your context.",
14495
14513
  inputSchema: {
14496
14514
  type: "object",
14497
14515
  properties: {
14498
- content: { type: "string" },
14499
- type: { type: "string", enum: OBSERVATION_TYPES },
14500
- tags: { type: "array", items: { type: "string" } },
14501
- related_plan: { type: "string" }
14516
+ content: { type: "string", description: "The observation \u2014 include context, reasoning, and what someone encountering this in the future needs to know" },
14517
+ type: { type: "string", enum: OBSERVATION_TYPES, description: `Observation type: ${OBSERVATION_TYPES.join(", ")}` },
14518
+ tags: { type: "array", items: { type: "string" }, description: PROP_TAGS },
14519
+ session: { type: "string", description: 'Your session ID (from "Session::" in your context) \u2014 links this memory to the current session' },
14520
+ related_plan: { type: "string", description: "Plan ID if this observation relates to an active plan" }
14502
14521
  },
14503
14522
  required: ["content", "type"]
14504
14523
  }
14505
14524
  },
14506
14525
  {
14507
- name: "myco_plans",
14508
- description: "List active plans with progress",
14526
+ name: TOOL_PLANS,
14527
+ description: "List active implementation plans and their status. Use to check what work is in flight before starting new tasks.",
14509
14528
  inputSchema: {
14510
14529
  type: "object",
14511
14530
  properties: {
14512
- status: { type: "string", enum: PLAN_STATUSES },
14513
- id: { type: "string" }
14531
+ status: { type: "string", enum: PLAN_STATUS_FILTER, description: "Filter by status (default: all statuses)" },
14532
+ id: { type: "string", description: "Get a specific plan by ID" }
14514
14533
  }
14515
14534
  }
14516
14535
  },
14517
14536
  {
14518
- name: "myco_sessions",
14519
- description: "Query session history with filters",
14537
+ name: TOOL_SESSIONS,
14538
+ description: "Browse past coding sessions with summaries, tools used, and linked memories. Use to understand what work has been done on a feature or branch.",
14520
14539
  inputSchema: {
14521
14540
  type: "object",
14522
14541
  properties: {
14523
- plan: { type: "string" },
14524
- branch: { type: "string" },
14525
- user: { type: "string" },
14526
- since: { type: "string" },
14527
- limit: { type: "number" }
14542
+ plan: { type: "string", description: "Filter sessions linked to a specific plan" },
14543
+ branch: { type: "string", description: PROP_BRANCH },
14544
+ user: { type: "string", description: "Filter sessions by user" },
14545
+ since: { type: "string", description: PROP_SINCE },
14546
+ limit: { type: "number", description: `Max results (default: ${MCP_SESSIONS_DEFAULT_LIMIT})` }
14528
14547
  }
14529
14548
  }
14530
14549
  },
14531
14550
  {
14532
- name: "myco_team",
14533
- description: "Teammate activity on same files or plan",
14551
+ name: TOOL_TEAM,
14552
+ description: "See what teammates have been working on \u2014 filter by shared files or plan to understand who has context on a component.",
14534
14553
  inputSchema: {
14535
14554
  type: "object",
14536
14555
  properties: {
14537
- files: { type: "array", items: { type: "string" } },
14538
- plan: { type: "string" },
14539
- since: { type: "string" }
14556
+ files: { type: "array", items: { type: "string" }, description: "File paths to find teammates who worked on them" },
14557
+ plan: { type: "string", description: "Plan ID to find teammates collaborating on it" },
14558
+ since: { type: "string", description: PROP_SINCE }
14540
14559
  }
14541
14560
  }
14542
14561
  },
14543
14562
  {
14544
- name: "myco_graph",
14545
- description: "Traverse vault connections via wikilinks \u2014 find related notes by following links",
14563
+ name: TOOL_GRAPH,
14564
+ description: "Traverse connections between vault notes via wikilinks \u2014 explore how sessions, memories, and plans relate to each other.",
14546
14565
  inputSchema: {
14547
14566
  type: "object",
14548
14567
  properties: {
14549
- note_id: { type: "string", description: 'Note ID to start from (e.g. "session-abc123")' },
14550
- direction: { type: "string", enum: ["incoming", "outgoing", "both"], description: "Link direction (default: both)" },
14551
- depth: { type: "number", description: "Traversal depth 1-3 (default: 1)" }
14568
+ note_id: { type: "string", description: 'Note ID to start from (e.g., "session-abc123" or "decision-xyz789")' },
14569
+ direction: { type: "string", enum: ["incoming", "outgoing", "both"], description: "Link direction to follow (default: both)" },
14570
+ depth: { type: "number", description: "How many hops to traverse, 1-3 (default: 1)" }
14552
14571
  },
14553
14572
  required: ["note_id"]
14554
14573
  }
14555
14574
  },
14556
14575
  {
14557
- name: "myco_orphans",
14558
- description: "Find vault notes with no incoming or outgoing wikilinks",
14576
+ name: TOOL_ORPHANS,
14577
+ description: "Find vault notes with no connections \u2014 potentially stale or unlinked knowledge that may need review or cleanup.",
14559
14578
  inputSchema: {
14560
14579
  type: "object",
14561
14580
  properties: {}
14562
14581
  }
14563
14582
  },
14564
14583
  {
14565
- name: "myco_logs",
14566
- description: "View daemon and MCP activity logs with filtering \u2014 useful for debugging and auditing",
14584
+ name: TOOL_LOGS,
14585
+ description: "View daemon logs for debugging when sessions are not being captured, observations are missing, or embeddings fail. Filter by level, component, or time range.",
14567
14586
  inputSchema: {
14568
14587
  type: "object",
14569
14588
  properties: {
14570
- limit: { type: "number", description: "Max entries to return (default 50)" },
14571
- level: { type: "string", enum: ["debug", "info", "warn", "error"], description: "Minimum log level" },
14572
- component: { type: "string", description: "Filter by component (daemon, processor, hooks, lifecycle, embeddings, mcp, lineage, watcher)" },
14573
- since: { type: "string", description: "ISO timestamp \u2014 entries after this time" },
14589
+ limit: { type: "number", description: `Max entries to return (default: ${MCP_LOGS_DEFAULT_LIMIT})` },
14590
+ level: { type: "string", enum: ["debug", "info", "warn", "error"], description: "Minimum log level filter" },
14591
+ component: { type: "string", description: "Component filter: daemon, processor, hooks, lifecycle, embeddings, mcp, lineage, watcher" },
14592
+ since: { type: "string", description: PROP_SINCE },
14574
14593
  until: { type: "string", description: "ISO timestamp \u2014 entries before this time" }
14575
14594
  }
14576
14595
  }
14577
14596
  },
14578
14597
  {
14579
- name: "myco_supersede",
14580
- description: "Mark a memory as superseded by a newer one \u2014 use when an older observation is outdated, incorrect, or replaced by better understanding",
14598
+ name: TOOL_SUPERSEDE,
14599
+ description: "Mark a memory as outdated and replaced by a newer one. Use when a decision was reversed, a gotcha was fixed, a discovery was wrong, or the codebase changed and an observation no longer applies. The old memory is preserved but marked superseded.",
14581
14600
  inputSchema: {
14582
14601
  type: "object",
14583
14602
  properties: {
14584
- old_memory_id: { type: "string", description: "ID of the memory to supersede" },
14585
- new_memory_id: { type: "string", description: "ID of the memory that replaces it" },
14586
- reason: { type: "string", description: "Why this memory is being superseded" }
14603
+ old_memory_id: { type: "string", description: 'ID of the outdated memory (e.g., "decision-abc123")' },
14604
+ new_memory_id: { type: "string", description: "ID of the replacement memory" },
14605
+ reason: { type: "string", description: "Why the old memory is being superseded" }
14587
14606
  },
14588
14607
  required: ["old_memory_id", "new_memory_id"]
14589
14608
  }
14590
14609
  },
14591
14610
  {
14592
- name: "myco_consolidate",
14593
- description: "Merge multiple related memories into a single wisdom note \u2014 use when several observations describe aspects of the same insight or pattern",
14611
+ name: TOOL_CONSOLIDATE,
14612
+ description: "Merge 3+ related memories into a single comprehensive wisdom note. Use when multiple observations describe aspects of the same insight, share a root cause, or would be more useful as one reference. Source memories are marked superseded.",
14594
14613
  inputSchema: {
14595
14614
  type: "object",
14596
14615
  properties: {
14597
- source_memory_ids: { type: "array", items: { type: "string" }, description: "IDs of memories to consolidate" },
14598
- consolidated_content: { type: "string", description: "The merged, comprehensive content for the wisdom note" },
14599
- observation_type: { type: "string", enum: OBSERVATION_TYPES, description: "Type for the consolidated note" },
14600
- tags: { type: "array", items: { type: "string" }, description: "Tags for the wisdom note" }
14616
+ source_memory_ids: { type: "array", items: { type: "string" }, description: "IDs of the memories to merge (minimum 2)" },
14617
+ consolidated_content: { type: "string", description: "The merged, comprehensive content \u2014 synthesize, do not just concatenate" },
14618
+ observation_type: { type: "string", enum: OBSERVATION_TYPES, description: `Type for the consolidated wisdom note: ${OBSERVATION_TYPES.join(", ")}` },
14619
+ tags: { type: "array", items: { type: "string" }, description: PROP_TAGS }
14601
14620
  },
14602
14621
  required: ["source_memory_ids", "consolidated_content", "observation_type"]
14603
14622
  }
14604
14623
  }
14605
14624
  ];
14625
+
14626
+ // src/mcp/server.ts
14606
14627
  function createMycoServer(config2) {
14607
14628
  const server = new Server(
14608
14629
  { name: "myco", version: getPluginVersion() },
@@ -14639,37 +14660,37 @@ function createMycoServer(config2) {
14639
14660
  const idx = getIndex();
14640
14661
  const input = args;
14641
14662
  switch (name) {
14642
- case "myco_search":
14663
+ case TOOL_SEARCH:
14643
14664
  return { content: [{ type: "text", text: JSON.stringify(await handleMycoSearch(idx, input, config2.vectorIndex, config2.embeddingProvider)) }] };
14644
- case "myco_recall":
14665
+ case TOOL_RECALL:
14645
14666
  return { content: [{ type: "text", text: JSON.stringify(await handleMycoRecall(idx, input)) }] };
14646
- case "myco_remember": {
14667
+ case TOOL_REMEMBER: {
14647
14668
  const result = await handleMycoRemember(config2.vaultDir, idx, input);
14648
14669
  embedNote(result.id, String(input.content), { type: "memory", observation_type: String(input.type ?? ""), importance: "high" });
14649
- logActivity("myco_remember", { id: result.id, observation_type: input.type, path: result.note_path });
14670
+ logActivity(TOOL_REMEMBER, { id: result.id, observation_type: input.type, path: result.note_path });
14650
14671
  return { content: [{ type: "text", text: JSON.stringify(result) }] };
14651
14672
  }
14652
- case "myco_plans":
14673
+ case TOOL_PLANS:
14653
14674
  return { content: [{ type: "text", text: JSON.stringify(await handleMycoPlans(idx, input)) }] };
14654
- case "myco_sessions":
14675
+ case TOOL_SESSIONS:
14655
14676
  return { content: [{ type: "text", text: JSON.stringify(await handleMycoSessions(idx, input)) }] };
14656
- case "myco_team":
14677
+ case TOOL_TEAM:
14657
14678
  return { content: [{ type: "text", text: JSON.stringify(await handleMycoTeam(idx, input, config2.teamUser)) }] };
14658
- case "myco_graph":
14679
+ case TOOL_GRAPH:
14659
14680
  return { content: [{ type: "text", text: JSON.stringify(await handleMycoGraph(idx, input)) }] };
14660
- case "myco_orphans":
14681
+ case TOOL_ORPHANS:
14661
14682
  return { content: [{ type: "text", text: JSON.stringify(await handleMycoOrphans(idx)) }] };
14662
- case "myco_logs":
14683
+ case TOOL_LOGS:
14663
14684
  return { content: [{ type: "text", text: JSON.stringify(await handleMycoLogs(config2.vaultDir, input)) }] };
14664
- case "myco_supersede": {
14685
+ case TOOL_SUPERSEDE: {
14665
14686
  const result = await handleMycoSupersede(config2.vaultDir, idx, input);
14666
14687
  if (result.status === "superseded" && config2.vectorIndex) {
14667
14688
  config2.vectorIndex.delete(result.old_memory);
14668
14689
  }
14669
- logActivity("myco_supersede", { old: result.old_memory, new: result.new_memory, status: result.status });
14690
+ logActivity(TOOL_SUPERSEDE, { old: result.old_memory, new: result.new_memory, status: result.status });
14670
14691
  return { content: [{ type: "text", text: JSON.stringify(result) }] };
14671
14692
  }
14672
- case "myco_consolidate": {
14693
+ case TOOL_CONSOLIDATE: {
14673
14694
  const result = await handleMycoConsolidate(config2.vaultDir, idx, input);
14674
14695
  embedNote(result.wisdom_id, String(input.consolidated_content), { type: "memory", observation_type: String(input.observation_type ?? ""), importance: "high" });
14675
14696
  if (config2.vectorIndex && Array.isArray(input.source_memory_ids)) {
@@ -14677,7 +14698,7 @@ function createMycoServer(config2) {
14677
14698
  config2.vectorIndex.delete(id);
14678
14699
  }
14679
14700
  }
14680
- logActivity("myco_consolidate", { wisdom_id: result.wisdom_id, sources: input.source_memory_ids, archived: result.sources_archived });
14701
+ logActivity(TOOL_CONSOLIDATE, { wisdom_id: result.wisdom_id, sources: input.source_memory_ids, archived: result.sources_archived });
14681
14702
  return { content: [{ type: "text", text: JSON.stringify(result) }] };
14682
14703
  }
14683
14704
  default:
@@ -14720,4 +14741,4 @@ export {
14720
14741
  createMycoServer,
14721
14742
  main
14722
14743
  };
14723
- //# sourceMappingURL=server-EBKMQISL.js.map
14744
+ //# sourceMappingURL=server-YYCYIH5Z.js.map